summaryrefslogtreecommitdiffstatshomepage
path: root/unix
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2015-08-30 10:57:38 +0300
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2015-08-30 15:26:25 +0300
commita9058bf2944db20f5e2377a6a38c37a46d3d6aa0 (patch)
tree1c7d3a39c6f4f9b67ef0d0d49d84787aaa3cecaf /unix
parent39c91d36245a6338dd7bdd95448cb7781a6da001 (diff)
downloadmicropython-a9058bf2944db20f5e2377a6a38c37a46d3d6aa0.tar.gz
micropython-a9058bf2944db20f5e2377a6a38c37a46d3d6aa0.zip
unix: Allow to build libffi from source and link against it.
Linking against local libffi (and other libs in future) is triggered by "make MICROPY_STANDALONE=1". Before that, dependent libs should be built with "make deplibs".
Diffstat (limited to 'unix')
-rw-r--r--unix/Makefile35
1 files changed, 32 insertions, 3 deletions
diff --git a/unix/Makefile b/unix/Makefile
index a061170831..edc800b633 100644
--- a/unix/Makefile
+++ b/unix/Makefile
@@ -77,13 +77,26 @@ ifeq ($(MICROPY_PY_SOCKET),1)
CFLAGS_MOD += -DMICROPY_PY_SOCKET=1
SRC_MOD += modsocket.c
endif
+
ifeq ($(MICROPY_PY_FFI),1)
-LIBFFI_LDFLAGS_MOD := $(shell pkg-config --libs libffi)
+
+ifeq ($(MICROPY_STANDALONE),1)
+LIBFFI_CFLAGS_MOD := -I$(shell ls -1d ../lib/libffi/out/lib/libffi-*/include)
+ ifeq ($(MICROPY_FORCE_32BIT),1)
+ LIBFFI_LDFLAGS_MOD = ../lib/libffi/out/lib32/libffi.a
+ else
+ LIBFFI_LDFLAGS_MOD = ../lib/libffi/out/lib/libffi.a
+ endif
+else
LIBFFI_CFLAGS_MOD := $(shell pkg-config --cflags libffi)
-CFLAGS_MOD += $(LIBFFI_CFLAGS_MOD) -DMICROPY_PY_FFI=1
+LIBFFI_LDFLAGS_MOD := $(shell pkg-config --libs libffi)
+endif
+
ifeq ($(UNAME_S),Linux)
-LDFLAGS_MOD += -ldl
+LIBFFI_LDFLAGS_MOD += -ldl
endif
+
+CFLAGS_MOD += $(LIBFFI_CFLAGS_MOD) -DMICROPY_PY_FFI=1
LDFLAGS_MOD += $(LIBFFI_LDFLAGS_MOD)
SRC_MOD += modffi.c
endif
@@ -172,3 +185,19 @@ $(BUILD)/frozen_upip/upip.py: $(UPIP_TARBALL)
$(Q)rm -rf $(dir $@)
$(Q)mkdir -p $(dir $@)
$(Q)cp $(BUILD)/micropython-upip-*/upip*.py $(dir $@)
+
+
+# Value of configure's --host= option (required for cross-compilation).
+# Deduce it from CROSS_COMPILE by default, but can be overriden.
+ifneq ($(CROSS_COMPILE),)
+CROSS_COMPILE_HOST = --host=$(patsubst %-,%,$(CROSS_COMPILE))
+else
+CROSS_COMPILE_HOST =
+endif
+
+deplibs: libffi
+
+libffi:
+ cd ../lib/libffi; git clean -d -x -f
+ cd ../lib/libffi; ./autogen.sh
+ cd ../lib/libffi; ./configure $(CROSS_COMPILE_HOST) --prefix=$$PWD/out CC="$(CC)" CXX="$(CXX)" LD="$(LD)"; make install