| 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
|
|---|