mirror of https://github.com/OpenTTD/OpenTTD
(svn r9710) -Add: added support for GCC 2.95. This makes MorphOS target alive again. With a big thanks to tokai and Rubidium!!
parent
ac0c371d5a
commit
2f188272af
|
@ -28,6 +28,7 @@ CFLAGS_MAKEDEP= !!CFLAGS_MAKEDEP!!
|
||||||
SORT = !!SORT!!
|
SORT = !!SORT!!
|
||||||
REVISION = !!REVISION!!
|
REVISION = !!REVISION!!
|
||||||
AWK = !!AWK!!
|
AWK = !!AWK!!
|
||||||
|
GCC295 = !!GCC295!!
|
||||||
CONFIG_CACHE_COMPILER = $(SRC_OBJS_DIR)/!!CONFIG_CACHE_COMPILER!!
|
CONFIG_CACHE_COMPILER = $(SRC_OBJS_DIR)/!!CONFIG_CACHE_COMPILER!!
|
||||||
CONFIG_CACHE_LINKER = $(SRC_OBJS_DIR)/!!CONFIG_CACHE_LINKER!!
|
CONFIG_CACHE_LINKER = $(SRC_OBJS_DIR)/!!CONFIG_CACHE_LINKER!!
|
||||||
CONFIG_CACHE_ENDIAN = $(SRC_OBJS_DIR)/!!CONFIG_CACHE_ENDIAN!!
|
CONFIG_CACHE_ENDIAN = $(SRC_OBJS_DIR)/!!CONFIG_CACHE_ENDIAN!!
|
||||||
|
@ -51,6 +52,17 @@ CFLAGS += -I $(SRC_OBJS_DIR) -I $(LANG_OBJS_DIR)
|
||||||
|
|
||||||
ENDIAN_TARGETS := endian_target.h $(ENDIAN_CHECK)
|
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
|
# Check if we want to show what we are doing
|
||||||
ifdef VERBOSE
|
ifdef VERBOSE
|
||||||
Q =
|
Q =
|
||||||
|
@ -210,7 +222,11 @@ $(OBJS_C): %.o: $(SRC_DIR)/%.c $(DEP_MASK) $(FILE_DEP)
|
||||||
|
|
||||||
$(OBJS_CPP): %.o: $(SRC_DIR)/%.cpp $(DEP_MASK) $(FILE_DEP)
|
$(OBJS_CPP): %.o: $(SRC_DIR)/%.cpp $(DEP_MASK) $(FILE_DEP)
|
||||||
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
|
$(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 $@ $<
|
$(Q)$(CXX_HOST) $(CFLAGS) -c -o $@ $<
|
||||||
|
endif
|
||||||
|
|
||||||
$(OBJS_MM): %.o: $(SRC_DIR)/%.mm $(DEP_MASK) $(FILE_DEP)
|
$(OBJS_MM): %.o: $(SRC_DIR)/%.mm $(DEP_MASK) $(FILE_DEP)
|
||||||
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.mm=%.mm)'
|
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.mm=%.mm)'
|
||||||
|
|
|
@ -673,6 +673,13 @@ make_cflags_and_ldflags() {
|
||||||
CC_CFLAGS="$CC_CFLAGS -Wstrict-prototypes"
|
CC_CFLAGS="$CC_CFLAGS -Wstrict-prototypes"
|
||||||
fi
|
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
|
if [ $cc_version -ge 30 ]; then
|
||||||
CFLAGS="$CFLAGS -W -Wno-unused-parameter"
|
CFLAGS="$CFLAGS -W -Wno-unused-parameter"
|
||||||
fi
|
fi
|
||||||
|
@ -1853,6 +1860,7 @@ make_sed() {
|
||||||
s#!!CONFIGURE_FILES!!#$CONFIGURE_FILES#g;
|
s#!!CONFIGURE_FILES!!#$CONFIGURE_FILES#g;
|
||||||
s#!!REVISION!!#$revision#g;
|
s#!!REVISION!!#$revision#g;
|
||||||
s#!!AWK!!#$awk#g;
|
s#!!AWK!!#$awk#g;
|
||||||
|
s#!!GCC295!!#$gcc295#g;
|
||||||
s#!!ENABLE_INSTALL!!#$enable_install#g;
|
s#!!ENABLE_INSTALL!!#$enable_install#g;
|
||||||
"
|
"
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue