|  | 
|  | 1 | +cmake_minimum_required(VERSION 3.14) | 
|  | 2 | + | 
|  | 3 | +project(torchaudio) | 
|  | 4 | + | 
|  | 5 | +option(BUILD_SOX "Build SoX and bind statically" OFF) | 
|  | 6 | +option(BUILD_LIBTORCHAUDIO "Build C++ Library" ON) | 
|  | 7 | +option(BUILD_PYTHON_EXTENSION "Build Python extension" OFF) | 
|  | 8 | + | 
|  | 9 | +set(CMAKE_CXX_STANDARD 14 CACHE STRING "The C++ standard whose features are requested to build this target.") | 
|  | 10 | + | 
|  | 11 | +find_package(Torch REQUIRED) | 
|  | 12 | +# Set -D_GLIBCXX_USE_CXX11_ABI for third party builds | 
|  | 13 | +if (DEFINED _GLIBCXX_USE_CXX11_ABI) | 
|  | 14 | +  set(CXXFLAGS "${CXXFLAGS} -D_GLIBCXX_USE_CXX11_ABI=${_GLIBCXX_USE_CXX11_ABI}") | 
|  | 15 | +endif() | 
|  | 16 | + | 
|  | 17 | +if (APPLE) | 
|  | 18 | +  SET(CMAKE_SHARED_LIBRARY_SUFFIX ".so") | 
|  | 19 | +endif() | 
|  | 20 | + | 
|  | 21 | +add_subdirectory(third_party) | 
|  | 22 | + | 
|  | 23 | +################################################################################ | 
|  | 24 | +# Beginning of torchaudio extension configuration | 
|  | 25 | +################################################################################ | 
|  | 26 | + | 
|  | 27 | +set(TORCHAUDIO_CSRC "${CMAKE_CURRENT_SOURCE_DIR}/torchaudio/csrc") | 
|  | 28 | + | 
|  | 29 | +set( | 
|  | 30 | +  LIBTORCHAUDIO_SOURCES | 
|  | 31 | +  "${TORCHAUDIO_CSRC}/sox_io.cpp" | 
|  | 32 | +  "${TORCHAUDIO_CSRC}/sox_utils.cpp" | 
|  | 33 | +  "${TORCHAUDIO_CSRC}/sox_effects.cpp" | 
|  | 34 | +  "${TORCHAUDIO_CSRC}/sox_effects_chain.cpp" | 
|  | 35 | +  "${TORCHAUDIO_CSRC}/register.cpp" | 
|  | 36 | +  ) | 
|  | 37 | + | 
|  | 38 | +################################################################################ | 
|  | 39 | +# libtorchaudio.so | 
|  | 40 | +################################################################################ | 
|  | 41 | +if(BUILD_LIBTORCHAUDIO) | 
|  | 42 | +  add_library( | 
|  | 43 | +    libtorchaudio | 
|  | 44 | +    SHARED | 
|  | 45 | +    ${LIBTORCHAUDIO_SOURCES} | 
|  | 46 | +    ) | 
|  | 47 | +  set_target_properties(libtorchaudio PROPERTIES PREFIX "") | 
|  | 48 | + | 
|  | 49 | +  target_include_directories( | 
|  | 50 | +    libtorchaudio | 
|  | 51 | +    PRIVATE | 
|  | 52 | +    ${CMAKE_CURRENT_SOURCE_DIR} | 
|  | 53 | +    ) | 
|  | 54 | + | 
|  | 55 | +  target_link_libraries( | 
|  | 56 | +    libtorchaudio | 
|  | 57 | +    "${TORCHAUDIO_THIRD_PARTIES}" | 
|  | 58 | +    "${TORCH_LIBRARIES}" | 
|  | 59 | +    ) | 
|  | 60 | + | 
|  | 61 | +  install( | 
|  | 62 | +    TARGETS | 
|  | 63 | +    libtorchaudio | 
|  | 64 | +    ) | 
|  | 65 | + | 
|  | 66 | +  set(TORCHAUDIO_LIBRARY -Wl,--no-as-needed libtorchaudio -Wl,--as-needed CACHE INTERNAL "") | 
|  | 67 | +endif() | 
|  | 68 | + | 
|  | 69 | +################################################################################ | 
|  | 70 | +# _torchaudio.so | 
|  | 71 | +################################################################################ | 
|  | 72 | +if (BUILD_PYTHON_EXTENSION) | 
|  | 73 | +  add_library( | 
|  | 74 | +    _torchaudio | 
|  | 75 | +    SHARED | 
|  | 76 | +    ${TORCHAUDIO_CSRC}/sox.cpp | 
|  | 77 | +    ${LIBTORCHAUDIO_SOURCES} | 
|  | 78 | +    ) | 
|  | 79 | + | 
|  | 80 | +  set_target_properties(_torchaudio PROPERTIES PREFIX "") | 
|  | 81 | + | 
|  | 82 | +  if (APPLE) | 
|  | 83 | +    # https://github.com/facebookarchive/caffe2/issues/854#issuecomment-364538485 | 
|  | 84 | +    # https://github.com/pytorch/pytorch/commit/73f6715f4725a0723d8171d3131e09ac7abf0666 | 
|  | 85 | +    set_target_properties(_torchaudio PROPERTIES LINK_FLAGS "-undefined dynamic_lookup") | 
|  | 86 | +  endif() | 
|  | 87 | + | 
|  | 88 | +  target_include_directories( | 
|  | 89 | +    _torchaudio | 
|  | 90 | +    PRIVATE | 
|  | 91 | +    ${CMAKE_CURRENT_SOURCE_DIR} | 
|  | 92 | +    ${Python_INCLUDE_DIR} | 
|  | 93 | +    ) | 
|  | 94 | + | 
|  | 95 | +  # See https://github.com/pytorch/pytorch/issues/38122 | 
|  | 96 | +  find_library(TORCH_PYTHON_LIBRARY torch_python PATHS "${TORCH_INSTALL_PREFIX}/lib") | 
|  | 97 | + | 
|  | 98 | +  target_link_libraries( | 
|  | 99 | +    _torchaudio | 
|  | 100 | +    ${TORCHAUDIO_THIRD_PARTIES} | 
|  | 101 | +    ${TORCH_LIBRARIES} | 
|  | 102 | +    ${TORCH_PYTHON_LIBRARY} | 
|  | 103 | +    ) | 
|  | 104 | + | 
|  | 105 | +  # We do not define install for _torchaudio.so | 
|  | 106 | +  # The location of installation is controlled by "CMAKE_LIBRARY_OUTPUT_DIRECTORY" and the | 
|  | 107 | +  # resulting file is handled by setuptools. | 
|  | 108 | +endif() | 
0 commit comments