this is necessary in order to get Furnace to build using CMake 4.0. you should do: git submodule deinit extern/portaudio
		
			
				
	
	
		
			82 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
#[=======================================================================[.rst:
 | 
						|
FindASIO
 | 
						|
--------
 | 
						|
 | 
						|
Finds the ASIO SDK by searching for the SDK ZIP in CMAKE_PREFIX_PATH and
 | 
						|
CMAKE_CURRENT_BINARY_DIR. Alternatively, you may manually specify the path of
 | 
						|
the SDK ZIP with the ASIO_SDK_ZIP_PATH variable, which can be used for caching
 | 
						|
in CI scripts.
 | 
						|
 | 
						|
If the ZIP is found, this module extracts it.
 | 
						|
The ZIP extraction is skipped if the unzipped SDK is found.
 | 
						|
 | 
						|
This module provides an `ASIO::host` IMPORT library target for building host
 | 
						|
applications which use ASIO drivers. If you want to build an ASIO driver, this
 | 
						|
module may serve as a useful start but you will need to modify it.
 | 
						|
 | 
						|
#]=======================================================================]
 | 
						|
 | 
						|
if(NOT WIN32)
 | 
						|
  message(WARNING "ASIO is only supported on Windows.")
 | 
						|
  set(ASIO_FOUND OFF)
 | 
						|
  return()
 | 
						|
endif()
 | 
						|
 | 
						|
file(GLOB HEADER_FILE
 | 
						|
  "${CMAKE_CURRENT_BINARY_DIR}/asiosdk*/common/asio.h"
 | 
						|
  "${CMAKE_PREFIX_PATH}/asiosdk*/common/asio.h"
 | 
						|
  # The old build systems before PortAudio 19.8 used to look for the ASIO SDK
 | 
						|
  # in the same parent directory as the source code repository. This is no
 | 
						|
  # longer advised or documented but kept for backwards compatibility.
 | 
						|
  "${CMAKE_CURRENT_SOURCE_DIR}/../asiosdk*/common/asio.h"
 | 
						|
)
 | 
						|
if(NOT EXISTS "${HEADER_FILE}")
 | 
						|
  # The file(ARCHIVE_EXTRACT) command was added in CMake 3.18, so if using an
 | 
						|
  # older version of CMake, the user needs to extract it themselves.
 | 
						|
  if(CMAKE_VERSION VERSION_LESS 3.18)
 | 
						|
    message(STATUS "ASIO SDK NOT found. Download the ASIO SDK ZIP from "
 | 
						|
      "https://www.steinberg.net/asiosdk and extract it to "
 | 
						|
      "${CMAKE_PREFIX_PATH} or ${CMAKE_CURRENT_BINARY_DIR}"
 | 
						|
    )
 | 
						|
    return()
 | 
						|
  endif()
 | 
						|
  file(GLOB results
 | 
						|
    "${ASIO_SDK_ZIP_PATH}"
 | 
						|
    "${CMAKE_CURRENT_BINARY_DIR}/asiosdk*.zip"
 | 
						|
    "${CMAKE_PREFIX_PATH}/asiosdk*.zip"
 | 
						|
    "${CMAKE_CURRENT_SOURCE_DIR}/../asiosdk*.zip"
 | 
						|
  )
 | 
						|
  foreach(f ${results})
 | 
						|
    if(EXISTS "${f}")
 | 
						|
      message(STATUS "Extracting ASIO SDK ZIP archive: ${f}")
 | 
						|
      file(ARCHIVE_EXTRACT INPUT "${f}" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}")
 | 
						|
    endif()
 | 
						|
  endforeach()
 | 
						|
  file(GLOB HEADER_FILE "${CMAKE_CURRENT_BINARY_DIR}/asiosdk*/common/asio.h")
 | 
						|
endif()
 | 
						|
 | 
						|
get_filename_component(HEADER_DIR "${HEADER_FILE}" DIRECTORY)
 | 
						|
get_filename_component(ASIO_ROOT "${HEADER_DIR}" DIRECTORY)
 | 
						|
 | 
						|
if(ASIO_ROOT)
 | 
						|
  set(ASIO_FOUND TRUE)
 | 
						|
  message(STATUS "Found ASIO SDK: ${ASIO_ROOT}")
 | 
						|
 | 
						|
  if(ASIO_FOUND AND NOT TARGET ASIO::host)
 | 
						|
    add_library(ASIO::host INTERFACE IMPORTED)
 | 
						|
    target_sources(ASIO::host INTERFACE
 | 
						|
      "${ASIO_ROOT}/common/asio.cpp"
 | 
						|
      "${ASIO_ROOT}/host/asiodrivers.cpp"
 | 
						|
      "${ASIO_ROOT}/host/pc/asiolist.cpp"
 | 
						|
    )
 | 
						|
    target_include_directories(ASIO::host INTERFACE
 | 
						|
      "${ASIO_ROOT}/common"
 | 
						|
      "${ASIO_ROOT}/host"
 | 
						|
      "${ASIO_ROOT}/host/pc"
 | 
						|
    )
 | 
						|
    target_link_libraries(ASIO::host INTERFACE ole32 uuid)
 | 
						|
  endif()
 | 
						|
else()
 | 
						|
  message(STATUS "ASIO SDK NOT found")
 | 
						|
endif()
 |