From 59e42ea17823d5ab1a46808965d74a2b27a04ea4 Mon Sep 17 00:00:00 2001 From: rubidium Date: Thu, 3 Mar 2011 21:43:24 +0000 Subject: [PATCH] (svn r22177) -Fix: make sure the right endianness is chosen with cross-compiling, and strndup is available in the binary for more exotic platforms --- Makefile.setting.in | 6 +++++- src/core/endian_type.hpp | 2 +- src/os/macosx/osx_stdafx.h | 2 +- src/string.cpp | 6 +++--- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Makefile.setting.in b/Makefile.setting.in index 607baccb68..7f70bb37a1 100644 --- a/Makefile.setting.in +++ b/Makefile.setting.in @@ -39,11 +39,15 @@ getoptdata.o: $(SRC_DIR)/misc/getoptdata.cpp $(SRC_DIR)/misc/getoptdata.h $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/misc/%.cpp=%.cpp)' $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $< +string.o: $(SRC_DIR)/string.cpp endian_host.h + $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)' + $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $< + ini_load.o: $(SRC_DIR)/ini_load.cpp $(SRC_DIR)/core/alloc_func.hpp $(SRC_DIR)/core/mem_func.hpp $(SRC_DIR)/ini_type.h $(SRC_DIR)/string_func.h $(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/misc/%.cpp=%.cpp)' $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $< -$(SETTINGSGEN): alloc_func.o ini_load.o settingsgen.o getoptdata.o +$(SETTINGSGEN): alloc_func.o ini_load.o settingsgen.o getoptdata.o string.o $(E) '$(STAGE) Compiling and Linking $@' $(Q)$(CXX_BUILD) $(LDFLAGS_BUILD) $^ -o $@ diff --git a/src/core/endian_type.hpp b/src/core/endian_type.hpp index 7c00d91fa0..ad0b814c6a 100644 --- a/src/core/endian_type.hpp +++ b/src/core/endian_type.hpp @@ -26,7 +26,7 @@ #define TTD_ENDIAN TTD_LITTLE_ENDIAN #elif !defined(TESTING) /* Else include endian[target/host].h, which has the endian-type, autodetected by the Makefile */ - #if defined(STRGEN) + #if defined(STRGEN) || defined(SETTINGSGEN) #include "endian_host.h" #else #include "endian_target.h" diff --git a/src/os/macosx/osx_stdafx.h b/src/os/macosx/osx_stdafx.h index 403269dbd9..9c1b5b31d2 100644 --- a/src/os/macosx/osx_stdafx.h +++ b/src/os/macosx/osx_stdafx.h @@ -32,7 +32,7 @@ #endif /* Check for mismatching 'architectures' */ -#if !defined(STRGEN) && ((__LP64__ && !defined(_SQ64)) || (!__LP64__ && defined(_SQ64))) +#if !defined(STRGEN) && !defined(SETTINGSGEN) && ((__LP64__ && !defined(_SQ64)) || (!__LP64__ && defined(_SQ64))) # error "Compiling 64 bits without _SQ64 set! (or vice versa)" #endif diff --git a/src/string.cpp b/src/string.cpp index 46ed9e9d76..1ba6f15fbb 100644 --- a/src/string.cpp +++ b/src/string.cpp @@ -151,11 +151,11 @@ char *strecpy(char *dst, const char *src, const char *last) *dst = '\0'; if (dst == last && *src != '\0') { -#ifdef STRGEN +#if defined(STRGEN) || defined(SETTINGSGEN) error("String too long for destination buffer"); -#else /* STRGEN */ +#else /* STRGEN || SETTINGSGEN */ DEBUG(misc, 0, "String too long for destination buffer"); -#endif /* STRGEN */ +#endif /* STRGEN || SETTINGSGEN */ } return dst; }