portaudio.cmake 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. function(download_portaudio)
  2. include(FetchContent)
  3. set(portaudio_URL "http://files.portaudio.com/archives/pa_stable_v190700_20210406.tgz")
  4. set(portaudio_HASH "SHA256=47efbf42c77c19a05d22e627d42873e991ec0c1357219c0d74ce6a2948cb2def")
  5. # If you don't have access to the Internet, please download it to your
  6. # local drive and modify the following line according to your needs.
  7. if(EXISTS "/star-fj/fangjun/download/github/pa_stable_v190700_20210406.tgz")
  8. set(portaudio_URL "file:///star-fj/fangjun/download/github/pa_stable_v190700_20210406.tgz")
  9. elseif(EXISTS "/Users/fangjun/Downloads/pa_stable_v190700_20210406.tgz")
  10. set(portaudio_URL "file:///Users/fangjun/Downloads/pa_stable_v190700_20210406.tgz")
  11. elseif(EXISTS "/tmp/pa_stable_v190700_20210406.tgz")
  12. set(portaudio_URL "file:///tmp/pa_stable_v190700_20210406.tgz")
  13. elseif(EXISTS "$ENV{HOME}/asr/pa_stable_v190700_20210406.tgz")
  14. set(portaudio_URL "file://$ENV{HOME}/asr/pa_stable_v190700_20210406.tgz")
  15. endif()
  16. if(BUILD_SHARED_LIBS)
  17. set(PA_BUILD_SHARED ON CACHE BOOL "" FORCE)
  18. set(PA_BUILD_STATIC OFF CACHE BOOL "" FORCE)
  19. else()
  20. set(PA_BUILD_SHARED OFF CACHE BOOL "" FORCE)
  21. set(PA_BUILD_STATIC ON CACHE BOOL "" FORCE)
  22. endif()
  23. FetchContent_Declare(portaudio
  24. URL ${portaudio_URL}
  25. URL_HASH ${portaudio_HASH}
  26. )
  27. FetchContent_GetProperties(portaudio)
  28. if(NOT portaudio_POPULATED)
  29. message(STATUS "Downloading portaudio from ${portaudio_URL}")
  30. FetchContent_Populate(portaudio)
  31. endif()
  32. message(STATUS "portaudio is downloaded to ${portaudio_SOURCE_DIR}")
  33. message(STATUS "portaudio's binary dir is ${portaudio_BINARY_DIR}")
  34. if(APPLE)
  35. set(CMAKE_MACOSX_RPATH ON) # to solve the following warning on macOS
  36. endif()
  37. add_subdirectory(${portaudio_SOURCE_DIR} ${portaudio_BINARY_DIR} EXCLUDE_FROM_ALL)
  38. endfunction()
  39. download_portaudio()
  40. # Note
  41. # See http://portaudio.com/docs/v19-doxydocs/tutorial_start.html
  42. # for how to use portaudio