Skip to content

Commit

Permalink
cmake: set on-by-default audio backends, make options platform-dependent
Browse files Browse the repository at this point in the history
cmake >= 3.4 is now needed because of string(APPEND ...)
  • Loading branch information
sezero committed Mar 31, 2024
1 parent a8b9991 commit f68b9e1
Showing 1 changed file with 42 additions and 10 deletions.
52 changes: 42 additions & 10 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# ########## Project setup ##########
CMAKE_MINIMUM_REQUIRED(VERSION 3.1...3.5)
CMAKE_MINIMUM_REQUIRED(VERSION 3.4...3.5)
PROJECT(wildmidi LANGUAGES C VERSION 0.4.5)

# WildMIDI Version
Expand All @@ -26,22 +26,39 @@ OPTION(WANT_STATIC "Build static library in addition to dynamic library" OFF)
CMAKE_DEPENDENT_OPTION(WANT_PLAYERSTATIC "Build a statically linked WildMIDI player" ON "WANT_STATIC;WANT_PLAYER" OFF)

# Player options
OPTION(WANT_AMIGA_AHI "Include Amiga AHI support" OFF)
OPTION(WANT_ALSA "Include ALSA (Advanced Linux Sound Architecture) support" OFF)
OPTION(WANT_COREAUDIO "Include macOS CoreAudio support" OFF)
OPTION(WANT_DOSSB "Include DOS SoundBlaster support" OFF)
IF (CMAKE_SYSTEM_NAME MATCHES ".*Linux")
SET(ALSA_DEFAULT ON)
ELSE()
SET(ALSA_DEFAULT OFF)
ENDIF()
IF (CMAKE_SYSTEM_NAME MATCHES "DragonFly.*|kFreeBSD.*|FreeBSD")
SET(OSS_DEFAULT ON)
ELSE()
SET(OSS_DEFAULT OFF)
ENDIF()
IF (CMAKE_SYSTEM_NAME MATCHES "kOpenBSD.*|OpenBSD.*")
SET(SNDIO_DEFAULT ON)
ELSE()
SET(SNDIO_DEFAULT OFF)
ENDIF()

CMAKE_DEPENDENT_OPTION(WANT_AMIGA_AHI "Include Amiga AHI support" ON "AMIGA" OFF)
CMAKE_DEPENDENT_OPTION(WANT_ALSA "Include ALSA (Advanced Linux Sound Architecture) support" ${ALSA_DEFAULT} "UNIX" OFF)
CMAKE_DEPENDENT_OPTION(WANT_COREAUDIO "Include macOS CoreAudio support" ON "APPLE" OFF)
CMAKE_DEPENDENT_OPTION(WANT_DOSSB "Include DOS SoundBlaster support" ON "DJGPP" OFF)
CMAKE_DEPENDENT_OPTION(WANT_OS2DART "Include OS/2 DART support" ON "OS2" OFF)
CMAKE_DEPENDENT_OPTION(WANT_OSS "Include OSS (Open Sound System) support" ${OSS_DEFAULT} "UNIX" OFF)
CMAKE_DEPENDENT_OPTION(WANT_SNDIO "Include OpenBSD sndio support" ${SNDIO_DEFAULT} "UNIX" OFF)
CMAKE_DEPENDENT_OPTION(WANT_WINMM "Include Windows WinMM audio support" ON "WIN32 OR CYGWIN" OFF)
OPTION(WANT_OPENAL "Include OpenAL (Cross Platform) support" OFF)
OPTION(WANT_OS2DART "Include OS/2 DART support" OFF)
OPTION(WANT_OSS "Include OSS (Open Sound System) support" OFF)
OPTION(WANT_SNDIO "Include OpenBSD sndio support" OFF)
OPTION(WANT_WINMM "Include Windows WinMM audio support" OFF)

OPTION(WANT_DEVTEST "Build WildMIDI DevTest file to check files" OFF)
OPTION(WANT_OSX_DEPLOYMENT "OSX Deployment" OFF)
CMAKE_DEPENDENT_OPTION(WANT_OSX_DEPLOYMENT "OSX Deployment" OFF "APPLE" OFF)

IF (WIN32 AND MSVC)
OPTION(WANT_MP_BUILD "Build with Multiple Processes (/MP)" OFF)
ENDIF ()

IF (UNIX AND NOT APPLE AND NOT RISCOS)
SET(WILDMIDI_CFG "/etc/wildmidi/wildmidi.cfg" CACHE STRING "default config location")
ELSE ()
Expand Down Expand Up @@ -195,36 +212,44 @@ IF (APPLE)
ENDIF (APPLE)

IF(WANT_PLAYER OR WANT_PLAYERSTATIC)
SET(ENABLED_OUTPUT "")

IF (WANT_AMIGA_AHI)
SET(AUDIODRV_AHI 1)
STRING(APPEND ENABLED_OUTPUT " ahi")
ENDIF()

IF (WANT_ALSA)
FIND_PACKAGE(ALSA REQUIRED)
SET(AUDIODRV_ALSA 1)
LIST(APPEND AUDIO_LIBRARY ${ALSA_LIBRARIES})
STRING(APPEND ENABLED_OUTPUT " alsa")
ENDIF()

IF (WANT_COREAUDIO)
SET(AUDIODRV_COREAUDIO 1)
LIST(APPEND AUDIO_LIBRARY -Wl,-framework,AudioToolbox)
LIST(APPEND AUDIO_LIBRARY -Wl,-framework,AudioUnit)
LIST(APPEND AUDIO_LIBRARY -Wl,-framework,CoreServices)
STRING(APPEND ENABLED_OUTPUT " coreaudio")
ENDIF()

IF (WANT_DOSSB)
SET(AUDIODRV_DOSSB 1)
STRING(APPEND ENABLED_OUTPUT " dossb")
ENDIF()

IF (WANT_OPENAL)
FIND_PACKAGE(OpenAL REQUIRED)
SET(AUDIODRV_OPENAL 1)
LIST(APPEND AUDIO_LIBRARY ${OPENAL_LIBRARY})
STRING(APPEND ENABLED_OUTPUT " openal")
ENDIF()

IF (WANT_OS2DART)
SET(AUDIODRV_OS2DART 1)
LIST(APPEND AUDIO_LIBRARY mmpm2)
STRING(APPEND ENABLED_OUTPUT " dart")
ENDIF()

IF (WANT_OSS)
Expand All @@ -233,18 +258,25 @@ IF(WANT_PLAYER OR WANT_PLAYERSTATIC)
IF(OSS_LIBRARIES)
LIST(APPEND AUDIO_LIBRARY ${OSS_LIBRARIES})
ENDIF()
STRING(APPEND ENABLED_OUTPUT " oss")
ENDIF()

IF (WANT_SNDIO)
FIND_PACKAGE(SNDIO REQUIRED)
SET(AUDIODRV_SNDIO 1)
LIST(APPEND AUDIO_LIBRARY ${SNDIO_LIBRARIES})
STRING(APPEND ENABLED_OUTPUT " sndio")
ENDIF()

IF (WANT_WINMM)
SET(AUDIODRV_WINMM 1)
LIST(APPEND AUDIO_LIBRARY winmm)
STRING(APPEND ENABLED_OUTPUT " winmm")
ENDIF()

STRING(STRIP ${ENABLED_OUTPUT} ENABLED_OUTPUT)
STRING(APPEND ENABLED_OUTPUT " wave")
MESSAGE(STATUS "Enabled audio output backends: ${ENABLED_OUTPUT}")
ENDIF()

# Setup up our config file
Expand Down

0 comments on commit f68b9e1

Please sign in to comment.