diff options
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/QtBuild.cmake | 73 |
1 files changed, 65 insertions, 8 deletions
diff --git a/cmake/QtBuild.cmake b/cmake/QtBuild.cmake index 184cb5e19f..ff430dd119 100644 --- a/cmake/QtBuild.cmake +++ b/cmake/QtBuild.cmake @@ -64,33 +64,41 @@ SET(CMAKE_INSTALL_RPATH "${_default_install_rpath}" CACHE PATH "RPATH for instal SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) # Platform define path, etc. +set(QT_QMAKE_TARGET_MKSPEC "") if(WIN32) set(QT_DEFAULT_PLATFORM_DEFINITIONS UNICODE _UNICODE WIN32 _ENABLE_EXTENDED_ALIGNED_STORAGE) if(CMAKE_SIZEOF_VOID_P EQUAL 8) list(APPEND QT_DEFAULT_PLATFORM_DEFINITIONS WIN64 _WIN64) endif() if(MSVC) - set(QT_DEFAULT_PLATFORM_DEFINITION_DIR mkspecs/win32-msvc) + set(QT_QMAKE_TARGET_MKSPEC win32-msvc) elseif(CLANG) - set(QT_DEFAULT_PLATFORM_DEFINITION_DIR mkspecs/win32-clang) + set(QT_QMAKE_TARGET_MKSPEC win32-clang) elseif(MINGW) - set(QT_DEFAULT_PLATFORM_DEFINITION_DIR mkspecs/win32-g++) + set(QT_QMAKE_TARGET_MKSPEC win32-g++) list(APPEND QT_DEFAULT_PLATFORM_DEFINITIONS _WIN32_WINNT=0x0601) endif() elseif(LINUX) if(GCC) - set(QT_DEFAULT_PLATFORM_DEFINITION_DIR mkspecs/linux-g++) + set(QT_QMAKE_TARGET_MKSPEC linux-g++) elseif(CLANG) - set(QT_DEFAULT_PLATFORM_DEFINITION_DIR mkspecs/linux-clang) + set(QT_QMAKE_TARGET_MKSPEC linux-clang) endif() elseif(ANDROID) if(GCC) - set(QT_DEFAULT_PLATFORM_DEFINITION_DIR mkspecs/android-g++) + set(QT_QMAKE_TARGET_MKSPEC android-g++) elseif(CLANG) - set(QT_DEFAULT_PLATFORM_DEFINITION_DIR mkspecs/android-clang) + set(QT_QMAKE_TARGET_MKSPEC android-clang) endif() elseif(APPLE) - set(QT_DEFAULT_PLATFORM_DEFINITION_DIR mkspecs/macx-clang) + set(QT_QMAKE_TARGET_MKSPEC macx-clang) +endif() + +# TODO: Fixme to be correct. +set(QT_QMAKE_HOST_MKSPEC "${QT_QMAKE_TARGET_MKSPEC}") + +if(QT_QMAKE_TARGET_MKSPEC) + set(QT_DEFAULT_PLATFORM_DEFINITION_DIR mkspecs/${QT_QMAKE_TARGET_MKSPEC}) endif() if(NOT DEFINED QT_DEFAULT_PLATFORM_DEFINITIONS) @@ -2081,3 +2089,52 @@ function(qt_process_qlalr input_file_list consuming_target flags) endforeach() endfunction() +macro(qt_add_string_to_qconfig_cpp str) + string(LENGTH "${str}" length) + string(APPEND QT_CONFIG_STRS " \"${str}\\0\"\n") + string(APPEND QT_CONFIG_STR_OFFSETS " ${QT_CONFIG_STR_OFFSET},\n") + math(EXPR QT_CONFIG_STR_OFFSET "${QT_CONFIG_STR_OFFSET}+${length}+1") +endmacro() + +function(qt_generate_qconfig_cpp) + set(QT_CONFIG_STR_OFFSET "0") + set(QT_CONFIG_STR_OFFSETS "") + set(QT_CONFIG_STRS "") + + # Start first part. + qt_add_string_to_qconfig_cpp("doc") + qt_add_string_to_qconfig_cpp("include") + qt_add_string_to_qconfig_cpp("lib") + qt_add_string_to_qconfig_cpp("libexec") + qt_add_string_to_qconfig_cpp("bin") + qt_add_string_to_qconfig_cpp("plugins") + qt_add_string_to_qconfig_cpp("imports") + qt_add_string_to_qconfig_cpp("qml") + qt_add_string_to_qconfig_cpp(".") + qt_add_string_to_qconfig_cpp(".") + qt_add_string_to_qconfig_cpp("translations") + qt_add_string_to_qconfig_cpp("examples") + qt_add_string_to_qconfig_cpp("tests") + + # Save first part. + set(QT_CONFIG_STR_OFFSETS_FIRST "${QT_CONFIG_STR_OFFSETS}") + set(QT_CONFIG_STRS_FIRST "${QT_CONFIG_STRS}") + + # Start second part. + set(QT_CONFIG_STR_OFFSETS "") + set(QT_CONFIG_STRS "") + + qt_add_string_to_qconfig_cpp("") + qt_add_string_to_qconfig_cpp("false") + qt_add_string_to_qconfig_cpp("bin") + qt_add_string_to_qconfig_cpp("lib") + qt_add_string_to_qconfig_cpp(".") + qt_add_string_to_qconfig_cpp("${QT_QMAKE_TARGET_MKSPEC}") + qt_add_string_to_qconfig_cpp("${QT_QMAKE_HOST_MKSPEC}") + + # Save second part. + set(QT_CONFIG_STR_OFFSETS_SECOND "${QT_CONFIG_STR_OFFSETS}") + set(QT_CONFIG_STRS_SECOND "${QT_CONFIG_STRS}") + + configure_file(global/qconfig.cpp.in global/qconfig.cpp @ONLY) +endfunction() |