comparison Makefile.inc @ 122:6d651bfc93b9

Some build fixes (especially: use of realpath for object files meant only those files that already existed in the original directories were being considered as targets)
author Chris Cannam <c.cannam@qmul.ac.uk>
date Thu, 10 Nov 2016 13:35:55 +0000
parents d1a99d44812b
children a8d054ec22ac
comparison
equal deleted inserted replaced
121:d1a99d44812b 122:6d651bfc93b9
9 @echo " - build Javascript module using Emscripten" 9 @echo " - build Javascript module using Emscripten"
10 @echo "$$ make linux" 10 @echo "$$ make linux"
11 @echo " - build native-code module on Linux (mostly for testing)" 11 @echo " - build native-code module on Linux (mostly for testing)"
12 @echo "$$ make clean" 12 @echo "$$ make clean"
13 @echo " - remove intermediate build files, but not targets" 13 @echo " - remove intermediate build files, but not targets"
14 @echo "$$ make distclean"
15 @echo " - remove all targets and intermediate build files"
14 @echo 16 @echo
15 @echo "Note: when switching from one target to another, make clean first" 17 @echo "Note: when switching from one target to another, make clean first"
16 @echo 18 @echo
17 19
18 MY_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) 20 MY_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))
84 86
85 OBJDIR := o 87 OBJDIR := o
86 88
87 CXX_OBJECTS := $(CXX_SOURCES:.cpp=.o) 89 CXX_OBJECTS := $(CXX_SOURCES:.cpp=.o)
88 C_OBJECTS := $(C_SOURCES:.c=.o) 90 C_OBJECTS := $(C_SOURCES:.c=.o)
89 OBJECTS := $(CXX_OBJECTS) $(C_OBJECTS) 91 ALL_OBJECTS := $(CXX_OBJECTS) $(C_OBJECTS)
90 OBJECTS := $(addprefix $(OBJDIR)/,$(realpath $(OBJECTS))) 92 OBJECTS := $(addprefix $(OBJDIR)/,$(abspath $(ALL_OBJECTS)))
91 93
92 o/%.o: %.cpp 94 o/%.o: %.cpp
93 mkdir -p $(dir $@) 95 mkdir -p $(dir $@)
94 $(CXX) -c $(INCPATH) $(CXXFLAGS) -o $@ $< 96 $(CXX) -c $(INCPATH) $(CXXFLAGS) -o $@ $<
95 97
97 mkdir -p $(dir $@) 99 mkdir -p $(dir $@)
98 $(CC) -c $(INCPATH) $(CFLAGS) -o $@ $< 100 $(CC) -c $(INCPATH) $(CFLAGS) -o $@ $<
99 101
100 $(EM_MODULE): $(OBJECTS) 102 $(EM_MODULE): $(OBJECTS)
101 $(CXX) $(OPTFLAGS) -o $@ $^ $(LDFLAGS) && \ 103 $(CXX) $(OPTFLAGS) -o $@ $^ $(LDFLAGS) && \
102 ( echo "if (typeof process === 'object') module.exports=$(MODULE_SYMBOL);" >> $(EM_MODULE) ) 104 ( echo "if (typeof process === 'object') module.exports=$(EM_MODULE_SYMBOL);" >> $(EM_MODULE) )
103 105
104 $(SO_MODULE): $(OBJECTS) 106 $(SO_MODULE): $(OBJECTS)
105 $(CXX) -o $@ $^ $(LDFLAGS) 107 $(CXX) -o $@ $^ $(LDFLAGS)
106 108
107 clean: 109 clean:
108 rm -f $(OBJECTS) 110 rm -f $(OBJECTS)
111
112 distclean: clean
113 rm -f $(EM_MODULE) $(SO_MODULE)