From 331b23d15b765489a9abd344ddab9771125c3754 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nils=20Wallm=C3=A9nius?= Date: Tue, 7 Jun 2011 11:56:23 +0000 Subject: [PATCH] FS#12144, Use -fPIC -fvisibility=hidden only for plugins on sim and app builds and enable it for 32 bit too. Fixes linking errors on simbuilds. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29983 a1c6a512-1295-4272-9138-f99709370657 --- apps/codecs/codecs.make | 3 ++- apps/plugins/doom/SOURCES | 1 + apps/plugins/doom/doom.make | 1 - apps/plugins/lua/Makefile | 2 +- apps/plugins/plugins.make | 3 ++- apps/plugins/rockboy/SOURCES | 1 + apps/plugins/rockboy/rockboy.make | 1 - tools/configure | 39 ++++++++++++++----------------- 8 files changed, 25 insertions(+), 26 deletions(-) diff --git a/apps/codecs/codecs.make b/apps/codecs/codecs.make index be1a0e0f00..1a5dd8f36a 100644 --- a/apps/codecs/codecs.make +++ b/apps/codecs/codecs.make @@ -112,7 +112,8 @@ $(CODECDIR)/%.o: $(ROOTDIR)/apps/codecs/%.S -I$(dir $<) $(CODECFLAGS) $(ASMFLAGS) -c $< -o $@ ifdef APP_TYPE - CODECLDFLAGS = $(SHARED_FLAG) # <-- from Makefile + CODECLDFLAGS = $(SHARED_LDFLAG) # <-- from Makefile + CODECFLAGS += $(SHARED_CFLAGS) # <-- from Makefile else CODECLDFLAGS = -T$(CODECLINK_LDS) -Wl,--gc-sections -Wl,-Map,$(CODECDIR)/$*.map CODECFLAGS += -UDEBUG -DNDEBUG diff --git a/apps/plugins/doom/SOURCES b/apps/plugins/doom/SOURCES index 6cd69faee6..470cbf159c 100644 --- a/apps/plugins/doom/SOURCES +++ b/apps/plugins/doom/SOURCES @@ -1,3 +1,4 @@ +../../../firmware/libc/sscanf.c info.c doomdef.c doomstat.c diff --git a/apps/plugins/doom/doom.make b/apps/plugins/doom/doom.make index 58a4708819..07b553c454 100644 --- a/apps/plugins/doom/doom.make +++ b/apps/plugins/doom/doom.make @@ -13,7 +13,6 @@ DOOMBUILDDIR := $(BUILDDIR)/apps/plugins/doom ROCKS += $(DOOMBUILDDIR)/doom.rock DOOM_SRC := $(call preprocess, $(DOOMSRCDIR)/SOURCES) -DOOM_SRC += $(ROOTDIR)/firmware/libc/sscanf.c DOOM_OBJ := $(call c2obj, $(DOOM_SRC)) # add source files to OTHER_SRC to get automatic dependencies diff --git a/apps/plugins/lua/Makefile b/apps/plugins/lua/Makefile index 09535ac530..8568d79c4c 100644 --- a/apps/plugins/lua/Makefile +++ b/apps/plugins/lua/Makefile @@ -55,7 +55,7 @@ ifdef APP_TYPE # This is the SDL simulator version $(OUTPUT): $(OBJS) - $(call PRINTS,LD $(@F))$(CC) $(CFLAGS) $(SHARED_FLAG) $(OBJS) -L$(BUILDDIR) -lplugin -o $@ + $(call PRINTS,LD $(@F))$(CC) $(CFLAGS) $(SHARED_LDFLAG) $(OBJS) -L$(BUILDDIR) -lplugin -o $@ ifeq ($(findstring CYGWIN,$(UNAME)),CYGWIN) # 'x' must be kept or you'll have "Win32 error 5" # $ fgrep 5 /usr/include/w32api/winerror.h | head -1 diff --git a/apps/plugins/plugins.make b/apps/plugins/plugins.make index 3271c57303..0c667aaf24 100644 --- a/apps/plugins/plugins.make +++ b/apps/plugins/plugins.make @@ -98,7 +98,8 @@ $(BUILDDIR)/apps/plugins/%.o: $(ROOTDIR)/apps/plugins/%.c $(call PRINTS,CC $(subst $(ROOTDIR)/,,$<))$(CC) -I$(dir $<) $(PLUGINFLAGS) -c $< -o $@ ifdef APP_TYPE - PLUGINLDFLAGS = $(SHARED_FLAG) # <-- from Makefile + PLUGINLDFLAGS = $(SHARED_LDFLAG) # <-- from Makefile + PLUGINFLAGS += $(SHARED_CFLAGS) # <-- from Makefile else PLUGINLDFLAGS = -T$(PLUGINLINK_LDS) -Wl,--gc-sections -Wl,-Map,$*.map OVERLAYLDFLAGS = -T$(OVERLAYREF_LDS) -Wl,--gc-sections -Wl,-Map,$*.refmap diff --git a/apps/plugins/rockboy/SOURCES b/apps/plugins/rockboy/SOURCES index 8806b58389..b289db203e 100644 --- a/apps/plugins/rockboy/SOURCES +++ b/apps/plugins/rockboy/SOURCES @@ -1,3 +1,4 @@ +../../../firmware/libc/sscanf.c cpu.c emu.c events.c diff --git a/apps/plugins/rockboy/rockboy.make b/apps/plugins/rockboy/rockboy.make index d7ae68c0c4..4869cedcbf 100644 --- a/apps/plugins/rockboy/rockboy.make +++ b/apps/plugins/rockboy/rockboy.make @@ -11,7 +11,6 @@ ROCKBOY_SRCDIR = $(APPSDIR)/plugins/rockboy ROCKBOY_OBJDIR = $(BUILDDIR)/apps/plugins/rockboy ROCKBOY_SRC := $(call preprocess, $(ROCKBOY_SRCDIR)/SOURCES) -ROCKBOY_SRC += $(ROOTDIR)/firmware/libc/sscanf.c ROCKBOY_OBJ := $(call c2obj, $(ROCKBOY_SRC)) OTHER_SRC += $(ROCKBOY_SRC) diff --git a/tools/configure b/tools/configure index 461e00ce8f..b46037c6a5 100755 --- a/tools/configure +++ b/tools/configure @@ -225,7 +225,8 @@ simcc () { fi # default share option, override below if needed - SHARED_FLAG="-shared" + SHARED_LDFLAG="-shared" + SHARED_CFLAGS="-fPIC -fvisibility=hidden" if [ "$win32crosscompile" = "yes" ]; then LDOPTS="$LDOPTS -mconsole" @@ -267,7 +268,7 @@ simcc () { sigaltstack=`check_sigaltstack` echo "Darwin host detected" LDOPTS="$LDOPTS -ldl" - SHARED_FLAG="-dynamiclib -Wl\,-single_module" + SHARED_LDFLAG="-dynamiclib -Wl\,-single_module" ;; SunOS) @@ -305,20 +306,11 @@ simcc () { GCCOPTS="$GCCOPTS -I\$(SIMDIR)" if test "X$win32crosscompile" != "Xyes"; then - case `uname -m` in - x86_64|amd64) - # fPIC is needed to make shared objects link - # setting visibility to hidden is necessary to avoid strange crashes - # due to symbol clashing - GCCOPTS="$GCCOPTS -fPIC -fvisibility=hidden" - # x86_64 supports MMX by default - ;; - - i686) - echo "Enabling MMX support" - GCCOPTS="$GCCOPTS -mmmx" - ;; - esac + if test "`uname -m`" = "i686"; then + echo "Enabling MMX support" + GCCOPTS="$GCCOPTS -mmmx" + fi + # x86_64 supports MMX by default id=$$ cat >$tmpdir/conftest-$id.c < Makefile \ -e "s<@PLUGINS@<${plugins}