12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- CC = gcc
- CFLAGS = -O2 -fPIC -Wall
- AR = ar rc
- BUILD = build
- .PHONY : all lib clean tool
- LIBSRCS = context.c varint.c array.c pattern.c register.c proto.c map.c alloc.c rmessage.c wmessage.c bootstrap.c stringpool.c decode.c
- LIBNAME = libpbc.a
- TESTSRCS = addressbook.c pattern.c pbc.c float.c map.c test.c decode.c
- PROTOSRCS = addressbook.proto descriptor.proto float.proto test.proto
- BUILD_O = $(BUILD)/o
- all : lib test
- lib : $(LIBNAME)
- clean :
- rm -rf $(BUILD)
- $(BUILD) : $(BUILD_O)
- $(BUILD_O) :
- mkdir -p $@
- TOOL := $(BUILD)/dump
- tool : $(TOOL)
- $(TOOL) : | $(BUILD)
- $(TOOL) : $(LIBNAME)
- $(TOOL) : tool/dump.c
- cd $(BUILD) && $(CC) $(CFLAGS) -I.. -L. -o dump ../$< -lpbc
- LIB_O :=
- define BUILD_temp
- TAR := $(BUILD_O)/$(notdir $(basename $(1)))
- LIB_O := $(LIB_O) $$(TAR).o
- $$(TAR).o : | $(BUILD_O)
- -include $$(TAR).d
- $$(TAR).o : src/$(1)
- $(CC) $(CFLAGS) -c -Isrc -I. -o $$@ -MMD $$<
- endef
- $(foreach s,$(LIBSRCS),$(eval $(call BUILD_temp,$(s))))
- $(LIBNAME) : $(LIB_O)
- cd $(BUILD) && $(AR) $(LIBNAME) $(addprefix ../,$^)
- TEST :=
- define TEST_temp
- TAR := $(BUILD)/$(notdir $(basename $(1)))
- TEST := $(TEST) $$(TAR)
- $$(TAR) : | $(BUILD)
- $$(TAR) : $(LIBNAME)
- $$(TAR) : test/$(1)
- cd $(BUILD) && $(CC) $(CFLAGS) -I.. -L. -o $$(notdir $$@) ../$$< -lpbc
- endef
- $(foreach s,$(TESTSRCS),$(eval $(call TEST_temp,$(s))))
- test : $(TEST) proto
- PROTO :=
- define PROTO_temp
- TAR := $(BUILD)/$(notdir $(basename $(1)))
- PROTO := $(PROTO) $$(TAR).pb
- $$(TAR).pb : | $(BUILD)
- $$(TAR).pb : test/$(1)
- protoc -o$$@ $$<
- endef
- $(foreach s,$(PROTOSRCS),$(eval $(call PROTO_temp,$(s))))
- proto : $(PROTO)
- .PHONY : all lib test proto clean
|