[51b7345] | 1 | # This makefile is adapted from Peter Miller's article |
---|
| 2 | # "Recursive Make Considered Harmful" |
---|
| 3 | # |
---|
| 4 | # http://www.pcug.org.au/~millerp/rmch/recu-make-cons-harm.html |
---|
| 5 | |
---|
| 6 | MODULES := Common Parser SynTree SymTab ResolvExpr CodeGen ControlStruct GenPoly Tuples InitTweak Designators #Try ArgTweak Explain |
---|
| 7 | TARGET := cfa-cpp |
---|
| 8 | |
---|
| 9 | all: $(TARGET) |
---|
| 10 | |
---|
| 11 | # look for include files in each of the modules |
---|
| 12 | CXX := @CXX@ |
---|
| 13 | CXXFLAGS += -Wno-deprecated -Wall -g -DDEBUG_ALL -I. -I Common -MMD |
---|
| 14 | INSTALL=@INSTALL@ |
---|
| 15 | |
---|
| 16 | # this is the back-end compiler, used to compile libcfa & builtins to link with user code |
---|
| 17 | BACKEND_CC := @BACKEND_CC@ |
---|
| 18 | |
---|
| 19 | # uncomment the definition of this variable to enable purify |
---|
| 20 | # (do a "purerun" first) |
---|
| 21 | #PURIFY := purify --cache-dir=$(HOME)/tmp |
---|
| 22 | |
---|
| 23 | # extra libraries if required |
---|
| 24 | LIBS := |
---|
| 25 | |
---|
| 26 | # each module will add to this |
---|
| 27 | SRC := main.cc MakeLibCfa.cc |
---|
| 28 | |
---|
| 29 | # other things that ought to be cleaned up |
---|
| 30 | EXTRA_OUTPUT := core |
---|
| 31 | |
---|
| 32 | # include the description for each module |
---|
| 33 | include $(patsubst %,%/module.mk,$(MODULES)) |
---|
| 34 | |
---|
| 35 | # determine the object files |
---|
| 36 | OBJ := $(patsubst %.cc,%.o,$(filter %.cc,$(SRC))) \ |
---|
| 37 | $(patsubst %.y,%.tab.o,$(filter %.y,$(SRC))) \ |
---|
| 38 | $(patsubst %.l,%.yy.o,$(filter %.l,$(SRC))) |
---|
| 39 | |
---|
| 40 | # include the C include dependencies |
---|
| 41 | DEPS := $(OBJ:.o=.d) |
---|
| 42 | -include $(DEPS) |
---|
| 43 | |
---|
| 44 | # link the program |
---|
| 45 | $(TARGET): $(OBJ) |
---|
| 46 | $(PURIFY) $(CXX) -o $@ $(OBJ) $(LIBS) |
---|
| 47 | |
---|
| 48 | #installing |
---|
| 49 | install: $(TARGET) |
---|
| 50 | $(INSTALL) -d @CFA_LIBDIR@ |
---|
| 51 | $(INSTALL) $(TARGET) @CFA_LIBDIR@ |
---|
| 52 | |
---|
| 53 | # clean-up rule |
---|
| 54 | clean: |
---|
| 55 | rm -f $(OBJ) $(DEPS) $(TARGET) tags $(EXTRA_OUTPUT) |
---|
| 56 | find . -name "Expected*" -prune -o \( -name "*.tst" -o -name "report" \) -print | xargs rm -f |
---|
| 57 | find . -name "core*" -print | xargs rm -f |
---|
| 58 | |
---|
| 59 | distclean: clean |
---|