TEXT   3

Module.mk

Guest on 20th July 2021 02:47:52 PM

  1. # Module.mk for pyroot module
  2. # Copyright (c) 2004 Rene Brun and Fons Rademakers
  3. #
  4. # Authors: Pere Mato, Wim Lavrijsen, 22/4/2004
  5.  
  6. MODNAME      := pyroot
  7. MODDIR       := bindings/$(MODNAME)
  8. MODDIRS      := $(MODDIR)/src
  9. MODDIRI      := $(MODDIR)/inc
  10.  
  11. PYROOTDIR    := $(MODDIR)
  12. PYROOTDIRS   := $(PYROOTDIR)/src
  13. PYROOTDIRI   := $(PYROOTDIR)/inc
  14.  
  15. ##### python64 #####
  16. ifeq ($(ARCH),macosx64)
  17. ifeq ($(MACOSX_MINOR),5)
  18. PYTHON64S    := $(MODDIRS)/python64.c
  19. PYTHON64O    := $(PYTHON64S:.c=.o)
  20. PYTHON64     := bin/python64
  21. PYTHON64DEP  := $(PYTHON64O:.o=.d)
  22. endif
  23. endif
  24.  
  25. ##### libPyROOT #####
  26. PYROOTL      := $(MODDIRI)/LinkDef.h
  27. PYROOTDS     := $(MODDIRS)/G__PyROOT.cxx
  28. PYROOTDO     := $(PYROOTDS:.cxx=.o)
  29. PYROOTDH     := $(PYROOTDS:.cxx=.h)
  30.  
  31. PYROOTH      := $(filter-out $(MODDIRI)/LinkDef%,$(wildcard $(MODDIRI)/*.h))
  32. PYROOTS      := $(filter-out $(MODDIRS)/G__%,$(wildcard $(MODDIRS)/*.cxx))
  33. PYROOTO      := $(PYROOTS:.cxx=.o)
  34.  
  35. PYROOTDEP    := $(PYROOTO:.o=.d) $(PYROOTDO:.o=.d)
  36.  
  37. PYROOTLIB    := $(LPATH)/libPyROOT.$(SOEXT)
  38. ifeq ($(ARCH),win32)
  39. PYROOTPYD    := bin/$(notdir $(PYROOTLIB:.$(SOEXT)=.pyd))
  40. endif
  41. PYROOTMAP    := $(PYROOTLIB:.$(SOEXT)=.rootmap)
  42.  
  43. ROOTPYS      := $(wildcard $(MODDIR)/*.py)
  44. ifeq ($(ARCH),win32)
  45. ROOTPY       := $(subst $(MODDIR),bin,$(ROOTPYS))
  46. bin/%.py: $(MODDIR)/%.py; cp $< $@
  47. else
  48. ROOTPY       := $(subst $(MODDIR),$(LPATH),$(ROOTPYS))
  49. $(LPATH)/%.py: $(MODDIR)/%.py; cp $< $@
  50. endif
  51. ROOTPYC      := $(ROOTPY:.py=.pyc)
  52. ROOTPYO      := $(ROOTPY:.py=.pyo)
  53.  
  54. # used in the main Makefile
  55. ALLHDRS      += $(patsubst $(MODDIRI)/%.h,include/%.h,$(PYROOTH))
  56. ALLLIBS      += $(PYROOTLIB)
  57. ALLMAPS      += $(PYROOTMAP)
  58.  
  59. ALLEXECS     += $(PYTHON64)
  60. INCLUDEFILES += $(PYTHON64DEP)
  61.  
  62. # include all dependency files
  63. INCLUDEFILES += $(PYROOTDEP)
  64.  
  65. ##### local rules #####
  66. .PHONY:         all-$(MODNAME) clean-$(MODNAME) distclean-$(MODNAME)
  67.  
  68. include/%.h:    $(PYROOTDIRI)/%.h
  69.                 cp $< $@
  70.  
  71. %.pyc: %.py;    python -c 'import py_compile; py_compile.compile( "$<" )'
  72. %.pyo: %.py;    python -O -c 'import py_compile; py_compile.compile( "$<" )'
  73.  
  74. $(PYROOTLIB):   $(PYROOTO) $(PYROOTDO) $(ROOTPY) $(ROOTPYC) $(ROOTPYO) \
  75.                 $(ROOTLIBSDEP) $(PYTHONLIBDEP)
  76.                 @$(MAKELIB) $(PLATFORM) $(LD) "$(LDFLAGS)" \
  77.                   "$(SOFLAGS)" libPyROOT.$(SOEXT) $@ \
  78.                   "$(PYROOTO) $(PYROOTDO)" \
  79.                   "$(ROOTULIBS) $(RPATH) $(ROOTLIBS) $(PYROOTLIBEXTRA) \
  80.                    $(PYTHONLIBDIR) $(PYTHONLIB)" "$(PYTHONLIBFLAGS)"
  81. ifeq ($(ARCH),win32)
  82.         link /dll /nologo /IGNORE:4001 /machine:ix86 /export:initlibPyROOT \
  83.         lib/libPyROOT.lib /nodefaultlib kernel32.lib msvcrt.lib \
  84.         /out:$(PYROOTPYD)
  85.         @(if [ -f $(PYROOTPYD).manifest ]; then \
  86.                 mt -nologo -manifest $(PYROOTPYD).manifest \
  87.                         -outputresource\:$(PYROOTPYD)\;2 ; \
  88.                 rm -f $(PYROOTPYD).manifest ; \
  89.         fi)
  90.         @rm -f bin/libPyROOT.lib
  91.         @rm -f bin/libPyROOT.exp
  92. endif
  93.  
  94. $(PYROOTDS):    $(PYROOTH) $(PYROOTL) $(ROOTCINTTMPDEP)
  95.                 @echo "Generating dictionary $@..."
  96.                 $(ROOTCINTTMP) -f $@ -c $(PYROOTH) $(PYROOTL)
  97.  
  98. $(PYROOTMAP):   $(RLIBMAP) $(MAKEFILEDEP) $(PYROOTL)
  99.                 $(RLIBMAP) -o $(PYROOTMAP) -l $(PYROOTLIB) \
  100.                    -d $(PYROOTLIBDEPM) -c $(PYROOTL)
  101.  
  102. $(PYTHON64):    $(PYTHON64O)
  103.                 $(CC) $(LDFLAGS) -o $@ $(PYTHON64O) \
  104.                    $(PYTHONLIBDIR) $(PYTHONLIB)
  105.  
  106. all-$(MODNAME): $(PYROOTLIB) $(PYROOTMAP) $(PYTHON64)
  107.  
  108. clean-$(MODNAME):
  109.                 @rm -f $(PYROOTO) $(PYROOTDO) $(PYTHON64O)
  110.  
  111. clean::         clean-$(MODNAME)
  112.  
  113. distclean-$(MODNAME): clean-$(MODNAME)
  114.                 @rm -f $(PYROOTDEP) $(PYROOTDS) $(PYROOTDH) $(PYROOTLIB) \
  115.                    $(ROOTPY) $(ROOTPYC) $(ROOTPYO) $(PYROOTMAP) \
  116.                    $(PYROOTPYD) $(PYTHON64DEP) $(PYTHON64)
  117.  
  118. distclean::     distclean-$(MODNAME)
  119.  
  120. ##### extra rules ######
  121. # Require Reflex support?
  122. ifeq ($(BUILDREFLEX),yes)
  123. $(PYROOTO): CXXFLAGS += -DPYROOT_USE_REFLEX $(PYTHONINCDIR:%=-I%) -Iinclude/cint
  124. $(PYROOTLIB): ROOTLIBS += $(RFLX_REFLEXLL)
  125. $(PYROOTLIB): $(REFLEXLIB)
  126. else
  127. $(PYROOTO): CXXFLAGS += $(PYTHONINCDIR:%=-I%)
  128. endif
  129. $(PYTHON64O): CFLAGS += $(PYTHONINCDIR:%=-I%)
  130. ifeq ($(GCC_MAJOR),4)
  131. $(PYROOTO): CXXFLAGS += -fno-strict-aliasing
  132. endif

Raw Paste


Login or Register to edit or fork this paste. It's free.