Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/config/moc.gmk

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

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