Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.xiph.org/xiph/opus.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Asteborg <maastebo@microsoft.com>2020-04-27 18:52:57 +0300
committerMark Harris <mark.hsj@gmail.com>2020-06-13 10:21:11 +0300
commitc350cec965dd316f8515a8e2b619cb4da12f8825 (patch)
tree0def5fdbddf87810ea9146051f7f59611e0b195e /CMakeLists.txt
parentd00d866e8c56d5a8acf764e34ce04dc54c790ac8 (diff)
cmake - move all compiler feature detection to OpusConfig
Signed-off-by: Mark Harris <mark.hsj@gmail.com>
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt63
1 files changed, 28 insertions, 35 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 942f28e4..f112fa0a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -20,7 +20,6 @@ project(Opus LANGUAGES C VERSION ${PROJECT_VERSION})
include(OpusBuildtype)
option(OPUS_BUILD_SHARED_LIBRARY "Build shared library" OFF)
-option(OPUS_STACK_PROTECTOR "Use stack protection" ON)
option(OPUS_CUSTOM_MODES "Enable non-Opus modes, e.g. 44.1 kHz & 2^n frames"
OFF)
option(OPUS_BUILD_PROGRAMS "Build programs" OFF)
@@ -66,16 +65,14 @@ cmake_dependent_option(OPUS_NONTHREADSAFE_PSEUDOSTACK
cmake_dependent_option(OPUS_FAST_MATH
"Enable fast math"
ON
- "OPUS_FLOAT_APPROX; OPUS_FAST_MATH"
+ "OPUS_FLOAT_APPROX; OPUS_FAST_MATH; FAST_MATH_SUPPORTED"
OFF)
-if(OPUS_FAST_MATH)
- if(MSVC)
- check_and_set_flag(FAST_MATH /fp:fast)
- else()
- check_and_set_flag(FAST_MATH -ffast-math)
- endif()
-endif()
+cmake_dependent_option(OPUS_STACK_PROTECTOR
+ "Use stack protection"
+ ON
+ "STACK_PROTECTOR_SUPPORTED"
+ OFF)
if(OPUS_BUILD_SHARED_LIBRARY OR BUILD_SHARED_LIBS OR OPUS_BUILD_FRAMEWORK)
# Global flag to cause add_library() to create shared libraries if on.
@@ -88,23 +85,6 @@ if(OPUS_BUILD_TESTING OR BUILD_TESTING)
set(BUILD_TESTING ON)
endif()
-if(OPUS_STACK_PROTECTOR)
- if(MSVC) # GC on by default on MSVC
- check_and_set_flag(STACK_PROTECTOR /GS)
- else()
- check_and_set_flag(STACK_PROTECTOR -fstack-protector-strong)
- endif()
-else()
- if(MSVC)
- check_and_set_flag(STACK_PROTECTOR_DISABLED /GS-)
- if (STACK_PROTECTOR_DISABLED_SUPPORTED)
- set(STACK_PROTECTOR_SUPPORTED OFF)
- endif()
- else()
- set(STACK_PROTECTOR_SUPPORTED OFF)
- endif()
-endif()
-
if(OPUS_CPU_X86 OR OPUS_CPU_X64)
cmake_dependent_option(OPUS_X86_MAY_HAVE_SSE
"Does runtime check for SSE1 support"
@@ -175,7 +155,7 @@ set_package_properties(Git
"required to set up package version")
add_feature_info(OPUS_BUILD_SHARED_LIBRARY OPUS_BUILD_SHARED_LIBRARY "Build shared library")
-add_feature_info(OPUS_STACK_PROTECTOR STACK_PROTECTOR_SUPPORTED "Use stack protection")
+add_feature_info(OPUS_STACK_PROTECTOR OPUS_STACK_PROTECTOR "Use stack protection")
add_feature_info(OPUS_VAR_ARRAYS OPUS_VAR_ARRAYS
"Use variable length arrays for stack arrays")
add_feature_info(OPUS_USE_ALLOCA OPUS_USE_ALLOCA
@@ -194,7 +174,7 @@ add_feature_info(
"compile with the floating point API (for machines with float library)")
add_feature_info(OPUS_FLOAT_APPROX OPUS_FLOAT_APPROX
"Enable floating point approximations (Ensure your platform supports IEEE 754 before enabling)")
-add_feature_info(OPUS_FAST_MATH FAST_MATH_SUPPORTED "Enable fast math, (depending on OPUS_FLOAT_APPROX to be enabled)")
+add_feature_info(OPUS_FAST_MATH OPUS_FAST_MATH "Enable fast math, (depending on OPUS_FLOAT_APPROX to be enabled)")
add_feature_info(OPUS_INSTALL_PKG_CONFIG_MODULE OPUS_INSTALL_PKG_CONFIG_MODULE
"install PkgConfig module")
add_feature_info(OPUS_INSTALL_CMAKE_CONFIG_MODULE OPUS_INSTALL_CMAKE_CONFIG_MODULE
@@ -279,15 +259,29 @@ if(OPUS_CUSTOM_MODES)
target_compile_definitions(opus PRIVATE CUSTOM_MODES)
endif()
+if(OPUS_FAST_MATH)
+ if(MSVC)
+ target_compile_options(opus PRIVATE /fp:fast)
+ else()
+ target_compile_options(opus PRIVATE -ffast-math)
+ endif()
+endif()
+
+if(OPUS_STACK_PROTECTOR)
+ if(MSVC)
+ target_compile_options(opus PRIVATE /GS)
+ else()
+ target_compile_options(opus PRIVATE -fstack-protector-strong)
+ endif()
+elseif(STACK_PROTECTOR_DISABLED_SUPPORTED)
+ target_compile_options(opus PRIVATE /GS-)
+endif()
+
if(BUILD_SHARED_LIBS)
if(WIN32)
target_compile_definitions(opus PRIVATE DLL_EXPORT)
- else()
- include(CheckCCompilerFlag)
- check_c_compiler_flag(-fvisibility=hidden COMPILER_HAS_HIDDEN_VISIBILITY)
- if(COMPILER_HAS_HIDDEN_VISIBILITY)
- set_target_properties(opus PROPERTIES C_VISIBILITY_PRESET hidden)
- endif()
+ elseif(HIDDEN_VISIBILITY_SUPPORTED)
+ set_target_properties(opus PROPERTIES C_VISIBILITY_PRESET hidden)
endif()
endif()
@@ -408,7 +402,6 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "(arm|aarch64)")
endif()
if(COMPILER_SUPPORT_NEON AND OPUS_USE_NEON)
-
if(OPUS_MAY_HAVE_NEON)
if(RUNTIME_CPU_CAPABILITY_DETECTION)
message(STATUS "OPUS_MAY_HAVE_NEON enabling runtime detection")