2019-02-17 06:42:47 +08:00
|
|
|
cmake_minimum_required(VERSION 3.1)
|
2017-04-10 17:00:52 +08:00
|
|
|
project(SDL2_MIXER C)
|
|
|
|
|
|
|
|
find_path(SDL_INCLUDE_DIR SDL.h PATH_SUFFIXES SDL2)
|
2019-05-02 04:36:57 +08:00
|
|
|
find_package(SDL2 CONFIG REQUIRED)
|
2017-04-10 17:00:52 +08:00
|
|
|
set(SDL_MIXER_INCLUDES ${SDL_INCLUDE_DIR})
|
2019-05-02 04:36:57 +08:00
|
|
|
|
|
|
|
set(SDL_MIXER_LIBRARIES SDL2::SDL2)
|
2017-04-10 17:00:52 +08:00
|
|
|
|
|
|
|
# builtin formats
|
2019-02-17 06:42:47 +08:00
|
|
|
set(SDL_MIXER_DEFINES MUSIC_WAV)
|
2017-04-10 17:00:52 +08:00
|
|
|
|
2019-09-24 04:49:38 +08:00
|
|
|
# MP3 support
|
|
|
|
if(SDL_MIXER_ENABLE_MP3)
|
|
|
|
find_path(MPG123_INCLUDE_DIR mpg123.h)
|
2019-09-25 23:27:32 +08:00
|
|
|
find_library(MPG123_LIBRARY NAMES libmpg123 mpg123)
|
2019-09-24 04:49:38 +08:00
|
|
|
list(APPEND SDL_MIXER_INCLUDES ${MPG123_INCLUDE_DIR})
|
|
|
|
list(APPEND SDL_MIXER_DEFINES MUSIC_MP3_MPG123)
|
2020-01-28 06:21:09 +08:00
|
|
|
if (SDL_DYNAMIC_LOAD)
|
|
|
|
get_filename_component(MPG123_LIBRARY_NAME "${MPG123_LIBRARY}" NAME_WE)
|
|
|
|
list(APPEND SDL_MIXER_LOAD_DEFINES -DMPG123_DYNAMIC="${MPG123_LIBRARY_NAME}${LIBRARY_SUFFIX}")
|
|
|
|
endif()
|
2019-09-24 04:49:38 +08:00
|
|
|
endif()
|
|
|
|
|
|
|
|
# FLAC support
|
|
|
|
if(SDL_MIXER_ENABLE_FLAC)
|
|
|
|
find_path(FLAC_INCLUDE_DIR FLAC/all.h)
|
2019-09-25 23:27:32 +08:00
|
|
|
find_library(FLAC_LIBRARY FLAC)
|
2019-09-24 04:49:38 +08:00
|
|
|
list(APPEND SDL_MIXER_INCLUDES ${FLAC_INCLUDE_DIR})
|
|
|
|
list(APPEND SDL_MIXER_DEFINES MUSIC_FLAC)
|
2020-01-28 06:21:09 +08:00
|
|
|
if (SDL_DYNAMIC_LOAD)
|
|
|
|
get_filename_component(FLAC_LIBRARY_NAME "${FLAC_LIBRARY}" NAME_WE)
|
|
|
|
list(APPEND SDL_MIXER_LOAD_DEFINES -DFLAC_DYNAMIC="${FLAC_LIBRARY_NAME}${LIBRARY_SUFFIX}")
|
|
|
|
endif()
|
2019-09-24 04:49:38 +08:00
|
|
|
endif()
|
|
|
|
|
|
|
|
# MOD support
|
|
|
|
if(SDL_MIXER_ENABLE_MOD)
|
|
|
|
find_path(MODPLUG_INCLUDE_DIR libmodplug/modplug.h)
|
2019-09-25 23:27:32 +08:00
|
|
|
find_library(MODPLUG_LIBRARY modplug)
|
2019-09-24 04:49:38 +08:00
|
|
|
list(APPEND SDL_MIXER_INCLUDES ${MODPLUG_INCLUDE_DIR})
|
|
|
|
list(APPEND SDL_MIXER_DEFINES MUSIC_MOD_MODPLUG)
|
2020-01-28 06:21:09 +08:00
|
|
|
if (SDL_DYNAMIC_LOAD)
|
|
|
|
get_filename_component(MODPLUG_LIBRARY_NAME "${MODPLUG_LIBRARY}" NAME_WE)
|
|
|
|
list(APPEND SDL_MIXER_LOAD_DEFINES -DMODPLUG_DYNAMIC="${MODPLUG_LIBRARY_NAME}${LIBRARY_SUFFIX}")
|
|
|
|
endif()
|
2019-09-24 04:49:38 +08:00
|
|
|
endif()
|
|
|
|
|
|
|
|
# Ogg-Vorbis support
|
|
|
|
if(SDL_MIXER_ENABLE_OGGVORBIS)
|
|
|
|
find_path(VORBIS_INCLUDE_DIR vorbis/codec.h)
|
2019-09-25 23:27:32 +08:00
|
|
|
find_library(VORBISFILE_LIBRARY vorbisfile)
|
2019-09-24 04:49:38 +08:00
|
|
|
list(APPEND SDL_MIXER_INCLUDES ${VORBIS_INCLUDE_DIR})
|
|
|
|
list(APPEND SDL_MIXER_DEFINES MUSIC_OGG)
|
2020-01-28 06:21:09 +08:00
|
|
|
if (SDL_DYNAMIC_LOAD)
|
|
|
|
get_filename_component(VORBISFILE_LIBRARY_NAME "${VORBISFILE_LIBRARY}" NAME_WE)
|
|
|
|
list(APPEND SDL_MIXER_LOAD_DEFINES -DOGG_DYNAMIC="${VORBISFILE_LIBRARY_NAME}${LIBRARY_SUFFIX}")
|
|
|
|
endif()
|
2019-09-24 04:49:38 +08:00
|
|
|
endif()
|
|
|
|
|
|
|
|
# Opus support
|
|
|
|
if(SDL_MIXER_ENABLE_OPUS)
|
|
|
|
find_path(OPUS_INCLUDE_DIR opus/opusfile.h)
|
2019-09-25 23:27:32 +08:00
|
|
|
find_library(OPUSFILE_LIBRARY opusfile)
|
2019-09-24 04:49:38 +08:00
|
|
|
list(APPEND SDL_MIXER_INCLUDES ${OPUS_INCLUDE_DIR})
|
|
|
|
list(APPEND SDL_MIXER_DEFINES MUSIC_OPUS)
|
2020-01-28 06:21:09 +08:00
|
|
|
if (SDL_DYNAMIC_LOAD)
|
|
|
|
get_filename_component(OPUSFILE_LIBRARY_NAME "${OPUSFILE_LIBRARY}" NAME_WE)
|
|
|
|
list(APPEND SDL_MIXER_LOAD_DEFINES -DOPUS_DYNAMIC="${OPUSFILE_LIBRARY_NAME}${LIBRARY_SUFFIX}")
|
|
|
|
endif()
|
2019-09-24 04:49:38 +08:00
|
|
|
endif()
|
|
|
|
|
2018-05-18 23:15:52 +08:00
|
|
|
add_library(SDL2_mixer
|
2017-04-10 17:00:52 +08:00
|
|
|
effect_position.c
|
|
|
|
effect_stereoreverse.c
|
|
|
|
effects_internal.c
|
|
|
|
load_aiff.c
|
|
|
|
load_voc.c
|
|
|
|
mixer.c
|
|
|
|
music.c
|
|
|
|
music_cmd.c
|
|
|
|
music_flac.c
|
2017-11-14 10:55:33 +08:00
|
|
|
music_fluidsynth.c
|
2017-04-10 17:00:52 +08:00
|
|
|
music_mad.c
|
2017-11-14 10:55:33 +08:00
|
|
|
music_mikmod.c
|
2017-04-10 17:00:52 +08:00
|
|
|
music_modplug.c
|
2017-11-14 10:55:33 +08:00
|
|
|
music_mpg123.c
|
2017-04-10 17:00:52 +08:00
|
|
|
music_ogg.c
|
2019-03-12 04:15:08 +08:00
|
|
|
music_opus.c
|
2017-11-14 10:55:33 +08:00
|
|
|
music_timidity.c
|
|
|
|
music_wav.c
|
2018-01-10 04:44:37 +08:00
|
|
|
version.rc)
|
2017-04-10 17:00:52 +08:00
|
|
|
|
2020-02-29 13:42:47 +08:00
|
|
|
if(WIN32 OR APPLE)
|
2019-02-17 06:42:47 +08:00
|
|
|
list(APPEND SDL_MIXER_DEFINES MUSIC_MID_NATIVE)
|
2020-02-29 13:42:47 +08:00
|
|
|
target_sources(SDL2_mixer PRIVATE music_nativemidi.c native_midi/native_midi_common.c)
|
|
|
|
target_link_libraries(SDL2_mixer ${SDL_MIXER_LIBRARIES})
|
|
|
|
if(WIN32)
|
|
|
|
target_sources(SDL2_mixer PRIVATE native_midi/native_midi_win32.c)
|
|
|
|
target_link_libraries(SDL2_mixer Winmm)
|
|
|
|
elseif(APPLE)
|
|
|
|
target_sources(SDL2_mixer PRIVATE native_midi/native_midi_macosx.c)
|
|
|
|
endif()
|
2019-02-17 06:42:47 +08:00
|
|
|
endif()
|
|
|
|
|
2017-07-21 19:01:00 +08:00
|
|
|
set_target_properties(SDL2_mixer PROPERTIES DEFINE_SYMBOL SDL2_EXPORTS)
|
2019-09-25 23:27:32 +08:00
|
|
|
target_compile_definitions(SDL2_mixer PRIVATE ${SDL_MIXER_DEFINES} ${SDL_MIXER_LOAD_DEFINES})
|
2017-04-10 17:00:52 +08:00
|
|
|
target_include_directories(SDL2_mixer PRIVATE ${SDL_MIXER_INCLUDES} ./native_midi)
|
|
|
|
|
|
|
|
install(TARGETS SDL2_mixer
|
2019-03-27 00:57:16 +08:00
|
|
|
EXPORT SDL2_mixer
|
2017-04-10 17:00:52 +08:00
|
|
|
RUNTIME DESTINATION bin
|
|
|
|
ARCHIVE DESTINATION lib
|
|
|
|
LIBRARY DESTINATION lib)
|
|
|
|
|
2019-03-27 00:57:16 +08:00
|
|
|
install(EXPORT SDL2_mixer
|
|
|
|
DESTINATION share/sdl2-mixer/
|
|
|
|
FILE sdl2-mixer-config.cmake
|
|
|
|
NAMESPACE SDL2::
|
|
|
|
)
|
|
|
|
|
2017-04-10 17:00:52 +08:00
|
|
|
if(NOT SDL_MIXER_SKIP_HEADERS)
|
|
|
|
install(FILES SDL_mixer.h DESTINATION include/SDL2)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
message(STATUS "Link-time dependencies:")
|
|
|
|
foreach(LIBRARY ${SDL_MIXER_LIBRARIES})
|
|
|
|
message(STATUS " " ${LIBRARY})
|
|
|
|
endforeach()
|