ENDIF(WIN32 AND MSVC)
ENDIF()
+# Most of the code from this point onwards is related to populating the
+# following variables:
+# PA_PUBLIC_INCLUDES - This contains the list of public PortAudio header
+# files. These files will be copied into /include paths on Unix'y
+# systems when "make install" is invoked.
+# PA_PRIVATE_INCLUDES - This contains the list of header files which
+# are not part of PortAudio, but are required by the various hostapis.
+# It is only used by CMake IDE generators (like Visual Studio) to
+# provide quick-links to useful headers. It has no impact on build
+# output.
+# PA_PRIVATE_INCLUDE_PATHS - This contains the list of include paths which
+# will be passed to the compiler while PortAudio is being built which
+# are not required by applications using the PortAudio API.
+# PA_PRIVATE_COMPILE_DEFINITIONS - This contains a list of preprocessor
+# macro definitions which will be set when compiling PortAudio source
+# files.
+# PA_SOURCES - This contains the list of source files which will be built
+# into the static and shared PortAudio libraries.
+# PA_NON_UNICODE_SOURCES - This also contains a list of source files which
+# will be build into the static and shared PortAudio libraries. However,
+# these sources will not have any unicode compiler definitions added
+# to them. This list should only contain external source dependencies.
+# PA_EXTRA_SHARED_SOURCES - Contains a list of extra files which will be
+# associated only with the shared PortAudio library. This only seems
+# relevant for Windows shared libraries which require a list of export
+# symbols.
+# Where other PA_* variables are set, these are almost always only used to
+# preserve the historic SOURCE_GROUP behavior (which again only has an impact
+# on IDE-style generators for visual appearance) or store the output of
+# find_library() calls.
+
SET(PA_COMMON_INCLUDES
src/common/pa_allocation.h
src/common/pa_converters.h
IF(WIN32)
IF(MSVC)
- SET(PA_PRIVATE_COMPILE_FLAGS "${PA_PRIVATE_COMPILE_FLAGS} -D_CRT_SECURE_NO_WARNINGS")
+ SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} _CRT_SECURE_NO_WARNINGS)
ENDIF(MSVC)
SET(PA_PLATFORM_SOURCES
SOURCE_GROUP("hostapi\\ASIO\\ASIOSDK" FILES ${PA_ASIOSDK_SOURCES})
SET(PA_PUBLIC_INCLUDES ${PA_PUBLIC_INCLUDES} include/pa_asio.h)
SET(PA_SOURCES ${PA_SOURCES} ${PA_ASIO_SOURCES})
- SET(PA_EXTERN_SOURCES ${PA_EXTERN_SOURCES} ${PA_ASIOSDK_SOURCES})
+ SET(PA_NON_UNICODE_SOURCES ${PA_NON_UNICODE_SOURCES} ${PA_ASIOSDK_SOURCES})
ELSE()
# Set variables for DEF file expansion
SET(DEF_EXCLUDE_ASIO_SYMBOLS ";")
OPTION(PA_USE_DIRECTSOUNDFULLDUPLEXCREATE "Use DirectSound full duplex create" ON)
MARK_AS_ADVANCED(PA_USE_DIRECTSOUNDFULLDUPLEXCREATE)
IF(PA_USE_DIRECTSOUNDFULLDUPLEXCREATE)
- SET(PA_PRIVATE_COMPILE_FLAGS "${PA_PRIVATE_COMPILE_FLAGS} -DPAWIN_USE_DIRECTSOUNDFULLDUPLEXCREATE")
+ SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PAWIN_USE_DIRECTSOUNDFULLDUPLEXCREATE)
ENDIF(PA_USE_DIRECTSOUNDFULLDUPLEXCREATE)
SET(PA_PRIVATE_INCLUDE_PATHS ${PA_PRIVATE_INCLUDE_PATHS} ${DXSDK_INCLUDE_DIR})
SET(PA_DS_INCLUDES src/hostapi/dsound/pa_win_ds_dynlink.h)
OPTION(PA_USE_WDMKS_DEVICE_INFO "Use WDM/KS API for device info" ON)
MARK_AS_ADVANCED(PA_USE_WDMKS_DEVICE_INFO)
IF(PA_USE_WDMKS_DEVICE_INFO)
- SET(PA_PRIVATE_COMPILE_FLAGS "${PA_PRIVATE_COMPILE_FLAGS} -DPAWIN_USE_WDMKS_DEVICE_INFO")
+ SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PAWIN_USE_WDMKS_DEVICE_INFO)
ENDIF(PA_USE_WDMKS_DEVICE_INFO)
SET(GENERATED_MESSAGE "CMake generated file, do NOT edit! Use CMake-GUI to change configuration instead.")
- CONFIGURE_FILE( cmake_support/template_portaudio.def ${CMAKE_CURRENT_BINARY_DIR}/portaudio_cmake.def @ONLY )
- CONFIGURE_FILE( cmake_support/options_cmake.h.in ${CMAKE_CURRENT_BINARY_DIR}/options_cmake.h @ONLY )
- SET(PA_EXTERN_SOURCES ${PA_EXTERN_SOURCES} ${CMAKE_CURRENT_BINARY_DIR}/options_cmake.h)
- SET(PA_PRIVATE_COMPILE_FLAGS "${PA_PRIVATE_COMPILE_FLAGS} -DPORTAUDIO_CMAKE_GENERATED")
+ CONFIGURE_FILE(cmake_support/template_portaudio.def ${CMAKE_CURRENT_BINARY_DIR}/portaudio_cmake.def @ONLY)
+ CONFIGURE_FILE(cmake_support/options_cmake.h.in ${CMAKE_CURRENT_BINARY_DIR}/options_cmake.h @ONLY)
+ SET(PA_PRIVATE_INCLUDES ${PA_PRIVATE_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR}/options_cmake.h)
+ SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PORTAUDIO_CMAKE_GENERATED)
SOURCE_GROUP("cmake_generated" FILES ${CMAKE_CURRENT_BINARY_DIR}/portaudio_cmake.def ${CMAKE_CURRENT_BINARY_DIR}/options_cmake.h)
- OPTION(PA_UNICODE_BUILD "Enable Portaudio Unicode build" ON)
- IF(PA_UNICODE_BUILD)
- SET_SOURCE_FILES_PROPERTIES(${PA_SOURCES} PROPERTIES COMPILE_DEFINITIONS "UNICODE;_UNICODE")
- ENDIF(PA_UNICODE_BUILD)
-
SET(PA_EXTRA_SHARED_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/portaudio_cmake.def)
ELSE()
FIND_LIBRARY(CARBON_LIBRARY Carbon REQUIRED)
MARK_AS_ADVANCED(COREAUDIO_LIBRARY AUDIOTOOLBOX_LIBRARY AUDIOUNIT_LIBRARY CARBON_LIBRARY)
SET(PA_LIBRARY_DEPENDENCIES ${PA_LIBRARY_DEPENDENCIES} ${COREAUDIO_LIBRARY} ${AUDIOTOOLBOX_LIBRARY} ${AUDIOUNIT_LIBRARY} ${CARBON_LIBRARY})
- SET(PA_PRIVATE_COMPILE_FLAGS "${PA_PRIVATE_COMPILE_FLAGS} -DPA_USE_COREAUDIO")
+ SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PA_USE_COREAUDIO)
SET(PA_PKGCONFIG_LDFLAGS "${PA_PKGCONFIG_LDFLAGS} -framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework Carbon")
ENDIF()
SOURCE_GROUP("hostapi\\JACK" FILES ${PA_JACK_SOURCES})
SET(PA_PUBLIC_INCLUDES ${PA_PUBLIC_INCLUDES} include/pa_jack.h)
SET(PA_SOURCES ${PA_SOURCES} ${PA_JACK_SOURCES})
- SET(PA_PRIVATE_COMPILE_FLAGS "${PA_PRIVATE_COMPILE_FLAGS} -DPA_USE_JACK")
+ SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PA_USE_JACK)
SET(PA_LIBRARY_DEPENDENCIES ${PA_LIBRARY_DEPENDENCIES} ${JACK_LIBRARIES})
SET(PA_PKGCONFIG_LDFLAGS "${PA_PKGCONFIG_LDFLAGS} -ljack")
ENDIF(PA_USE_JACK)
SOURCE_GROUP("hostapi\\ALSA" FILES ${PA_ALSA_SOURCES})
SET(PA_PUBLIC_INCLUDES ${PA_PUBLIC_INCLUDES} include/pa_linux_alsa.h)
SET(PA_SOURCES ${PA_SOURCES} ${PA_ALSA_SOURCES})
- SET(PA_PRIVATE_COMPILE_FLAGS "${PA_PRIVATE_COMPILE_FLAGS} -DPA_USE_ALSA")
+ SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PA_USE_ALSA)
SET(PA_LIBRARY_DEPENDENCIES ${PA_LIBRARY_DEPENDENCIES} ${ALSA_LIBRARIES})
SET(PA_PKGCONFIG_LDFLAGS "${PA_PKGCONFIG_LDFLAGS} -lasound")
ENDIF(PA_USE_ALSA)
SET(PA_INCLUDES ${PA_PRIVATE_INCLUDES} ${PA_PUBLIC_INCLUDES})
-ADD_LIBRARY(portaudio SHARED ${PA_INCLUDES} ${PA_COMMON_INCLUDES} ${PA_SOURCES} ${PA_EXTERN_SOURCES} ${PA_EXTRA_SHARED_SOURCES})
-ADD_LIBRARY(portaudio_static STATIC ${PA_INCLUDES} ${PA_COMMON_INCLUDES} ${PA_SOURCES} ${PA_EXTERN_SOURCES})
+IF(WIN32)
+ OPTION(PA_UNICODE_BUILD "Enable Portaudio Unicode build" ON)
+ IF(PA_UNICODE_BUILD)
+ SET_SOURCE_FILES_PROPERTIES(${PA_SOURCES} PROPERTIES COMPILE_DEFINITIONS "UNICODE;_UNICODE")
+ ENDIF(PA_UNICODE_BUILD)
+ENDIF()
OPTION(PA_ENABLE_DEBUG_OUTPUT "Enable debug output for Portaudio" OFF)
IF(PA_ENABLE_DEBUG_OUTPUT)
- SET(PA_PRIVATE_COMPILE_FLAGS "${PA_PRIVATE_COMPILE_FLAGS} -DPA_ENABLE_DEBUG_OUTPUT")
+ SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PA_ENABLE_DEBUG_OUTPUT)
ENDIF()
INCLUDE(TestBigEndian)
TEST_BIG_ENDIAN(IS_BIG_ENDIAN)
IF(IS_BIG_ENDIAN)
- SET(PA_PRIVATE_COMPILE_FLAGS "${PA_PRIVATE_COMPILE_FLAGS} -DPA_BIG_ENDIAN")
+ SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PA_BIG_ENDIAN)
ELSE()
- SET(PA_PRIVATE_COMPILE_FLAGS "${PA_PRIVATE_COMPILE_FLAGS} -DPA_LITTLE_ENDIAN")
+ SET(PA_PRIVATE_COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS} PA_LITTLE_ENDIAN)
ENDIF()
-SET_PROPERTY(TARGET portaudio APPEND_STRING PROPERTY COMPILE_FLAGS ${PA_PRIVATE_COMPILE_FLAGS})
+ADD_LIBRARY(portaudio SHARED ${PA_INCLUDES} ${PA_COMMON_INCLUDES} ${PA_SOURCES} ${PA_NON_UNICODE_SOURCES} ${PA_EXTRA_SHARED_SOURCES})
+SET_PROPERTY(TARGET portaudio APPEND_STRING PROPERTY COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(portaudio PRIVATE ${PA_PRIVATE_INCLUDE_PATHS})
TARGET_INCLUDE_DIRECTORIES(portaudio PUBLIC include)
TARGET_LINK_LIBRARIES(portaudio ${PA_LIBRARY_DEPENDENCIES})
-SET_PROPERTY(TARGET portaudio_static APPEND_STRING PROPERTY COMPILE_FLAGS ${PA_PRIVATE_COMPILE_FLAGS})
+ADD_LIBRARY(portaudio_static STATIC ${PA_INCLUDES} ${PA_COMMON_INCLUDES} ${PA_SOURCES} ${PA_NON_UNICODE_SOURCES})
+SET_PROPERTY(TARGET portaudio_static APPEND_STRING PROPERTY COMPILE_DEFINITIONS ${PA_PRIVATE_COMPILE_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(portaudio_static PRIVATE ${PA_PRIVATE_INCLUDE_PATHS})
TARGET_INCLUDE_DIRECTORIES(portaudio_static PUBLIC include)
TARGET_LINK_LIBRARIES(portaudio_static ${PA_LIBRARY_DEPENDENCIES})