From b5e373b73409b3e012ea254feac2955d07813514 Mon Sep 17 00:00:00 2001 From: castano Date: Fri, 23 May 2008 22:22:09 +0000 Subject: [PATCH] Compile NVTT under G5/leopard --- cmake/OptimalOptions.cmake | 13 ++++++++-- src/nvcore/Debug.cpp | 50 +++++++++++++++++++++++++------------ src/nvcore/DefsGnucDarwin.h | 3 +-- src/nvtt/squish/simd_ve.h | 2 ++ 4 files changed, 48 insertions(+), 20 deletions(-) diff --git a/cmake/OptimalOptions.cmake b/cmake/OptimalOptions.cmake index f91f180..50aa865 100644 --- a/cmake/OptimalOptions.cmake +++ b/cmake/OptimalOptions.cmake @@ -20,12 +20,21 @@ IF(CMAKE_COMPILER_IS_GNUCXX) ENDIF(NV_SYSTEM_PROCESSOR STREQUAL "x86_64") IF(NV_SYSTEM_PROCESSOR STREQUAL "powerpc") - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mcpu=powerpc -maltivec -mabi=altivec -mpowerpc-gfxopt") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mcpu=powerpc -faltivec -maltivec -mabi=altivec -mpowerpc-gfxopt") # ibook G4: - #SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mcpu=7450 -mtune=7450 -maltivec -mabi=altivec -mpowerpc-gfxopt") + #SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mcpu=7450 -mtune=7450 -faltivec -maltivec -mabi=altivec -mpowerpc-gfxopt") + + # G5 + #SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mcpu=G5 -faltivec -maltivec -mabi=altivec -mpowerpc-gfxopt") + ENDIF(NV_SYSTEM_PROCESSOR STREQUAL "powerpc") +# IF(DARWIN) +# SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mmacosx-version-min=10.5 -isysroot /Developer/SDKs/MacOSX10.5.sdk") +# SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=10.5 -isysroot /Developer/SDKs/MacOSX10.5.sdk") +# ENDIF(DARWIN) + ENDIF(CMAKE_COMPILER_IS_GNUCXX) IF(MSVC) diff --git a/src/nvcore/Debug.cpp b/src/nvcore/Debug.cpp index 837e16e..341a988 100644 --- a/src/nvcore/Debug.cpp +++ b/src/nvcore/Debug.cpp @@ -28,7 +28,7 @@ #endif #if NV_OS_LINUX && defined(HAVE_EXECINFO_H) -# include +# include // backtrace # if NV_CC_GNUC // defined(HAVE_CXXABI_H) # include # endif @@ -39,6 +39,13 @@ # include # include // sysctl # include +# undef HAVE_EXECINFO_H +# if defined(HAVE_EXECINFO_H) // only after OSX 10.5 +# include // backtrace +# if NV_CC_GNUC // defined(HAVE_CXXABI_H) +# include +# endif +# endif #endif #include // std::runtime_error @@ -128,6 +135,10 @@ namespace #if defined(HAVE_EXECINFO_H) // NV_OS_LINUX + static bool nvHasStackTrace() { + return backtrace != NULL; + } + static void nvPrintStackTrace(void * trace[], int size, int start=0) { char ** string_array = backtrace_symbols(trace, size); @@ -228,17 +239,18 @@ namespace } # if defined(HAVE_EXECINFO_H) + if (nvHasStackTrace()) // in case of weak linking + { + void * trace[64]; + int size = backtrace(trace, 64); - void * trace[64]; - int size = backtrace(trace, 64); - - if (pnt != NULL) { - // Overwrite sigaction with caller's address. - trace[1] = pnt; + if (pnt != NULL) { + // Overwrite sigaction with caller's address. + trace[1] = pnt; + } + + nvPrintStackTrace(trace, size, 1); } - - nvPrintStackTrace(trace, size, 1); - # endif // defined(HAVE_EXECINFO_H) exit(0); @@ -373,9 +385,12 @@ namespace # endif # if defined(HAVE_EXECINFO_H) - void * trace[64]; - int size = backtrace(trace, 64); - nvPrintStackTrace(trace, size, 3); + if (nvHasStackTrace()) + { + void * trace[64]; + int size = backtrace(trace, 64); + nvPrintStackTrace(trace, size, 3); + } # endif // Exit cleanly. @@ -422,9 +437,12 @@ void NV_CDECL nvDebug(const char *msg, ...) void debug::dumpInfo() { #if !NV_OS_WIN32 && defined(HAVE_SIGNAL_H) && defined(HAVE_EXECINFO_H) - void * trace[64]; - int size = backtrace(trace, 64); - nvPrintStackTrace(trace, size, 1); + if (nvHasStackTrace()) + { + void * trace[64]; + int size = backtrace(trace, 64); + nvPrintStackTrace(trace, size, 1); + } #endif } diff --git a/src/nvcore/DefsGnucDarwin.h b/src/nvcore/DefsGnucDarwin.h index 1e6e41a..5442b79 100644 --- a/src/nvcore/DefsGnucDarwin.h +++ b/src/nvcore/DefsGnucDarwin.h @@ -2,8 +2,7 @@ #error "Do not include this file directly." #endif -#include // uint8_t, int8_t, ... - +#include // uint8_t, int8_t, ... // Function linkage #define DLL_IMPORT diff --git a/src/nvtt/squish/simd_ve.h b/src/nvtt/squish/simd_ve.h index 56ed95e..0f90a44 100644 --- a/src/nvtt/squish/simd_ve.h +++ b/src/nvtt/squish/simd_ve.h @@ -26,8 +26,10 @@ #ifndef SQUISH_SIMD_VE_H #define SQUISH_SIMD_VE_H +#ifndef __APPLE_ALTIVEC__ #include #undef bool +#endif namespace squish {