# HG changeset patch # User truelight # Date 1177161583 0 # Node ID bbc566ffb9992df99d2130601257e59b81c69cfb # Parent 0d36695f5e85f81a627e3f3ba97a1abac9b4247b (svn r9710) -Add: added support for GCC 2.95. This makes MorphOS target alive again. With a big thanks to tokai and Rubidium!! diff -r 0d36695f5e85 -r bbc566ffb999 Makefile.src.in --- a/Makefile.src.in Sat Apr 21 08:51:42 2007 +0000 +++ b/Makefile.src.in Sat Apr 21 13:19:43 2007 +0000 @@ -28,6 +28,7 @@ SORT = !!SORT!! REVISION = !!REVISION!! AWK = !!AWK!! +GCC295 = !!GCC295!! CONFIG_CACHE_COMPILER = $(SRC_OBJS_DIR)/!!CONFIG_CACHE_COMPILER!! CONFIG_CACHE_LINKER = $(SRC_OBJS_DIR)/!!CONFIG_CACHE_LINKER!! CONFIG_CACHE_ENDIAN = $(SRC_OBJS_DIR)/!!CONFIG_CACHE_ENDIAN!! @@ -51,6 +52,17 @@ ENDIAN_TARGETS := endian_target.h $(ENDIAN_CHECK) +# This 'sed' basicly just removes 'const' from the line if it is a 2+D array +# For more information, please check: +# http://maillist.openttd.org/pipermail/devs/2007-April/000284.html +# http://maillist.openttd.org/pipermail/devs/2007-February/000248.html +GCC295_FIX=sed -r 's/^(\t*)(.*)( const )([A-Za-z0-9_ ]+(\[.*\]){2,})(( = \{)|(;))(.*)$$/\1\2 \4\6\8\9/g' +# This 'sed' removes the 3rd '4' in the # lines of the -E output of +# gcc 2.95.3 and lower, as it should indicate that it is a C-linkage, but the +# compiler can't handle that information (just don't ask). So we remove it +# and then it compiles happily and without bitching :) +GCC295_FIX_2=sed -e 's|\(^\# [0-9][0-9]* "[^"]*"[ 0-9]*\) 4$$|\1|g' + # Check if we want to show what we are doing ifdef VERBOSE Q = @@ -210,7 +222,11 @@ $(OBJS_CPP): %.o: $(SRC_DIR)/%.cpp $(DEP_MASK) $(FILE_DEP) $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)' +ifeq ($(GCC295), 1) + $(Q)$(CXX_HOST) -E $(CFLAGS) $< | $(GCC295_FIX) | $(GCC295_FIX_2) | $(CXX_HOST) $(CFLAGS) -c -o $@ -x c++ - +else $(Q)$(CXX_HOST) $(CFLAGS) -c -o $@ $< +endif $(OBJS_MM): %.o: $(SRC_DIR)/%.mm $(DEP_MASK) $(FILE_DEP) $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.mm=%.mm)' diff -r 0d36695f5e85 -r bbc566ffb999 config.lib --- a/config.lib Sat Apr 21 08:51:42 2007 +0000 +++ b/config.lib Sat Apr 21 13:19:43 2007 +0000 @@ -673,6 +673,13 @@ CC_CFLAGS="$CC_CFLAGS -Wstrict-prototypes" fi + gcc295="" + if [ "$cc_version" = 29 ]; then + # Make sure we mark GCC 2.95 flag for Makefile.src.in, as we + # need a lovely hack there to make it compile correctly. + gcc295="1" + fi + if [ $cc_version -ge 30 ]; then CFLAGS="$CFLAGS -W -Wno-unused-parameter" fi @@ -1853,6 +1860,7 @@ s#!!CONFIGURE_FILES!!#$CONFIGURE_FILES#g; s#!!REVISION!!#$revision#g; s#!!AWK!!#$awk#g; + s#!!GCC295!!#$gcc295#g; s#!!ENABLE_INSTALL!!#$enable_install#g; " }