Add PortAudio to Windows CMake build
Change-Id: I774ff0bf858280f2a5aa551ae1a5e23eedf8dc20 Reviewed-on: https://code.wireshark.org/review/8848 Reviewed-by: Graham Bloice <graham.bloice@trihedral.com>
This commit is contained in:
parent
9cb09a242f
commit
97dfbf565c
|
@ -5,6 +5,10 @@
|
|||
# PORTAUDIO_INCLUDE_DIRS - where to find portaudio.h, etc.
|
||||
# PORTAUDIO_LIBRARIES - List of libraries when using portaudio.
|
||||
# PORTAUDIO_FOUND - True if portaudio found.
|
||||
#
|
||||
# For Windows, Portaudio is just a set of headers, there is no library
|
||||
# we build an archive ourselves
|
||||
# So set PORTAUDIO_SRC_DIR and PORT_AUDIO_INCLUDE_DIRS
|
||||
|
||||
|
||||
IF (PORTAUDIO_INCLUDE_DIRS)
|
||||
|
@ -31,30 +35,50 @@ FIND_LIBRARY(PORTAUDIO_LIBRARY NAMES ${PORTAUDIO_NAMES}
|
|||
# handle the QUIETLY and REQUIRED arguments and set PORTAUDIO_FOUND to TRUE if
|
||||
# all listed variables are TRUE
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(PORTAUDIO DEFAULT_MSG PORTAUDIO_LIBRARY PORTAUDIO_INCLUDE_DIR)
|
||||
IF(WIN32)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(PORTAUDIO DEFAULT_MSG PORTAUDIO_INCLUDE_DIR)
|
||||
ELSE(WIN32)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(PORTAUDIO DEFAULT_MSG PORTAUDIO_LIBRARY PORTAUDIO_INCLUDE_DIR)
|
||||
ENDIF(WIN32)
|
||||
|
||||
IF(PORTAUDIO_FOUND)
|
||||
SET( PORTAUDIO_LIBRARIES ${PORTAUDIO_LIBRARY} )
|
||||
IF(WIN32)
|
||||
SET( PORTAUDIO_LIBRARIES "" )
|
||||
SET( PORTAUDIO_SRC_DIR "${PORTAUDIO_HINTS}/src" )
|
||||
SET( PORTAUDIO_INCLUDE_DIR
|
||||
${PORTAUDIO_INCLUDE_DIR}
|
||||
${PORTAUDIO_SRC_DIR}/common
|
||||
${PORTAUDIO_SRC_DIR}/os/win
|
||||
)
|
||||
ELSE(WIN32)
|
||||
SET( PORTAUDIO_LIBRARIES ${PORTAUDIO_LIBRARY} )
|
||||
ENDIF(WIN32)
|
||||
SET( PORTAUDIO_INCLUDE_DIRS ${PORTAUDIO_INCLUDE_DIR} )
|
||||
|
||||
# Check for newer PortAudio V19 API
|
||||
# http://www.portaudio.com/docs/proposals/018-VersionInformationInterface.html
|
||||
INCLUDE(CheckFunctionExists)
|
||||
SET(CMAKE_REQUIRED_INCLUDES ${PORTAUDIO_INCLUDE_DIRS})
|
||||
SET(CMAKE_REQUIRED_LIBRARIES ${PORTAUDIO_LIBRARIES})
|
||||
CHECK_FUNCTION_EXISTS(Pa_GetVersion HAVE_PA_GETVERSION)
|
||||
SET(CMAKE_REQUIRED_INCLUDES "")
|
||||
SET(CMAKE_REQUIRED_LIBRARIES "")
|
||||
IF(HAVE_PA_GETVERSION)
|
||||
# Symbol found, must be the newer V19 API
|
||||
IF(WIN32)
|
||||
# We only have the newer version on Windows
|
||||
SET( PORTAUDIO_API_1 )
|
||||
ELSE(HAVE_PA_GETVERSION)
|
||||
# Symbol not found, must be the older V18 API
|
||||
SET( PORTAUDIO_API_1 1 )
|
||||
ENDIF(HAVE_PA_GETVERSION)
|
||||
ELSE(WIN32)
|
||||
INCLUDE(CheckFunctionExists)
|
||||
SET(CMAKE_REQUIRED_INCLUDES ${PORTAUDIO_INCLUDE_DIRS})
|
||||
SET(CMAKE_REQUIRED_LIBRARIES ${PORTAUDIO_LIBRARIES})
|
||||
CHECK_FUNCTION_EXISTS(Pa_GetVersion HAVE_PA_GETVERSION)
|
||||
SET(CMAKE_REQUIRED_INCLUDES "")
|
||||
SET(CMAKE_REQUIRED_LIBRARIES "")
|
||||
IF(HAVE_PA_GETVERSION)
|
||||
# Symbol found, must be the newer V19 API
|
||||
SET( PORTAUDIO_API_1 )
|
||||
ELSE(HAVE_PA_GETVERSION)
|
||||
# Symbol not found, must be the older V18 API
|
||||
SET( PORTAUDIO_API_1 1 )
|
||||
ENDIF(HAVE_PA_GETVERSION)
|
||||
ENDIF(WIN32)
|
||||
ELSE(PORTAUDIO_FOUND)
|
||||
SET( PORTAUDIO_LIBRARIES )
|
||||
SET( PORTAUDIO_INCLUDE_DIRS )
|
||||
SET( PORTAUDIO_SRC_DIR )
|
||||
ENDIF(PORTAUDIO_FOUND)
|
||||
|
||||
MARK_AS_ADVANCED( PORTAUDIO_LIBRARIES PORTAUDIO_INCLUDE_DIRS )
|
||||
MARK_AS_ADVANCED( PORTAUDIO_LIBRARIES PORTAUDIO_INCLUDE_DIRS PORTAUDIO_SRC_DIR )
|
||||
|
|
|
@ -128,6 +128,51 @@ if(PORTAUDIO_FOUND)
|
|||
${WIRESHARK_GTK_SRC}
|
||||
rtp_player.c
|
||||
)
|
||||
|
||||
# For Win32, there is no PortAudio lib, we compile the files locally
|
||||
if(WIN32)
|
||||
add_definitions(
|
||||
-DPA_NO_DS
|
||||
-DPA_NO_ASIO
|
||||
)
|
||||
set(PORTAUDIO_SRC
|
||||
${PORTAUDIO_SRC_DIR}/common/pa_allocation.c
|
||||
${PORTAUDIO_SRC_DIR}/common/pa_converters.c
|
||||
${PORTAUDIO_SRC_DIR}/common/pa_cpuload.c
|
||||
${PORTAUDIO_SRC_DIR}/common/pa_dither.c
|
||||
${PORTAUDIO_SRC_DIR}/common/pa_front.c
|
||||
${PORTAUDIO_SRC_DIR}/common/pa_process.c
|
||||
${PORTAUDIO_SRC_DIR}/common/pa_skeleton.c
|
||||
${PORTAUDIO_SRC_DIR}/common/pa_stream.c
|
||||
${PORTAUDIO_SRC_DIR}/common/pa_trace.c
|
||||
${PORTAUDIO_SRC_DIR}/os/win/pa_win_hostapis.c
|
||||
${PORTAUDIO_SRC_DIR}/os/win/pa_win_util.c
|
||||
${PORTAUDIO_SRC_DIR}/os/win/pa_x86_plain_converters.c
|
||||
${PORTAUDIO_SRC_DIR}/os/win/pa_win_waveformat.c
|
||||
${PORTAUDIO_SRC_DIR}/hostapi/wmme/pa_win_wmme.c
|
||||
)
|
||||
add_library(portaudio OBJECT
|
||||
${PORTAUDIO_SRC}
|
||||
)
|
||||
set_target_properties(portaudio PROPERTIES
|
||||
INCLUDE_DIRECTORIES "${PORTAUDIO_INCLUDE_DIRS}"
|
||||
FOLDER "UI")
|
||||
# Portaudio has some warnings, annoyingly the combination of CMake
|
||||
# and MSBuild means that just disabling the warnings on the specific
|
||||
# source files doesn't work, so set them to level 4 for the target
|
||||
#set_source_files_properties(${PORTAUDIO_SRC_DIR}/common/pa_front.c
|
||||
# PROPERTIES
|
||||
# COMPILE_FLAGS "/wd4189"
|
||||
#)
|
||||
#set_source_files_properties(${PORTAUDIO_SRC_DIR}/os/win/pa_x86_plain_converters.c
|
||||
# PROPERTIES
|
||||
# COMPILE_FLAGS "/wd4305"
|
||||
#)
|
||||
target_compile_options(portaudio
|
||||
PUBLIC "/w44189"
|
||||
PUBLIC "/w44305"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(ENABLE_EXTCAP)
|
||||
|
@ -240,10 +285,15 @@ register_tap_files(wireshark-tap-register.c
|
|||
${WIRESHARK_TAP_SRC}
|
||||
)
|
||||
|
||||
if(WIN32)
|
||||
set(PORTAUDIO_OBJ $<TARGET_OBJECTS:portaudio>)
|
||||
endif()
|
||||
|
||||
add_library(gtkui STATIC
|
||||
${WIRESHARK_GTK_SRC}
|
||||
${WIRESHARK_TAP_SRC}
|
||||
${PLATFORM_UI_SRC}
|
||||
${PORTAUDIO_OBJ}
|
||||
wireshark-tap-register.c
|
||||
)
|
||||
set_target_properties(gtkui PROPERTIES
|
||||
|
|
Loading…
Reference in New Issue