aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile12
-rwxr-xr-xconfigure10
2 files changed, 21 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index 0f0b22db72..f922a3ea3c 100644
--- a/Makefile
+++ b/Makefile
@@ -7,13 +7,23 @@ DEFINES=-DHAVE_BYTESWAP_H
ifeq ($(ARCH),i386)
CFLAGS+=-fomit-frame-pointer
-OP_CFLAGS=$(CFLAGS) -malign-functions=0 -mpreferred-stack-boundary=2
+OP_CFLAGS=$(CFLAGS) -mpreferred-stack-boundary=2
+ifeq ($(GCC_MAJOR),3)
+OP_CFLAGS+= -falign-functions=0
+else
+OP_CFLAGS+= -malign-functions=0
+endif
endif
ifeq ($(ARCH),ppc)
OP_CFLAGS=$(CFLAGS)
endif
+ifeq ($(GCC_MAJOR),3)
+# very important to generate a return at the end of every operation
+OP_CFLAGS+=-fno-reorder-blocks -fno-optimize-sibling-calls
+endif
+
#########################################################
DEFINES+=-D_GNU_SOURCE
diff --git a/configure b/configure
index 16252c4dce..62b1e71222 100755
--- a/configure
+++ b/configure
@@ -13,6 +13,7 @@ fi
TMPC="${TMPDIR1}/qemacs-conf-${RANDOM}-$$-${RANDOM}.c"
TMPO="${TMPDIR1}/qemacs-conf-${RANDOM}-$$-${RANDOM}.o"
+TMPE="${TMPDIR1}/qemacs-conf-${RANDOM}-$$-${RANDOM}"
TMPS="${TMPDIR1}/qemacs-conf-${RANDOM}-$$-${RANDOM}.S"
TMPH="${TMPDIR1}/qemacs-conf-${RANDOM}-$$-${RANDOM}.h"
@@ -142,6 +143,14 @@ fi
fi
+# check gcc version
+gcc_major="2"
+gcc_version="$($cc -v 2>&1 | grep version | cut -d ' ' -f3-)"
+case "$gcc_version" in
+3.*) gcc_major="3";
+;;
+esac
+
if test x"$1" = x"-h" -o x"$1" = x"--help" ; then
cat << EOF
@@ -181,6 +190,7 @@ echo "prefix=$prefix" >> config.mak
echo "#define CONFIG_GEMU_PREFIX \"$prefix\"" >> $TMPH
echo "MAKE=$make" >> config.mak
echo "CC=$cc" >> config.mak
+echo "GCC_MAJOR=$gcc_major" >> config.mak
echo "HOST_CC=$host_cc" >> config.mak
echo "AR=$ar" >> config.mak
echo "STRIP=$strip -s -R .comment -R .note" >> config.mak