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
This commit is contained in:
parent
f9f96325e2
commit
331b23d15b
8 changed files with 25 additions and 26 deletions
|
@ -112,7 +112,8 @@ $(CODECDIR)/%.o: $(ROOTDIR)/apps/codecs/%.S
|
||||||
-I$(dir $<) $(CODECFLAGS) $(ASMFLAGS) -c $< -o $@
|
-I$(dir $<) $(CODECFLAGS) $(ASMFLAGS) -c $< -o $@
|
||||||
|
|
||||||
ifdef APP_TYPE
|
ifdef APP_TYPE
|
||||||
CODECLDFLAGS = $(SHARED_FLAG) # <-- from Makefile
|
CODECLDFLAGS = $(SHARED_LDFLAG) # <-- from Makefile
|
||||||
|
CODECFLAGS += $(SHARED_CFLAGS) # <-- from Makefile
|
||||||
else
|
else
|
||||||
CODECLDFLAGS = -T$(CODECLINK_LDS) -Wl,--gc-sections -Wl,-Map,$(CODECDIR)/$*.map
|
CODECLDFLAGS = -T$(CODECLINK_LDS) -Wl,--gc-sections -Wl,-Map,$(CODECDIR)/$*.map
|
||||||
CODECFLAGS += -UDEBUG -DNDEBUG
|
CODECFLAGS += -UDEBUG -DNDEBUG
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
../../../firmware/libc/sscanf.c
|
||||||
info.c
|
info.c
|
||||||
doomdef.c
|
doomdef.c
|
||||||
doomstat.c
|
doomstat.c
|
||||||
|
|
|
@ -13,7 +13,6 @@ DOOMBUILDDIR := $(BUILDDIR)/apps/plugins/doom
|
||||||
ROCKS += $(DOOMBUILDDIR)/doom.rock
|
ROCKS += $(DOOMBUILDDIR)/doom.rock
|
||||||
|
|
||||||
DOOM_SRC := $(call preprocess, $(DOOMSRCDIR)/SOURCES)
|
DOOM_SRC := $(call preprocess, $(DOOMSRCDIR)/SOURCES)
|
||||||
DOOM_SRC += $(ROOTDIR)/firmware/libc/sscanf.c
|
|
||||||
DOOM_OBJ := $(call c2obj, $(DOOM_SRC))
|
DOOM_OBJ := $(call c2obj, $(DOOM_SRC))
|
||||||
|
|
||||||
# add source files to OTHER_SRC to get automatic dependencies
|
# add source files to OTHER_SRC to get automatic dependencies
|
||||||
|
|
|
@ -55,7 +55,7 @@ ifdef APP_TYPE
|
||||||
# This is the SDL simulator version
|
# This is the SDL simulator version
|
||||||
|
|
||||||
$(OUTPUT): $(OBJS)
|
$(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)
|
ifeq ($(findstring CYGWIN,$(UNAME)),CYGWIN)
|
||||||
# 'x' must be kept or you'll have "Win32 error 5"
|
# 'x' must be kept or you'll have "Win32 error 5"
|
||||||
# $ fgrep 5 /usr/include/w32api/winerror.h | head -1
|
# $ fgrep 5 /usr/include/w32api/winerror.h | head -1
|
||||||
|
|
|
@ -98,7 +98,8 @@ $(BUILDDIR)/apps/plugins/%.o: $(ROOTDIR)/apps/plugins/%.c
|
||||||
$(call PRINTS,CC $(subst $(ROOTDIR)/,,$<))$(CC) -I$(dir $<) $(PLUGINFLAGS) -c $< -o $@
|
$(call PRINTS,CC $(subst $(ROOTDIR)/,,$<))$(CC) -I$(dir $<) $(PLUGINFLAGS) -c $< -o $@
|
||||||
|
|
||||||
ifdef APP_TYPE
|
ifdef APP_TYPE
|
||||||
PLUGINLDFLAGS = $(SHARED_FLAG) # <-- from Makefile
|
PLUGINLDFLAGS = $(SHARED_LDFLAG) # <-- from Makefile
|
||||||
|
PLUGINFLAGS += $(SHARED_CFLAGS) # <-- from Makefile
|
||||||
else
|
else
|
||||||
PLUGINLDFLAGS = -T$(PLUGINLINK_LDS) -Wl,--gc-sections -Wl,-Map,$*.map
|
PLUGINLDFLAGS = -T$(PLUGINLINK_LDS) -Wl,--gc-sections -Wl,-Map,$*.map
|
||||||
OVERLAYLDFLAGS = -T$(OVERLAYREF_LDS) -Wl,--gc-sections -Wl,-Map,$*.refmap
|
OVERLAYLDFLAGS = -T$(OVERLAYREF_LDS) -Wl,--gc-sections -Wl,-Map,$*.refmap
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
../../../firmware/libc/sscanf.c
|
||||||
cpu.c
|
cpu.c
|
||||||
emu.c
|
emu.c
|
||||||
events.c
|
events.c
|
||||||
|
|
|
@ -11,7 +11,6 @@ ROCKBOY_SRCDIR = $(APPSDIR)/plugins/rockboy
|
||||||
ROCKBOY_OBJDIR = $(BUILDDIR)/apps/plugins/rockboy
|
ROCKBOY_OBJDIR = $(BUILDDIR)/apps/plugins/rockboy
|
||||||
|
|
||||||
ROCKBOY_SRC := $(call preprocess, $(ROCKBOY_SRCDIR)/SOURCES)
|
ROCKBOY_SRC := $(call preprocess, $(ROCKBOY_SRCDIR)/SOURCES)
|
||||||
ROCKBOY_SRC += $(ROOTDIR)/firmware/libc/sscanf.c
|
|
||||||
ROCKBOY_OBJ := $(call c2obj, $(ROCKBOY_SRC))
|
ROCKBOY_OBJ := $(call c2obj, $(ROCKBOY_SRC))
|
||||||
|
|
||||||
OTHER_SRC += $(ROCKBOY_SRC)
|
OTHER_SRC += $(ROCKBOY_SRC)
|
||||||
|
|
39
tools/configure
vendored
39
tools/configure
vendored
|
@ -225,7 +225,8 @@ simcc () {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# default share option, override below if needed
|
# default share option, override below if needed
|
||||||
SHARED_FLAG="-shared"
|
SHARED_LDFLAG="-shared"
|
||||||
|
SHARED_CFLAGS="-fPIC -fvisibility=hidden"
|
||||||
|
|
||||||
if [ "$win32crosscompile" = "yes" ]; then
|
if [ "$win32crosscompile" = "yes" ]; then
|
||||||
LDOPTS="$LDOPTS -mconsole"
|
LDOPTS="$LDOPTS -mconsole"
|
||||||
|
@ -267,7 +268,7 @@ simcc () {
|
||||||
sigaltstack=`check_sigaltstack`
|
sigaltstack=`check_sigaltstack`
|
||||||
echo "Darwin host detected"
|
echo "Darwin host detected"
|
||||||
LDOPTS="$LDOPTS -ldl"
|
LDOPTS="$LDOPTS -ldl"
|
||||||
SHARED_FLAG="-dynamiclib -Wl\,-single_module"
|
SHARED_LDFLAG="-dynamiclib -Wl\,-single_module"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
SunOS)
|
SunOS)
|
||||||
|
@ -305,20 +306,11 @@ simcc () {
|
||||||
GCCOPTS="$GCCOPTS -I\$(SIMDIR)"
|
GCCOPTS="$GCCOPTS -I\$(SIMDIR)"
|
||||||
|
|
||||||
if test "X$win32crosscompile" != "Xyes"; then
|
if test "X$win32crosscompile" != "Xyes"; then
|
||||||
case `uname -m` in
|
if test "`uname -m`" = "i686"; then
|
||||||
x86_64|amd64)
|
echo "Enabling MMX support"
|
||||||
# fPIC is needed to make shared objects link
|
GCCOPTS="$GCCOPTS -mmmx"
|
||||||
# setting visibility to hidden is necessary to avoid strange crashes
|
fi
|
||||||
# due to symbol clashing
|
# x86_64 supports MMX by default
|
||||||
GCCOPTS="$GCCOPTS -fPIC -fvisibility=hidden"
|
|
||||||
# x86_64 supports MMX by default
|
|
||||||
;;
|
|
||||||
|
|
||||||
i686)
|
|
||||||
echo "Enabling MMX support"
|
|
||||||
GCCOPTS="$GCCOPTS -mmmx"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
id=$$
|
id=$$
|
||||||
cat >$tmpdir/conftest-$id.c <<EOF
|
cat >$tmpdir/conftest-$id.c <<EOF
|
||||||
|
@ -532,7 +524,8 @@ maemocc () {
|
||||||
GCCOPTIMIZE=''
|
GCCOPTIMIZE=''
|
||||||
LDOPTS="-lm -ldl $LDOPTS"
|
LDOPTS="-lm -ldl $LDOPTS"
|
||||||
GLOBAL_LDOPTS="$GLOBAL_LDOPTS -Wl,-z,defs"
|
GLOBAL_LDOPTS="$GLOBAL_LDOPTS -Wl,-z,defs"
|
||||||
SHARED_FLAG="-shared"
|
SHARED_LDFLAG="-shared"
|
||||||
|
SHARED_CFLAGS=''
|
||||||
endian="little"
|
endian="little"
|
||||||
thread_support="HAVE_SIGALTSTACK_THREADS"
|
thread_support="HAVE_SIGALTSTACK_THREADS"
|
||||||
|
|
||||||
|
@ -626,7 +619,8 @@ pandoracc () {
|
||||||
GCCOPTIMIZE=''
|
GCCOPTIMIZE=''
|
||||||
LDOPTS="-lm -ldl $LDOPTS"
|
LDOPTS="-lm -ldl $LDOPTS"
|
||||||
GLOBAL_LDOPTS="$GLOBAL_LDOPTS -Wl,-z,defs"
|
GLOBAL_LDOPTS="$GLOBAL_LDOPTS -Wl,-z,defs"
|
||||||
SHARED_FLAG="-shared"
|
SHARED_LDFLAG="-shared"
|
||||||
|
SHARED_CFLAGS=''
|
||||||
endian="little"
|
endian="little"
|
||||||
thread_support="HAVE_SIGALTSTACK_THREADS"
|
thread_support="HAVE_SIGALTSTACK_THREADS"
|
||||||
|
|
||||||
|
@ -671,7 +665,8 @@ androidcc () {
|
||||||
--sysroot=$ANDROID_NDK_PATH/platforms/android-4/arch-arm"
|
--sysroot=$ANDROID_NDK_PATH/platforms/android-4/arch-arm"
|
||||||
LDOPTS="$LDOPTS -shared -nostdlib -ldl -llog"
|
LDOPTS="$LDOPTS -shared -nostdlib -ldl -llog"
|
||||||
endian="little"
|
endian="little"
|
||||||
SHARED_FLAG="-shared"
|
SHARED_LDFLAG="-shared"
|
||||||
|
SHARED_CFLAGS=''
|
||||||
}
|
}
|
||||||
|
|
||||||
whichadvanced () {
|
whichadvanced () {
|
||||||
|
@ -3686,7 +3681,8 @@ sed > Makefile \
|
||||||
-e "s<@PLUGINS@<${plugins}<g" \
|
-e "s<@PLUGINS@<${plugins}<g" \
|
||||||
-e "s<@CODECS@<${swcodec}<g" \
|
-e "s<@CODECS@<${swcodec}<g" \
|
||||||
-e "s<@PROFILE_OPTS@<${PROFILE_OPTS}<g" \
|
-e "s<@PROFILE_OPTS@<${PROFILE_OPTS}<g" \
|
||||||
-e "s<@SHARED_FLAG@<${SHARED_FLAG}<g" \
|
-e "s<@SHARED_LDFLAG@<${SHARED_LDFLAG}<g" \
|
||||||
|
-e "s<@SHARED_CFLAGS@<${SHARED_CFLAGS}<g" \
|
||||||
-e "s<@GCCOPTS@<${GCCOPTS}<g" \
|
-e "s<@GCCOPTS@<${GCCOPTS}<g" \
|
||||||
-e "s<@TARGET_INC@<${TARGET_INC}<g" \
|
-e "s<@TARGET_INC@<${TARGET_INC}<g" \
|
||||||
-e "s<@LDOPTS@<${LDOPTS}<g" \
|
-e "s<@LDOPTS@<${LDOPTS}<g" \
|
||||||
|
@ -3774,7 +3770,8 @@ export SIMDIR=\$(ROOTDIR)/uisimulator/sdl
|
||||||
export GCCOPTS=@GCCOPTS@
|
export GCCOPTS=@GCCOPTS@
|
||||||
export TARGET_INC=@TARGET_INC@
|
export TARGET_INC=@TARGET_INC@
|
||||||
export LOADADDRESS=@LOADADDRESS@
|
export LOADADDRESS=@LOADADDRESS@
|
||||||
export SHARED_FLAG=@SHARED_FLAG@
|
export SHARED_LDFLAG=@SHARED_LDFLAG@
|
||||||
|
export SHARED_CFLAGS=@SHARED_CFLAGS@
|
||||||
export LDOPTS=@LDOPTS@
|
export LDOPTS=@LDOPTS@
|
||||||
export GLOBAL_LDOPTS=@GLOBAL_LDOPTS@
|
export GLOBAL_LDOPTS=@GLOBAL_LDOPTS@
|
||||||
export GCCVER=@GCCVER@
|
export GCCVER=@GCCVER@
|
||||||
|
|
Loading…
Reference in a new issue