diff --git a/make/swig.mk b/make/swig.mk index 381cfc2e..02d35348 100644 --- a/make/swig.mk +++ b/make/swig.mk @@ -1,5 +1,4 @@ include $(MODDIR)/make/defs.mk -include $(MODDIR)/make/py-defs.mk # for $(PYTHON) include $(MODDIR)/make/defs-cpp.mk include $(MODDIR)/make/dev-utils.mk @@ -38,6 +37,7 @@ ifeq ($(SWIG_TARGET),php) all: $(SWIG_PHP_MODULE_INI_DIR)/%.ini: %.ini + mkdir -p $(dir $@) $(INSTALL) -p -o $(APACHE_CONFOWNER) -g $(APACHE_CONFGROUP) -m $(APACHE_CONFMODE) $< $@ %.ini: @@ -52,6 +52,8 @@ else ifeq ($(SWIG_TARGET),android) else ifeq ($(SWIG_TARGET),python) + include $(MODDIR)/make/py-defs.mk # for $(PYTHON), $(PY_SITE_PACKAGES_PATH) + PYTHON_FULL_VERSION ?= $(basename $(lastword $(shell $(PYTHON) --version 2>&1))) PYTHON_MAJOR_VERSION ?= $(basename $(PYTHON_FULL_VERSION)) PYTHON_MINOR_VERSION ?= $(patsubst .%,%,$(suffix $(PYTHON_FULL_VERSION))) @@ -59,23 +61,41 @@ else ifeq ($(SWIG_TARGET),python) SWIG_LANG ?= python SWIG_TARGET_EXT ?= py SWIG_OPTS ?= -python - SWIG_MODULE_TARGET_DIR = $(ENV_PREFIX)$(SYSTEM_LIBDIR)/python$(PYTHON_MAJOR_VERSION).$(PYTHON_MINOR_VERSION)/site-packages + #SWIG_MODULE_TARGET_DIR = $(ENV_PREFIX)$(SYSTEM_LIBDIR)/python$(PYTHON_MAJOR_VERSION).$(PYTHON_MINOR_VERSION)/site-packages + SWIG_MODULE_TARGET_DIR = $(ENV_PREFIX)$(PY_SITE_PACKAGES_PATH) SWIG_MODULE_SO ?= _$(SWIG_MODULE).so - SWIG_CLEAN += $(wildcard *.pyc) - SWIG_PY_MODULE_PYC ?= $(patsubst %.py,%.pyc,$(SWIG_MODULE_TARGET)) + ifneq ($(PYTHON_VERSION),3) + SWIG_CLEAN += $(wildcard *.pyc) + SWIG_PY_MODULE_PYC ?= $(patsubst %.py,%.pyc,$(SWIG_MODULE_TARGET)) + else + SWIG_CLEAN += $(wildcard __pycache__) + SWIG_PY_MODULE_PYC ?= $(patsubst %.py,__pycache__/%.$(PY_CPYTHON_PREFIX).pyc,$(SWIG_MODULE_TARGET)) + endif SWIG_GENERATED_EXTRA += $(SWIG_PY_MODULE_PYC) SWIG_INSTALLED_EXTRA += $(SWIG_MODULE_TARGET_DIR)/$(SWIG_PY_MODULE_PYC) - BUILD_INCLUDE += $(shell pkg-config --cflags python2) - BUILD_LDFLAGS += $(shell pkg-config --libs python2) $(shell php-config --ldflags --libs) + BUILD_INCLUDE += $(shell pkg-config --cflags python$(PYTHON_VERSION)) + BUILD_LDFLAGS += $(shell pkg-config --libs python$(PYTHON_VERSION)) INSTALL_LIBDIR = $(SWIG_MODULE_TARGET_DIR) all: +ifneq ($(PYTHON_VERSION),3) %.pyc: %.py - python2 -m py_compile $< +else +__pycache__/%.$(PY_CPYTHON_PREFIX).pyc: %.py +endif + $(PYTHON) -c "import py_compile; py_compile.compile(\"$<\", doraise=True)" + +ifeq ($(PYTHON_VERSION),3) +$(SWIG_MODULE_TARGET_DIR)/__pycache__/%.$(PY_CPYTHON_PREFIX).pyc: __pycache__/%.$(PY_CPYTHON_PREFIX).pyc + mkdir -p $(dir $@) +else +$(SWIG_MODULE_TARGET_DIR)/%.pyc: %.pyc +endif + $(INSTALL) -p -m $(SWIG_TARGETMODE) -o $(SWIG_TARGETOWNER) -g $(SWIG_TARGETGROUP) $< $@ else ifeq ($(SWIG_TARGET),java) @@ -101,17 +121,19 @@ else ifeq ($(SWIG_TARGET),java) else ifeq ($(SWIG_TARGET),perl) + PERL ?= perl SWIG_LANG ?= perl SWIG_TARGET_EXT ?= pm SWIG_OPTS ?= -perl - PERL_VERSION ?= $(patsubst v%,%,$(shell perl -e 'print $$^V;')) - PERL_BASE_DIR ?= $(ENV_PREFIX)$(firstword $(wildcard /usr/lib64/perl5 /usr/lib/perl5)) - PERL_CORE_DIR ?= $(firstword $(wildcard $(PERL_BASE_DIR)/$(PERL_VERSION)/$(ARCH)-linux-thread-multi/CORE/ $(PERL_BASE_DIR)/CORE)) + PERL_VERSION ?= $(patsubst v%,%,$(shell $(PERL) -e 'print $$^V;')) + # /usr/lib/perl is a symlink to /usr/lib/perl5 for yocto, so give this a preference + PERL_BASE_DIR ?= $(firstword $(wildcard $(addprefix $(BUILD_LIBS_PREFIX),/usr/lib64/perl5 /usr/lib/perl /usr/lib/perl5 /usr/lib/perl-native/perl))) + PERL_CORE_DIR ?= $(firstword $(wildcard $(addprefix $(PERL_BASE_DIR)/,$(PERL_VERSION)/$(ARCH)-linux-thread-multi/CORE $(PERL_VERSION)/CORE CORE))) PERL_VENDOR_DIR ?= $(PERL_BASE_DIR)/vendor_perl/$(PERL_VERSION)/$(ARCH)-linux-thread-multi BUILD_INCLUDE += -I$(PERL_CORE_DIR) SWIG_CLEAN += $(wildcard *.$(SWIG_TARGET_EXT)) - INSTALL_LIBDIR = $(PERL_VENDOR_DIR)/auto/$(SWIG_MODULE) - SWIG_MODULE_TARGET_DIR = $(PERL_VENDOR_DIR) + INSTALL_LIBDIR = $(ENV_PREFIX)$(PERL_VENDOR_DIR)/auto/$(SWIG_MODULE) + SWIG_MODULE_TARGET_DIR = $(ENV_PREFIX)$(PERL_VENDOR_DIR) else @@ -171,11 +193,14 @@ $(SWIG_MODULE_WRAP_C): $(SWIG_INTERFACE_I) $(SWIG_MODULE_SO): $(SWIG_OBJ) $(CXX) $^ -shared $(BUILD_LDFLAGS) -o $@ -$(SWIG_MODULE_TARGET_DIR)/%: % +$(SWIG_MODULE_TARGET_DIR): + mkdir -p $@ + +$(SWIG_MODULE_TARGET_DIR)/%: % | $(SWIG_MODULE_TARGET_DIR) $(INSTALL) -p -o $(SWIG_TARGETOWNER) -g $(SWIG_TARGETGROUP) -m $(SWIG_TARGETMODE) $< $@ clean.generated: - $(RM) -f $(SWIG_MODULE_WRAP_C) $(SWIG_OBJ) $(SWIG_MODULE_SO) $(SWIG_MODULE_TARGET) $(SWIG_CLEAN) $(SWIG_WRAPPER_DEP_MK) + $(RM) -rf $(SWIG_MODULE_WRAP_C) $(SWIG_OBJ) $(SWIG_MODULE_SO) $(SWIG_MODULE_TARGET) $(SWIG_CLEAN) $(SWIG_WRAPPER_DEP_MK) include $(MODDIR)/make/rules.mk include $(MODDIR)/make/depend.mk