2 INCLUDES
= -I src
-I deps
3 CFLAGS
= -std
=c99
-Wall
-Wextra
-Wconversion
-Werror
--pedantic
$(INCLUDES
)
8 ARCH
= $(shell uname
-m
)
9 OS
= $(shell uname | tr
'/[:upper:]' '_[:lower:]' )
11 OBJECTS_FILENAMES
= config.o bytecode.o vectors.o parser.o bf
/parser.o bf
/machine.o bfmm
/parser.o bfmm
/machine.o lcbf
/machine.o ook
/parser.o mndb
/machine.o bfp3
/parser.o bfp3
/machine.o machine.o main.o
12 TARGET_FILENAME
= afunbrick
21 CFLAGS
+= -O9
-DNDEBUG
23 UPX_CMD
= upx
--brute
$(TARGET
)
29 TARGET_DIR
= target
/$(ARCH
)-$(OS
)-$(LIBC
)/$(MODE
)
30 OBJECTS_DIR
= $(TARGET_DIR
)/obj
31 OBJECTS
= $(OBJECTS_FILENAMES
:%=$(OBJECTS_DIR
)/%)
32 TARGET
= $(TARGET_DIR
)/$(TARGET_FILENAME
)
34 include deps
/module.mk
36 .PHONY
: help
clean test
39 @echo
"main targets: all test clean"
41 @echo
" RELEASE=1 remove debug outputs, enable optimization and strip the executable"
42 @echo
" MUSL=1 link statically against musl libc"
47 $(CC
) $^
-o
$@
$(LDFLAGS
)
50 $(OBJECTS_DIR
)/%.o
: src
/%.c
$(DEPS
)
52 $(CC
) $(CFLAGS
) $< -c
-o
$@
57 include test/module.mk