2018-01-29 15:14:50 +00:00
|
|
|
cmake_minimum_required (VERSION 3.0)
|
2019-12-08 13:19:10 +00:00
|
|
|
project(LASP)
|
2018-01-29 15:14:50 +00:00
|
|
|
|
|
|
|
# Whether we want to use blas yes or no
|
2018-02-23 19:40:45 +00:00
|
|
|
set(LASP_USE_BLAS TRUE)
|
|
|
|
# set(LASP_USE_BLAS FALSE)
|
2018-01-29 15:14:50 +00:00
|
|
|
|
2018-02-23 19:40:45 +00:00
|
|
|
set(LASP_FLOAT double)
|
|
|
|
# set(LASP_FLOAT float)
|
2018-01-29 15:14:50 +00:00
|
|
|
|
2018-02-23 19:40:45 +00:00
|
|
|
add_definitions(-DLASP_PARALLEL)
|
|
|
|
add_definitions(-DLASP_MAX_NUM_THREADS=8)
|
2018-01-29 15:14:50 +00:00
|
|
|
|
2018-02-23 19:40:45 +00:00
|
|
|
add_definitions(-DLASP_MAX_NUM_CHANNELS=80)
|
2018-01-29 15:14:50 +00:00
|
|
|
|
2018-02-06 11:01:27 +00:00
|
|
|
# Reasonable maximum to the nfft size, at 48kHz this is 700s of data..
|
2018-02-23 19:40:45 +00:00
|
|
|
add_definitions(-DLASP_MAX_NFFT=33554432) # 2**25
|
2018-02-06 11:01:27 +00:00
|
|
|
|
2018-01-29 15:14:50 +00:00
|
|
|
# ####################################### End of user-adjustable variables section
|
|
|
|
|
|
|
|
add_definitions(-D_REENTRANT)
|
|
|
|
|
|
|
|
|
2018-02-23 19:40:45 +00:00
|
|
|
if(LASP_FLOAT STREQUAL "double")
|
|
|
|
add_definitions(-DLASP_FLOAT=64)
|
|
|
|
add_definitions(-DLASP_DOUBLE_PRECISION)
|
2018-01-29 15:14:50 +00:00
|
|
|
else()
|
2018-02-23 19:40:45 +00:00
|
|
|
add_definitions(-DLASP_FLOAT=32)
|
|
|
|
endif(LASP_FLOAT STREQUAL "double")
|
2018-01-29 15:14:50 +00:00
|
|
|
|
2018-02-23 19:40:45 +00:00
|
|
|
if(NOT DEFINED LASP_DEBUG)
|
2018-12-29 14:34:24 +00:00
|
|
|
message(FATAL_ERROR "LASP_DEBUG flag not defined. Please set -DLASP_DEBUG=TRUE
|
|
|
|
or -DLASP_DEBUG=FALSE")
|
2018-02-23 19:40:45 +00:00
|
|
|
endif(NOT DEFINED LASP_DEBUG)
|
2018-01-29 15:14:50 +00:00
|
|
|
|
|
|
|
# ##################### END Cmake variables converted to a macro
|
|
|
|
set(Python_ADDITIONAL_VERSIONS "3")
|
|
|
|
# #################### Setting definitions and debug-specific compilation flags
|
|
|
|
|
2018-02-23 19:40:45 +00:00
|
|
|
if(LASP_DEBUG)
|
|
|
|
set(TRACERNAME LASPTracer)
|
2019-12-08 13:19:10 +00:00
|
|
|
set(LASP_DEBUG_CYTHON=True)
|
2018-01-29 15:14:50 +00:00
|
|
|
set(CMAKE_BUILD_TYPE Debug)
|
|
|
|
message("Building debug code")
|
|
|
|
set(CMAKE_BUILD_TYPE Debug)
|
2018-02-23 19:40:45 +00:00
|
|
|
add_definitions(-DLASP_DEBUG=1)
|
2018-01-29 15:14:50 +00:00
|
|
|
add_definitions(-DTRACERNAME=${TRACERNAME})
|
|
|
|
add_definitions(-DDEBUG)
|
|
|
|
add_definitions(-DTRACER=1)
|
|
|
|
# This will produce html files
|
|
|
|
set(CYTHON_ANNOTATE ON)
|
|
|
|
# Add the __FILENAME__ macro
|
|
|
|
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__FILENAME__='\"$(subst ${CMAKE_SOURCE_DIR}/,,$(abspath $<))\"'")
|
|
|
|
else()
|
2018-12-29 14:34:24 +00:00
|
|
|
message("Building LASP for release")
|
2018-01-29 15:14:50 +00:00
|
|
|
set(CMAKE_BUILD_TYPE Release)
|
2019-12-08 13:19:10 +00:00
|
|
|
set(LASP_DEBUG_CYTHON=False)
|
2018-01-29 15:14:50 +00:00
|
|
|
set(CYTHON_ANNOTATE OFF)
|
|
|
|
set(CYTHON_NO_DOCSTRINGS ON)
|
|
|
|
# Strip unnecessary symbols
|
|
|
|
# set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--gc-sections")
|
|
|
|
# set(CMAKE_MODULE_LINKER_FLAGS "-Wl,--gc-sections")
|
2018-12-29 14:34:24 +00:00
|
|
|
|
2018-01-29 15:14:50 +00:00
|
|
|
add_definitions(-DTRACER=0 -DNDEBUG)
|
2018-02-23 19:40:45 +00:00
|
|
|
endif(LASP_DEBUG)
|
2018-01-29 15:14:50 +00:00
|
|
|
|
|
|
|
# The last argument here takes care of calling SIGABRT when an integer overflow
|
|
|
|
# occures.
|
|
|
|
############################## General compilation flags (independent of debug mode, windows or linux)
|
2018-02-09 10:56:49 +00:00
|
|
|
set(CYTHON_EXTRA_C_FLAGS "-Wno-sign-compare -Wno-cpp -Wno-implicit-fallthrough\
|
|
|
|
-Wno-incompatible-pointer-types -Wno-strict-aliasing")
|
2018-01-29 15:14:50 +00:00
|
|
|
|
|
|
|
# General make flags
|
2018-02-09 10:56:49 +00:00
|
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -std=c11 -Wall -Wextra -Wno-type-limits \
|
2018-03-04 18:48:46 +00:00
|
|
|
-Werror=implicit-function-declaration -Werror=incompatible-pointer-types \
|
|
|
|
-Werror=return-type")
|
2018-01-29 15:14:50 +00:00
|
|
|
|
|
|
|
# Debug make flags
|
|
|
|
set(CMAKE_C_FLAGS_DEBUG "-g" )
|
|
|
|
|
|
|
|
set(CMAKE_C_FLAGS_RELEASE "-O2 -mfpmath=sse -march=x86-64 -mtune=native \
|
|
|
|
-fdata-sections -ffunction-sections -fomit-frame-pointer -finline-functions")
|
|
|
|
|
|
|
|
# set(CMAKE_C_FLAGS_RELEASE "-O2 -march=native -mtune=native -fomit-frame-pointer")
|
|
|
|
|
2018-02-23 19:40:45 +00:00
|
|
|
if(LASP_USE_BLAS)
|
2018-12-29 14:34:24 +00:00
|
|
|
add_definitions(-DLASP_USE_BLAS=1)
|
2018-01-29 15:14:50 +00:00
|
|
|
else()
|
2018-12-29 14:34:24 +00:00
|
|
|
add_definitions(-DLASP_USE_BLAS=0)
|
2018-02-23 19:40:45 +00:00
|
|
|
endif(LASP_USE_BLAS)
|
2018-01-29 15:14:50 +00:00
|
|
|
|
2018-04-01 08:27:27 +00:00
|
|
|
# ############################# End compilation flags
|
|
|
|
|
2018-01-29 15:14:50 +00:00
|
|
|
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
|
|
|
set(win32 true)
|
|
|
|
else()
|
|
|
|
set(win32 false)
|
|
|
|
endif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
|
|
|
|
2018-12-30 15:45:39 +00:00
|
|
|
find_package(PythonLibs REQUIRED )
|
|
|
|
find_package(PythonInterp REQUIRED)
|
|
|
|
|
2018-01-29 15:14:50 +00:00
|
|
|
add_subdirectory(fftpack)
|
|
|
|
include_directories(
|
|
|
|
fftpack
|
2018-02-23 19:40:45 +00:00
|
|
|
lasp/c
|
2018-01-29 15:14:50 +00:00
|
|
|
)
|
2018-12-30 15:45:39 +00:00
|
|
|
|
2018-02-23 19:40:45 +00:00
|
|
|
add_subdirectory(lasp)
|
2018-01-29 15:14:50 +00:00
|
|
|
add_subdirectory(test)
|
|
|
|
|
2018-12-30 15:45:39 +00:00
|
|
|
# set(SETUP_PY_IN "${CMAKE_CURRENT_SOURCE_DIR}/setup.py.in")
|
|
|
|
set(SETUP_PY "${CMAKE_CURRENT_BINARY_DIR}/setup.py")
|
2019-01-05 11:16:03 +00:00
|
|
|
|
|
|
|
set(DEPS "${CMAKE_CURRENT_SOURCE_DIR}/*.py"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/lasp/*.py"
|
|
|
|
"wrappers"
|
2019-12-17 13:09:45 +00:00
|
|
|
"lasp_rtaudio")
|
2019-01-05 11:16:03 +00:00
|
|
|
|
|
|
|
# )
|
2018-12-30 15:45:39 +00:00
|
|
|
set(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/build/timestamp")
|
2018-01-29 15:14:50 +00:00
|
|
|
|
2018-12-30 15:45:39 +00:00
|
|
|
# configure_file(${SETUP_PY_IN} ${SETUP_PY})
|
|
|
|
add_custom_command(OUTPUT ${OUTPUT}
|
|
|
|
COMMAND ${PYTHON_EXECUTABLE} ${SETUP_PY} build
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E touch ${OUTPUT}
|
|
|
|
DEPENDS ${DEPS})
|
2018-01-29 15:14:50 +00:00
|
|
|
|
2018-12-30 15:45:39 +00:00
|
|
|
add_custom_target(target ALL DEPENDS ${OUTPUT})
|
2018-01-29 15:14:50 +00:00
|
|
|
|
2018-12-30 19:16:01 +00:00
|
|
|
if(DEFINED INSTALL_DEBUG)
|
|
|
|
set(EXTRA_SETUP_ARG --user -e)
|
|
|
|
else()
|
|
|
|
set(EXTRA_SETUP_ARG "")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
|
|
install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} -m pip install ${EXTRA_SETUP_ARG} .)")
|