# # Name: Makehead.termux # # Purpose: This file is used to customize operating system and installation # dependent features of the Mp makefiles. This version is # customized for Android 5.1 Bionic using Termux Clang. # #MX_PYTHON = 2.7 PYTHON = python2 ifndef MX_PYTHON MX_PYTHON = $(shell $(PYTHON) -V 2>&1 | cut -f2 -d' ' | cut -c1-3) endif $(info Python is [${MX_PYTHON}]) TERMUX_PREFIX = /data/data/com.termux/files/usr PYTHON_INCLUDES = -I$(TERMUX_PREFIX)/include/python$(MX_PYTHON) PYTHON_LINK = $(shell $(PYTHON)-config --ldflags) PYTHON_MAJOR = $(shell echo $(MX_PYTHON) | cut -f1 -d'.') ###$(info $$PYTHON_INCLUDES is [${PYTHON_INCLUDES}]) ###$(info $$PYTHON_LINK is [${PYTHON_LINK}]) # # The following optional modules import external Python modules that may not # be available at all sites and for all operating systems. Comment out any # that will not build at your site. # # MpNum.py - Requires the 'numpy' module. ###OPTIONAL_MODULES += MpNum.pyc # Turn on optimization # #OPTIMIZE = -O2 #OPTIMIZE = -O3 #CFLAGS += $(OPTIMIZE) # #========================================================================= # # Generally, you should not have to modify anything after this point. # ifeq ($(PYTHON_MAJOR),2) ifeq ($(MP_DEBUG),true) PYTHON = python-dbg else PYTHON = python endif else ifeq ($(MP_DEBUG),true) PYTHON = python$(PYTHON_MAJOR)-dbg else PYTHON = python$(PYTHON_MAJOR) endif endif MP_BUILD_PYC = $(PYTHON) MpBuildPyc.pyx # # The Python developers have chosen to always compile Python with the # -Wno-strict-aliasing flag set. If the MP code is compiled with # strict-aliasing turned on, then at high optimization levels we can # get GCC warnings about the mere use of Python objects like Py_True # and Py_False. This unfortunately means that we must set the # -Wno-strict-aliasing flag for MP as well. # # Versions of GCC before GCC 3.0 do not support the -Wno-strict-aliasing # flag, so we test for and only use it with newer GCC versions. # GCC_VERSION = $(shell ../../mx/tools/mx_config clang) NEW_GCC = $(shell expr $(GCC_VERSION) \>= 3000000) ifeq ($(NEW_GCC),1) GCCFLAGS += -Wno-strict-aliasing endif # CFLAGS += -g -fPIC $(GCCFLAGS) $(INCLUDES) $(PYTHON_INCLUDES)\ -DOS_ANDROID $(EXTRA_FLAGS) -DDEBUG # MAKEDEPEND = clang -MM $(CFLAGS) libMp.c mp_*.c MpMtr*.c > Makefile.depend MAKEDEPEND_CLEAN = rm Makefile.depend #--------------------------------------------------------------------- LIBMP_OBJS = $(LIBMP_SRCS:.c=.$(OBJ)) LIBMP_SONAME = libMp.so.$(MX_MAJOR_VERSION) LIBMP_NAME = $(LIBMP_SONAME).$(MX_MINOR_VERSION).$(MX_UPDATE_VERSION) LIBMP_STATIC_NAME = libMp.a LIBMP_DELETE = rm $(LIBMP_NAME) $(LIBMP_SONAME) libMp.so $(LIBMP_STATIC_NAME) #--- $(LIBMP_NAME): $(LIBMP_OBJS) -$(LIBMP_DELETE) clang -shared -Wl,-soname,$(LIBMP_SONAME) \ -o $(LIBMP_NAME) $(LIBMP_OBJS) \ $(MP_MODULE_DIRS) $(MP_MX_LIBRARIES) \ $(PYTHON_LINK) ln -sf $(LIBMP_NAME) $(LIBMP_SONAME) ln -sf $(LIBMP_NAME) libMp.so ar rcs $(LIBMP_STATIC_NAME) $(LIBMP_OBJS) ranlib $(LIBMP_STATIC_NAME) #--------------------------------------------------------------------- MP_PYTHON_MODULES = Mp.pyc MpScan.pyc MP_MODULE_NAME = MpPrivate.so MP_MODULE_OBJS = $(MP_MODULE_SRCS:.c=.$(OBJ)) MP_MODULE_DELETE = rm $(MP_MODULE_NAME) #--- $(MP_MODULE_NAME): $(MP_MODULE_OBJS) -$(MP_MODULE_DELETE) clang -g -shared -o $(MP_MODULE_NAME) \ $(MP_MODULE_DIRS) $(MP_MODULE_OBJS) \ $(LIBMP_OBJS) \ $(MP_LIBRARIES) $(PYTHON_LINK) -lc #--------------------------------------------------------------------- MPMTR_MODULE_NAME = MpMtr.so MPMTR_MODULE_DELETE = rm $(MPMTR_MODULE_NAME) #--- $(MPMTR_MODULE_NAME): MpMtr.$(OBJ) -$(MPMTR_MODULE_DELETE) clang -g -shared -o $(MPMTR_MODULE_NAME) \ $(MP_MODULE_DIRS) MpMtr.$(OBJ) \ $(MP_LIBRARIES) -lc MpMtr.$(OBJ): MpMtr.c clang $(CFLAGS) -c MpMtr.c #--------------------------------------------------------------------- INCLUDES = -I$(LIBMXSRC) MP_MODULE_DIRS = -L$(LIBMXSRC) -L. $(LIB_DIRS) MP_MX_LIBRARIES = -lMx $(LIBRARIES) MP_LIBRARIES = -lMx -lMp -lMx $(LIBRARIES) #--------------------------------------------------------------------- mp_install: -mkdir $(MX_INSTALL_DIR)/bin -mkdir $(MX_INSTALL_DIR)/lib -mkdir $(MX_INSTALL_DIR)/lib/mp install -m 644 $(LIBMP_NAME) $(MX_INSTALL_DIR)/lib ( cd $(MX_INSTALL_DIR)/lib ; ln -sf $(LIBMP_NAME) $(LIBMP_SONAME) ) ( cd $(MX_INSTALL_DIR)/lib ; ln -sf $(LIBMP_NAME) libMp.so ) install -m 644 $(LIBMP_STATIC_NAME) $(MX_INSTALL_DIR)/lib install -m 644 *.py $(MX_INSTALL_DIR)/lib/mp install -m 644 *.pyc $(MX_INSTALL_DIR)/lib/mp install -m 644 MpPrivate.so $(MX_INSTALL_DIR)/lib/mp install -m 644 MpMtr.so $(MX_INSTALL_DIR)/lib/mp install -m 755 ../mpscript/mpscript $(MX_INSTALL_DIR)/bin install -m 755 ../mpscript/mpshell $(MX_INSTALL_DIR)/bin install -m 755 ../mpscript/mpenv $(MX_INSTALL_DIR)/bin