mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2025-01-24 18:44:52 +08:00
Merge pull request #11892 from NotTsunami/cmake
CMake: Further CMake improvements and fixes
This commit is contained in:
commit
01ad8a443c
@ -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."
|
||||||
)
|
)
|
||||||
if(${MSVC_RUNTIME} STREQUAL "static")
|
foreach(variable ${variables})
|
||||||
message(STATUS
|
if(${variable} MATCHES "/MD")
|
||||||
"MSVC -> forcing use of statically-linked runtime."
|
string(REGEX REPLACE "/MD" "/MT" ${variable} "${${variable}}")
|
||||||
)
|
endif()
|
||||||
foreach(variable ${variables})
|
endforeach()
|
||||||
if(${variable} MATCHES "/MD")
|
else()
|
||||||
string(REGEX REPLACE "/MD" "/MT" ${variable} "${${variable}}")
|
message(STATUS
|
||||||
endif()
|
"MSVC -> forcing use of dynamically-linked runtime."
|
||||||
endforeach()
|
)
|
||||||
else()
|
foreach(variable ${variables})
|
||||||
message(STATUS
|
if(${variable} MATCHES "/MT")
|
||||||
"MSVC -> forcing use of dynamically-linked runtime."
|
string(REGEX REPLACE "/MT" "/MD" ${variable} "${${variable}}")
|
||||||
)
|
endif()
|
||||||
foreach(variable ${variables})
|
endforeach()
|
||||||
if(${variable} MATCHES "/MT")
|
|
||||||
string(REGEX REPLACE "/MT" "/MD" ${variable} "${${variable}}")
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
@ -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)
|
|
@ -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}")
|
||||||
|
@ -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()
|
||||||
|
@ -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…
Reference in New Issue
Block a user