Skip to content

Commit 7630be3

Browse files
committed
Remove duplicated CMake code for backend setup
1 parent 0a042c6 commit 7630be3

File tree

1 file changed

+70
-174
lines changed

1 file changed

+70
-174
lines changed

CMakeLists.txt

Lines changed: 70 additions & 174 deletions
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,44 @@ if(DEFINED LIB_SUFFIX)
6262
endif()
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

71104
IF(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})
956978
ENDIF()
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})
1008990
ENDIF()
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})
1025996
ENDIF()
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)
1031998
IF(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)
10741022
ENDIF()
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})
11001028
ENDIF()
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})
11171034
ENDIF()
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})
11341040
ENDIF()
11351041

11361042
# Check CoreAudio backend
@@ -1167,19 +1073,9 @@ IF(ALSOFT_REQUIRE_COREAUDIO AND NOT HAVE_COREAUDIO)
11671073
ENDIF()
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)
11721077
IF(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})
11831079
ENDIF()
11841080

11851081
# Check for SDL2 backend

0 commit comments

Comments
 (0)