55NAME = hawk
66
77# Directories
8+ PACKAGES = packages
89BUILD = build
910SRC = src
1011
@@ -20,19 +21,23 @@ VERSION = $(shell jq .version $(VERSION_FILE))
2021# Flags for compiling
2122DEBUG_CFLAGS = -Wall -g
2223RELEASE_CFLAGS =
23- LDFLAGS = -lpcap --pthread -lcjson
24+ LDFLAGS = -lpcap --pthread -lcjson -lm
25+ # lm is used by argtable3
26+
2427
2528# Get all the source files in the SRC directory and its subdirectories
2629SRCFILES = $(shell find $(SRC ) -name '* .c')
30+ PKG_SRCFILES = $(shell find $(PACKAGES ) -name '* .c')
2731
2832# Generate object file names from source file names
29- OBJFILES = $(patsubst $(SRC ) /% .c, $(BUILD ) /% .o, $(SRCFILES ) )
33+ OBJFILES = $(patsubst $(SRC ) /% .c, $(BUILD ) /$(SRC ) /% .o, $(SRCFILES ) )
34+ PKG_OBJFILES = $(patsubst $(PACKAGES ) /% .c, $(BUILD ) /$(PACKAGES ) /% .o, $(PKG_SRCFILES ) )
3035
3136.PHONY : debug release clean setup-version
3237
3338# Target to build the executable with debug flags
3439debug : CFLAGS = $(DEBUG_CFLAGS )
35- debug : $(OBJFILES )
40+ debug : $(OBJFILES ) $( PKG_OBJFILES )
3641 @$(MAKE ) setup-version --no-print-directory
3742 @echo " Building $( NAME) in debug mode"
3843 @$(CC ) $(CFLAGS ) $^ -o $(NAME ) $(LDFLAGS )
@@ -41,7 +46,7 @@ debug: $(OBJFILES)
4146
4247# Target to build the executable with release flags
4348build_release : CFLAGS = $(RELEASE_CFLAGS )
44- build_release : $(OBJFILES )
49+ build_release : $(OBJFILES ) $( PKG_OBJFILES )
4550 @echo " Building $( NAME) in release mode"
4651 @$(CC ) $(CFLAGS ) $^ -o $(NAME ) $(LDFLAGS )
4752 @echo " Done!"
@@ -54,14 +59,20 @@ release:
5459
5560
5661# Rule to compile each source file into an object file
57- $(BUILD ) /% .o : $(SRC ) /% .c
62+ # Rule to compile each source file into an object file
63+ $(BUILD ) /$(SRC ) /% .o : $(SRC ) /% .c
64+ @mkdir -p $(@D )
65+ @echo " Compiling $<"
66+ @$(CC ) $(CFLAGS ) -c -o $@ $<
67+
68+ $(BUILD ) /$(PACKAGES ) /% .o : $(PACKAGES ) /% .c
5869 @mkdir -p $(@D )
5970 @echo " Compiling $<"
6071 @$(CC ) $(CFLAGS ) -c -o $@ $<
6172
6273# Target to clean up generated file
6374clean :
64- @rm -rf $(OBJFILES ) $(NAME )
75+ @rm -rf $(BUILD ) $(NAME )
6576
6677setup-version :
6778 @echo " Setting up version"
0 commit comments