32 lines
622 B
Makefile
32 lines
622 B
Makefile
build_dir?=build
|
|
src_dir?=src
|
|
|
|
src_dirs=$(sort $(dir $(wildcard ${src_dir}/**/)))
|
|
includes=$(patsubst %,-I%,${src_dirs})
|
|
CFLAGS+=-g -O0 -std=c99 ${includes}
|
|
LDFLAGS+=
|
|
|
|
srcs+=$(wildcard ${src_dir}/*.c ${src_dir}/**/*.c)
|
|
objs+=$(patsubst ${src_dir}/%.c,${build_dir}/%.o,${srcs})
|
|
|
|
.PHONY: all
|
|
all: build
|
|
|
|
.PHONY: build
|
|
build: main
|
|
|
|
main: ${objs}
|
|
${CC} -o $@ $^ ${CFLAGS} ${LDFLAGS}
|
|
|
|
${build_dir}/%.o: ${src_dir}/%.c
|
|
@mkdir -p $(dir $@)
|
|
${CC} -c -o $@ $^ ${CFLAGS}
|
|
|
|
.PHONY: compile_flags.txt
|
|
compile_flags.txt:
|
|
(echo "${CFLAGS} ${LDFLAGS}" | sed 's/ /\n/g') > compile_flags.txt
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
${RM} -rf build main
|