Improved documentation and fixed bugs
This commit is contained in:
@@ -1,3 +1,74 @@
|
||||
# Makefile for tinyhttp with cross-platform support
|
||||
# Supports Windows and Linux with various build configurations
|
||||
|
||||
all:
|
||||
gcc example.c tinyhttp.c -o blog -Wall -Wextra -ggdb -lws2_32
|
||||
# Detect operating system
|
||||
ifeq ($(OS),Windows_NT)
|
||||
DETECTED_OS := Windows
|
||||
# On Windows, we need to link with winsock library
|
||||
LIBS := -lws2_32
|
||||
RM := del /Q
|
||||
# Windows executable extension
|
||||
EXE := .exe
|
||||
else
|
||||
DETECTED_OS := $(shell uname -s)
|
||||
LIBS :=
|
||||
RM := rm -f
|
||||
EXE :=
|
||||
endif
|
||||
|
||||
# Compiler and flags
|
||||
CC := gcc
|
||||
CFLAGS := -Wall -Wextra -I.
|
||||
LDFLAGS :=
|
||||
|
||||
# Project files
|
||||
SRC := tinyhttp.c example.c
|
||||
HEADERS := tinyhttp.h
|
||||
TARGET := example$(EXE)
|
||||
|
||||
# Default target
|
||||
.PHONY: all clean release debug asan coverage
|
||||
|
||||
# Default is release build
|
||||
all: release
|
||||
|
||||
# Release build
|
||||
release: CFLAGS += -O2 -DNDEBUG
|
||||
release: $(TARGET)
|
||||
|
||||
# Debug build
|
||||
debug: CFLAGS += -ggdb -DDEBUG
|
||||
debug: $(TARGET)
|
||||
|
||||
# Address Sanitizer build
|
||||
asan: CFLAGS += -fsanitize=address -fno-omit-frame-pointer -O1
|
||||
asan: LDFLAGS += -fsanitize=address
|
||||
asan: $(TARGET)
|
||||
|
||||
# Coverage build
|
||||
coverage: CFLAGS += -fprofile-arcs -ftest-coverage -O0
|
||||
coverage: LDFLAGS += -fprofile-arcs -ftest-coverage
|
||||
coverage: $(TARGET)
|
||||
|
||||
# Compile and link
|
||||
$(TARGET): $(SRC) $(HEADERS)
|
||||
$(CC) $(CFLAGS) $(SRC) -o $@ $(LDFLAGS) $(LIBS)
|
||||
|
||||
# Clean build artifacts
|
||||
clean:
|
||||
ifeq ($(DETECTED_OS),Windows)
|
||||
$(RM) $(TARGET) *.gcda *.gcno *.gcov
|
||||
else
|
||||
$(RM) $(TARGET) *.o *.gcda *.gcno *.gcov
|
||||
endif
|
||||
|
||||
# Show help
|
||||
help:
|
||||
@echo "Available targets:"
|
||||
@echo " all - Same as 'release'"
|
||||
@echo " release - Optimized build (-O2, NDEBUG)"
|
||||
@echo " debug - Debug build with symbols (-ggdb)"
|
||||
@echo " asan - Address Sanitizer build"
|
||||
@echo " coverage - Code coverage build"
|
||||
@echo " clean - Remove build artifacts"
|
||||
@echo " help - Show this help"
|
||||
Reference in New Issue
Block a user