blob: 848cdc219034fbdd982680b8a4dbf8f1d13d2450 [file] [log] [blame]
c_sources := jsont.c
all: example1 example2 test
object_dir = .objs
objects = $(patsubst %,$(object_dir)/%,${c_sources:.c=.o})
object_dirs = $(sort $(foreach fn,$(objects),$(dir $(fn))))
-include ${objects:.o=.d}
test_dir = test
test_sources := $(wildcard test/test*.c)
test_object_dir = $(test_dir)/.objs
test_build_dir = $(test_dir)/build
test_objects = $(patsubst test/%,$(test_object_dir)/%,${test_sources:.c=.o})
test_programs = $(patsubst test/%.c,$(test_build_dir)/%,$(test_sources))
test_object_dirs = $(sort $(foreach fn,$(test_objects),$(dir $(fn))))
CC = clang
LD = clang
CFLAGS += -Wall -g -MMD -std=c99 -I.
TEST_CFLAGS := $(CFLAGS) -O0
#LDFLAGS +=
ifneq ($(DEBUG),)
CFLAGS += -O0 -DDEBUG=1
else
CFLAGS += -O3 -DNDEBUG
endif
clean:
rm -f jsont example1 example2
rm -rf $(object_dir)
rm -rf $(test_object_dir)
rm -rf $(test_build_dir)
example1: $(objects) $(object_dir)/example1.o
$(LD) $(LDFLAGS) -o $@ $^
example2: $(objects) $(object_dir)/example2.o
$(LD) $(LDFLAGS) -o $@ $^
test: $(objects) $(test_programs)
$(test_programs)
$(test_build_dir)/%: $(objects) $(test_object_dir)/%.o
@mkdir -p `dirname $@`
$(LD) $(LDFLAGS) -o $@ $^
$(test_object_dir)/%.o: $(test_dir)/%.c
@mkdir -p `dirname $@`
$(CC) $(TEST_CFLAGS) -c -o $@ $<
$(object_dir)/%.o: %.c
@mkdir -p `dirname $@`
$(CC) $(CFLAGS) -c -o $@ $<
.PHONY: clean all test