Compare commits
3 Commits
a6bb734f49
...
954b27fa27
Author | SHA1 | Date | |
---|---|---|---|
954b27fa27 | |||
a8e546734a | |||
f2ee747a38 |
@ -57,28 +57,13 @@ function(common_target_properties target)
|
||||
if(target_type STREQUAL "EXECUTABLE" AND CMAKE_BUILD_TYPE STREQUAL "Release")
|
||||
check_cxx_compiler_flag(-flto CXX_HAS_LTO_FLAG)
|
||||
check_cxx_compiler_flag(-fno-fat-lto-objects CXX_HAS_NO_FAT_LTO_FLAG)
|
||||
if(CMAKE_CXX_COMPILER_IS_GCC AND CXX_HAS_LTO_FLAG)
|
||||
find_program(CMAKE_GCC_AR NAMES "${_CMAKE_TOOLCHAIN_PREFIX}gcc-ar${_CMAKE_TOOLCHAIN_SUFFIX}"
|
||||
"${_CMAKE_TOOLCHAIN_PREFIX}gcc-ar" HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
|
||||
find_program(CMAKE_GCC_NM NAMES "${_CMAKE_TOOLCHAIN_PREFIX}gcc-nm${_CMAKE_TOOLCHAIN_SUFFIX}"
|
||||
"${_CMAKE_TOOLCHAIN_PREFIX}gcc-nm" HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
|
||||
find_program(
|
||||
CMAKE_GCC_RANLIB NAMES "${_CMAKE_TOOLCHAIN_PREFIX}gcc-ranlib${_CMAKE_TOOLCHAIN_SUFFIX}"
|
||||
"${_CMAKE_TOOLCHAIN_PREFIX}gcc-ranlib" HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
|
||||
if(CMAKE_GCC_AR AND CMAKE_GCC_NM AND CMAKE_GCC_RANLIB)
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -flto")
|
||||
if(CXX_HAS_NO_FAT_LTO_FLAG)
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fno-fat-lto-objects")
|
||||
endif()
|
||||
set(CMAKE_AR "${CMAKE_GCC_AR}")
|
||||
set(CMAKE_NM "${CMAKE_GCC_NM}")
|
||||
set(CMAKE_RANLIB "${CMAKE_GCC_RANLIB}")
|
||||
else()
|
||||
message(WARNING "GCC indicates LTO support, but binutils wrappers could not be found. Disabling LTO.")
|
||||
if(CXX_HAS_LTO_FLAG)
|
||||
target_compile_options(${target} PUBLIC "-flto")
|
||||
set_target_properties(${target} PROPERTIES LINK_FLAGS_RELEASE "-flto")
|
||||
if(CXX_HAS_NO_FAT_LTO_FLAG)
|
||||
target_compile_options(${target} PUBLIC "-fno-fat-lto-objects")
|
||||
set_target_properties(${target} PROPERTIES LINK_FLAGS_RELEASE "-fno-fat-lto-objects")
|
||||
endif()
|
||||
else()
|
||||
check_enable_compiler_flag(-flto)
|
||||
check_enable_compiler_flag(-fno-fat-lto-objects)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
@ -19,3 +19,28 @@ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
||||
set(CMAKE_CXX_COMPILER_IS_MSVC ON)
|
||||
endif()
|
||||
|
||||
# Предпочтительные пути к утилитам для компоновки
|
||||
if(CMAKE_CXX_COMPILER_IS_GCC)
|
||||
find_program(
|
||||
CMAKE_GCC_AR NAMES "/usr/e2k-linux/bin/ar" "${_CMAKE_TOOLCHAIN_PREFIX}gcc-ar${_CMAKE_TOOLCHAIN_SUFFIX}"
|
||||
"${_CMAKE_TOOLCHAIN_PREFIX}gcc-ar" "ar" HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
|
||||
if(CMAKE_GCC_AR)
|
||||
set(CMAKE_AR ${CMAKE_GCC_AR} CACHE STRING "" FORCE)
|
||||
endif()
|
||||
|
||||
find_program(
|
||||
CMAKE_GCC_NM NAMES "/usr/e2k-linux/bin/nm" "${_CMAKE_TOOLCHAIN_PREFIX}gcc-nm${_CMAKE_TOOLCHAIN_SUFFIX}"
|
||||
"${_CMAKE_TOOLCHAIN_PREFIX}gcc-nm" "nm" HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
|
||||
if(CMAKE_GCC_NM)
|
||||
set(CMAKE_NM ${CMAKE_GCC_NM} CACHE STRING "" FORCE)
|
||||
endif()
|
||||
|
||||
find_program(
|
||||
CMAKE_GCC_RANLIB
|
||||
NAMES "/usr/e2k-linux/bin/ranlib" "${_CMAKE_TOOLCHAIN_PREFIX}gcc-ranlib${_CMAKE_TOOLCHAIN_SUFFIX}"
|
||||
"${_CMAKE_TOOLCHAIN_PREFIX}gcc-ranlib" "ranlib" HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
|
||||
if(CMAKE_GCC_RANLIB)
|
||||
set(CMAKE_RANLIB ${CMAKE_GCC_RANLIB} CACHE STRING "" FORCE)
|
||||
endif()
|
||||
endif()
|
||||
|
@ -31,12 +31,23 @@ else()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Выбор стандарта по умолчанию (можно переопределить в проекте)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED YES)
|
||||
|
||||
check_cxx_compiler_flag(-std=c++14 HAVE_FLAG_STD_CXX14)
|
||||
if(HAVE_FLAG_STD_CXX14)
|
||||
set(CMAKE_CXX_STANDARD 14)
|
||||
check_cxx_compiler_flag(-std=gnu++14 HAVE_FLAG_STD_GNUXX14)
|
||||
if(HAVE_FLAG_STD_GNUXX14)
|
||||
set(CMAKE_CXX_EXTENSIONS YES)
|
||||
endif()
|
||||
else()
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
set(CMAKE_CXX_EXTENSIONS YES)
|
||||
endif()
|
||||
|
||||
# Common configuration for GCC, clang and Intel.
|
||||
if(CMAKE_CXX_COMPILER_IS_CLANG OR CMAKE_CXX_COMPILER_IS_INTEL OR CMAKE_CXX_COMPILER_IS_GCC)
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED YES)
|
||||
set(CMAKE_CXX_EXTENSIONS YES)
|
||||
|
||||
if(CMLIB_WARNING_FLAGS AND CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
check_enable_cxx_flag(-Wall)
|
||||
check_enable_cxx_flag(-Wextra)
|
||||
|
@ -1,7 +1,7 @@
|
||||
# По умолчанию отключена отладочная печать
|
||||
# (если не включена явно программистом)
|
||||
option(CMLIB_DEBUG_OUTPUT "Enable debug output" OFF)
|
||||
option(CMLIB_INFO_OUTPUT "Enable info output" OFF)
|
||||
option(CMLIB_INFO_OUTPUT "Enable info output" OFF)
|
||||
option(CMLIB_WARNING_OUTPUT "Enable warning output" OFF)
|
||||
|
||||
# Если сборка производится в режиме для отладки,
|
||||
|
Loading…
Reference in New Issue
Block a user