arnaucube
arnaucube/poulpyPublic Self-hosted repository
poulpy/spqlios/lib/CMakeLists.txt
spqlios/lib/CMakeLists.txtRaw
 1cmake_minimum_required(VERSION 3.8)
 2project(spqlios)
 3
 4# read the current version from the manifest file
 5file(READ "manifest.yaml" manifest)
 6string(REGEX MATCH "version: +(([0-9]+)\\.([0-9]+)\\.([0-9]+))" SPQLIOS_VERSION_BLAH ${manifest})
 7#message(STATUS "Version: ${SPQLIOS_VERSION_BLAH}")
 8set(SPQLIOS_VERSION ${CMAKE_MATCH_1})
 9set(SPQLIOS_VERSION_MAJOR ${CMAKE_MATCH_2})
10set(SPQLIOS_VERSION_MINOR ${CMAKE_MATCH_3})
11set(SPQLIOS_VERSION_PATCH ${CMAKE_MATCH_4})
12message(STATUS "Compiling spqlios-fft version: ${SPQLIOS_VERSION_MAJOR}.${SPQLIOS_VERSION_MINOR}.${SPQLIOS_VERSION_PATCH}")
13
14#set(ENABLE_SPQLIOS_F128 ON CACHE BOOL "Enable float128 via libquadmath")
15set(WARNING_PARANOID ON CACHE BOOL "Treat all warnings as errors")
16set(ENABLE_TESTING ON CACHE BOOL "Compiles unittests and integration tests")
17set(DEVMODE_INSTALL OFF CACHE BOOL "Install private headers and testlib (mainly for CI)")
18
19if (NOT CMAKE_BUILD_TYPE OR CMAKE_BUILD_TYPE STREQUAL "")
20    set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Build type: Release or Debug" FORCE)
21endif()
22message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
23
24if (WARNING_PARANOID)
25	add_compile_options(-Wall -Werror -Wno-unused-command-line-argument)
26endif()
27
28message(STATUS "CMAKE_HOST_SYSTEM_NAME: ${CMAKE_HOST_SYSTEM_NAME}")
29message(STATUS "CMAKE_SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}")
30message(STATUS "CMAKE_SYSTEM_NAME: ${CMAKE_SYSTEM_NAME}")
31
32if (CMAKE_SYSTEM_PROCESSOR MATCHES "(x86)|(X86)|(amd64)|(AMD64)")
33    set(X86 ON)
34    set(AARCH64 OFF)
35else ()
36    set(X86 OFF)
37    # set(ENABLE_SPQLIOS_F128 OFF) # float128 are only supported for x86 targets
38endif ()
39if (CMAKE_SYSTEM_PROCESSOR MATCHES "(aarch64)|(arm64)")
40    set(AARCH64 ON)
41endif ()
42
43if (CMAKE_SYSTEM_NAME MATCHES "(Windows)|(MSYS)")
44    set(WIN32 ON)
45endif ()
46if (WIN32)
47    #overrides for win32
48    set(X86 OFF)
49    set(AARCH64 OFF)
50    set(X86_WIN32 ON)
51else()
52    set(X86_WIN32 OFF)
53    set(WIN32 OFF)
54endif (WIN32)
55
56message(STATUS "--> WIN32: ${WIN32}")
57message(STATUS "--> X86_WIN32: ${X86_WIN32}")
58message(STATUS "--> X86_LINUX: ${X86}")
59message(STATUS "--> AARCH64: ${AARCH64}")
60
61# compiles the main library in spqlios
62add_subdirectory(spqlios)
63
64# compiles and activates unittests and itests
65if (${ENABLE_TESTING})
66    enable_testing()
67    add_subdirectory(test)
68endif()
69