# KatieConfig overrides KATIE_MKSPECS_DIR, KATIE_TYPE and KATIE_KEY if(NOT KATIE_MKSPECS_DIR) set(KATIE_MKSPECS_DIR ${CMAKE_SOURCE_DIR}/mkspecs) endif() if(NOT KATIE_TYPE) set(KATIE_TYPE SHARED) katie_definition(-DQT_SHARED) endif() if(NOT KATIE_PLATFORM) if(CMAKE_SYSTEM_NAME MATCHES "Linux") set(KATIE_PLATFORM "linux") elseif(CMAKE_SYSTEM_NAME MATCHES "FreeBSD") set(KATIE_PLATFORM "freebsd") katie_definition(-D_THREAD_SAFE) elseif(CMAKE_SYSTEM_NAME MATCHES "OpenBSD") set(KATIE_PLATFORM "openbsd") else() message(FATAL_ERROR "Unknown platform '${CMAKE_SYSTEM_NAME}'") endif() endif() if(NOT KATIE_COMPILER) # using MATCHES in all checks due to CMP0054 if (CMAKE_CXX_COMPILER_ID MATCHES "(Clang|AppleClang)") set(KATIE_COMPILER "clang") elseif (CMAKE_CXX_COMPILER_ID MATCHES "GNU") set(KATIE_COMPILER "gcc") elseif (CMAKE_CXX_COMPILER_ID MATCHES "Intel") set(KATIE_COMPILER "icc") elseif (CMAKE_CXX_COMPILER_ID MATCHES "MSVC") set(KATIE_COMPILER "msvc") else() message(FATAL_ERROR "Unknown compiler '${CMAKE_CXX_COMPILER_ID}'") endif() endif() if(NOT KATIE_ARCHITECTURE) if(CMAKE_SYSTEM_PROCESSOR) string(TOLOWER ${CMAKE_SYSTEM_PROCESSOR} lowercase_processor) elseif(CMAKE_HOST_SYSTEM_PROCESSOR) string(TOLOWER ${CMAKE_HOST_SYSTEM_PROCESSOR} lowercase_processor) endif() # https://en.wikipedia.org/wiki/Uname if(lowercase_processor MATCHES "^alpha") set(KATIE_ARCHITECTURE "alpha") elseif(lowercase_processor MATCHES "^arm") set(KATIE_ARCHITECTURE "arm") elseif(lowercase_processor MATCHES "^avr") set(KATIE_ARCHITECTURE "avr") elseif(lowercase_processor MATCHES "^blackfin") set(KATIE_ARCHITECTURE "blackfin") elseif(lowercase_processor MATCHES "(x86|i[3-6]86|i86pc)") set(KATIE_ARCHITECTURE "i386") elseif(lowercase_processor MATCHES "^ia64") set(KATIE_ARCHITECTURE "ia64") elseif(lowercase_processor MATCHES "^m68k") set(KATIE_ARCHITECTURE "m68k") elseif(lowercase_processor MATCHES "^mips") set(KATIE_ARCHITECTURE "mips") elseif(lowercase_processor MATCHES "^nacl") set(KATIE_ARCHITECTURE "nacl") elseif(lowercase_processor MATCHES "^hppa") set(KATIE_ARCHITECTURE "parisc") elseif(lowercase_processor MATCHES "^ppc") set(KATIE_ARCHITECTURE "powerpc") elseif(lowercase_processor MATCHES "^s390") set(KATIE_ARCHITECTURE "s390") elseif(lowercase_processor MATCHES "^sparc") set(KATIE_ARCHITECTURE "sparc") elseif(lowercase_processor MATCHES "^sh") set(KATIE_ARCHITECTURE "sh") elseif(lowercase_processor MATCHES "(x86_64|amd64)") set(KATIE_ARCHITECTURE "x86_64") else() message(FATAL_ERROR "Unknown CPU '${CMAKE_SYSTEM_PROCESSOR}' (${CMAKE_HOST_SYSTEM_PROCESSOR})") endif() endif() if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug") katie_definition(-DQT_NO_DEBUG -DNDEBUG) endif() try_compile(bsymbolic_functions_test ${CMAKE_BINARY_DIR} ${KATIE_MKSPECS_DIR}/bsymbolic_functions.cpp CMAKE_FLAGS -shared -Wl,-Bsymbolic-functions -fPIC OUTPUT_VARIABLE bsymbolic_functions_test_output ) if(NOT bsymbolic_functions_test OR NOT CMAKE_POSITION_INDEPENDENT_CODE) katie_definition(-DQ_NO_DATA_RELOCATION) endif() if(NOT KATIE_KEY) set(KATIE_KEY "${KATIE_ARCHITECTURE}-${KATIE_PLATFORM}-${KATIE_COMPILER}") endif() # Set compiler standard to C++ 11, appending to CMAKE_CXX_FLAGS is done so that try_compile() is # also affected, which KDE uses for visibility check for an example if(KATIE_COMPILER STREQUAL "gcc") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11") elseif(KATIE_COMPILER STREQUAL "clang") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") endif() if(NOT CMAKE_VERSION VERSION_LESS "3.1.0") set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD 11) endif()