jw-pkg/make/swig.mk

158 lines
6.2 KiB
Makefile
Raw Normal View History

include $(MODDIR)/make/defs.mk
include $(MODDIR)/make/dev-utils.mk
ifeq ($(SWIG_TARGET),php)
SWIG_LANG ?= php
SWIG_TARGET_EXT ?= php
ifeq ($(OS_NAME),ubuntu)
PHP_MAJOR ?= 5
else
PHP_MAJOR ?= $(shell php-config --version | cut -d. -f1)
endif
PHP ?= php$(PHP_MAJOR)
#PHP ?= $(firstword $(notdir $(wildcard /usr/share/php*)))
SWIG_OPTS ?= -$(PHP) -DJW_PHP_MAJOR=$(PHP_MAJOR)
SWIG_MODULE_TARGET_DIR = $(ENV_PREFIX)/usr/share/$(PHP)
#SWIG_PHP_INCLUDE_DIR = /usr/include/$(PHP)
#SWIG_PHP_INCLUDE_SUBDIRS = . main TSRM Zend
SWIG_PHP_MODULE_INI = $(SWIG_MODULE).ini
SWIG_PHP_MODULE_INI_DIR = $(ENV_PREFIX)/etc/$(PHP)/conf.d
#SWIG_PHP_NAMESPACE ?= $(SWIG_MODULE)
SWIG_GENERATED_EXTRA += $(SWIG_PHP_MODULE_INI)
SWIG_INSTALLED_EXTRA = $(SWIG_PHP_MODULE_INI_DIR)/$(SWIG_PHP_MODULE_INI)
ifneq ($(SWIG_PHP_NAMESPECE),)
SWIG_POSTPROCESS += sed -i -e "s/^<?php/<?php namespace $(SWIG_PHP_NAMESPACE);/" $(SWIG_MODULE_TARGET)
endif
SWIG_CLEAN += php_$(SWIG_MODULE_H) $(SWIG_PHP_MODULE_INI)
INCLUDE += $(shell php-config --includes)
INSTALL_LIBDIR = $(ENV_PREFIX)/usr/$(SYSTEM_LIBDIR_NAME)/$(PHP)/extensions
LOCAL_CFLAGS += -Wno-unused-label -Wno-unused-function
LOCAL_CPPFLAGS += -Wno-unused-label -Wno-unused-function
all:
$(SWIG_PHP_MODULE_INI_DIR)/%.ini: %.ini
$(INSTALL) -p -o $(APACHE_CONFOWNER) -g $(APACHE_CONFGROUP) -m $(APACHE_CONFMODE) $< $@
%.ini:
echo extension=$*.so > $@.tmp
mv $@.tmp $@
else ifeq ($(SWIG_TARGET),android)
SWIG_LANG ?= android
SWIG_TARGET_EXT ?= java
SWIG_OPTS ?= -android
else ifeq ($(SWIG_TARGET),python)
PYTHON_VERSION ?= $(basename $(lastword $(shell python2 --version 2>&1)))
PYTHON_MAJOR_VERSION ?= $(basename $(PYTHON_VERSION))
PYTHON_MINOR_VERSION ?= $(patsubst .%,%,$(suffix $(PYTHON_VERSION)))
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_SO ?= _$(SWIG_MODULE).so
SWIG_CLEAN += $(wildcard *.pyc)
SWIG_PY_MODULE_PYC ?= $(patsubst %.py,%.pyc,$(SWIG_MODULE_TARGET))
SWIG_GENERATED_EXTRA += $(SWIG_PY_MODULE_PYC)
SWIG_INSTALLED_EXTRA += $(SWIG_MODULE_TARGET_DIR)/$(SWIG_PY_MODULE_PYC)
INCLUDE += $(shell pkg-config --cflags python2)
BUILD_LDFLAGS += $(shell pkg-config --libs python2) $(shell php-config --ldflags --libs)
INSTALL_LIBDIR = $(SWIG_MODULE_TARGET_DIR)
all:
%.pyc: %.py
python2 -m py_compile $<
else ifeq ($(SWIG_TARGET),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_VENDOR_DIR ?= $(PERL_BASE_DIR)/vendor_perl/$(PERL_VERSION)/$(ARCH)-linux-thread-multi
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)
else
$(error SWIG_TARGET=$(SWIG_TARGET) undefined or unknown)
endif
SWIG_INCLUDE ?= $(filter-out -iquote .,$(INCLUDE))
SWIG_USE_CPP ?= true
ifeq ($(SWIG_USE_CPP),true)
SWIG_SOURCE_EXT ?= cpp
SWIG_OPTS += -c++
else
SWIG_SOURCE_EXT ?= c
endif
SWIG ?= swig
SWIG_INTERFACE_I ?= $(wildcard *.i)
#SWIG_MODULE ?= $(SWIG_TARGET_EXT)_$(firstword $(shell sed '/^%module/ !d; s/^ *%module *//' $(SWIG_INTERFACE_I)))
SWIG_MODULE ?= $(firstword $(shell sed '/^%module/ !d; s/^ *%module *//' $(SWIG_INTERFACE_I)))
SWIG_MODULE_SO ?= $(SWIG_MODULE).so
SWIG_MODULE_H ?= $(SWIG_MODULE).h
SWIG_MODULE_WRAP_C ?= $(SWIG_MODULE)_wrap.$(SWIG_SOURCE_EXT)
SWIG_MODULE_TARGET ?= $(SWIG_MODULE).$(SWIG_TARGET_EXT)
SWIG_SRC_C ?= $(sort $(SWIG_MODULE_WRAP_C) $(wildcard *.c *.cpp))
SWIG_OBJ ?= $(patsubst %.cpp,%.o,$(patsubst %.c,%.o,$(sort $(SWIG_SRC_C))))
SWIG_TARGETOWNER ?= root
SWIG_TARGETGROUP ?= root
SWIG_TARGETMODE ?= 0644
SWIG_WRAPPER_DEP_MK = swig.dep.mk
SWIG_INSTALLED_SO = $(addprefix $(INSTALL_LIBDIR)/,$(SWIG_MODULE_SO))
SWIG_INSTALLED_MODULE_TARGET = $(addprefix $(SWIG_MODULE_TARGET_DIR)/,$(SWIG_MODULE_TARGET))
SWIG_DEFINES += -DNON_C_BINDING
SWIG_OPTS += $(SWIG_DEFINES)
LOCAL_CFLAGS += $(SWIG_DEFINES)
LOCAL_CPPFLAGS += $(SWIG_DEFINES)
# for depend.mk
OBJ = $(SWIG_OBJ)
DEPEND_MK += $(SWIG_WRAPPER_DEP_MK)
all: $(SWIG_MODULE_SO) $(SWIG_GENERATED_EXTRA)
install: $(SWIG_INSTALLED_SO) $(SWIG_INSTALLED_MODULE_TARGET) $(SWIG_INSTALLED_EXTRA)
clean: clean.generated
distclean: clean
$(SWIG_WRAPPER_DEP_MK): $(SWIG_INTERFACE_I)
$(SWIG) -M -oh $(SWIG_MODULE_H) -module $(SWIG_MODULE) $(SWIG_INCLUDE) $(SWIG_OPTS) -MT $(SWIG_MODULE_WRAP_C) $< > $@.tmp
mv $@.tmp $@
$(SWIG_MODULE_WRAP_C): $(SWIG_INTERFACE_I)
$(SWIG) -oh $(SWIG_MODULE_H) -module $(SWIG_MODULE) $(SWIG_INCLUDE) $(SWIG_OPTS) -o $@ $<
$(SWIG_POSTPROCESS)
$(SWIG_MODULE_SO): $(SWIG_OBJ)
$(CPP) $^ -shared $(BUILD_LDFLAGS) -o $@
$(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)
include $(MODDIR)/make/rules.mk
include $(MODDIR)/make/depend.mk