summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorJoshua Haberman <joshua@reverberate.org>2009-08-04 17:51:17 -0700
committerJoshua Haberman <joshua@reverberate.org>2009-08-04 17:51:17 -0700
commit2aaea5390a841e2682a318746e90aebbe8a955b9 (patch)
tree7fb416aafcf8d84d2d3b73344b4b68f21f3d01f5 /Makefile
parentf03c8bd7dddb17f51e6baeacd68e4c0172411e82 (diff)
Makefile is much improved ("make deps" works again, etc).
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile35
1 files changed, 23 insertions, 12 deletions
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)
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback