src_CMakeLists.txt 8.07 KB
Newer Older
1
2
include_directories( . )

3
add_definitions(-Dasm=__asm__ -D_INTL_REDIRECT_MACROS)
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
4
5
6
add_definitions(-DLOCALEDIR=\\"${CMAKE_INSTALL_PREFIX}/locale\\")
add_definitions(-DDATA_PATH=\\"${CMAKE_INSTALL_PREFIX}/share/vlc\\")
add_definitions(-DPLUGIN_PATH=\\"${CMAKE_INSTALL_PREFIX}/lib/vlc\\")
7
8
9
10
11

# vlc
add_executable(vlc vlc.c)
target_link_libraries(vlc libvlc)

12
install_targets(/bin vlc)
13
14
15
16
17
18
19
20
21
22

# libvlc

set( SOURCES_libvlc_beos misc/beos_specific.cpp )
set( SOURCES_libvlc_darwin misc/darwin_specific.c )
set( SOURCES_libvlc_win32 misc/win32_specific.c )
set( SOURCES_libvlc_dirent extras/dirent.c )
set( SOURCES_libvlc_getopt misc/getopt.c misc/getopt.h misc/getopt1.c )
set( SOURCES_libvlc_common
    libvlc.c
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
    libvlc-common.c
    libvlc.h
    libvlc-module.c
    interface/interface.h
    interface/interface.c
    interface/intf_eject.c
    interface/interaction.c
    playlist/playlist_internal.h
    playlist/thread.c
    playlist/control.c
    playlist/engine.c
    playlist/sort.c
    playlist/loadsave.c
    playlist/tree.c
    playlist/item.c
    playlist/search.c
    playlist/services_discovery.c
    input/item.c
    input/access.c
    input/clock.c
    input/control.c
    input/decoder.c
    input/decoder_synchro.c
    input/demux.c
    input/es_out.c
    input/input.c
    input/meta.c
    input/input_internal.h
    input/vlm_internal.h
    input/stream.c
    input/mem_stream.c
    input/subtitles.c
    input/var.c
    video_output/video_output.c
    video_output/vout_pictures.c
    video_output/vout_pictures.h
    video_output/video_text.c
    video_output/video_widgets.c
    video_output/vout_subpictures.c
    video_output/vout_intf.c
    audio_output/aout_internal.h
    audio_output/common.c
    audio_output/dec.c
    audio_output/filters.c
    audio_output/input.c
    audio_output/mixer.c
    audio_output/output.c
    audio_output/intf.c
    stream_output/stream_output.c
    stream_output/stream_output.h
    stream_output/announce.c
    stream_output/profiles.c
    stream_output/sap.c
    stream_output/sdp.c
    osd/osd.c
    osd/osd_text.c
    osd/osd_widgets.c
    network/acl.c
    network/getaddrinfo.c
    network/io.c
    network/error.c
    network/tcp.c
    network/udp.c
    network/httpd.c
    network/rootwrap.c
    network/tls.c
    network/poll.c
    text/charset.c
    text/strings.c
    text/unicode.c
    text/wincp.c
    text/iso_lang.c
    text/iso-639_def.h
    misc/md5.c
    misc/rand.c
    misc/mtime.c
    misc/block.c
    ${CMAKE_BINARY_DIR}/src/modules/builtin.h
    modules/modules.h
    modules/modules.c
    modules/cache.c
    modules/entry.c
    modules/os.c
    misc/threads.c
    misc/stats.c
    misc/cpu.c
    config/configuration.h
    config/core.c
    config/chain.c
    config/file.c
    config/cmdline.c
    misc/events.c
    misc/image.c
    misc/messages.c
    misc/objects.c
    misc/variables.h
    misc/variables.c
    misc/error.c
    misc/update.c
    ${CMAKE_BINARY_DIR}/src/misc/revision.c
    input/vlm.c
    misc/xml.c
    misc/devices.c
    extras/libc.c
    ${CMAKE_BINARY_DIR}/include/vlc_about.h )
128
129
130
131
132
133
134
135
136

set( SOURCES_libvlc ${SOURCES_libvlc_common} )

if(SYS_DARWIN)
    set( SOURCES_libvlc ${SOURCES_libvlc} ${SOURCES_libvlc_darwin} )
endif(SYS_DARWIN)

add_library(libvlc SHARED ${SOURCES_libvlc})
install_targets(/lib libvlc)
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
165
166
167

# libvlc-control
set( SOURCES_libvlc_control
     control/libvlc_internal.h
     control/core.c
     control/log.c
     control/playlist.c
     control/vlm.c
     control/video.c
     control/audio.c
     control/dynamic_media_list.c
     control/event.c
     control/flat_media_list_view.c
     control/hierarchical_media_list_view.c
     control/hierarchical_node_media_list_view.c
     control/media_descriptor.c
     control/media_instance.c
     control/media_list.c
     control/media_list_path.h
     control/media_list_player.c
     control/media_list_view.c
     control/media_library.c
     control/mediacontrol_internal.h
     control/mediacontrol_core.c
     control/mediacontrol_util.c
     control/mediacontrol_audio_video.c
     control/media_discoverer.c
     control/tag_query.c )

add_library(libvlc-control SHARED ${SOURCES_libvlc_control})
install_targets(/lib libvlc-control)
168
target_link_libraries(libvlc-control libvlc)
169

170
171
172
173
##########################################################
# Libraries

# iconv
174
target_link_libraries(libvlc ${LIBICONV})
175
176

# Carbon
177
178
179
180
if(APPLE)
  find_library(CARBON_FRAMEWORK Carbon)
  target_link_libraries(libvlc ${CARBON_FRAMEWORK})
endif(APPLE)
181
182

##########################################################
183
# revision.c
184

185
set(rev "${CMAKE_BINARY_DIR}/src/misc/revision.c")
186
add_custom_command(
187
OUTPUT ${rev}
188
189
190
191
192
193
194
COMMAND    rm -f ${rev} ${rev}.tmp
COMMAND    mkdir -p `dirname ${rev}`
COMMAND    echo "/* AUTOGENERATED FILE - DO NOT EDIT */" > ${rev}.tmp
COMMAND    printf "const char psz_vlc_changeset[] = \"" >> ${rev}.tmp
COMMAND    sh -c "printf `LANG=C svnversion ${CMAKE_SOURCE_DIR} || printf \"exported\"`" >> ${rev}.tmp
COMMAND    echo "\";" >> ${rev}.tmp
COMMAND    mv -f ${rev}.tmp ${rev}
195
VERBATIM
196
)
197
set(rev)
198

199
200
201
202
##########################################################
# builtin.h
# No real use for this one, we just used to need it.
# We should really remove that.
203
set(builtin "${CMAKE_BINARY_DIR}/src/modules/builtin.h")
204
205
206

add_custom_command(
OUTPUT ${builtin}
207
208
209
210
COMMAND    mkdir -p `dirname ${builtin}`
COMMAND    echo "/* Auto generated by ${CMAKE_CURRENT_BUILD_DIR}/CMakeLists.txt */" > ${builtin}
COMMAND    echo "int vlc_entry__main( module_t* );" >> ${builtin}
COMMAND    echo "#define ALLOCATE_ALL_BUILTINS() do {} while(0)" >> ${builtin}
211
212
VERBATIM
)
213
214
215
216
set(should)

##########################################################
# vlc_about.h
217
set(about "${CMAKE_BINARY_DIR}/include/vlc_about.h")
218
219
220
221

add_custom_command(
OUTPUT ${about}
COMMAND rm -f -- "${about}.tmp"
222
COMMAND    mkdir -p `dirname ${about}`
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
COMMAND mkdir -p -- ../include
COMMAND echo "/* Automatically generated file - DO NOT EDIT */" > "${about}.tmp"
COMMAND echo "static const char psz_license[] =" >> "${about}.tmp"
COMMAND cat ${CMAKE_SOURCE_DIR}/COPYING | sed s/\"/''/g | awk "{ print \"\\\"\"$0\"\\\\n\\\"\" }" >> "${about}.tmp"
COMMAND echo ";" >> "${about}.tmp"
COMMAND echo "static const char psz_thanks[] =" >> "${about}.tmp"
COMMAND grep -v '$$Id:'  ${CMAKE_SOURCE_DIR}/THANKS | sed "s/\"/''/g" | awk "{ print  \"\\\"\"$0\"\\\\n\\\"\" }"|sed "s/\"<.*.> \"//" >> "${about}.tmp"
COMMAND echo ";" >> "${about}.tmp"
COMMAND echo "static const char psz_authors[] =" >> "${about}.tmp"
COMMAND grep N: ${CMAKE_SOURCE_DIR}/AUTHORS | cut -d "\ " -f 2- | sed "s/\"/''/g" | awk "{ print  \"\\\"\"$0\"\\\\n\\\"\" }" >> "${about}.tmp"
COMMAND echo ";" >> "${about}.tmp"
COMMAND mv -f -- "${about}.tmp" "${about}"
DEPENDS ${CMAKE_SOURCE_DIR}/AUTHORS ${CMAKE_SOURCE_DIR}/THANKS ${CMAKE_SOURCE_DIR}/COPYING
VERBATIM)
set(about)
238

239

240
241
242
##########################################################
# SET_TARGET_PROPERTIES

243
244
245
246
247
# FIXME: Should probably be autodetected in configure?
if(NOT APPLE)
   set(LINK_FLAGS "-z defs --as-needed")
endif(NOT APPLE)

Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
248
target_link_libraries(libvlc ${LIBRT} ${LIBICONV} ${Dlopen_LIBRARIES})
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
249
target_link_libraries(libvlc ${LIBM})
250

Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
251
set_target_properties(libvlc PROPERTIES SOVERSION 1)
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
252
set_target_properties(libvlc libvlc-control PROPERTIES PREFIX "")
253
set_target_properties(libvlc libvlc-control PROPERTIES LINK_FLAGS "${LINK_FLAGS} ${CMAKE_THREAD_LIBS_INIT}")
254
set_target_properties(libvlc libvlc-control vlc PROPERTIES COMPILE_FLAGS
255
    "-Wall -Wextra -Wsign-compare -Wundef -Wpointer-arith -Wbad-function-cast -Wcast-align -Wwrite-strings -Wmissing-prototypes -I${CMAKE_BINARY_DIR}/src -I${CMAKE_BINARY_DIR}/include" )
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273

##########################################################
# Tests

add_executable(testapi   control/testapi.c)
add_executable(i18n_atof test/i18n_atof.c)
add_executable(url       test/url.c)
add_executable(utf8      test/utf8.c)

target_link_libraries(testapi   libvlc-control)
target_link_libraries(i18n_atof libvlc)
target_link_libraries(url       libvlc)
target_link_libraries(utf8      libvlc)

add_test(testapi   ${EXECUTABLE_OUTPUT_PATH}/testapi)
add_test(i18n_atof ${EXECUTABLE_OUTPUT_PATH}/i18n_atof)
add_test(url       ${EXECUTABLE_OUTPUT_PATH}/url)
add_test(utf8      ${EXECUTABLE_OUTPUT_PATH}/utf8)