cmake_minimum_required (VERSION 3.16) project(LASP LANGUAGES C CXX) # To allow linking to static libs from other directories cmake_policy(SET CMP0079 NEW) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake") include("BuildType") include("QueryPythonForPybind11") # Find the pybind11 package find_pybind11_python_first() # This is used for code completion in vim set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED) option(LASP_DOUBLE_PRECISION "Compile as double precision floating point" ON) option(LASP_HAS_RTAUDIO "Compile with RtAudio Daq backend" ON) option(LASP_HAS_ULDAQ "Compile with UlDaq backend" ON) set(LASP_FFT_BACKEND "FFTW" CACHE STRING "FFT Library backend") set_property(CACHE LASP_FFT_BACKEND PROPERTY STRINGS "FFTW" "FFTPack" "None") set(PY_FULL_VERSION ${PROJECT_VERSION}${PY_VERSION_SUFFIX}) # Required for PYBIND11 set(CMAKE_POSITION_INDEPENDENT_CODE ON) if(CMAKE_BUILD_TYPE STREQUAL Debug) add_definitions(-DDEBUG=1) set(LASP_DEBUG True) else() set(LASP_DEBUG False) endif() # link openblas set(BLA_VENDOR OpenBLAS) find_package(BLAS REQUIRED) # Reasonable maximum to the nfft size, at 48kHz this is 700s of data... add_definitions(-DLASP_MAX_NFFT=33554432) # 2**25 # ####################################### End of user-adjustable variables section include(OSSpecific) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wno-type-limits") set(CMAKE_C_FLAGS_RELEASE "-O3 -mfpmath=sse -march=x86-64 -mtune=native \ -fdata-sections -ffunction-sections -fomit-frame-pointer -finline-functions") # ############################# End compilation flags add_subdirectory(third_party) add_subdirectory(src/lasp)