mirror of
ssh://git.janware.com/srv/git/janware/proj/jw-pkg
synced 2026-01-24 14:50:38 +01:00
swig.mk: Fix multiple file location issues
This commit fixes multiple issues with locating Perl and Python directories and files. It was driven by the need to have it work on Yocto, and isn't tested anywhere else. It also fixes __pycache__/%.pyc issues from the Python 2 -> 3 transition. Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
parent
48d1bd0256
commit
837f8f97bb
1 changed files with 39 additions and 14 deletions
53
make/swig.mk
53
make/swig.mk
|
|
@ -1,5 +1,4 @@
|
||||||
include $(MODDIR)/make/defs.mk
|
include $(MODDIR)/make/defs.mk
|
||||||
include $(MODDIR)/make/py-defs.mk # for $(PYTHON)
|
|
||||||
include $(MODDIR)/make/defs-cpp.mk
|
include $(MODDIR)/make/defs-cpp.mk
|
||||||
include $(MODDIR)/make/dev-utils.mk
|
include $(MODDIR)/make/dev-utils.mk
|
||||||
|
|
||||||
|
|
@ -38,6 +37,7 @@ ifeq ($(SWIG_TARGET),php)
|
||||||
all:
|
all:
|
||||||
|
|
||||||
$(SWIG_PHP_MODULE_INI_DIR)/%.ini: %.ini
|
$(SWIG_PHP_MODULE_INI_DIR)/%.ini: %.ini
|
||||||
|
mkdir -p $(dir $@)
|
||||||
$(INSTALL) -p -o $(APACHE_CONFOWNER) -g $(APACHE_CONFGROUP) -m $(APACHE_CONFMODE) $< $@
|
$(INSTALL) -p -o $(APACHE_CONFOWNER) -g $(APACHE_CONFGROUP) -m $(APACHE_CONFMODE) $< $@
|
||||||
|
|
||||||
%.ini:
|
%.ini:
|
||||||
|
|
@ -52,6 +52,8 @@ else ifeq ($(SWIG_TARGET),android)
|
||||||
|
|
||||||
else ifeq ($(SWIG_TARGET),python)
|
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_FULL_VERSION ?= $(basename $(lastword $(shell $(PYTHON) --version 2>&1)))
|
||||||
PYTHON_MAJOR_VERSION ?= $(basename $(PYTHON_FULL_VERSION))
|
PYTHON_MAJOR_VERSION ?= $(basename $(PYTHON_FULL_VERSION))
|
||||||
PYTHON_MINOR_VERSION ?= $(patsubst .%,%,$(suffix $(PYTHON_FULL_VERSION)))
|
PYTHON_MINOR_VERSION ?= $(patsubst .%,%,$(suffix $(PYTHON_FULL_VERSION)))
|
||||||
|
|
@ -59,23 +61,41 @@ else ifeq ($(SWIG_TARGET),python)
|
||||||
SWIG_LANG ?= python
|
SWIG_LANG ?= python
|
||||||
SWIG_TARGET_EXT ?= py
|
SWIG_TARGET_EXT ?= py
|
||||||
SWIG_OPTS ?= -python
|
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_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_GENERATED_EXTRA += $(SWIG_PY_MODULE_PYC)
|
||||||
SWIG_INSTALLED_EXTRA += $(SWIG_MODULE_TARGET_DIR)/$(SWIG_PY_MODULE_PYC)
|
SWIG_INSTALLED_EXTRA += $(SWIG_MODULE_TARGET_DIR)/$(SWIG_PY_MODULE_PYC)
|
||||||
|
|
||||||
BUILD_INCLUDE += $(shell pkg-config --cflags python2)
|
BUILD_INCLUDE += $(shell pkg-config --cflags python$(PYTHON_VERSION))
|
||||||
BUILD_LDFLAGS += $(shell pkg-config --libs python2) $(shell php-config --ldflags --libs)
|
BUILD_LDFLAGS += $(shell pkg-config --libs python$(PYTHON_VERSION))
|
||||||
|
|
||||||
INSTALL_LIBDIR = $(SWIG_MODULE_TARGET_DIR)
|
INSTALL_LIBDIR = $(SWIG_MODULE_TARGET_DIR)
|
||||||
|
|
||||||
all:
|
all:
|
||||||
|
|
||||||
|
ifneq ($(PYTHON_VERSION),3)
|
||||||
%.pyc: %.py
|
%.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)
|
else ifeq ($(SWIG_TARGET),java)
|
||||||
|
|
||||||
|
|
@ -101,17 +121,19 @@ else ifeq ($(SWIG_TARGET),java)
|
||||||
|
|
||||||
else ifeq ($(SWIG_TARGET),perl)
|
else ifeq ($(SWIG_TARGET),perl)
|
||||||
|
|
||||||
|
PERL ?= perl
|
||||||
SWIG_LANG ?= perl
|
SWIG_LANG ?= perl
|
||||||
SWIG_TARGET_EXT ?= pm
|
SWIG_TARGET_EXT ?= pm
|
||||||
SWIG_OPTS ?= -perl
|
SWIG_OPTS ?= -perl
|
||||||
PERL_VERSION ?= $(patsubst v%,%,$(shell perl -e 'print $$^V;'))
|
PERL_VERSION ?= $(patsubst v%,%,$(shell $(PERL) -e 'print $$^V;'))
|
||||||
PERL_BASE_DIR ?= $(ENV_PREFIX)$(firstword $(wildcard /usr/lib64/perl5 /usr/lib/perl5))
|
# /usr/lib/perl is a symlink to /usr/lib/perl5 for yocto, so give this a preference
|
||||||
PERL_CORE_DIR ?= $(firstword $(wildcard $(PERL_BASE_DIR)/$(PERL_VERSION)/$(ARCH)-linux-thread-multi/CORE/ $(PERL_BASE_DIR)/CORE))
|
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
|
PERL_VENDOR_DIR ?= $(PERL_BASE_DIR)/vendor_perl/$(PERL_VERSION)/$(ARCH)-linux-thread-multi
|
||||||
BUILD_INCLUDE += -I$(PERL_CORE_DIR)
|
BUILD_INCLUDE += -I$(PERL_CORE_DIR)
|
||||||
SWIG_CLEAN += $(wildcard *.$(SWIG_TARGET_EXT))
|
SWIG_CLEAN += $(wildcard *.$(SWIG_TARGET_EXT))
|
||||||
INSTALL_LIBDIR = $(PERL_VENDOR_DIR)/auto/$(SWIG_MODULE)
|
INSTALL_LIBDIR = $(ENV_PREFIX)$(PERL_VENDOR_DIR)/auto/$(SWIG_MODULE)
|
||||||
SWIG_MODULE_TARGET_DIR = $(PERL_VENDOR_DIR)
|
SWIG_MODULE_TARGET_DIR = $(ENV_PREFIX)$(PERL_VENDOR_DIR)
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
|
|
@ -171,11 +193,14 @@ $(SWIG_MODULE_WRAP_C): $(SWIG_INTERFACE_I)
|
||||||
$(SWIG_MODULE_SO): $(SWIG_OBJ)
|
$(SWIG_MODULE_SO): $(SWIG_OBJ)
|
||||||
$(CXX) $^ -shared $(BUILD_LDFLAGS) -o $@
|
$(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) $< $@
|
$(INSTALL) -p -o $(SWIG_TARGETOWNER) -g $(SWIG_TARGETGROUP) -m $(SWIG_TARGETMODE) $< $@
|
||||||
|
|
||||||
clean.generated:
|
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/rules.mk
|
||||||
include $(MODDIR)/make/depend.mk
|
include $(MODDIR)/make/depend.mk
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue