Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 13 additions & 13 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -41,26 +41,26 @@ COSMO_ZIP_URL = https://github.com/jart/cosmopolitan/releases/download/4.0.2/cos
COSMO_ZIP = cosmocc-4.0.2.zip

# Source files (exclude the old data header if it was a .c file, which it wasn't)
SOURCES = $(wildcard $(SRC_DIR)/*.c)
SOURCES!=find $(SRC_DIR) -maxdepth 1 -name '*.c' -print | sort
# Object files: compile each source file into an object file in $(BUILD_DIR)
OBJECTS = $(patsubst $(SRC_DIR)/%.c, $(BUILD_DIR)/%.o, $(SOURCES))
OBJECTS=${SOURCES:${SRC_DIR}/%.c=${BUILD_DIR}/%.o}

# Ensure dirdoc.o is linked last (it provides get_default_output)
DIRDOC_OBJ = $(BUILD_DIR)/dirdoc.o
# Main C++ sources
MAIN_CPP_SOURCES = $(SRC_DIR)/tiktoken_cpp.cpp
MAIN_CPP_OBJECTS = $(patsubst $(SRC_DIR)/%.cpp, $(BUILD_DIR)/%.o, $(MAIN_CPP_SOURCES))
MAIN_CPP_OBJECTS=${MAIN_CPP_SOURCES:${SRC_DIR}/%.cpp=${BUILD_DIR}/%.o}
# All C++ objects (main + tools)
ALL_CPP_OBJECTS = $(MAIN_CPP_OBJECTS) $(TIKTOKEN_GEN_TOOL_OBJ)
# Objects for the final dirdoc executable
DIRDOC_LINK_OBJS = $(filter-out $(DIRDOC_OBJ), $(OBJECTS)) $(MAIN_CPP_OBJECTS)
DIRDOC_LINK_OBJS=${OBJECTS:${DIRDOC_OBJ}=} $(MAIN_CPP_OBJECTS)

# Test objects need to include dirdoc.o explicitly to resolve get_default_output()
TEST_LINK_OBJS = $(OBJECTS) $(MAIN_CPP_OBJECTS) $(TEST_OBJECTS)

# Test source files and object files
TEST_SOURCES = $(wildcard $(TEST_DIR)/*.c)
TEST_OBJECTS = $(patsubst $(TEST_DIR)/%.c, $(BUILD_DIR)/test_%.o, $(TEST_SOURCES))
TEST_SOURCES!=find $(TEST_DIR) -maxdepth 1 -name '*.c' -print | sort
TEST_OBJECTS=${TEST_SOURCES:${TEST_DIR}/%.c=${BUILD_DIR}/test_%.o}

# File deletion test specific objects
TEST_FILE_DELETION_OBJ = $(BUILD_DIR)/test_test_file_deletion.o
Expand All @@ -70,7 +70,7 @@ TEST_CFLAGS = -DUNIT_TEST -I. -I$(SRC_DIR) -I$(TEST_DIR) -Ideps/cosmocc/include

# Specific objects needed for test_tiktoken
TEST_TIKTOKEN_SRCS = test_tiktoken.c
TEST_TIKTOKEN_OBJ = $(patsubst %.c, $(BUILD_DIR)/test_%.o, $(TEST_TIKTOKEN_SRCS))
TEST_TIKTOKEN_OBJ=${TEST_TIKTOKEN_SRCS:%.c=${BUILD_DIR}/test_%.o}
TIKTOKEN_TEST_DEPS = $(BUILD_DIR)/tiktoken.o $(BUILD_DIR)/stats.o $(BUILD_DIR)/tiktoken_cpp.o


Expand Down Expand Up @@ -155,13 +155,13 @@ $(TIKTOKEN_GENERATED_HEADER): $(TIKTOKEN_GEN_TOOL_EXE) $(TIKTOKEN_DOWNLOADED_FIL
fi

# Rule to build the generator tool executable
$(TIKTOKEN_GEN_TOOL_EXE): $(TIKTOKEN_GEN_TOOL_OBJ) | deps_cosmo
$(TIKTOKEN_GEN_TOOL_EXE): $(TIKTOKEN_GEN_TOOL_OBJ) deps_cosmo
@echo "⏳ Linking generator tool $(TIKTOKEN_GEN_TOOL_EXE)..."
$(CXX) $(LDFLAGS) -o $@ $(TIKTOKEN_GEN_TOOL_OBJ)
@echo "✅ Generator tool linked."

# Rule to compile the generator tool object file
$(TIKTOKEN_GEN_TOOL_OBJ): $(TIKTOKEN_GEN_TOOL_SRC) | deps_cosmo
$(TIKTOKEN_GEN_TOOL_OBJ): $(TIKTOKEN_GEN_TOOL_SRC) deps_cosmo
@echo "⏳ Compiling generator tool $<..."
$(CXX) $(CXXFLAGS) -I$(SRC_DIR) -c $< -o $@ # Include src for base64.h
@echo "✅ Generator tool compiled."
Expand Down Expand Up @@ -217,15 +217,15 @@ $(BUILD_DIR)/dirdoc_test.o: $(SRC_DIR)/dirdoc.c deps
$(CC) $(CFLAGS) $(TEST_CFLAGS) -c $< -o $@

# Link test objects and application objects for the main test executable - using test-specific dirdoc_test.o
$(BUILD_DIR)/dirdoc_test: $(filter-out $(BUILD_DIR)/dirdoc.o, $(OBJECTS)) $(BUILD_DIR)/dirdoc_test.o $(MAIN_CPP_OBJECTS) $(TEST_OBJECTS) $(TIKTOKEN_GENERATED_HEADER) | deps
$(BUILD_DIR)/dirdoc_test: deps $(OBJECTS:$(DIRDOC_OBJ)=) $(BUILD_DIR)/dirdoc_test.o $(MAIN_CPP_OBJECTS) $(TEST_OBJECTS) $(TIKTOKEN_GENERATED_HEADER)
@echo "⏳ Linking test executable..."
$(CXX) $(LDFLAGS) -o $@ $(filter-out $(TIKTOKEN_GENERATED_HEADER), $(filter-out deps, $^))
$(CXX) $(LDFLAGS) -o $@ $(OBJECTS:$(DIRDOC_OBJ)=) $(BUILD_DIR)/dirdoc_test.o $(MAIN_CPP_OBJECTS) $(TEST_OBJECTS)
@echo "✅ Test link complete"

# Build file deletion test executable
$(BUILD_DIR)/test_file_deletion: $(BUILD_DIR)/test_test_file_deletion_standalone.o $(filter-out $(BUILD_DIR)/dirdoc.o, $(OBJECTS)) $(BUILD_DIR)/dirdoc_test.o $(MAIN_CPP_OBJECTS)
$(BUILD_DIR)/test_file_deletion: $(BUILD_DIR)/test_test_file_deletion_standalone.o $(OBJECTS:$(DIRDOC_OBJ)=) $(BUILD_DIR)/dirdoc_test.o $(MAIN_CPP_OBJECTS)
@echo "⏳ Linking file deletion test executable..."
$(CXX) $(LDFLAGS) -o $@ $(filter-out $(TIKTOKEN_GENERATED_HEADER), $(filter-out deps, $^))
$(CXX) $(LDFLAGS) -o $@ $(BUILD_DIR)/test_test_file_deletion_standalone.o $(OBJECTS:$(DIRDOC_OBJ)=) $(BUILD_DIR)/dirdoc_test.o $(MAIN_CPP_OBJECTS)
@echo "✅ File deletion test link complete"

# Build and run the main tests - don't force 'all' to run, but ensure dependencies are available
Expand Down
2 changes: 1 addition & 1 deletion example_project/example_Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ BINDIR = bin

# Source files and object files
SRCS = $(SRCDIR)/main.c $(SRCDIR)/utils.c
OBJS = $(patsubst $(SRCDIR)/%.c,$(OBJDIR)/%.o,$(SRCS))
OBJS = ${SRCS:${SRCDIR}/%.c=${OBJDIR}/%.o}

# Target executable
TARGET = $(BINDIR)/sample_app
Expand Down
Loading