Browse Source

Merge pull request #11892 from NotTsunami/cmake

CMake: Further CMake improvements and fixes
adaptive-webui-19844
Mike Tzou 5 years ago committed by GitHub
parent
commit
01ad8a443c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 66
      cmake/Modules/MacroConfigureMSVCRuntime.cmake
  2. 49
      cmake/Modules/MacroGlibcDetect.cmake
  3. 21
      cmake/Modules/MacroQbtCompilerSettings.cmake
  4. 4
      src/CMakeLists.txt
  5. 6
      src/app/CMakeLists.txt

66
cmake/Modules/MacroConfigureMSVCRuntime.cmake

@ -1,38 +1,36 @@
macro(configure_msvc_runtime) macro(configure_msvc_runtime)
if(MSVC) # Default to statically-linked runtime.
# Default to statically-linked runtime. if("${MSVC_RUNTIME}" STREQUAL "")
if("${MSVC_RUNTIME}" STREQUAL "") set(MSVC_RUNTIME "static")
set(MSVC_RUNTIME "static") endif()
endif() # Set compiler options.
# Set compiler options. set(variables
set(variables CMAKE_C_FLAGS_DEBUG
CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_MINSIZEREL
CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELEASE
CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_RELWITHDEBINFO
CMAKE_C_FLAGS_RELWITHDEBINFO CMAKE_CXX_FLAGS_DEBUG
CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_MINSIZEREL
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELEASE
CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_RELWITHDEBINFO
CMAKE_CXX_FLAGS_RELWITHDEBINFO )
if(${MSVC_RUNTIME} STREQUAL "static")
message(STATUS
"MSVC -> forcing use of statically-linked runtime."
)
foreach(variable ${variables})
if(${variable} MATCHES "/MD")
string(REGEX REPLACE "/MD" "/MT" ${variable} "${${variable}}")
endif()
endforeach()
else()
message(STATUS
"MSVC -> forcing use of dynamically-linked runtime."
) )
if(${MSVC_RUNTIME} STREQUAL "static") foreach(variable ${variables})
message(STATUS if(${variable} MATCHES "/MT")
"MSVC -> forcing use of statically-linked runtime." string(REGEX REPLACE "/MT" "/MD" ${variable} "${${variable}}")
) endif()
foreach(variable ${variables}) endforeach()
if(${variable} MATCHES "/MD")
string(REGEX REPLACE "/MD" "/MT" ${variable} "${${variable}}")
endif()
endforeach()
else()
message(STATUS
"MSVC -> forcing use of dynamically-linked runtime."
)
foreach(variable ${variables})
if(${variable} MATCHES "/MT")
string(REGEX REPLACE "/MT" "/MD" ${variable} "${${variable}}")
endif()
endforeach()
endif()
endif() endif()
endmacro() endmacro()

49
cmake/Modules/MacroGlibcDetect.cmake

