@@ -62,11 +62,44 @@ if(DEFINED LIB_SUFFIX)
6262endif ()
6363
6464
65- SET (CPP_DEFS ) # C pre-process, not C++
66- SET (INC_PATHS )
67- SET (C_FLAGS )
68- SET (LINKER_FLAGS )
69- SET (EXTRA_LIBS )
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+
70103
71104IF (WIN32 )
72105 SET (CPP_DEFS ${CPP_DEFS} _WIN32 _WIN32_WINNT=0x0502)
@@ -939,198 +972,71 @@ SET(ALC_OBJS ${ALC_OBJS}
939972)
940973
941974# Check ALSA backend
942- OPTION (ALSOFT_REQUIRE_ALSA "Require ALSA backend" OFF )
943- FIND_PACKAGE (ALSA)
944- IF (ALSA_FOUND)
945- OPTION (ALSOFT_BACKEND_ALSA "Enable ALSA backend" ON )
946- IF (ALSOFT_BACKEND_ALSA)
947- SET (HAVE_ALSA 1)
948- SET (BACKENDS "${BACKENDS} ALSA${IS_LINKED} ," )
949- SET (ALC_OBJS ${ALC_OBJS} Alc/backends/alsa.c)
950- ADD_BACKEND_LIBS(${ALSA_LIBRARIES} )
951- SET (INC_PATHS ${INC_PATHS} ${ALSA_INCLUDE_DIRS} )
952- ENDIF ()
953- ENDIF ()
954- IF (ALSOFT_REQUIRE_ALSA AND NOT HAVE_ALSA)
955- MESSAGE (FATAL_ERROR "Failed to enabled required ALSA backend" )
975+ ADD_BACKEND(ALSA ALSA Alc/backends/alsa.c)
976+ IF (HAVE_ALSA)
977+ ADD_BACKEND_LIBS(${ALSA_LIBRARIES} )
956978ENDIF ()
957979
958980# Check OSS backend
959- OPTION (ALSOFT_REQUIRE_OSS "Require OSS backend" OFF )
960- FIND_PACKAGE (OSS)
961- IF (OSS_FOUND)
962- OPTION (ALSOFT_BACKEND_OSS "Enable OSS backend" ON )
963- IF (ALSOFT_BACKEND_OSS)
964- SET (HAVE_OSS 1)
965- SET (BACKENDS "${BACKENDS} OSS," )
966- SET (ALC_OBJS ${ALC_OBJS} Alc/backends/oss.c)
967- IF (OSS_LIBRARIES)
968- SET (EXTRA_LIBS ${OSS_LIBRARIES} ${EXTRA_LIBS} )
969- ENDIF ()
970- SET (INC_PATHS ${INC_PATHS} ${OSS_INCLUDE_DIRS} )
971- ENDIF ()
972- ENDIF ()
973- IF (ALSOFT_REQUIRE_OSS AND NOT HAVE_OSS)
974- MESSAGE (FATAL_ERROR "Failed to enabled required OSS backend" )
975- ENDIF ()
981+ ADD_BACKEND(OSS OSS Alc/backends/oss.c)
976982
977983# Check Solaris backend
978- OPTION (ALSOFT_REQUIRE_SOLARIS "Require Solaris backend" OFF )
979- FIND_PACKAGE (AudioIO)
980- IF (AUDIOIO_FOUND)
981- OPTION (ALSOFT_BACKEND_SOLARIS "Enable Solaris backend" ON )
982- IF (ALSOFT_BACKEND_SOLARIS)
983- SET (HAVE_SOLARIS 1)
984- SET (BACKENDS "${BACKENDS} Solaris," )
985- SET (ALC_OBJS ${ALC_OBJS} Alc/backends/solaris.c)
986- SET (INC_PATHS ${INC_PATHS} ${AUDIOIO_INCLUDE_DIRS} )
987- ENDIF ()
988- ENDIF ()
989- IF (ALSOFT_REQUIRE_SOLARIS AND NOT HAVE_SOLARIS)
990- MESSAGE (FATAL_ERROR "Failed to enabled required Solaris backend" )
991- ENDIF ()
984+ ADD_BACKEND(SOLARIS AudioIO Alc/backends/solaris.c)
992985
993986# Check SndIO backend
994- OPTION (ALSOFT_REQUIRE_SNDIO "Require SndIO backend" OFF )
995- FIND_PACKAGE (SoundIO)
996- IF (SOUNDIO_FOUND)
997- OPTION (ALSOFT_BACKEND_SNDIO "Enable SndIO backend" ON )
998- IF (ALSOFT_BACKEND_SNDIO)
999- SET (HAVE_SNDIO 1)
1000- SET (BACKENDS "${BACKENDS} SndIO (linked)," )
1001- SET (ALC_OBJS ${ALC_OBJS} Alc/backends/sndio.c)
1002- SET (EXTRA_LIBS ${SOUNDIO_LIBRARIES} ${EXTRA_LIBS} )
1003- SET (INC_PATHS ${INC_PATHS} ${SOUNDIO_INCLUDE_DIRS} )
1004- ENDIF ()
1005- ENDIF ()
1006- IF (ALSOFT_REQUIRE_SNDIO AND NOT HAVE_SNDIO)
1007- MESSAGE (FATAL_ERROR "Failed to enabled required SndIO backend" )
987+ ADD_BACKEND(SNDIO SoundIO Alc/backends/sndio.c)
988+ IF (HAVE_SNDIO)
989+ SET (EXTRA_LIBS ${SOUNDIO_LIBRARIES} ${EXTRA_LIBS} )
1008990ENDIF ()
1009991
1010992# Check QSA backend
1011- OPTION (ALSOFT_REQUIRE_QSA "Require QSA backend" OFF )
1012- FIND_PACKAGE (QSA)
1013- IF (QSA_FOUND)
1014- OPTION (ALSOFT_BACKEND_QSA "Enable QSA backend" ON )
1015- IF (ALSOFT_BACKEND_QSA)
1016- SET (HAVE_QSA 1)
1017- SET (BACKENDS "${BACKENDS} QSA (linked)," )
1018- SET (ALC_OBJS ${ALC_OBJS} Alc/backends/qsa.c)
1019- SET (EXTRA_LIBS ${QSA_LIBRARIES} ${EXTRA_LIBS} )
1020- SET (INC_PATHS ${INC_PATHS} ${QSA_INCLUDE_DIRS} )
1021- ENDIF ()
1022- ENDIF ()
1023- IF (ALSOFT_REQUIRE_QSA AND NOT HAVE_QSA)
1024- MESSAGE (FATAL_ERROR "Failed to enabled required QSA backend" )
993+ ADD_BACKEND(QSA QSA Alc/backends/qsa.c)
994+ IF (HAVE_QSA)
995+ SET (EXTRA_LIBS ${QSA_LIBRARIES} ${EXTRA_LIBS} )
1025996ENDIF ()
1026997
1027- # Check Windows-only backends
1028- OPTION (ALSOFT_REQUIRE_WINMM "Require Windows Multimedia backend" OFF )
1029- OPTION (ALSOFT_REQUIRE_DSOUND "Require DirectSound backend" OFF )
1030- OPTION (ALSOFT_REQUIRE_WASAPI "Require WASAPI backend" OFF )
1031998IF (HAVE_WINDOWS_H)
1032999 SET (OLD_REQUIRED_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} )
10331000 SET (CMAKE_REQUIRED_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} -D_WIN32_WINNT=0x0502)
10341001
1035- # Check MMSystem backend
1036- FIND_PACKAGE (WinMM)
1037- IF (WINMM_FOUND)
1038- OPTION (ALSOFT_BACKEND_WINMM "Enable Windows Multimedia backend" ON )
1039- IF (ALSOFT_BACKEND_WINMM)
1040- SET (HAVE_WINMM 1)
1041- SET (BACKENDS "${BACKENDS} WinMM," )
1042- SET (ALC_OBJS ${ALC_OBJS} Alc/backends/winmm.c)
1043- SET (EXTRA_LIBS ${WINMM_LIBRARIES} ${EXTRA_LIBS} )
1044- SET (INC_PATHS ${INC_PATHS} ${WINMM_INCLUDE_DIRS} )
1045- ENDIF ()
1002+ # Check WinMM (Windows) backend
1003+ ADD_BACKEND(WINMM WinMM Alc/backends/winmm.c)
1004+ IF (HAVE_WINMM)
1005+ SET (EXTRA_LIBS ${WINMM_LIBRARIES} ${EXTRA_LIBS} )
10461006 ENDIF ()
10471007
1048- # Check DSound backend
1049- FIND_PACKAGE (DSound)
1050- IF (DSOUND_FOUND)
1051- OPTION (ALSOFT_BACKEND_DSOUND "Enable DirectSound backend" ON )
1052- IF (ALSOFT_BACKEND_DSOUND)
1053- SET (HAVE_DSOUND 1)
1054- SET (BACKENDS "${BACKENDS} DirectSound${IS_LINKED} ," )
1055- SET (ALC_OBJS ${ALC_OBJS} Alc/backends/dsound.c)
1056- ADD_BACKEND_LIBS(${DSOUND_LIBRARIES} )
1057- SET (INC_PATHS ${INC_PATHS} ${DSOUND_INCLUDE_DIRS} )
1058- ENDIF ()
1008+ # Check DSound (Windows) backend
1009+ ADD_BACKEND(DSOUND DSound Alc/backends/dsound.c)
1010+ IF (HAVE_DSOUND)
1011+ ADD_BACKEND_LIBS(${DSOUND_LIBRARIES} )
10591012 ENDIF ()
10601013
1061- # Check for WASAPI backend
1014+ # Check for WASAPI (Windows) backend
10621015 FIND_PACKAGE (WASAPI)
10631016 IF (WASAPI_FOUND)
1064- OPTION (ALSOFT_BACKEND_WASAPI "Enable WASAPI backend" ON )
1065- IF (ALSOFT_BACKEND_WASAPI)
1066- SET (HAVE_WASAPI 1)
1067- SET (BACKENDS "${BACKENDS} WASAPI," )
1068- SET (ALC_OBJS ${ALC_OBJS} Alc/backends/wasapi.c)
1069- ENDIF ()
1017+ ADD_BACKEND(WASAPI WASAPI Alc/backends/wasapi.c)
10701018 ENDIF ()
10711019
10721020 SET (CMAKE_REQUIRED_DEFINITIONS ${OLD_REQUIRED_DEFINITIONS} )
10731021 UNSET (OLD_REQUIRED_DEFINITIONS)
10741022ENDIF ()
1075- IF (ALSOFT_REQUIRE_WINMM AND NOT HAVE_WINMM)
1076- MESSAGE (FATAL_ERROR "Failed to enabled required WinMM backend" )
1077- ENDIF ()
1078- IF (ALSOFT_REQUIRE_DSOUND AND NOT HAVE_DSOUND)
1079- MESSAGE (FATAL_ERROR "Failed to enabled required DSound backend" )
1080- ENDIF ()
1081- IF (ALSOFT_REQUIRE_WASAPI AND NOT HAVE_WASAPI)
1082- MESSAGE (FATAL_ERROR "Failed to enabled required WASAPI backend" )
1083- ENDIF ()
10841023
10851024# Check PortAudio backend
1086- OPTION (ALSOFT_REQUIRE_PORTAUDIO "Require PortAudio backend" OFF )
1087- FIND_PACKAGE (PortAudio)
1088- IF (PORTAUDIO_FOUND)
1089- OPTION (ALSOFT_BACKEND_PORTAUDIO "Enable PortAudio backend" ON )
1090- IF (ALSOFT_BACKEND_PORTAUDIO)
1091- SET (HAVE_PORTAUDIO 1)
1092- SET (BACKENDS "${BACKENDS} PortAudio${IS_LINKED} ," )
1093- SET (ALC_OBJS ${ALC_OBJS} Alc/backends/portaudio.c)
1094- ADD_BACKEND_LIBS(${PORTAUDIO_LIBRARIES} )
1095- SET (INC_PATHS ${INC_PATHS} ${PORTAUDIO_INCLUDE_DIRS} )
1096- ENDIF ()
1097- ENDIF ()
1098- IF (ALSOFT_REQUIRE_PORTAUDIO AND NOT HAVE_PORTAUDIO)
1099- MESSAGE (FATAL_ERROR "Failed to enabled required PortAudio backend" )
1025+ ADD_BACKEND(PORTAUDIO PortAudio Alc/backends/portaudio.c)
1026+ IF (HAVE_PORTAUDIO)
1027+ ADD_BACKEND_LIBS(${PORTAUDIO_LIBRARIES} )
11001028ENDIF ()
11011029
11021030# Check PulseAudio backend
1103- OPTION (ALSOFT_REQUIRE_PULSEAUDIO "Require PulseAudio backend" OFF )
1104- FIND_PACKAGE (PulseAudio)
1105- IF (PULSEAUDIO_FOUND)
1106- OPTION (ALSOFT_BACKEND_PULSEAUDIO "Enable PulseAudio backend" ON )
1107- IF (ALSOFT_BACKEND_PULSEAUDIO)
1108- SET (HAVE_PULSEAUDIO 1)
1109- SET (BACKENDS "${BACKENDS} PulseAudio${IS_LINKED} ," )
1110- SET (ALC_OBJS ${ALC_OBJS} Alc/backends/pulseaudio.c)
1111- ADD_BACKEND_LIBS(${PULSEAUDIO_LIBRARIES} )
1112- SET (INC_PATHS ${INC_PATHS} ${PULSEAUDIO_INCLUDE_DIRS} )
1113- ENDIF ()
1114- ENDIF ()
1115- IF (ALSOFT_REQUIRE_PULSEAUDIO AND NOT HAVE_PULSEAUDIO)
1116- MESSAGE (FATAL_ERROR "Failed to enabled required PulseAudio backend" )
1031+ ADD_BACKEND(PULSEAUDIO PulseAudio Alc/backends/pulseaudio.c)
1032+ IF (HAVE_PULSEAUDIO)
1033+ ADD_BACKEND_LIBS(${PULSEAUDIO_LIBRARIES} )
11171034ENDIF ()
11181035
11191036# Check JACK backend
1120- OPTION (ALSOFT_REQUIRE_JACK "Require JACK backend" OFF )
1121- FIND_PACKAGE (JACK)
1122- IF (JACK_FOUND)
1123- OPTION (ALSOFT_BACKEND_JACK "Enable JACK backend" ON )
1124- IF (ALSOFT_BACKEND_JACK)
1125- SET (HAVE_JACK 1)
1126- SET (BACKENDS "${BACKENDS} JACK${IS_LINKED} ," )
1127- SET (ALC_OBJS ${ALC_OBJS} Alc/backends/jack.c)
1128- ADD_BACKEND_LIBS(${JACK_LIBRARIES} )
1129- SET (INC_PATHS ${INC_PATHS} ${JACK_INCLUDE_DIRS} )
1130- ENDIF ()
1131- ENDIF ()
1132- IF (ALSOFT_REQUIRE_JACK AND NOT HAVE_JACK)
1133- MESSAGE (FATAL_ERROR "Failed to enabled required JACK backend" )
1037+ ADD_BACKEND(JACK JACK Alc/backends/jack.c)
1038+ IF (HAVE_JACK)
1039+ ADD_BACKEND_LIBS(${JACK_LIBRARIES} )
11341040ENDIF ()
11351041
11361042# Check CoreAudio backend
@@ -1167,19 +1073,9 @@ IF(ALSOFT_REQUIRE_COREAUDIO AND NOT HAVE_COREAUDIO)
11671073ENDIF ()
11681074
11691075# Check for OpenSL (Android) backend
1170- OPTION (ALSOFT_REQUIRE_OPENSL "Require OpenSL backend" OFF )
1171- FIND_PACKAGE (OpenSLES)
1076+ ADD_BACKEND(OPENSL OpenSLES Alc/backends/opensl.c)
11721077IF (OPENSLES_FOUND)
1173- OPTION (ALSOFT_BACKEND_OPENSL "Enable OpenSL backend" ON )
1174- IF (ALSOFT_BACKEND_OPENSL)
1175- SET (HAVE_OPENSL 1)
1176- SET (ALC_OBJS ${ALC_OBJS} Alc/backends/opensl.c)
1177- SET (BACKENDS "${BACKENDS} OpenSL," )
1178- SET (EXTRA_LIBS OpenSLES ${EXTRA_LIBS} )
1179- ENDIF ()
1180- ENDIF ()
1181- IF (ALSOFT_REQUIRE_OPENSL AND NOT HAVE_OPENSL)
1182- MESSAGE (FATAL_ERROR "Failed to enabled required OpenSL backend" )
1078+ SET (EXTRA_LIBS OpenSLES ${EXTRA_LIBS} )
11831079ENDIF ()
11841080
11851081# Check for SDL2 backend
0 commit comments