Geant4 Cross Reference |
1 # -------------------------------------------- 1 # ---------------------------------------------------------------- 2 # Common part of GNUmakefile for libraries. J 2 # Common part of GNUmakefile for libraries. John Allison, 5/7/95. 3 # -------------------------------------------- 3 # ---------------------------------------------------------------- 4 # Libraries are created according to G4SYSTEM. 4 # Libraries are created according to G4SYSTEM. G.Cosmo, 11/6/96. 5 # Introduced G4LIBDIR and G4TMPDIR. G.Cosmo, 2 5 # Introduced G4LIBDIR and G4TMPDIR. G.Cosmo, 23/6/98. 6 # Introduced Qt moc rule, L.Garnier 16/2/08. 6 # Introduced Qt moc rule, L.Garnier 16/2/08. 7 7 8 ifndef G4LIBDIR 8 ifndef G4LIBDIR 9 G4LIBDIR := $(G4LIB)/$(G4SYSTEM) 9 G4LIBDIR := $(G4LIB)/$(G4SYSTEM) 10 endif 10 endif 11 G4TMPDIR := $(G4TMP)/$(G4SYSTEM)/$(name) 11 G4TMPDIR := $(G4TMP)/$(G4SYSTEM)/$(name) 12 12 13 ifneq ($(G4INTY_BUILD_QT),) 13 ifneq ($(G4INTY_BUILD_QT),) 14 moc_inc := $(shell ($(GREP) -l "Q_OBJECT" in 14 moc_inc := $(shell ($(GREP) -l "Q_OBJECT" include/*.hh)) 15 moc_sources := $(patsubst include/%.hh, moc/ 15 moc_sources := $(patsubst include/%.hh, moc/%_moc.cc, $(moc_inc)) 16 moc_objects := $(patsubst moc/%_moc.cc,$(G4T 16 moc_objects := $(patsubst moc/%_moc.cc,$(G4TMPDIR)/%_moc.o,$(moc_sources)) 17 moc_dependencies := $(patsubst moc/%_moc.cc, 17 moc_dependencies := $(patsubst moc/%_moc.cc,$(G4TMPDIR)/%_moc.d,$(moc_sources)) 18 endif 18 endif 19 19 20 20 21 ############################################## 21 ############################################################################### 22 # 22 # 23 # Actual moc files for Qt files 23 # Actual moc files for Qt files 24 # 24 # 25 # moc sources and headers: used for Qt signal/ 25 # moc sources and headers: used for Qt signal/slot 26 # - all headers which use signals/slots have t 26 # - all headers which use signals/slots have the macro "Q_OBJECT" present 27 # in the class definitions; these all need t 27 # in the class definitions; these all need to be processed by the 28 # "meta object compiler (moc)" which generat 28 # "meta object compiler (moc)" which generates extra source code to 29 # implement the signal/slots, i.e., if "foo. 29 # implement the signal/slots, i.e., if "foo.h" contains the token "Q_OBJECT" 30 # it will be used by moc to generate the fil 30 # it will be used by moc to generate the file "foo_moc.cpp" (the _moc. is 31 # just an arbitrary extension to make it eas 31 # just an arbitrary extension to make it easier to identify sources 32 # generated by moc). 32 # generated by moc). 33 33 34 34 35 ifneq ($(G4INTY_BUILD_QT),) 35 ifneq ($(G4INTY_BUILD_QT),) 36 $(G4TMPDIR)/%_moc.d: moc/%_moc.cc 36 $(G4TMPDIR)/%_moc.d: moc/%_moc.cc 37 @echo Making dependency for moc file $< ... 37 @echo Making dependency for moc file $< ... 38 @if [ ! -d $(G4TMPDIR) ] ; then mkdir -p $(G 38 @if [ ! -d $(G4TMPDIR) ] ; then mkdir -p $(G4TMPDIR) ;fi 39 @set -e;\ 39 @set -e;\ 40 g++ $(GPPFLAGS) $(CPPFLAGS) -w -xc++ $< |\ 40 g++ $(GPPFLAGS) $(CPPFLAGS) -w -xc++ $< |\ 41 sed 's!$*\.o!$(G4TMPDIR)/& $@!' >$@;\ 41 sed 's!$*\.o!$(G4TMPDIR)/& $@!' >$@;\ 42 [ -s $@ ] || rm -f $@ 42 [ -s $@ ] || rm -f $@ 43 43 44 moc/%_moc.cc: include/%.hh 44 moc/%_moc.cc: include/%.hh 45 @echo Making moc file for $< ... 45 @echo Making moc file for $< ... 46 @if [ ! -d moc ] ; then mkdir -p moc ;fi 46 @if [ ! -d moc ] ; then mkdir -p moc ;fi 47 @if [ `$(QTMOC) -v 2>&1 | $(GREP) "Qt 3" | w 47 @if [ `$(QTMOC) -v 2>&1 | $(GREP) "Qt 3" | wc -l ` -gt 0 ]; then \ 48 $(QTMOC) -o $@ $<;\ 48 $(QTMOC) -o $@ $<;\ 49 else $(QTMOC) $(MOC_MACRO) -o $@ $<; \ 49 else $(QTMOC) $(MOC_MACRO) -o $@ $<; \ 50 fi; 50 fi; 51 51 52 # could be better if we not duplicate this rul 52 # could be better if we not duplicate this rule from common.gmk... 53 $(G4TMPDIR)/%_moc.o: moc/%_moc.cc 53 $(G4TMPDIR)/%_moc.o: moc/%_moc.cc 54 @echo Compiling $*.cc ... 54 @echo Compiling $*.cc ... 55 ifdef CPPVERBOSE 55 ifdef CPPVERBOSE 56 @echo Compiling moc file $*.cc ... 56 @echo Compiling moc file $*.cc ... 57 $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(OUT_OBJ) 57 $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(OUT_OBJ)$(G4TMPDIR)/$(*F)_moc.o moc/$*_moc.cc 58 else 58 else 59 @$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(OUT_OBJ 59 @$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(OUT_OBJ)$(G4TMPDIR)/$(*F)_moc.o moc/$*_moc.cc 60 endif 60 endif 61 endif 61 endif