CMakeLists.txt (3830B)
1 if("x${CMAKE_SOURCE_DIR}" STREQUAL "x${CMAKE_BINARY_DIR}") 2 message(FATAL_ERROR "\ 3 In-source build is not a good practice. 4 Please use: 5 mkdir build 6 cd build 7 cmake .. 8 to build this project" 9 ) 10 endif() 11 12 if(CMAKE_TOOLCHAIN_FILE) 13 set(_BUILD_PYTHON OFF) 14 set(_BUILD_TESTS OFF) 15 else() 16 set(_BUILD_PYTHON ON) 17 set(_BUILD_TESTS ON) 18 endif() 19 20 if(POLICY CMP0057) 21 cmake_policy(SET CMP0057 NEW) 22 endif() 23 24 cmake_minimum_required(VERSION 3.3 FATAL_ERROR) 25 26 project(kaldi-native-fbank CXX C) 27 28 set(KALDI_NATIVE_FBANK_VERSION "1.20.0") 29 30 # Disable warning about 31 # 32 # "The DOWNLOAD_EXTRACT_TIMESTAMP option was not given and policy CMP0135 is 33 # not set. 34 if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.24.0") 35 cmake_policy(SET CMP0135 NEW) 36 endif() 37 38 if(NOT CMAKE_BUILD_TYPE) 39 set(CMAKE_BUILD_TYPE Release) 40 endif() 41 42 message(STATUS "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}") 43 44 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib") 45 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib") 46 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") 47 48 set(CMAKE_SKIP_BUILD_RPATH FALSE) 49 set(BUILD_RPATH_USE_ORIGIN TRUE) 50 set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) 51 52 if(NOT APPLE) 53 set(kaldi_native_fbank_rpath_origin "$ORIGIN") 54 else() 55 set(kaldi_native_fbank_rpath_origin "@loader_path") 56 endif() 57 58 set(CMAKE_INSTALL_RPATH ${kaldi_native_fbank_rpath_origin}) 59 set(CMAKE_BUILD_RPATH ${kaldi_native_fbank_rpath_origin}) 60 61 set(CMAKE_CXX_STANDARD 14 CACHE STRING "The C++ version to be used.") 62 63 if(NOT DEFINED BUILD_SHARED_LIBS) 64 set(BUILD_SHARED_LIBS ON) 65 endif() 66 67 # See 68 # https://stackoverflow.com/questions/33062728/cmake-link-shared-library-on-windows 69 if(BUILD_SHARED_LIBS AND MSVC) 70 set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) 71 endif() 72 message(STATUS "CMAKE_EXPORT_COMPILE_COMMANDS: ${CMAKE_EXPORT_COMPILE_COMMANDS}") 73 74 message(STATUS "BUILD_SHARED_LIBS: ${BUILD_SHARED_LIBS}") 75 76 option(KALDI_NATIVE_FBANK_BUILD_TESTS "Whether to build tests or not" ${_BUILD_TESTS}) 77 option(KALDI_NATIVE_FBANK_BUILD_PYTHON "Whether to build Python extension" ${_BUILD_PYTHON}) 78 option(KALDI_NATIVE_FBANK_ENABLE_CHECK "Whether to build with log" OFF) 79 80 message(STATUS "KALDI_NATIVE_FBANK_BUILD_TESTS: ${KALDI_NATIVE_FBANK_BUILD_TESTS}") 81 message(STATUS "KALDI_NATIVE_FBANK_BUILD_PYTHON: ${KALDI_NATIVE_FBANK_BUILD_PYTHON}") 82 message(STATUS "KALDI_NATIVE_FBANK_ENABLE_CHECK: ${KALDI_NATIVE_FBANK_ENABLE_CHECK}") 83 84 list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/Modules) 85 list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) 86 87 message(STATUS "KALDI_NATIVE_FBANK_ENABLE_CHECK: ${KALDI_NATIVE_FBANK_ENABLE_CHECK}") 88 89 if(WIN32) 90 add_definitions(-DNOMINMAX) # Otherwise, std::max() and std::min() won't work 91 endif() 92 93 if(KALDI_NATIVE_FBANK_BUILD_PYTHON) 94 include(pybind11) 95 endif() 96 97 if(KALDI_NATIVE_FBANK_BUILD_TESTS) 98 enable_testing() 99 include(googletest) 100 endif() 101 102 if(NOT CMAKE_INSTALL_PREFIX) 103 set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install") 104 endif() 105 106 message(STATUS "CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}") 107 message(STATUS "CMAKE_INSTALL_PREFIX: ${CMAKE_INSTALL_PREFIX}") 108 109 include(CheckIncludeFileCXX) 110 check_include_file_cxx(cxxabi.h KNF_HAVE_CXXABI_H) 111 check_include_file_cxx(execinfo.h KNF_HAVE_EXECINFO_H) 112 113 include_directories(${CMAKE_SOURCE_DIR}) 114 115 if(WIN32 AND MSVC) 116 # disable various warnings for MSVC 117 # 4244: '=': conversion from 'double' to 'float', possible loss of data 118 # 4267: 'return': conversion from 'size_t' to 'int32_t', possible loss of data 119 # 4624: destructor was implicitly defined as deleted because a base class destructor is inaccessible or deleted 120 set(disabled_warnings 121 /wd4244 122 /wd4267 123 /wd4624 124 ) 125 message(STATUS "Disabled warnings: ${disabled_warnings}") 126 foreach(w IN LISTS disabled_warnings) 127 string(APPEND CMAKE_CXX_FLAGS " ${w} ") 128 endforeach() 129 endif() 130 131 add_subdirectory(kaldi-native-fbank)