diff --git a/CMakeLists.txt b/CMakeLists.txt index 570500f50..adc1b2912 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -146,7 +146,14 @@ list(APPEND UTIL_SRC ${CMAKE_CURRENT_BINARY_DIR}/version.c) source_group("Generated sources" FILES ${CMAKE_CURRENT_BINARY_DIR}/version.c) # Advanced settings -set(BUILD_LTO ON CACHE BOOL "Build with link-time optimization") +if(NOT DEFINED 3DS) + # LTO appears to make 3DS binary slower + set(DEFAULT_LTO ON) +else() + set(DEFAULT_LTO OFF) +endif() + +set(BUILD_LTO ${DEFAULT_LTO} CACHE BOOL "Build with link-time optimization") set(BUILD_PGO OFF CACHE BOOL "Build with profiling-guided optimization") set(PGO_STAGE_2 CACHE BOOL "Rebuild for profiling-guided optimization after profiles have been generated") set(PGO_DIR "/tmp/gba-pgo/" CACHE PATH "Profiling-guided optimization profiles path") @@ -235,6 +242,10 @@ if(WII) add_definitions(-U__STRICT_ANSI__) endif() +if(DEFINED 3DS) + add_definitions(-D_GNU_SOURCE) +endif() + include(CheckFunctionExists) check_function_exists(strdup HAVE_STRDUP) check_function_exists(strndup HAVE_STRNDUP) @@ -252,6 +263,13 @@ if(NOT CMAKE_SYSTEM_NAME STREQUAL "Generic") check_function_exists(uselocale HAVE_USELOCALE) check_function_exists(setlocale HAVE_SETLOCALE) else() + if(DEFINED 3DS) + check_function_exists(snprintf_l HAVE_SNPRINTF_L) + check_function_exists(newlocale HAVE_NEWLOCALE) + check_function_exists(freelocale HAVE_FREELOCALE) + check_function_exists(uselocale HAVE_USELOCALE) + check_function_exists(setlocale HAVE_SETLOCALE) + endif() if(NOT DEFINED 3DS AND NOT DEFINED PSP2 AND NOT DEFINED WII) set(DISABLE_DEPS ON CACHE BOOL "This platform cannot build with dependencies" FORCE) endif() @@ -276,7 +294,7 @@ if(HAVE_LOCALTIME_R) list(APPEND FUNCTION_DEFINES HAVE_LOCALTIME_R) endif() -if(HAVE_NEWLOCALE AND HAVE_FREELOCALE AND HAVE_USELOCALE OR APPLE) +if(HAVE_NEWLOCALE AND HAVE_FREELOCALE AND HAVE_USELOCALE OR APPLE OR 3DS) list(APPEND FUNCTION_DEFINES HAVE_LOCALE) if (HAVE_STRTOF_L) list(APPEND FUNCTION_DEFINES HAVE_STRTOF_L)