@@ -62,6 +62,45 @@ if(DEFINED LIB_SUFFIX)
6262endif ()
6363
6464
65+ # Adds configuration options for a backend with the given _NAME.
66+ #
67+ # Requires the following parameters:
68+ #
69+ # _NAME - The name of the backend module. This is used to create and select
70+ # output variable and to print option documentation and status
71+ # messages.
72+ # _MODULE - The name of the CMake search module used.
73+ # _SRC - Source file to implement the backend.
74+ #
75+ # Defines or modifies the following options and variables:
76+ #
77+ # ALSOFT_REQUIRE_${_NAME} - A user configuration to require the backend.
78+ # ${_NAME}_FOUND - True if the backend was found.
79+ # ALSOFT_BACKEND_${_NAME} - A user configuration to enable a found backend.
80+ # HAVE_${_NAME} - 1 if the backend was found.
81+ # ALC_OBJS - Backend source files are appended to this.
82+ # BACKENDS - Status messages are appended to this.
83+ MACRO (ADD_BACKEND _NAME _MODULE _SRC)
84+ OPTION (ALSOFT_REQUIRE_${_NAME} "Require ${_NAME} backend" OFF )
85+ FIND_PACKAGE (${_MODULE} )
86+ STRING (TOUPPER "${_MODULE} " _MODULE_U)
87+ IF (${_MODULE_U} _FOUND)
88+ OPTION (ALSOFT_BACKEND_${_NAME} "Enable ${_NAME} backend" ON )
89+ IF (ALSOFT_BACKEND_${_NAME} )
90+ SET (HAVE_${_NAME} 1)
91+ SET (BACKENDS "${BACKENDS} ${_NAME}${IS_LINKED} ," )
92+ SET (ALC_OBJS ${ALC_OBJS} ${_SRC} )
93+ IF (CMAKE_VERSION VERSION_LESS "2.8.8" )
94+ INCLUDE_DIRECTORIES (${${_MODULE_U} _INCLUDE_DIRS})
95+ ENDIF ()
96+ ENDIF ()
97+ ENDIF ()
98+ IF (ALSOFT_REQUIRE_${_NAME} AND NOT HAVE_${_NAME} )
99+ MESSAGE (FATAL_ERROR "Failed to enabled required ${_NAME} backend" )
100+ ENDIF ()
101+ ENDMACRO ()
102+
103+
65104IF (WIN32 )
66105 ADD_DEFINITIONS ("-D_WIN32 -D_WIN32_WINNT=0x0502" )
67106
@@ -867,209 +906,60 @@ SET(ALC_OBJS ${ALC_OBJS}
867906)
868907
869908# Check ALSA backend
870- OPTION (ALSOFT_REQUIRE_ALSA "Require ALSA backend" OFF )
871- FIND_PACKAGE (ALSA)
872- IF (ALSA_FOUND)
873- OPTION (ALSOFT_BACKEND_ALSA "Enable ALSA backend" ON )
874- IF (ALSOFT_BACKEND_ALSA)
875- SET (HAVE_ALSA 1)
876- SET (BACKENDS "${BACKENDS} ALSA${IS_LINKED} ," )
877- SET (ALC_OBJS ${ALC_OBJS} Alc/backends/alsa.c)
878- ADD_BACKEND_LIBS(${ALSA_LIBRARIES} )
879- IF (CMAKE_VERSION VERSION_LESS "2.8.8" )
880- INCLUDE_DIRECTORIES (${ALSA_INCLUDE_DIRS} )
881- ENDIF ()
882- ENDIF ()
883- ENDIF ()
884- IF (ALSOFT_REQUIRE_ALSA AND NOT HAVE_ALSA)
885- MESSAGE (FATAL_ERROR "Failed to enabled required ALSA backend" )
909+ ADD_BACKEND(ALSA ALSA Alc/backends/alsa.c)
910+ IF (ALSOFT_BACKEND_ALSA)
911+ ADD_BACKEND_LIBS(${ALSA_LIBRARIES} )
886912ENDIF ()
887913
888914# Check OSS backend
889- OPTION (ALSOFT_REQUIRE_OSS "Require OSS backend" OFF )
890- FIND_PACKAGE (OSS)
891- IF (OSS_FOUND)
892- OPTION (ALSOFT_BACKEND_OSS "Enable OSS backend" ON )
893- IF (ALSOFT_BACKEND_OSS)
894- SET (HAVE_OSS 1)
895- SET (BACKENDS "${BACKENDS} OSS," )
896- SET (ALC_OBJS ${ALC_OBJS} Alc/backends/oss.c)
897- IF (CMAKE_VERSION VERSION_LESS "2.8.8" )
898- INCLUDE_DIRECTORIES (${OSS_INCLUDE_DIRS} )
899- ENDIF ()
900- ENDIF ()
901- ENDIF ()
902- IF (ALSOFT_REQUIRE_OSS AND NOT HAVE_OSS)
903- MESSAGE (FATAL_ERROR "Failed to enabled required OSS backend" )
904- ENDIF ()
915+ ADD_BACKEND(OSS OSS Alc/backends/oss.c)
905916
906917# Check Solaris backend
907- OPTION (ALSOFT_REQUIRE_SOLARIS "Require Solaris backend" OFF )
908- FIND_PACKAGE (AudioIO)
909- IF (AUDIOIO_FOUND)
910- OPTION (ALSOFT_BACKEND_SOLARIS "Enable Solaris backend" ON )
911- IF (ALSOFT_BACKEND_SOLARIS)
912- SET (HAVE_SOLARIS 1)
913- SET (BACKENDS "${BACKENDS} Solaris," )
914- SET (ALC_OBJS ${ALC_OBJS} Alc/backends/solaris.c)
915- IF (CMAKE_VERSION VERSION_LESS "2.8.8" )
916- INCLUDE_DIRECTORIES (${AUDIOIO_INCLUDE_DIRS} )
917- ENDIF ()
918- ENDIF ()
919- ENDIF ()
920- IF (ALSOFT_REQUIRE_SOLARIS AND NOT HAVE_SOLARIS)
921- MESSAGE (FATAL_ERROR "Failed to enabled required Solaris backend" )
922- ENDIF ()
918+ ADD_BACKEND(SOLARIS AudioIO Alc/backends/solaris.c)
923919
924920# Check SndIO backend
925- OPTION (ALSOFT_REQUIRE_SNDIO "Require SndIO backend" OFF )
926- FIND_PACKAGE (SoundIO)
927- IF (SOUNDIO_FOUND)
928- OPTION (ALSOFT_BACKEND_SNDIO "Enable SndIO backend" ON )
929- IF (ALSOFT_BACKEND_SNDIO)
930- SET (HAVE_SNDIO 1)
931- SET (BACKENDS "${BACKENDS} SndIO (linked)," )
932- SET (ALC_OBJS ${ALC_OBJS} Alc/backends/sndio.c)
933- SET (EXTRA_LIBS ${SOUNDIO_LIBRARIES} ${EXTRA_LIBS} )
934- IF (CMAKE_VERSION VERSION_LESS "2.8.8" )
935- INCLUDE_DIRECTORIES (${SOUNDIO_INCLUDE_DIRS} )
936- ENDIF ()
937- ENDIF ()
938- ENDIF ()
939- IF (ALSOFT_REQUIRE_SNDIO AND NOT HAVE_SNDIO)
940- MESSAGE (FATAL_ERROR "Failed to enabled required SndIO backend" )
921+ ADD_BACKEND(SNDIO SoundIO Alc/backends/sndio.c)
922+ IF (ALSOFT_BACKEND_SNDIO)
923+ SET (EXTRA_LIBS ${SOUNDIO_LIBRARIES} ${EXTRA_LIBS} )
941924ENDIF ()
942925
943926# Check QSA backend
944- OPTION (ALSOFT_REQUIRE_QSA "Require QSA backend" OFF )
945- FIND_PACKAGE (QSA)
946- IF (QSA_FOUND)
947- OPTION (ALSOFT_BACKEND_QSA "Enable QSA backend" ON )
948- IF (ALSOFT_BACKEND_QSA)
949- SET (HAVE_QSA 1)
950- SET (BACKENDS "${BACKENDS} QSA (linked)," )
951- SET (ALC_OBJS ${ALC_OBJS} Alc/backends/qsa.c)
952- SET (EXTRA_LIBS ${QSA_LIBRARIES} ${EXTRA_LIBS} )
953- IF (CMAKE_VERSION VERSION_LESS "2.8.8" )
954- INCLUDE_DIRECTORIES (${QSA_INCLUDE_DIRS} )
955- ENDIF ()
956- ENDIF ()
927+ ADD_BACKEND(QSA QSA Alc/backends/qsa.c)
928+ IF (ALSOFT_BACKEND_QSA)
929+ SET (EXTRA_LIBS ${QSA_LIBRARIES} ${EXTRA_LIBS} )
957930ENDIF ()
958- IF (ALSOFT_REQUIRE_QSA AND NOT HAVE_QSA)
959- MESSAGE (FATAL_ERROR "Failed to enabled required QSA backend" )
960- ENDIF ()
961-
962- # Check Windows-only backends
963- OPTION (ALSOFT_REQUIRE_WINMM "Require Windows Multimedia backend" OFF )
964- OPTION (ALSOFT_REQUIRE_DSOUND "Require DirectSound backend" OFF )
965- OPTION (ALSOFT_REQUIRE_MMDEVAPI "Require MMDevApi backend" OFF )
966- IF (HAVE_WINDOWS_H)
967- # Check MMSystem backend
968- CHECK_INCLUDE_FILES("windows.h;mmsystem.h" HAVE_MMSYSTEM_H -D_WIN32_WINNT=0x0502)
969- IF (HAVE_MMSYSTEM_H)
970- CHECK_SHARED_FUNCTION_EXISTS(waveOutOpen "windows.h;mmsystem.h" winmm "" HAVE_LIBWINMM)
971- IF (HAVE_LIBWINMM)
972- OPTION (ALSOFT_BACKEND_WINMM "Enable Windows Multimedia backend" ON )
973- IF (ALSOFT_BACKEND_WINMM)
974- SET (HAVE_WINMM 1)
975- SET (BACKENDS "${BACKENDS} WinMM," )
976- SET (ALC_OBJS ${ALC_OBJS} Alc/backends/winmm.c)
977- SET (EXTRA_LIBS winmm ${EXTRA_LIBS} )
978- ENDIF ()
979- ENDIF ()
980- ENDIF ()
981-
982- # Check DSound backend
983- FIND_PACKAGE (DSound)
984- IF (DSOUND_FOUND)
985- OPTION (ALSOFT_BACKEND_DSOUND "Enable DirectSound backend" ON )
986- IF (ALSOFT_BACKEND_DSOUND)
987- SET (HAVE_DSOUND 1)
988- SET (BACKENDS "${BACKENDS} DirectSound${IS_LINKED} ," )
989- SET (ALC_OBJS ${ALC_OBJS} Alc/backends/dsound.c)
990- ADD_BACKEND_LIBS(${DSOUND_LIBRARIES} )
991- IF (CMAKE_VERSION VERSION_LESS "2.8.8" )
992- INCLUDE_DIRECTORIES (${DSOUND_INCLUDE_DIRS} )
993- ENDIF ()
994- ENDIF ()
995- ENDIF ()
996931
997- # Check for MMDevApi backend
998- CHECK_INCLUDE_FILE(mmdeviceapi.h HAVE_MMDEVICEAPI_H)
999- IF (HAVE_MMDEVICEAPI_H)
1000- OPTION (ALSOFT_BACKEND_MMDEVAPI "Enable MMDevApi backend" ON )
1001- IF (ALSOFT_BACKEND_MMDEVAPI)
1002- SET (HAVE_MMDEVAPI 1)
1003- SET (BACKENDS "${BACKENDS} MMDevApi," )
1004- SET (ALC_OBJS ${ALC_OBJS} Alc/backends/mmdevapi.c)
1005- ENDIF ()
1006- ENDIF ()
1007- ENDIF ()
1008- IF (ALSOFT_REQUIRE_WINMM AND NOT HAVE_WINMM)
1009- MESSAGE (FATAL_ERROR "Failed to enabled required WinMM backend" )
932+ # Check WinMM (Windows) backend
933+ ADD_BACKEND(WINMM WinMM Alc/backends/winmm.c)
934+ IF (ALSOFT_BACKEND_WINMM)
935+ SET (EXTRA_LIBS ${WINMM_LIBRARIES} ${EXTRA_LIBS} )
1010936ENDIF ()
1011- IF (ALSOFT_REQUIRE_DSOUND AND NOT HAVE_DSOUND)
1012- MESSAGE (FATAL_ERROR "Failed to enabled required DSound backend" )
1013- ENDIF ( )
1014- IF (ALSOFT_REQUIRE_MMDEVAPI AND NOT HAVE_MMDEVAPI )
1015- MESSAGE (FATAL_ERROR "Failed to enabled required MMDevApi backend" )
937+
938+ # Check DSound (Windows) backend
939+ ADD_BACKEND(DSOUND DSound Alc/backends/dsound.c )
940+ IF (ALSOFT_BACKEND_DSOUND )
941+ ADD_BACKEND_LIBS( ${DSOUND_LIBRARIES} )
1016942ENDIF ()
1017943
944+ # Check for MMDevApi (Windows) backend
945+ ADD_BACKEND(MMDEVAPI MMDevAPI Alc/backends/mmdevapi.c)
946+
1018947# Check PortAudio backend
1019- OPTION (ALSOFT_REQUIRE_PORTAUDIO "Require PortAudio backend" OFF )
1020- FIND_PACKAGE (PortAudio)
1021- IF (PORTAUDIO_FOUND)
1022- OPTION (ALSOFT_BACKEND_PORTAUDIO "Enable PortAudio backend" ON )
1023- IF (ALSOFT_BACKEND_PORTAUDIO)
1024- SET (HAVE_PORTAUDIO 1)
1025- SET (BACKENDS "${BACKENDS} PortAudio${IS_LINKED} ," )
1026- SET (ALC_OBJS ${ALC_OBJS} Alc/backends/portaudio.c)
1027- ADD_BACKEND_LIBS(${PORTAUDIO_LIBRARIES} )
1028- IF (CMAKE_VERSION VERSION_LESS "2.8.8" )
1029- INCLUDE_DIRECTORIES (${PORTAUDIO_INCLUDE_DIRS} )
1030- ENDIF ()
1031- ENDIF ()
1032- ENDIF ()
1033- IF (ALSOFT_REQUIRE_PORTAUDIO AND NOT HAVE_PORTAUDIO)
1034- MESSAGE (FATAL_ERROR "Failed to enabled required PortAudio backend" )
948+ ADD_BACKEND(PORTAUDIO PortAudio Alc/backends/portaudio.c)
949+ IF (ALSOFT_BACKEND_PORTAUDIO)
950+ ADD_BACKEND_LIBS(${PORTAUDIO_LIBRARIES} )
1035951ENDIF ()
1036952
1037953# Check PulseAudio backend
1038- OPTION (ALSOFT_REQUIRE_PULSEAUDIO "Require PulseAudio backend" OFF )
1039- FIND_PACKAGE (PulseAudio)
1040- IF (PULSEAUDIO_FOUND)
1041- OPTION (ALSOFT_BACKEND_PULSEAUDIO "Enable PulseAudio backend" ON )
1042- IF (ALSOFT_BACKEND_PULSEAUDIO)
1043- SET (HAVE_PULSEAUDIO 1)
1044- SET (BACKENDS "${BACKENDS} PulseAudio${IS_LINKED} ," )
1045- SET (ALC_OBJS ${ALC_OBJS} Alc/backends/pulseaudio.c)
1046- ADD_BACKEND_LIBS(${PULSEAUDIO_LIBRARIES} )
1047- IF (CMAKE_VERSION VERSION_LESS "2.8.8" )
1048- INCLUDE_DIRECTORIES (${PULSEAUDIO_INCLUDE_DIRS} )
1049- ENDIF ()
1050- ENDIF ()
1051- ENDIF ()
1052- IF (ALSOFT_REQUIRE_PULSEAUDIO AND NOT HAVE_PULSEAUDIO)
1053- MESSAGE (FATAL_ERROR "Failed to enabled required PulseAudio backend" )
954+ ADD_BACKEND(PULSEAUDIO PulseAudio Alc/backends/pulseaudio.c)
955+ IF (ALSOFT_BACKEND_PULSEAUDIO)
956+ ADD_BACKEND_LIBS(${PULSEAUDIO_LIBRARIES} )
1054957ENDIF ()
1055958
1056959# Check JACK backend
1057- OPTION (ALSOFT_REQUIRE_JACK "Require JACK backend" OFF )
1058- FIND_PACKAGE (JACK)
1059- IF (JACK_FOUND)
1060- OPTION (ALSOFT_BACKEND_JACK "Enable JACK backend" ON )
1061- IF (ALSOFT_BACKEND_JACK)
1062- SET (HAVE_JACK 1)
1063- SET (BACKENDS "${BACKENDS} JACK${IS_LINKED} ," )
1064- SET (ALC_OBJS ${ALC_OBJS} Alc/backends/jack.c)
1065- ADD_BACKEND_LIBS(${JACK_LIBRARIES} )
1066- IF (CMAKE_VERSION VERSION_LESS "2.8.8" )
1067- INCLUDE_DIRECTORIES (${JACK_INCLUDE_DIRS} )
1068- ENDIF ()
1069- ENDIF ()
1070- ENDIF ()
1071- IF (ALSOFT_REQUIRE_JACK AND NOT HAVE_JACK)
1072- MESSAGE (FATAL_ERROR "Failed to enabled required JACK backend" )
960+ ADD_BACKEND(JACK JACK Alc/backends/jack.c)
961+ IF (ALSOFT_BACKEND_JACK)
962+ ADD_BACKEND_LIBS(${JACK_LIBRARIES} )
1073963ENDIF ()
1074964
1075965# Check CoreAudio backend
@@ -1106,22 +996,9 @@ IF(ALSOFT_REQUIRE_COREAUDIO AND NOT HAVE_COREAUDIO)
1106996ENDIF ()
1107997
1108998# Check for OpenSL (Android) backend
1109- OPTION (ALSOFT_REQUIRE_OPENSL "Require OpenSL backend" OFF )
1110- CHECK_INCLUDE_FILES("SLES/OpenSLES.h;SLES/OpenSLES_Android.h" HAVE_SLES_OPENSLES_ANDROID_H)
1111- IF (HAVE_SLES_OPENSLES_ANDROID_H)
1112- CHECK_SHARED_FUNCTION_EXISTS(slCreateEngine "SLES/OpenSLES.h" OpenSLES "" HAVE_LIBOPENSLES)
1113- IF (HAVE_LIBOPENSLES)
1114- OPTION (ALSOFT_BACKEND_OPENSL "Enable OpenSL backend" ON )
1115- IF (ALSOFT_BACKEND_OPENSL)
1116- SET (HAVE_OPENSL 1)
1117- SET (ALC_OBJS ${ALC_OBJS} Alc/backends/opensl.c)
1118- SET (BACKENDS "${BACKENDS} OpenSL," )
1119- SET (EXTRA_LIBS OpenSLES ${EXTRA_LIBS} )
1120- ENDIF ()
1121- ENDIF ()
1122- ENDIF ()
1123- IF (ALSOFT_REQUIRE_OPENSL AND NOT HAVE_OPENSL)
1124- MESSAGE (FATAL_ERROR "Failed to enabled required OpenSL backend" )
999+ ADD_BACKEND(OPENSL OpenSLES Alc/backends/opensl.c)
1000+ IF (ALSOFT_BACKEND_OPENSL)
1001+ SET (EXTRA_LIBS OpenSLES ${EXTRA_LIBS} )
11251002ENDIF ()
11261003
11271004# Optionally enable the Wave Writer backend
0 commit comments