mirror of
ssh://git.janware.com/srv/git/janware/proj/jw-pkg
synced 2026-01-15 03:53:32 +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/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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue