-
Notifications
You must be signed in to change notification settings - Fork 6.5k
/
CMakeLists.txt
164 lines (147 loc) · 5.69 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
cmake_minimum_required(VERSION 3.1)
project(SDL2_MIXER C)
find_path(SDL_INCLUDE_DIR SDL.h PATH_SUFFIXES SDL2)
find_package(SDL2 CONFIG REQUIRED)
set(SDL_MIXER_INCLUDES ${SDL_INCLUDE_DIR})
set(SDL_MIXER_LIBRARIES SDL2::SDL2)
# builtin formats
set(SDL_MIXER_DEFINES MUSIC_WAV)
# MP3 support
if(SDL_MIXER_ENABLE_MP3)
find_package(mpg123 CONFIG REQUIRED)
set(MPG123_LIBRARY MPG123::libmpg123)
list(APPEND SDL_MIXER_DEFINES MUSIC_MP3_MPG123)
list(APPEND SDL_MIXER_LIBRARIES ${MPG123_LIBRARY})
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()
endif()
# FLAC support
if(SDL_MIXER_ENABLE_FLAC)
find_package(flac CONFIG REQUIRED)
set(FLAC_LIBRARY FLAC::FLAC)
list(APPEND SDL_MIXER_DEFINES MUSIC_FLAC)
list(APPEND SDL_MIXER_LIBRARIES ${FLAC_LIBRARY})
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()
endif()
# MOD support
if(SDL_MIXER_ENABLE_MOD)
find_path(MODPLUG_INCLUDE_DIR libmodplug/modplug.h)
find_library(MODPLUG_LIBRARY modplug)
list(APPEND SDL_MIXER_INCLUDES ${MODPLUG_INCLUDE_DIR})
list(APPEND SDL_MIXER_DEFINES MUSIC_MOD_MODPLUG)
list(APPEND SDL_MIXER_LIBRARIES ${MODPLUG_LIBRARY})
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()
endif()
# Ogg-Vorbis support
if(SDL_MIXER_ENABLE_OGGVORBIS)
find_path(VORBIS_INCLUDE_DIR vorbis/codec.h)
find_library(VORBISFILE_LIBRARY vorbisfile)
list(APPEND SDL_MIXER_INCLUDES ${VORBIS_INCLUDE_DIR})
list(APPEND SDL_MIXER_DEFINES MUSIC_OGG)
list(APPEND SDL_MIXER_LIBRARIES ${VORBISFILE_LIBRARY})
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()
endif()
# Opus support
if(SDL_MIXER_ENABLE_OPUS)
find_path(OPUS_INCLUDE_DIR opus/opusfile.h)
find_library(OPUSFILE_LIBRARY opusfile)
list(APPEND SDL_MIXER_INCLUDES ${OPUS_INCLUDE_DIR})
list(APPEND SDL_MIXER_DEFINES MUSIC_OPUS)
list(APPEND SDL_MIXER_LIBRARIES ${OPUSFILE_LIBRARY})
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()
endif()
# Fluidsynth support
if(SDL_MIXER_ENABLE_FLUIDSYNTH)
find_path(FLUIDSYNTH_INCLUDE_DIR fluidsynth.h)
find_library(FLUIDSYNTH_LIBRARY fluidsynth)
list(APPEND SDL_MIXER_INCLUDES ${FLUIDSYNTH_INCLUDE_DIR})
list(APPEND SDL_MIXER_DEFINES MUSIC_MID_FLUIDSYNTH)
list(APPEND SDL_MIXER_LIBRARIES ${FLUIDSYNTH_LIBRARY})
if (SDL_DYNAMIC_LOAD)
get_filename_component(FLUIDSYNTH_LIBRARY_NAME "${FLUIDSYNTH_LIBRARY}" NAME_WE)
list(APPEND SDL_MIXER_LOAD_DEFINES -DFLUIDSYNTH_DYNAMIC="${FLUIDSYNTH_LIBRARY_NAME}${LIBRARY_SUFFIX}")
endif()
endif()
add_library(SDL2_mixer
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
music_fluidsynth.c
music_mad.c
music_mikmod.c
music_modplug.c
music_mpg123.c
music_ogg.c
music_opus.c
music_timidity.c
music_wav.c
version.rc)
if((WIN32 OR APPLE) AND SDL_MIXER_ENABLE_NATIVEMIDI)
list(APPEND SDL_MIXER_DEFINES MUSIC_MID_NATIVE)
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()
endif()
set_target_properties(SDL2_mixer PROPERTIES DEFINE_SYMBOL DLL_EXPORT)
target_compile_definitions(SDL2_mixer PRIVATE ${SDL_MIXER_DEFINES} ${SDL_MIXER_LOAD_DEFINES})
target_include_directories(SDL2_mixer PRIVATE ${SDL_MIXER_INCLUDES} ./native_midi)
install(TARGETS SDL2_mixer
EXPORT SDL2_mixer
RUNTIME DESTINATION bin
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib)
install(EXPORT SDL2_mixer
DESTINATION share/sdl2-mixer/
FILE sdl2-mixer-config.cmake
NAMESPACE SDL2::
)
set(prefix "")
set(exec_prefix [[${prefix}]])
set(libdir [[${prefix}/lib]])
set(includedir [[${prefix}/include]])
set(PACKAGE "SDL2_mixer")
file(READ "SDL_mixer.h" header_contents)
# #define SDL_MIXER_MAJOR_VERSION 2
# #define SDL_MIXER_MINOR_VERSION 0
# #define SDL_MIXER_PATCHLEVEL 5
string(REGEX MATCH "define *SDL_MIXER_MAJOR_VERSION *([0-9]+)" _ "${header_contents}")
set(VERSION ${CMAKE_MATCH_1})
string(REGEX MATCH "define *SDL_MIXER_MINOR_VERSION *([0-9]+)" _ "${header_contents}")
string(APPEND VERSION ".${CMAKE_MATCH_1}")
string(REGEX MATCH "define *SDL_MIXER_PATCHLEVEL *([0-9]+)" _ "${header_contents}")
string(APPEND VERSION ".${CMAKE_MATCH_1}")
set(SDL_VERSION 0.0)
configure_file(SDL2_mixer.pc.in "${CMAKE_CURRENT_BINARY_DIR}/SDL2_mixer.pc" @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/SDL2_mixer.pc DESTINATION lib/pkgconfig)
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()