From 2aaea5390a841e2682a318746e90aebbe8a955b9 Mon Sep 17 00:00:00 2001 From: Joshua Haberman Date: Tue, 4 Aug 2009 17:51:17 -0700 Subject: Makefile is much improved ("make deps" works again, etc). --- Makefile | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index a9d9a5f..f61d85b 100644 --- a/Makefile +++ b/Makefile @@ -1,27 +1,38 @@ +# Function to expand a wildcard pattern recursively. +rwildcard=$(strip $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2)$(filter $(subst *,%,$2),$d))) + .PHONY: all clean CC=gcc CXX=g++ CFLAGS=-std=c99 INCLUDE=-Idescriptor -Isrc -Itests -I. CPPFLAGS=-O3 -fomit-frame-pointer -Wall -Wextra -g -DNDEBUG $(INCLUDE) -OBJ=src/upb_parse.o src/upb_table.o src/upb_msg.o src/upb_enum.o src/upb_context.o \ - src/upb_string.o src/upb_text.o src/upb_serialize.o descriptor/descriptor.o -SRC=src/*.c src/*.h descriptor/*.c descriptor/*.h tests/*.c tests/*.h tools/*.c -ALL=$(OBJ) src/libupb.a tests/test_table tests/tests tools/upbc benchmark/benchmark + +ALL=deps $(OBJ) src/libupb.a tests/test_table tests/tests tools/upbc all: $(ALL) clean: - rm -f $(ALL) benchmark/google_messages.proto.pb benchmark/google_messages.pb.* - -test: tests/tests - ./tests/tests + rm -f $(call rwildcard,,*.o) $(ALL) benchmark/google_messages.proto.pb benchmark/google_messages.pb.* benchmark/b_* +# The core library (src/libupb.a) +OBJ=src/upb_parse.o src/upb_table.o src/upb_msg.o src/upb_enum.o src/upb_context.o \ + src/upb_string.o src/upb_text.o src/upb_serialize.o descriptor/descriptor.o +SRC=$(call rwildcard,,*.c) +HEADERS=$(call rwildcard,,*.h) src/libupb.a: $(OBJ) ar rcs src/libupb.a $(OBJ) + +# Tests +test: tests/tests + ./tests/tests tests/test_table: src/libupb.a tests/tests: src/libupb.a + +# Tools tools/upbc: src/libupb.a -benchmark/benchmark: src/libupb.a benchmark/google_messages.pb.h benchmark/google_messages.pb.o benchmark/benchmark.o - $(CXX) $(CPPFLAGS) -o benchmark/benchmark benchmark/google_messages.pb.o benchmark/benchmark.cc src/libupb.a -lm -lprotobuf -lpthread -benchmark/google_messages.pb.cc benchmark/google_messages.pb.h benchmark/google_messages.pb: benchmark/google_messages.proto - protoc benchmark/google_messages.proto --cpp_out=. -obenchmark/google_messages.proto.pb + +# Benchmarks + +-include deps +deps: $(SRC) $(HEADERS) gen-deps.sh Makefile + ./gen-deps.sh $(SRC) -- cgit v1.2.3