@ -1,49 +0,0 @@
###############################################################
#
# Copyright 2011 Red Hat, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you
# may not use this file except in compliance with the License. You may
# obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
###############################################################
MACRO (GLIBC_DETECT _VERSION)
# there are multiple ways to detect glibc, but given nmi's
# cons'd up paths I will trust only gcc. I guess I could also use
# ldd --version to detect.
set(_GLIB_SOURCE_DETECT "
#include <limits.h>
#include <stdio.h>
int main()
{
printf(\"%d%d\",__GLIBC__, __GLIBC_MINOR__);
return 0;
}
")
file (WRITE ${CMAKE_CURRENT_BINARY_DIR}/build/cmake/glibc.cpp "${_GLIB_SOURCE_DETECT}\n")
try_run(POST26_GLIBC_DETECTED
POST26_GLIBC_COMPILE
${CMAKE_CURRENT_BINARY_DIR}/build/cmake
${CMAKE_CURRENT_BINARY_DIR}/build/cmake/glibc.cpp
RUN_OUTPUT_VARIABLE GLIBC_VERSION )
if (GLIBC_VERSION AND POST26_GLIBC_COMPILE )
set(${_VERSION} ${GLIBC_VERSION})
else()
message(STATUS "NOTE: Could not detect GLIBC_VERSION from compiler")
endif()
ENDMACRO (GLIBC_DETECT)

21
cmake/Modules/MacroQbtCompilerSettings.cmake

@ -24,8 +24,8 @@ macro(qbt_set_compiler_options)
#"-Wno-error=sign-conversion -Wno-error=float-equal" #"-Wno-error=sign-conversion -Wno-error=float-equal"
) )
# GCC 4.8 has problems with std::array and its initialization
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.9) if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.9)
# GCC 4.8 has problems with std::array and its initialization
list(APPEND _GCC_COMMON_CXX_FLAGS "-Wno-error=missing-field-initializers") list(APPEND _GCC_COMMON_CXX_FLAGS "-Wno-error=missing-field-initializers")
endif() endif()
@ -39,22 +39,11 @@ macro(qbt_set_compiler_options)
endif (_PEDANTIC_IS_SUPPORTED) endif (_PEDANTIC_IS_SUPPORTED)
if (CMAKE_SYSTEM_NAME MATCHES Linux) if (CMAKE_SYSTEM_NAME MATCHES Linux)
# if Glibc version is 2.20 or higher, set -D_DEFAULT_SOURCE add_definitions(-D_DEFAULT_SOURCE)
include(MacroGlibcDetect) endif()
message(STATUS "Detecting Glibc version...")
glibc_detect(GLIBC_VERSION)
if(${GLIBC_VERSION})
if(GLIBC_VERSION LESS "220")
message(STATUS "Glibc version is ${GLIBC_VERSION}")
else(GLIBC_VERSION LESS "220")
message(STATUS "Glibc version is ${GLIBC_VERSION}, adding -D_DEFAULT_SOURCE")
add_definitions(-D_DEFAULT_SOURCE)
endif(GLIBC_VERSION LESS "220")
endif(${GLIBC_VERSION})
endif (CMAKE_SYSTEM_NAME MATCHES Linux)
# Clang 5.0 still doesn't support -Wstrict-null-sentinel
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
# Clang 5.0 still doesn't support -Wstrict-null-sentinel
check_cxx_compiler_flag(-Wstrict-null-sentinel _STRICT_NULL_SENTINEL_IS_SUPPORTED) check_cxx_compiler_flag(-Wstrict-null-sentinel _STRICT_NULL_SENTINEL_IS_SUPPORTED)
if (_STRICT_NULL_SENTINEL_IS_SUPPORTED) if (_STRICT_NULL_SENTINEL_IS_SUPPORTED)
list(APPEND _GCC_COMMON_CXX_FLAGS "-Wstrict-null-sentinel") list(APPEND _GCC_COMMON_CXX_FLAGS "-Wstrict-null-sentinel")
@ -75,7 +64,7 @@ macro(qbt_set_compiler_options)
endif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") endif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
set(QBT_ADDITONAL_FLAGS "-wd4290 -wd4275 -wd4251 /W4" CACHE STRING "Additional qBittorent compile flags") set(QBT_ADDITONAL_FLAGS "/wd4251 /wd4275 /wd4290 /W4" CACHE STRING "Additional qBittorent compile flags")
endif () endif ()
string(APPEND CMAKE_C_FLAGS " ${QBT_ADDITONAL_FLAGS}") string(APPEND CMAKE_C_FLAGS " ${QBT_ADDITONAL_FLAGS}")

4
src/CMakeLists.txt

@ -75,6 +75,6 @@ if (Qt5Widgets_FOUND)
add_subdirectory(gui) add_subdirectory(gui)
endif () endif ()
if (WEBUI) if (NOT DISABLE_WEBUI)
add_subdirectory(webui) add_subdirectory(webui)
endif (WEBUI) endif()

6
src/app/CMakeLists.txt

@ -36,7 +36,7 @@ include(QbtTranslations)
file(GLOB QBT_TS_FILES ../lang/*.ts) file(GLOB QBT_TS_FILES ../lang/*.ts)
qbt_add_translations(qBittorrent QRC_FILE "../lang/lang.qrc" TS_FILES ${QBT_TS_FILES}) qbt_add_translations(qBittorrent QRC_FILE "../lang/lang.qrc" TS_FILES ${QBT_TS_FILES})
if (WEBUI) if (NOT DISABLE_WEBUI)
file(GLOB QBT_WEBUI_TS_FILES ../webui/www/translations/*.ts) file(GLOB QBT_WEBUI_TS_FILES ../webui/www/translations/*.ts)
qbt_add_translations(qBittorrent QRC_FILE "../webui/www/translations/webui_translations.qrc" TS_FILES ${QBT_WEBUI_TS_FILES}) qbt_add_translations(qBittorrent QRC_FILE "../webui/www/translations/webui_translations.qrc" TS_FILES ${QBT_WEBUI_TS_FILES})
endif() endif()
@ -97,9 +97,9 @@ else(Qt5Widgets_FOUND)
) )
endif (Qt5Widgets_FOUND) endif (Qt5Widgets_FOUND)
if (WEBUI) if (NOT DISABLE_WEBUI)
target_link_libraries(qBittorrent PRIVATE qbt_webui) target_link_libraries(qBittorrent PRIVATE qbt_webui)
endif (WEBUI) endif()
# we have to include resources into the bundle # we have to include resources into the bundle
if (APPLE) if (APPLE)

Loading…
Cancel
Save