X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=Makefile;h=c0157770626f6e9f581154a9cba8de6b0971ed92;hb=e721e1438d457e0685d9327dbd9bf59fc7d7255e;hp=9f0401b439feab78862e2c4c3cc3b2fef6877edb;hpb=b40f0ce40a6c015ff5dd38ef212d617b67e5fde5;p=cparser diff --git a/Makefile b/Makefile index 9f0401b..c015777 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,14 @@ -GOAL = $(BUILDDIR)/cparser - # include user-defined makefile settings -include config.mak -BUILDDIR ?= build -variant ?= debug# Different libfirm variants (debug, optimize, profile) +top_srcdir ?= +top_builddir ?= build + +variant ?= debug# Different libfirm variants (debug, optimize, profile, coverage) +srcdir ?= $(top_srcdir) +builddir ?= $(top_builddir)/$(variant) + +#VPATH = $(srcdir) # Use libfirm subdir if it exists, otherwise use pkg-config ifneq ("$(wildcard libfirm)", "") @@ -23,14 +27,17 @@ CPPFLAGS = -I. CPPFLAGS += $(FIRM_CPPFLAGS) CFLAGS += -Wall -W -Wstrict-prototypes -Wmissing-prototypes -std=c99 -CFLAGS_debug = -O0 -g +CFLAGS_debug = -O0 -g CFLAGS_optimize = -O3 -fomit-frame-pointer -DNDEBUG -CFLAGS_profile = -pg -O3 -fno-inline +CFLAGS_profile = -pg -O3 -fno-inline +CFLAGS_coverage = --coverage -O0 CFLAGS += $(CFLAGS_$(variant)) -LFLAGS += $(FIRM_LIBS) +LINKFLAGS_profile = -pg +LINKFLAGS_coverage = --coverage +LINKFLAGS += $(LINKFLAGS_$(variant)) $(FIRM_LIBS) -SOURCES := \ +cparser_SOURCES = \ adt/strset.c \ adt/strutil.c \ adt/pset_new.c \ @@ -64,25 +71,28 @@ SOURCES := \ wrappergen/write_fluffy.c \ wrappergen/write_jna.c \ wrappergen/write_compoundsizes.c +cparser_OBJECTS = $(cparser_SOURCES:%.c=$(builddir)/%.o) +cparser_DEPS = $(cparser_OBJECTS:%.o=%.d) -OBJECTS = $(SOURCES:%.c=$(BUILDDIR)/%.o) -DEPENDS = $(OBJECTS:%.o=%.d) - -SPLINTS = $(addsuffix .splint, $(SOURCES)) -CPARSERS = $(addsuffix .cparser, $(SOURCES)) -CPARSEROS = $(SOURCES:%.c=$(BUILDDIR)/cpb/%.o) -CPARSEROS_E = $(SOURCES:%.c=$(BUILDDIR)/cpbe/%.o) -CPARSEROS2 = $(SOURCES:%.c=$(BUILDDIR)/cpb2/%.o) +SPLINTS = $(addsuffix .splint, $(cparser_SOURCES)) +CPARSERS = $(addsuffix .cparser, $(cparser_SOURCES)) +CPARSEROS = $(cparser_SOURCES:%.c=$(builddir)/cpb/%.o) +CPARSEROS_E = $(cparser_SOURCES:%.c=$(builddir)/cpbe/%.o) +CPARSEROS2 = $(cparser_SOURCES:%.c=$(builddir)/cpb2/%.o) Q = @ +GOAL = $(builddir)/cparser all: $(GOAL) -.PHONY: all bootstrap bootstrap2 bootstrape clean selfcheck splint libfirm_subdir +# disable make builtin suffix rules +.SUFFIXES: + +-include $(cparser_DEPS) --include $(DEPENDS) +.PHONY: all bootstrap bootstrap2 bootstrape clean selfcheck splint libfirm_subdir -$(SOURCES): config.h +$(cparser_SOURCES): config.h config.h: cp config.h.in $@ @@ -97,12 +107,12 @@ UNUSED := $(shell \ echo "$$REV" | cmp -s - revision.h 2> /dev/null || echo "$$REV" > revision.h \ ) -DIRS := $(sort $(dir $(OBJECTS))) -UNUSED := $(shell mkdir -p $(DIRS) $(DIRS:$(BUILDDIR)/%=$(BUILDDIR)/cpb/%) $(DIRS:$(BUILDDIR)/%=$(BUILDDIR)/cpb2/%) $(DIRS:$(BUILDDIR)/%=$(BUILDDIR)/cpbe/%)) +DIRS := $(sort $(dir $(cparser_OBJECTS))) +UNUSED := $(shell mkdir -p $(DIRS) $(DIRS:$(builddir)/%=$(builddir)/cpb/%) $(DIRS:$(builddir)/%=$(builddir)/cpb2/%) $(DIRS:$(builddir)/%=$(builddir)/cpbe/%)) -$(GOAL): $(LIBFIRM_FILE) $(OBJECTS) +$(GOAL): $(LIBFIRM_FILE) $(cparser_OBJECTS) @echo "===> LD $@" - $(Q)$(CC) $(OBJECTS) $(LIBFIRM_FILE) -o $(GOAL) $(LFLAGS) + $(Q)$(CC) $(cparser_OBJECTS) $(LIBFIRM_FILE) -o $(GOAL) $(LINKFLAGS) ifneq ("$(LIBFIRM_FILE)", "") ifneq ("$(MAKECMDGOALS)", "clean") @@ -133,34 +143,34 @@ bootstrap2: cparser.bootstrap2 @echo '===> CPARSER $<' $(Q)./cparser $(CPPFLAGS) -fsyntax-only $< -$(BUILDDIR)/cpb/%.o: %.c $(BUILDDIR)/cparser +$(builddir)/cpb/%.o: %.c $(builddir)/cparser @echo '===> CPARSER $<' - $(Q)./$(BUILDDIR)/cparser $(CPPFLAGS) -std=c99 -Wall -g3 -c $< -o $@ + $(Q)./$(builddir)/cparser $(CPPFLAGS) -std=c99 -Wall -g3 -c $< -o $@ -$(BUILDDIR)/cpbe/%.o: %.c - @echo '===> ECCP $<' +$(builddir)/cpbe/%.o: %.c + @echo '===> ECCP $@' $(Q)eccp $(CPPFLAGS) -std=c99 -Wall -c $< -o $@ -$(BUILDDIR)/cpb2/%.o: %.c cparser.bootstrap +$(builddir)/cpb2/%.o: %.c cparser.bootstrap @echo '===> CPARSER.BOOTSTRAP $<' $(Q)./cparser.bootstrap $(CPPFLAGS) -Wall -g -c $< -o $@ cparser.bootstrap: $(CPARSEROS) @echo "===> LD $@" - $(Q)./$(BUILDDIR)/cparser $(CPARSEROS) $(LFLAGS) -o $@ + $(Q)./$(builddir)/cparser $(CPARSEROS) $(LIBFIRM_FILE) $(LINKFLAGS) -o $@ cparser.bootstrape: $(CPARSEROS_E) @echo "===> LD $@" - $(Q)gcc $(CPARSEROS_E) $(LFLAGS) -o $@ + $(Q)gcc $(CPARSEROS_E) $(LINKFLAGS) -o $@ cparser.bootstrap2: cparser.bootstrap $(CPARSEROS2) @echo "===> LD $@" - $(Q)./cparser.bootstrap $(CPARSEROS2) $(LFLAGS) -o $@ + $(Q)./cparser.bootstrap $(CPARSEROS2) $(LIBFIRM_FILE) $(LINKFLAGS) -o $@ -$(BUILDDIR)/%.o: %.c - @echo '===> CC $<' - $(Q)$(CC) $(CPPFLAGS) $(CFLAGS) -MMD -c $< -o $@ +$(builddir)/%.o: %.c + @echo '===> CC $@' + $(Q)$(CC) $(CPPFLAGS) $(CFLAGS) -MMD -c -o $@ $< clean: @echo '===> CLEAN' - $(Q)rm -rf $(OBJECTS) $(GOAL) + $(Q)rm -rf $(cparser_OBJECTS) $(GOAL)