1 cmake_minimum_required(VERSION 3.1)
4 find_path(SDL_INCLUDE_DIR SDL.h PATH_SUFFIXES SDL2)
5 find_package(SDL2 CONFIG REQUIRED)
6 set(SDL_MIXER_INCLUDES ${SDL_INCLUDE_DIR})
8 set(SDL_MIXER_LIBRARIES SDL2::SDL2)
11 set(SDL_MIXER_DEFINES MUSIC_WAV)
14 if(SDL_MIXER_ENABLE_MP3)
15 find_path(MPG123_INCLUDE_DIR mpg123.h)
16 find_library(MPG123_LIBRARY NAMES libmpg123 mpg123)
17 list(APPEND SDL_MIXER_INCLUDES ${MPG123_INCLUDE_DIR})
18 list(APPEND SDL_MIXER_DEFINES MUSIC_MP3_MPG123)
19 list(APPEND SDL_MIXER_LIBRARIES ${MPG123_LIBRARY})
21 get_filename_component(MPG123_LIBRARY_NAME "${MPG123_LIBRARY}" NAME_WE)
22 list(APPEND SDL_MIXER_LOAD_DEFINES -DMPG123_DYNAMIC="${MPG123_LIBRARY_NAME}${LIBRARY_SUFFIX}")
27 if(SDL_MIXER_ENABLE_FLAC)
28 find_path(FLAC_INCLUDE_DIR FLAC/all.h)
29 find_library(FLAC_LIBRARY FLAC)
30 list(APPEND SDL_MIXER_INCLUDES ${FLAC_INCLUDE_DIR})
31 list(APPEND SDL_MIXER_DEFINES MUSIC_FLAC)
32 list(APPEND SDL_MIXER_LIBRARIES ${FLAC_LIBRARY})
34 get_filename_component(FLAC_LIBRARY_NAME "${FLAC_LIBRARY}" NAME_WE)
35 list(APPEND SDL_MIXER_LOAD_DEFINES -DFLAC_DYNAMIC="${FLAC_LIBRARY_NAME}${LIBRARY_SUFFIX}")
40 if(SDL_MIXER_ENABLE_MOD)
41 find_path(MODPLUG_INCLUDE_DIR libmodplug/modplug.h)
42 find_library(MODPLUG_LIBRARY modplug)
43 list(APPEND SDL_MIXER_INCLUDES ${MODPLUG_INCLUDE_DIR})
44 list(APPEND SDL_MIXER_DEFINES MUSIC_MOD_MODPLUG)
45 list(APPEND SDL_MIXER_LIBRARIES ${MODPLUG_LIBRARY})
47 get_filename_component(MODPLUG_LIBRARY_NAME "${MODPLUG_LIBRARY}" NAME_WE)
48 list(APPEND SDL_MIXER_LOAD_DEFINES -DMODPLUG_DYNAMIC="${MODPLUG_LIBRARY_NAME}${LIBRARY_SUFFIX}")
53 if(SDL_MIXER_ENABLE_OGGVORBIS)
54 find_path(VORBIS_INCLUDE_DIR vorbis/codec.h)
55 find_library(VORBISFILE_LIBRARY vorbisfile)
56 list(APPEND SDL_MIXER_INCLUDES ${VORBIS_INCLUDE_DIR})
57 list(APPEND SDL_MIXER_DEFINES MUSIC_OGG)
59 get_filename_component(VORBISFILE_LIBRARY_NAME "${VORBISFILE_LIBRARY}" NAME_WE)
60 list(APPEND SDL_MIXER_LOAD_DEFINES -DOGG_DYNAMIC="${VORBISFILE_LIBRARY_NAME}${LIBRARY_SUFFIX}")
65 if(SDL_MIXER_ENABLE_OPUS)
66 find_path(OPUS_INCLUDE_DIR opus/opusfile.h)
67 find_library(OPUSFILE_LIBRARY opusfile)
68 list(APPEND SDL_MIXER_INCLUDES ${OPUS_INCLUDE_DIR})
69 list(APPEND SDL_MIXER_DEFINES MUSIC_OPUS)
70 list(APPEND SDL_MIXER_LIBRARIES ${OPUSFILE_LIBRARY})
72 get_filename_component(OPUSFILE_LIBRARY_NAME "${OPUSFILE_LIBRARY}" NAME_WE)
73 list(APPEND SDL_MIXER_LOAD_DEFINES -DOPUS_DYNAMIC="${OPUSFILE_LIBRARY_NAME}${LIBRARY_SUFFIX}")
77 add_library(SDL2_mixer
79 effect_stereoreverse.c
98 if((WIN32 OR APPLE) AND SDL_MIXER_ENABLE_NATIVEMIDI)
99 list(APPEND SDL_MIXER_DEFINES MUSIC_MID_NATIVE)
100 target_sources(SDL2_mixer PRIVATE music_nativemidi.c native_midi/native_midi_common.c)
101 target_link_libraries(SDL2_mixer ${SDL_MIXER_LIBRARIES})
103 target_sources(SDL2_mixer PRIVATE native_midi/native_midi_win32.c)
104 target_link_libraries(SDL2_mixer Winmm)
106 target_sources(SDL2_mixer PRIVATE native_midi/native_midi_macosx.c)
110 set_target_properties(SDL2_mixer PROPERTIES DEFINE_SYMBOL DLL_EXPORT)
111 target_compile_definitions(SDL2_mixer PRIVATE ${SDL_MIXER_DEFINES} ${SDL_MIXER_LOAD_DEFINES})
112 target_include_directories(SDL2_mixer PRIVATE ${SDL_MIXER_INCLUDES} ./native_midi)
114 install(TARGETS SDL2_mixer
116 RUNTIME DESTINATION bin
117 ARCHIVE DESTINATION lib
118 LIBRARY DESTINATION lib)
120 install(EXPORT SDL2_mixer
121 DESTINATION share/sdl2-mixer/
122 FILE sdl2-mixer-config.cmake
126 if(NOT SDL_MIXER_SKIP_HEADERS)
127 install(FILES SDL_mixer.h DESTINATION include/SDL2)
130 message(STATUS "Link-time dependencies:")
131 foreach(LIBRARY ${SDL_MIXER_LIBRARIES})
132 message(STATUS " " ${LIBRARY})