aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Szymon Tomasz Stefanek2008-04-11 12:36:55 +0000
committerGravatar Szymon Tomasz Stefanek2008-04-11 12:36:55 +0000
commitd308f827fe62e6513bf59cc92aa62bb118f1ae66 (patch)
treeee4e34eadbad0ce27d870a5aaf738e9404178703
parentfixed selectionChanged (the KviTextIconEditor need more work) (diff)
downloadKVIrc-d308f827fe62e6513bf59cc92aa62bb118f1ae66.tar.gz
KVIrc-d308f827fe62e6513bf59cc92aa62bb118f1ae66.tar.bz2
KVIrc-d308f827fe62e6513bf59cc92aa62bb118f1ae66.zip
Fix endianness issues on MacOSX
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@1454 17fca916-40b9-46aa-a4ea-0a15b648b75c
-rw-r--r--CMakeLists.txt5
-rw-r--r--cmake/kvi_sysconfig.h.cmake2
-rw-r--r--cmake/modules/FindPCHSupport.cmake7
-rw-r--r--src/kvilib/config/kvi_settings.h9
-rw-r--r--src/kvilib/system/kvi_byteorder.h2
5 files changed, 17 insertions, 8 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8877b9b69..8fe8b0cb8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -81,8 +81,9 @@ INCLUDE(CheckIncludeFiles)
CHECK_INCLUDE_FILES(sys/types.h SYSTEM_HAS_SYS_TYPES_H)
CHECK_INCLUDE_FILES(strings.h SYSTEM_HAS_STRINGS_H)
-INCLUDE(TestBigEndian)
-TEST_BIG_ENDIAN(SYSTEM_IS_BIG_ENDIAN)
+# No longer rely on this test for endianness (otherwise cross-compilation might fail)
+#INCLUDE(TestBigEndian)
+#TEST_BIG_ENDIAN(SYSTEM_IS_BIG_ENDIAN)
OPTION(WANT_PCH "Whether to use pre-compiled headers" ON)
IF(WANT_PCH)
diff --git a/cmake/kvi_sysconfig.h.cmake b/cmake/kvi_sysconfig.h.cmake
index 216d808e9..c149d018d 100644
--- a/cmake/kvi_sysconfig.h.cmake
+++ b/cmake/kvi_sysconfig.h.cmake
@@ -22,6 +22,4 @@
#cmakedefine COMPILE_X11_SUPPORT 1
-#cmakedefine SYSTEM_IS_BIG_ENDIAN 1
-
#endif //!_kvi_sysconfig_h_
diff --git a/cmake/modules/FindPCHSupport.cmake b/cmake/modules/FindPCHSupport.cmake
index a60415d38..b0f4a4c19 100644
--- a/cmake/modules/FindPCHSupport.cmake
+++ b/cmake/modules/FindPCHSupport.cmake
@@ -97,6 +97,7 @@ MACRO(ADD_PRECOMPILED_HEADER_INPLACE _targetName _inputs )
COMMAND ${CMAKE_CXX_COMPILER}
${_compiler_FLAGS}
-x c++-header
+ -fPIC
-o ${_output} ${_source}
DEPENDS ${_source} )
LIST(APPEND GCH_FILES ${_output})
@@ -109,8 +110,6 @@ MACRO(ADD_PRECOMPILED_HEADER_INPLACE _targetName _inputs )
SEPARATE_ARGUMENTS(GCH_FILES)
ADD_CUSTOM_TARGET(${_targetName}_gch DEPENDS ${GCH_FILES})
ADD_DEPENDENCIES(${_targetName} ${_targetName}_gch)
- INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/gch/)
- SET_TARGET_PROPERTIES(${_targetName} PROPERTIES
- COMPILE_FLAGS "-Winvalid-pch"
- )
+ INCLUDE_DIRECTORIES(BEFORE ${CMAKE_CURRENT_BINARY_DIR}/gch/)
+ SET_TARGET_PROPERTIES(${_targetName} PROPERTIES COMPILE_FLAGS "-Winvalid-pch")
ENDMACRO(ADD_PRECOMPILED_HEADER_INPLACE)
diff --git a/src/kvilib/config/kvi_settings.h b/src/kvilib/config/kvi_settings.h
index 473391dca..6ab04685b 100644
--- a/src/kvilib/config/kvi_settings.h
+++ b/src/kvilib/config/kvi_settings.h
@@ -148,4 +148,13 @@
#define debug qDebug
+// Trust Qt about the current target processor endianness
+#if Q_BYTE_ORDER == Q_BIG_ENDIAN
+ #define BIG_ENDIAN_MACHINE_BYTE_ORDER
+#else
+ #ifdef BIG_ENDIAN_MACHINE_BYTE_ORDER
+ #undef BIG_ENDIAN_MACHINE_BYTE_ORDER
+ #endif
+#endif
+
#endif //_KVI_SETTINGS_H_
diff --git a/src/kvilib/system/kvi_byteorder.h b/src/kvilib/system/kvi_byteorder.h
index 19b07e632..dcd8c9430 100644
--- a/src/kvilib/system/kvi_byteorder.h
+++ b/src/kvilib/system/kvi_byteorder.h
@@ -38,6 +38,8 @@
// Perverse Middle Endian 0xbb 0xaa 0xdd 0xcc or another braindamaged combination (unsupported)
// Network Byte Order is Big Endian
// Intel Stuff uses Little Endian
+// PPC is Big Endian
+// Universal binaries on MacOSX use both Big and Little Endian
//
#ifdef BIG_ENDIAN_MACHINE_BYTE_ORDER