Makefile 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. MODULE_TOPDIR = ../..
  2. PACKAGE = "grasslibs"
  3. include $(MODULE_TOPDIR)/include/Make/Other.make
  4. MODULES = date gis raster gmath proj imagery vector rtree display stats \
  5. dbmi raster3d arraystats cluster vedit segment rowio temporal
  6. ifneq ($(USE_OPENGL),)
  7. MODULES += ogsf nviz
  8. endif
  9. date_LIBS = $(DATETIMELIB)
  10. gis_LIBS = $(GISLIB)
  11. raster_LIBS = $(RASTERLIB)
  12. gmath_LIBS = $(GMATHLIB)
  13. proj_LIBS = $(GPROJLIB)
  14. imagery_LIBS = $(IMAGERYLIB)
  15. vector_LIBS = $(VECTORLIB)
  16. rtree_LIBS = $(RTREELIB)
  17. display_LIBS = $(DISPLAYLIB)
  18. stats_LIBS = $(STATSLIB)
  19. dbmi_LIBS = $(DBMILIB)
  20. raster3d_LIBS = $(RASTER3DLIB)
  21. arraystats_LIBS = $(ARRAYSTATSLIB)
  22. cluster_LIBS = $(CLUSTERLIB)
  23. vedit_LIBS = $(VEDITLIB)
  24. ogsf_LIBS = $(OGSFLIB)
  25. nviz_LIBS = $(NVIZLIB)
  26. segment_LIBS = $(SEGMENTLIB)
  27. rowio_LIBS = $(ROWIOLIB)
  28. temporal_LIBS = $(TEMPORALLIB)
  29. date_HDRS = datetime.h defs/datetime.h
  30. gis_HDRS = gis.h defs/gis.h colors.h defs/colors.h
  31. raster_HDRS = raster.h defs/raster.h
  32. gmath_HDRS = gmath.h defs/gmath.h
  33. proj_HDRS = gprojects.h defs/gprojects.h
  34. imagery_HDRS = imagery.h defs/imagery.h
  35. vector_HDRS = vector.h defs/vector.h vect/dig_structs.h vect/dig_defines.h vect/dig_externs.h
  36. rtree_HDRS = rtree.h
  37. display_HDRS = display.h defs/display.h
  38. stats_HDRS = stats.h defs/stats.h
  39. dbmi_HDRS = dbmi.h defs/dbmi.h
  40. raster3d_HDRS = raster3d.h defs/raster3d.h
  41. arraystats_HDRS = arraystats.h defs/arraystats.h
  42. cluster_HDRS = cluster.h defs/cluster.h
  43. vedit_HDRS = vedit.h defs/vedit.h
  44. ogsf_HDRS = ogsf.h defs/ogsf.h
  45. nviz_HDRS = nviz.h defs/nviz.h
  46. segment_HDRS = segment.h defs/segment.h
  47. rowio_HDRS = rowio.h defs/rowio.h
  48. temporal_HDRS = temporal.h
  49. proj_INC = $(PROJINC)
  50. vector_INC = $(VECT_INC) $(VECT_CFLAGS)
  51. vedit_INC = $(VECT_INC) $(VECT_CFLAGS)
  52. MAC_FLAGS = ""
  53. ifneq ($(findstring darwin,$(ARCH)),)
  54. MAC_FLAGS = "-D_Nullable="
  55. endif
  56. CTYPESGEN = ./run.py
  57. CTYPESFLAGS = --cpp "$(CC) -E $(CPPFLAGS) $(LFS_CFLAGS) $(MAC_FLAGS) $(EXTRA_CFLAGS) $(NLS_CFLAGS) $(DEFS) $(EXTRA_INC) $(INC) -D__GLIBC_HAVE_LONG_LONG"
  58. EXTRA_CLEAN_FILES := $(wildcard ctypesgencore/*.pyc) $(wildcard ctypesgencore/*/*.pyc)
  59. ifneq ($(MINGW),)
  60. INTLLIB = -lintl-8
  61. endif
  62. include $(MODULE_TOPDIR)/include/Make/Python.make
  63. PYDIR = $(ETC)/python
  64. GDIR = $(PYDIR)/grass
  65. DSTDIR = $(GDIR)/lib
  66. PYFILES := $(patsubst %,$(DSTDIR)/%.py,$(MODULES) __init__ ctypes_preamble ctypes_loader)
  67. PYCFILES := $(patsubst %,$(DSTDIR)/%.pyc,$(MODULES) __init__ ctypes_preamble ctypes_loader)
  68. LPYFILES := $(patsubst %,$(OBJDIR)/%.py,$(MODULES))
  69. COPY_FILES = $(DSTDIR)/ctypes_loader.py $(DSTDIR)/ctypes_preamble.py $(DSTDIR)/__init__.py
  70. ifeq ($(strip $(GRASS_LIBRARY_TYPE)),shlib)
  71. default: $(COPY_FILES)
  72. $(MAKE) $(DSTDIR)
  73. $(MAKE) $(LPYFILES) $(PYFILES) $(PYCFILES)
  74. else
  75. default:
  76. @echo "Cannot build Python wrappers for static libraries" >&2
  77. exit 1
  78. endif
  79. $(COPY_FILES): | $(DSTDIR)
  80. $(DSTDIR)/ctypes_loader.py: ctypesgen/libraryloader.py
  81. cp -f $< $@
  82. $(DSTDIR)/ctypes_preamble.py: ctypesgen/printer_python/preamble/3_2.py
  83. cp -f $< $@
  84. $(DSTDIR)/__init__.py: libgrass__init__.py
  85. cp -f $< $@
  86. $(DSTDIR)/%.py: $(OBJDIR)/%.py | $(DSTDIR)
  87. $(INSTALL_DATA) $< $@
  88. define module_rule
  89. $(1)_DEPS = $$(patsubst %.h,$(ARCH_INCDIR)/%.h,$$($(1)_HDRS))
  90. $(OBJDIR)/$(1).py: $$($(1)_DEPS) | $(OBJDIR)
  91. $$(call run_grass,$(CTYPESGEN) $(CTYPESFLAGS) $$($(1)_LIBS) $$($(1)_INC) $(EXTRA_LIBS) $$($(1)_DEPS) -o $$@)
  92. endef
  93. $(foreach module,$(MODULES),$(eval $(call module_rule,$(module))))
  94. $(PYDIR):
  95. $(MKDIR) $@
  96. $(GDIR): | $(PYDIR)
  97. $(MKDIR) $@
  98. $(DSTDIR): | $(GDIR)
  99. $(MKDIR) $@
  100. .SECONDARY: $(patsubst %,%.py,$(MODULES))