From bc4b65ed2cd47895aa932b950e5032c28fb9f18c Mon Sep 17 00:00:00 2001 From: ThePurpleCello Date: Mon, 24 Nov 2025 15:23:57 -0700 Subject: [PATCH] Worked on nmake on windows --- SLS_C/Makefile.nmake | 52 ++++++++++++++++++++++++++++---------------- 1 file changed, 33 insertions(+), 19 deletions(-) diff --git a/SLS_C/Makefile.nmake b/SLS_C/Makefile.nmake index 33e5ed4..ed5485a 100644 --- a/SLS_C/Makefile.nmake +++ b/SLS_C/Makefile.nmake @@ -1,7 +1,7 @@ # MSVC nmake build file for SLS CC = cl -CFLAGS = /std:c11 /W4 /WX /Zi /I include +CFLAGS = /std:c11 /Zi /I include LDFLAGS = SRCDIR = src @@ -12,58 +12,72 @@ TESTDIR = tests TARGET = $(BINDIR)\sls.exe TEST_TARGET = $(BINDIR)\sls_tests.exe -# --- MANUALLY LIST SOURCE FILES HERE --- +# === LIST FILES MANUALLY (edit as needed) === SOURCES = \ $(SRCDIR)\main.c \ $(SRCDIR)\lexer.c \ $(SRCDIR)\string.c +OBJECTS = \ + $(OBJDIR)\main.obj \ + $(OBJDIR)\lexer.obj \ + $(OBJDIR)\string.obj + TEST_SOURCES = \ - $(TESTDIR)\lexer_tests.c -# --------------------------------------- + $(TESTDIR)\extra_tests.c \ + $(TESTDIR)\lexer_test_helpers.c \ + $(TESTDIR)\lexer_tests.c \ + $(TESTDIR)\string_tests.c \ + $(TESTDIR)\tests.c -OBJECTS = $(SOURCES:$(SRCDIR)\%.c=$(OBJDIR)\%.obj) -TEST_OBJECTS = $(TEST_SOURCES:$(TESTDIR)\%.c=$(OBJDIR)\%.obj) +TEST_OBJECTS = \ + $(TESTDIR)\extra_tests.obj \ + $(TESTDIR)\lexer_test_helpers.obj \ + $(TESTDIR)\lexer_tests.obj \ + $(TESTDIR)\string_tests.obj \ + $(TESTDIR)\tests.obj -# Default rule +# ============================================ + +# Default target all: build # === BUILD MAIN PROGRAM === - build: $(TARGET) $(TARGET): dirs $(OBJECTS) link $(OBJECTS) /OUT:$@ $(LDFLAGS) -# === COMPILE RULE === +# === COMPILE RULES === +$(OBJDIR)\main.obj: $(SRCDIR)\main.c + $(CC) $(CFLAGS) /c $(SRCDIR)\main.c /Fo$(OBJDIR)\main.obj -$(OBJDIR)\%.obj: $(SRCDIR)\%.c - $(CC) $(CFLAGS) /c $< /Fo$@ +$(OBJDIR)\lexer.obj: $(SRCDIR)\lexer.c + $(CC) $(CFLAGS) /c $(SRCDIR)\lexer.c /Fo$(OBJDIR)\lexer.obj -$(OBJDIR)\%.obj: $(TESTDIR)\%.c - $(CC) $(CFLAGS) /c $< /Fo$@ +$(OBJDIR)\string.obj: $(SRCDIR)\string.c + $(CC) $(CFLAGS) /c $(SRCDIR)\string.c /Fo$(OBJDIR)\string.obj -# === RUN PROGRAM === +$(OBJDIR)\lexer_tests.obj: $(TESTDIR)\lexer_tests.c + $(CC) $(CFLAGS) /c $(TESTDIR)\lexer_tests.c /Fo$(OBJDIR)\lexer_tests.obj +# === RUN EXECUTABLE === run: $(TARGET) $(TARGET) # === TEST BUILD & RUN === - test: $(TEST_TARGET) $(TEST_TARGET) -$(TEST_TARGET): dirs $(TEST_OBJECTS) $(OBJECTS:$(OBJDIR)\main.obj=) - link $(TEST_OBJECTS) $(OBJECTS:$(OBJDIR)\main.obj=) /OUT:$@ $(LDFLAGS) +$(TEST_TARGET): dirs $(TEST_OBJECTS) $(OBJDIR)\lexer.obj $(OBJDIR)\string.obj + link $(TEST_OBJECTS) $(OBJDIR)\lexer.obj $(OBJDIR)\string.obj /OUT:$@ $(LDFLAGS) # === CREATE DIRECTORIES === - dirs: if not exist $(OBJDIR) mkdir $(OBJDIR) if not exist $(BINDIR) mkdir $(BINDIR) # === CLEAN === - clean: rmdir /s /q $(OBJDIR) rmdir /s /q $(BINDIR)