diff options
author | evpobr <evpobr@gmail.com> | 2020-05-08 14:20:35 +0500 |
---|---|---|
committer | Erik de Castro Lopo <erikd@mega-nerd.com> | 2020-05-14 13:56:01 +1000 |
commit | ce6dd6b5732e319ef60716d9cc9af6a836a4011a (patch) | |
tree | 4b7df35a903bb3dcf9eb0388234bbd8d93304b37 /cmake | |
parent | 37e675b777d4e0de53ac9ff69e2aea10d92e729c (diff) | |
download | flac-ce6dd6b5732e319ef60716d9cc9af6a836a4011a.tar.gz |
CMake polishing
* Improve CPU features detection
CMAKE_SYSTEM_PROCESSOR is pretty useless (e.g. when compiling with
MSVC ARM64 toolchain and Ninja still returns system processor).
* Don't build src/utils targets by default
Fix compilation for UWP platform.
* Add more Visual studio Git ignore patterns
* Autogenerate Doxygen docs
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/CheckCPUArch.c.in | 7 | ||||
-rw-r--r-- | cmake/CheckCPUArch.cmake | 23 |
2 files changed, 30 insertions, 0 deletions
diff --git a/cmake/CheckCPUArch.c.in b/cmake/CheckCPUArch.c.in new file mode 100644 index 00000000..54931394 --- /dev/null +++ b/cmake/CheckCPUArch.c.in @@ -0,0 +1,7 @@ +int main(void) { +#if @CHECK_CPU_ARCH_DEFINES@ + return 0; +#else + fail +#endif +} diff --git a/cmake/CheckCPUArch.cmake b/cmake/CheckCPUArch.cmake new file mode 100644 index 00000000..95330b4b --- /dev/null +++ b/cmake/CheckCPUArch.cmake @@ -0,0 +1,23 @@ +macro(_CHECK_CPU_ARCH ARCH ARCH_DEFINES VARIABLE) + if(NOT DEFINED HAVE_${VARIABLE}) + message(STATUS "Check CPU architecture is ${ARCH}") + set(CHECK_CPU_ARCH_DEFINES ${ARCH_DEFINES}) + configure_file(${PROJECT_SOURCE_DIR}/cmake/CheckCPUArch.c.in ${PROJECT_BINARY_DIR}/CMakeFiles/CMakeTmp/CheckCPUArch.c @ONLY) + try_compile(HAVE_${VARIABLE} "${PROJECT_BINARY_DIR}" + "${PROJECT_BINARY_DIR}/CMakeFiles/CMakeTmp/CheckCPUArch.c") + if(HAVE_${VARIABLE}) + message(STATUS "Check CPU architecture is ${ARCH} - yes") + set(${VARIABLE} 1 CACHE INTERNAL "Result of CHECK_CPU_ARCH_X64" FORCE) + else () + message(STATUS "Check CPU architecture is ${ARCH} - no") + endif() + endif () +endmacro(_CHECK_CPU_ARCH) + +macro(CHECK_CPU_ARCH_X64 VARIABLE) + _CHECK_CPU_ARCH(x64 "defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64) || defined(_M_X64) || defined(_M_AMD64)" ${VARIABLE}) +endmacro(CHECK_CPU_ARCH_X64) + +macro(CHECK_CPU_ARCH_X86 VARIABLE) + _CHECK_CPU_ARCH(x86 "defined(__i386__) || defined(__i486__) || defined(__i586__) || defined(__i686__) ||defined( __i386) || defined(_M_IX86)" ${VARIABLE}) +endmacro(CHECK_CPU_ARCH_X86) |