summaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authorevpobr <evpobr@gmail.com>2020-05-08 14:20:35 +0500
committerErik de Castro Lopo <erikd@mega-nerd.com>2020-05-14 13:56:01 +1000
commitce6dd6b5732e319ef60716d9cc9af6a836a4011a (patch)
tree4b7df35a903bb3dcf9eb0388234bbd8d93304b37 /cmake
parent37e675b777d4e0de53ac9ff69e2aea10d92e729c (diff)
downloadflac-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.in7
-rw-r--r--cmake/CheckCPUArch.cmake23
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)