From 317117b5105720268ad611c1d3d556163afb9a75 Mon Sep 17 00:00:00 2001 From: kblaschke Date: Fri, 6 Nov 2015 11:30:41 +0100 Subject: [PATCH 1/2] Linux build configuration: Add -m32/-m64 flags to compiler and dynamic linker to fully support OSARCH_64BITS in cross-compiling scenarios --- build/config/Linux | 12 ++++++------ build/rules/lib | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/build/config/Linux b/build/config/Linux index 9d1c09731..1daceb7ca 100644 --- a/build/config/Linux +++ b/build/config/Linux @@ -39,14 +39,14 @@ SHAREDLIBLINKEXT = .so # Compiler and Linker Flags # CFLAGS = -CFLAGS32 = -CFLAGS64 = +CFLAGS32 = -m32 +CFLAGS64 = -m64 CXXFLAGS = -Wall -Wno-sign-compare -CXXFLAGS32 = -CXXFLAGS64 = +CXXFLAGS32 = -m32 +CXXFLAGS64 = -m64 LINKFLAGS = -LINKFLAGS32 = -LINKFLAGS64 = +LINKFLAGS32 = -m32 +LINKFLAGS64 = -m64 STATICOPT_CC = STATICOPT_CXX = STATICOPT_LINK = -static diff --git a/build/rules/lib b/build/rules/lib index 8126f4af3..a814d8fb4 100644 --- a/build/rules/lib +++ b/build/rules/lib @@ -61,13 +61,13 @@ $(LIB_RELEASE_STATIC): $(foreach o,$(objects),$(OBJPATH_RELEASE_STATIC)/$(o).o) $(LIB_DEBUG_SHARED): $(foreach o,$(objects),$(OBJPATH_DEBUG_SHARED)/$(o).o) @echo "** Building shared library (debug)" $@ - $(SHLIB) $(SHLIBFLAGS) $^ $(LIBRARY) $(TARGET_LIBS_DEBUG) $(SYSLIBS) + $(SHLIB) $(LINKFLAGS) $(SHLIBFLAGS) $^ $(LIBRARY) $(TARGET_LIBS_DEBUG) $(SYSLIBS) $(SHLIBLN) $(LIB_DEBUG_SHARED) $(LIB_DEBUG_SHARED_LINK) $(postbuild) $(LIB_RELEASE_SHARED): $(foreach o,$(objects),$(OBJPATH_RELEASE_SHARED)/$(o).o) @echo "** Building shared library (release)" $@ - $(SHLIB) $(SHLIBFLAGS) $^ $(LIBRARY) $(TARGET_LIBS_RELEASE) $(SYSLIBS) + $(SHLIB) $(LINKFLAGS) $(SHLIBFLAGS) $^ $(LIBRARY) $(TARGET_LIBS_RELEASE) $(SYSLIBS) $(SHLIBLN) $(LIB_RELEASE_SHARED) $(LIB_RELEASE_SHARED_LINK) $(STRIPCMD) $(postbuild) From 795b4fc9bbc1f0df9d020042977123e77cc9715e Mon Sep 17 00:00:00 2001 From: kblaschke Date: Fri, 6 Nov 2015 11:55:21 +0100 Subject: [PATCH 2/2] Auto-detect OSARCH_64BITS. Otherwise, if OSARCH_64BITS is not specified, the build system would always produce 32-bit libraries, even on 64-bit hosts. --- build/config/Linux | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/build/config/Linux b/build/config/Linux index 1daceb7ca..dc336e497 100644 --- a/build/config/Linux +++ b/build/config/Linux @@ -69,3 +69,15 @@ SYSFLAGS = -D_XOPEN_SOURCE=500 -D_REENTRANT -D_THREAD_SAFE -D_FILE_OFFSET_BITS=6 # System Specific Libraries # SYSLIBS = -lpthread -ldl -lrt + +# +# Auto-detect architecture if not specified +# +ifndef OSARCH_64BITS + LBITS := $(shell getconf LONG_BIT) + ifeq ($(LBITS),64) + OSARCH_64BITS = 1 + else + OSARCH_64BITS = 0 + endif +endif