Index: apps/plugins/plugins.make
===================================================================
--- apps/plugins/plugins.make	(revision 29976)
+++ apps/plugins/plugins.make	(arbetskopia)
@@ -98,7 +98,8 @@
 	$(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
Index: apps/plugins/doom/SOURCES
===================================================================
--- apps/plugins/doom/SOURCES	(revision 29976)
+++ apps/plugins/doom/SOURCES	(arbetskopia)
@@ -1,3 +1,4 @@
+../../../firmware/libc/sscanf.c
 info.c
 doomdef.c
 doomstat.c
Index: apps/plugins/doom/doom.make
===================================================================
--- apps/plugins/doom/doom.make	(revision 29976)
+++ apps/plugins/doom/doom.make	(arbetskopia)
@@ -13,7 +13,6 @@
 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
Index: apps/plugins/rockboy/rockboy.make
===================================================================
--- apps/plugins/rockboy/rockboy.make	(revision 29976)
+++ apps/plugins/rockboy/rockboy.make	(arbetskopia)
@@ -11,7 +11,6 @@
 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)
Index: apps/plugins/rockboy/SOURCES
===================================================================
--- apps/plugins/rockboy/SOURCES	(revision 29976)
+++ apps/plugins/rockboy/SOURCES	(arbetskopia)
@@ -1,3 +1,4 @@
+../../../firmware/libc/sscanf.c
 cpu.c
 emu.c
 events.c
Index: apps/plugins/lua/Makefile
===================================================================
--- apps/plugins/lua/Makefile	(revision 29976)
+++ apps/plugins/lua/Makefile	(arbetskopia)
@@ -55,7 +55,7 @@
 # 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
Index: apps/codecs/codecs.make
===================================================================
--- apps/codecs/codecs.make	(revision 29976)
+++ apps/codecs/codecs.make	(arbetskopia)
@@ -112,7 +112,8 @@
 		-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
Index: tools/configure
===================================================================
--- tools/configure	(revision 29976)
+++ tools/configure	(arbetskopia)
@@ -225,7 +225,8 @@
  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 @@
    sigaltstack=`check_sigaltstack`
    echo "Darwin host detected"
    LDOPTS="$LDOPTS -ldl"
-   SHARED_FLAG="-dynamiclib -Wl\,-single_module"
+   SHARED_LDFLAG="-dynamiclib -Wl\,-single_module"
    ;;
 
    SunOS)
@@ -305,21 +306,12 @@
  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
-    ;;
+   if test "`uname -m`" = "i686"; then
+     echo "Enabling MMX support"
+     GCCOPTS="$GCCOPTS -mmmx"
+   fi
+   # x86_64 supports MMX by default
 
-    i686)
-      echo "Enabling MMX support"
-      GCCOPTS="$GCCOPTS -mmmx"
-    ;;
-   esac
-
    id=$$
    cat >$tmpdir/conftest-$id.c <<EOF
 #include <stdio.h>
@@ -532,7 +524,8 @@
  GCCOPTIMIZE=''
  LDOPTS="-lm -ldl $LDOPTS"
  GLOBAL_LDOPTS="$GLOBAL_LDOPTS -Wl,-z,defs"
- SHARED_FLAG="-shared"
+ SHARED_LDFLAG="-shared"
+ SHARED_CFLAGS=''
  endian="little"
  thread_support="HAVE_SIGALTSTACK_THREADS"
 
@@ -626,7 +619,8 @@
  GCCOPTIMIZE=''
  LDOPTS="-lm -ldl $LDOPTS"
  GLOBAL_LDOPTS="$GLOBAL_LDOPTS -Wl,-z,defs"
- SHARED_FLAG="-shared"
+ SHARED_LDFLAG="-shared"
+ SHARED_CFLAGS=''
  endian="little"
  thread_support="HAVE_SIGALTSTACK_THREADS"
 
@@ -671,7 +665,8 @@
 		--sysroot=$ANDROID_NDK_PATH/platforms/android-4/arch-arm"
     LDOPTS="$LDOPTS -shared -nostdlib -ldl -llog"
     endian="little"
-    SHARED_FLAG="-shared"
+    SHARED_LDFLAG="-shared"
+    SHARED_CFLAGS=''
 }
 
 whichadvanced () {
@@ -3686,7 +3681,8 @@
  -e "s<@PLUGINS@<${plugins}<g" \
  -e "s<@CODECS@<${swcodec}<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<@TARGET_INC@<${TARGET_INC}<g" \
  -e "s<@LDOPTS@<${LDOPTS}<g" \
@@ -3774,7 +3770,8 @@
 export GCCOPTS=@GCCOPTS@
 export TARGET_INC=@TARGET_INC@
 export LOADADDRESS=@LOADADDRESS@
-export SHARED_FLAG=@SHARED_FLAG@
+export SHARED_LDFLAG=@SHARED_LDFLAG@
+export SHARED_CFLAGS=@SHARED_CFLAGS@
 export LDOPTS=@LDOPTS@
 export GLOBAL_LDOPTS=@GLOBAL_LDOPTS@
 export GCCVER=@GCCVER@
