change the compiler flags into a compiler definitions list as we never modify the flags - add some documentation
This commit is contained in:
parent
983a853635
commit
cdbc78e54f
1 changed files with 55 additions and 23 deletions
|
|
@ -37,6 +37,37 @@ IF(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_LIST_DIR})
|
|||
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
|
||||
|
|
@ -80,7 +111,7 @@ SET(PA_PRIVATE_INCLUDE_PATHS src/common ${CMAKE_CURRENT_BINARY_DIR})
|
|||
|
||||
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
|
||||
|
|
@ -117,7 +148,7 @@ IF(WIN32)
|
|||
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 ";")
|
||||
|
|
@ -134,7 +165,7 @@ IF(WIN32)
|
|||
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)
|
||||
|
|
@ -181,21 +212,16 @@ IF(WIN32)
|
|||
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()
|
||||
|
|
@ -228,7 +254,7 @@ 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()
|
||||
|
||||
|
|
@ -246,7 +272,7 @@ ELSE()
|
|||
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)
|
||||
|
|
@ -263,7 +289,7 @@ ELSE()
|
|||
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)
|
||||
|
|
@ -279,28 +305,34 @@ SOURCE_GROUP("include" FILES ${PA_PUBLIC_INCLUDES})
|
|||
|
||||
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})
|
||||
|
|
|
|||
Loading…
Reference in a new issue