3 #----------------------- minimum version of cmake to use ------------
5 cmake_minimum_required(VERSION 2.8.12)
7 cmake_policy(SET CMP0003 NEW)
9 cmake_policy(SET CMP0042 NEW)
12 cmake_policy(SET CMP0054 NEW)
15 #----------------------- detect system ------------------------------
17 if (CMAKE_CROSSCOMPILING)
18 if (OSCAM_SYSTEM_NAME MATCHES "Tuxbox")
19 set (OSCamOperatingSystem "Tuxbox")
20 elseif (OSCAM_SYSTEM_NAME MATCHES "TripleDragon")
21 set (OSCamOperatingSystem "TripleDragon")
22 elseif (OSCAM_SYSTEM_NAME MATCHES "Coolstream")
23 set (OSCamOperatingSystem "NeutrinoHD")
24 elseif (OSCAM_SYSTEM_NAME MATCHES "CST2")
25 set (OSCamOperatingSystem "NHD2")
26 elseif (OSCAM_SYSTEM_NAME MATCHES "NSLU2")
27 set (OSCamOperatingSystem "SlugOS")
28 elseif (OSCAM_SYSTEM_NAME MATCHES "WRT350NV2")
29 set (OSCamOperatingSystem "OpenWRT")
30 set (CS_OS_HW "wrt350nv2")
31 elseif (OSCAM_SYSTEM_NAME MATCHES "Dockstar")
32 set (OSCamOperatingSystem "OpenWRT")
33 set (CS_OS_HW "dockstar")
34 elseif (OSCAM_SYSTEM_NAME MATCHES "Fonera2")
35 set (OSCamOperatingSystem "Fonera2")
36 elseif (OSCAM_SYSTEM_NAME MATCHES "DIR-825")
37 set (OSCamOperatingSystem "DIR-825")
38 elseif (OSCAM_SYSTEM_NAME MATCHES "AZBox")
39 set (OSCamOperatingSystem "AZBox")
40 elseif (OSCAM_SYSTEM_NAME MATCHES "SU980")
41 set (OSCamOperatingSystem "SU980")
42 elseif (OSCAM_SYSTEM_NAME MATCHES "MCA")
43 set (OSCamOperatingSystem "MCA")
44 elseif (OSCAM_SYSTEM_NAME MATCHES "agv2+w")
45 set (OSCamOperatingSystem "agv2+w")
46 elseif (OSCAM_SYSTEM_NAME MATCHES "WRT54G")
47 set (OSCamOperatingSystem "WRT54G")
48 elseif (OSCAM_SYSTEM_NAME MATCHES "Amino")
49 set (OSCamOperatingSystem "Amino")
50 elseif (OSCAM_SYSTEM_NAME MATCHES "QboxHD")
51 set (OSCamOperatingSystem "QboxHD")
52 elseif (OSCAM_SYSTEM_NAME MATCHES "Padre")
53 set (OSCamOperatingSystem "Padre")
54 elseif (OSCAM_SYSTEM_NAME MATCHES "FriendlyARM")
55 set (OSCamOperatingSystem "FriendlyARM")
56 else (OSCAM_SYSTEM_NAME MATCHES "Tuxbox")
57 message (STATUS "Unknown cross system name: <${CMAKE_SYSTEM_NAME}>")
58 set (OSCamOperatingSystem "Unknown")
59 endif (OSCAM_SYSTEM_NAME MATCHES "Tuxbox")
60 else (CMAKE_CROSSCOMPILING)
61 if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
62 set (OSCamOperatingSystem "Linux")
63 elseif (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
64 set (OSCamOperatingSystem "FreeBSD")
65 elseif (${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD")
66 set (OSCamOperatingSystem "OpenBSD")
67 elseif (OSCamOperatingSystem MATCHES "Padre")
68 add_definitions ("-DPADRE -DSPARC")
69 set (DEFAULT_CS_CONFDIR "/etc/oscam")
70 elseif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
71 set (OSCamOperatingSystem "Mac OS X")
72 execute_process(COMMAND sw_vers -productVersion COMMAND cut -c 1-4 COMMAND tr -d '\n' OUTPUT_VARIABLE SWVER)
73 execute_process(COMMAND xcodebuild -version COMMAND grep Xcode COMMAND sed "s/Xcode\ //g" COMMAND tr -d '\n' OUTPUT_VARIABLE XCODEVER)
74 message (STATUS "mac sdk version is ${SWVER}")
75 message (STATUS "mac Xcode version is ${XCODEVER}")
76 add_definitions ("-w")
77 set (CMAKE_OSX_DEPLOYMENT_TARGET "${SWVER}")
78 if (SWVER GREATER 10.5)
79 set (CMAKE_OSX_ARCHITECTURES "x86_64")
80 endif (SWVER GREATER 10.5)
81 if (SWVER EQUAL 10.7 AND XCODEVER LESS 4.3)
82 message (STATUS "Compiling with xcode less then 4.3 on 10.7 If You have time update You're Xcode")
83 endif (SWVER EQUAL 10.7 AND XCODEVER LESS 4.3)
84 set (STATIC_LIBUSB True)
86 set (OSCamOperatingSystem "Windows/Cygwin")
87 set (CMAKE_SYSTEM_PROCESSOR "i386")
88 else (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
89 message (STATUS "Unknown system name: <${CMAKE_SYSTEM_NAME}>")
90 set (OSCamOperatingSystem "Unknown")
91 endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
92 endif (CMAKE_CROSSCOMPILING)
94 #----------------------- some paths ------------------------------
96 set (OPTIONAL_LINK_DIR "" CACHE STRING "Some optional link directories")
97 set (OPTIONAL_INCLUDE_DIR "" CACHE STRING "Some optional include directories")
99 if (OSCamOperatingSystem MATCHES "Windows/Cygwin")
100 include_directories (
101 ${CMAKE_CURRENT_SOURCE_DIR}/csctapi
102 ${CMAKE_CURRENT_SOURCE_DIR}/cscrypt
103 ${CMAKE_CURRENT_SOURCE_DIR}/minilzo
104 ${CMAKE_CURRENT_SOURCE_DIR}/extapi/cygwin
106 ${OPTIONAL_INCLUDE_DIR}
108 else (OSCamOperatingSystem MATCHES "Windows/Cygwin")
109 include_directories (
110 ${CMAKE_CURRENT_SOURCE_DIR}/csctapi
111 ${CMAKE_CURRENT_SOURCE_DIR}/cscrypt
112 ${CMAKE_CURRENT_SOURCE_DIR}/minilzo
113 ${OPTIONAL_INCLUDE_DIR}
115 endif (OSCamOperatingSystem MATCHES "Windows/Cygwin")
117 if(OSCamOperatingSystem MATCHES "Windows/Cygwin")
121 /cygdrive/c/WINDOWS/system32/
124 else (OSCamOperatingSystem MATCHES "Windows/Cygwin")
128 endif (OSCamOperatingSystem MATCHES "Windows/Cygwin")
130 #----------------------- global options ------------------------------
132 if (OSCamOperatingSystem MATCHES "Linux")
133 set (DEFAULT_CS_CONFDIR "/usr/local/etc")
134 elseif (OSCamOperatingSystem MATCHES "Mac OS X")
135 if (NOT HAVE_PCSC EQUAL 0)
136 add_definitions ("-DWITH_PCSC=1")
137 endif (NOT HAVE_PCSC EQUAL 0)
138 set (DEFAULT_CS_CONFDIR "/usr/local/etc")
139 elseif (OSCamOperatingSystem MATCHES "Tuxbox")
140 set (DEFAULT_CS_CONFDIR "/var/tuxbox/config")
141 elseif (OSCamOperatingSystem MATCHES "TripleDragon")
142 add_definitions ("-DSTB04SCI=1")
143 set (DEFAULT_CS_CONFDIR "/var/tuxbox/config")
144 elseif (OSCamOperatingSystem MATCHES "NeutrinoHD")
145 add_definitions ("-DWITH_COOLAPI=1")
146 set (USE_COOLAPI "USE_COOLAPI")
147 set (DEFAULT_CS_CONFDIR "/var/tuxbox/config")
148 elseif (OSCamOperatingSystem MATCHES "NHD2")
149 add_definitions ("-DWITH_COOLAPI2=1")
150 set (USE_COOLAPI2 "USE_COOLAPI2")
151 set (DEFAULT_CS_CONFDIR "/var/tuxbox/config")
152 elseif (OSCamOperatingSystem MATCHES "SlugOS")
153 set (DEFAULT_CS_CONFDIR "/var/etc")
154 elseif (OSCamOperatingSystem MATCHES "OpenWRT")
155 if (CS_OS_HW MATCHES "wrt350nv2")
156 set (DEFAULT_CS_CONFDIR "/etc/oscam")
157 elseif (CS_OS_HW MATCHES "dockstar")
158 set (DEFAULT_CS_CONFDIR "/usr/oscam")
159 endif (CS_OS_HW MATCHES "wrt350nv2")
160 elseif (OSCamOperatingSystem MATCHES "Fonera2")
161 set (DEFAULT_CS_CONFDIR "/var/etc")
162 elseif (OSCamOperatingSystem MATCHES "DIR-825")
163 set (DEFAULT_CS_CONFDIR "/var/etc")
164 elseif (OSCamOperatingSystem MATCHES "AZBox")
165 add_definitions ("-DWITH_AZBOX=1")
166 set (USE_AZBOX "USE_AZBOX")
167 set (DEFAULT_CS_CONFDIR "/PLUGINS/OpenXCAS/oscamCAS")
168 elseif (OSCamOperatingSystem MATCHES "SU980")
169 set (USE_SU980 "USE_SU980")
170 add_definitions ("-DWITH_SU980=1")
171 set (DEFAULT_CS_CONFDIR "/var/tuxbox/config")
172 elseif (OSCamOperatingSystem MATCHES "MCA")
173 add_definitions ("-DWITH_MCA=1")
174 set (USE_MCA "USE_MCA")
175 set (DEFAULT_CS_CONFDIR "/var/mca/d1")
176 elseif (OSCamOperatingSystem MATCHES "agv2+w")
177 set (DEFAULT_CS_CONFDIR "/etc")
178 elseif (OSCamOperatingSystem MATCHES "WRT54G")
179 set (DEFAULT_CS_CONFDIR "/jffs/etc/config/oscam")
180 elseif (OSCamOperatingSystem MATCHES "Amino")
181 set (DEFAULT_CS_CONFDIR "/var/tuxbox/config")
182 elseif (OSCamOperatingSystem MATCHES "QboxHD")
183 add_definitions ("-DQBOXHD=1")
184 set (DEFAULT_CS_CONFDIR "/var/tuxbox/config")
185 elseif (OSCamOperatingSystem MATCHES "Windows/Cygwin")
186 add_definitions ("-static -DWITH_PCSC=1")
187 set (DEFAULT_CS_CONFDIR ".")
188 elseif (OSCamOperatingSystem MATCHES "FreeBSD")
189 add_definitions ("-I/usr/local/include -L/usr/local/lib")
190 set (DEFAULT_CS_CONFDIR ".")
191 elseif (OSCamOperatingSystem MATCHES "OpenBSD")
192 add_definitions ("-I/usr/local/include -L/usr/local/lib")
193 set (DEFAULT_CS_CONFDIR "/etc/oscam")
194 elseif (OSCamOperatingSystem MATCHES "FriendlyARM")
195 set (DEFAULT_CS_CONFDIR ".")
196 endif (OSCamOperatingSystem MATCHES "Linux")
198 set (CS_CONFDIR ${DEFAULT_CS_CONFDIR} CACHE STRING "Default path for the config files")
199 add_definitions ("-DCS_CONFDIR=\"${CS_CONFDIR}\"")
202 #----------------------- subdirectories ------------------------------
204 include (CheckIncludeFile)
206 check_include_file ("pthread.h" HAVE_PTHREAD)
208 message(STATUS " pthread found. Adding pthread support ")
209 add_definitions ("-DHAVE_PTHREAD_H")
210 elseif (HAVE_PTHREAD)
211 message(STATUS " no pthread found. No smartreader ")
214 check_include_file ("openssl/aes.h" HAVE_LIBCRYPTO)
216 add_definitions ("-DWITH_LIBCRYPTO=1")
217 set (USE_LIBCRYPTO "USE_LIBCRYPTO")
218 else (HAVE_LIBCRYPTO)
219 message (STATUS " LIBCRYTO NOT FOUND OR DISABLED NO SSL SUPPORT POSSIBLE")
220 endif (HAVE_LIBCRYPTO)
222 execute_process (COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/config.sh --enabled WITH_SSL OUTPUT_VARIABLE CONFIG_WITH_SSL OUTPUT_STRIP_TRAILING_WHITESPACE)
223 if (CONFIG_WITH_SSL MATCHES "N" AND WITH_SSL EQUAL 1)
224 message ( STATUS " ssl is added by You compiling with ssl included")
225 elseif (CONFIG_WITH_SSL MATCHES "Y" AND WITH_SSL EQUAL 1)
226 message (STATUS " ssl is added by You but it was already enabled by config file")
227 elseif (CONFIG_WITH_SSL MATCHES "N" AND NOT WITH_SSL EQUAL 1)
228 message (STATUS " SSL IS NOT INCLUDED IN THIS COMPILATION")
229 endif (CONFIG_WITH_SSL MATCHES "N" AND WITH_SSL EQUAL 1)
231 if (CONFIG_WITH_SSL MATCHES "Y" AND NOT WITH_SSL EQUAL 0)
232 message(status " SSL is added by config file ${CONFIG_WITH_SSL} compiling with ssl included")
233 add_definitions ("-DWITH_SSL")
235 elseif (CONFIG_WITH_SSL MATCHES "Y" AND WITH_SSL EQUAL 0)
236 message (status " The config file has ssl enabled, but You disabled it by you cmake command COMPILING WHITOUT SSL")
237 endif (CONFIG_WITH_SSL MATCHES "Y" AND NOT WITH_SSL EQUAL 0)
239 find_package(OpenSSL)
240 if (OPENSSL_FOUND AND HAVE_LIBCRYPTO)
241 include_directories(${OPENSSL_INCLUDE_DIR})
242 message(STATUS " openssl found.")
243 if (WITH_SSL EQUAL 1)
244 set(USE_SSL "USE_SSL")
245 endif (WITH_SSL EQUAL 1)
246 else (OPENSSL_FOUND AND HAVE_LIBCRYPTO)
247 message(STATUS "SSL REQUESTED BUT OPENSSL or LYBCRYPTO NOT FOUND !!")
249 message(STATUS " ssl support requested but openssl or libcrypto NOT FOUND COMPILING WHITOUT SSL !!! ")
252 endif (OPENSSL_FOUND AND HAVE_LIBCRYPTO)
254 if (NOT OSCamOperatingSystem MATCHES "Mac OS X")
256 check_include_file ("${LIBRTDIR}/include/time.h" HAVE_LIBRT_STATIC)
257 if (HAVE_LIBRT_STATIC)
258 if (EXISTS ${LIBRTDIR}/lib/librt.a)
259 message(STATUS " static librt found : ${LIBRTDIR}/lib/librt.a (needed by libusb).")
260 add_definitions ("-I${LIBRTDIR}/include/")
261 add_library(imp_librt STATIC IMPORTED)
262 set_property(TARGET imp_librt PROPERTY IMPORTED_LOCATION ${LIBRTDIR}/lib/librt.a)
263 else (EXISTS ${LIBRTDIR}/lib/librt.a)
264 message(STATUS " ${LIBRTDIR}/lib/librt.a not found (needed by libusb). No smartreader support)")
265 set (HAVE_LIBRT_STATIC False)
266 endif (EXISTS ${LIBRTDIR}/lib/librt.a)
267 else (HAVE_LIBRT_STATIC)
268 message(STATUS " no librt found (needed by libusb). No smartreader support")
269 endif (HAVE_LIBRT_STATIC)
271 check_include_file ("time.h" HAVE_LIBRT)
273 message(STATUS " librt found (needed by libusb).")
275 message(STATUS " no librt found (needed by libusb. No smartreader support")
279 if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/stapi/liboscam_stapi.a)
280 message(STATUS " liboscam_stapi.a found")
281 add_definitions ("-DWITH_STAPI=1")
282 add_library(stapilib STATIC IMPORTED)
283 set_property(TARGET stapilib PROPERTY IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/stapi/liboscam_stapi.a)
284 set (HAVE_LIBSTAPI True)
285 set (USE_STAPI "USE_STAPI")
286 else (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/stapi/liboscam_stapi.a)
287 message(FATAL " liboscam_stapi.a support requested but not found! ")
288 set (HAVE_LIBSTAPI False)
289 endif (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/stapi/liboscam_stapi.a)
292 if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/stapi/liboscam_stapi5.a)
293 message(STATUS " liboscam_stapi5.a found")
294 add_definitions ("-DWITH_STAPI5=1")
295 add_library(stapi5lib STATIC IMPORTED)
296 set_property(TARGET stapi5lib PROPERTY IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/stapi/liboscam_stapi5.a)
297 set (HAVE_LIBSTAPI5 True)
298 set (USE_STAPI5 "USE_STAPI5")
299 else (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/stapi/liboscam_stapi5.a)
300 message(FATAL " liboscam_stapi5.a support requested but not found! ")
301 set (HAVE_LIBSTAPI5 False)
302 endif (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/stapi/liboscam_stapi5.a)
304 else (NOT OSCamOperatingSystem MATCHES "Mac OS X")
305 set (HAVE_LIBRT True)
306 endif (NOT OSCamOperatingSystem MATCHES "Mac OS X")
309 if( HAVE_LIBRT OR HAVE_LIBRT_STATIC)
311 check_include_file ("${LIBUSBDIR}/include/libusb-1.0/libusb.h" HAVE_LIBUSB)
312 if (HAVE_LIBUSB AND HAVE_PTHREAD)
313 if (EXISTS ${LIBUSBDIR}/lib/libusb-1.0.a)
314 if (STATIC_LIBUSB EQUAL 1)
315 message(STATUS " libusb 1.0 found (${LIBUSBDIR}/lib/libusb-1.0.a). Adding smartreader support ")
316 add_definitions ("-DWITH_LIBUSB=1")
317 add_definitions ("-I${LIBUSBDIR}/include/")
318 set (LIBUSB "USE_LIBUSB")
319 add_library(imp_libusb STATIC IMPORTED)
320 set_property(TARGET imp_libusb PROPERTY IMPORTED_LOCATION ${LIBUSBDIR}/lib/libusb-1.0.a)
321 elseif (NOT STATIC_LIBUSB OR STATIC_LIBUSB EQUAL 0)
322 set (CMAKE_FIND_ROOT_PATH ${LIBUSBDIR})
323 find_library (LIBUSB_LIBRARY NAMES usb-1.0)
324 message(STATUS "libusb 1.0 found (${LIBUSB_LIBRARY}). Adding smartreader support ")
325 add_definitions ("-DWITH_LIBUSB=1")
326 add_definitions ("-I${LIBUSBDIR}/include/")
327 set (LIBUSB "USE_LIBUSB")
328 add_library(imp_libusb SHARED IMPORTED)
329 set_property(TARGET imp_libusb PROPERTY IMPORTED_LOCATION ${LIBUSB_LIBRARY} )
330 endif (STATIC_LIBUSB EQUAL 1)
331 else (EXISTS ${LIBUSBDIR}/lib/libusb-1.0.a)
332 message(STATUS " libusb 1.0 not found (${LIBUSBDIR}/lib/libusb). No smartreader support ")
333 set (HAVE_LIBUSB False)
334 set (HAVE_LIBRT False)
335 set (HAVE_LIBRT_STATIC False)
336 endif (EXISTS ${LIBUSBDIR}/lib/libusb-1.0.a)
337 else (HAVE_LIBUSB AND HAVE_PTHREAD)
338 message(STATUS " no libusb 1.0 found. No smartreader support")
339 set (HAVE_LIBUSB False)
340 set (HAVE_LIBRT False)
341 set (HAVE_LIBRT_STATIC False)
342 endif (HAVE_LIBUSB AND HAVE_PTHREAD)
344 if (NOT HAVE_LIBUSB EQUAL 0)
345 check_include_file ("libusb-1.0/libusb.h" HAVE_LIBUSB)
346 check_include_file ("libusb-1.0/libusb.h" PRESENT)
347 endif(NOT HAVE_LIBUSB EQUAL 0)
348 if (OSCamOperatingSystem MATCHES "Mac OS X")
349 if (NOT HAVE_LIBUSB EQUAL 0 AND NOT PRESENT)
350 find_file (USBINCL_LOC "libusb-1.0/libusb.h")
351 if (EXISTS ${USBINCL_LOC})
352 add_definitions ("-I/usr/local/include -L/usr/local/lib -I/usr/include -L/usr/lib")
353 set (HAVE_LIBUSB True)
355 set (USE_LIBUSB "USE_LIBUSB")
356 if (NOT STATIC_LIBUSB OR STATIC_LIBUSB EQUAL 0)
357 set (STATICLIBUSB False)
358 elseif (STATIC_LIBUSB EQUAL 1)
359 set (STATICLIBUSB True)
360 endif (NOT STATIC_LIBUSB OR STATIC_LIBUSB EQUAL 0)
361 endif (EXISTS ${USBINCL_LOC})
362 endif (NOT HAVE_LIBUSB EQUAL 0 AND NOT PRESENT)
363 endif (OSCamOperatingSystem MATCHES "Mac OS X")
364 if (NOT STATIC_LIBUSB OR STATIC_LIBUSB EQUAL 0)
365 if(HAVE_LIBUSB AND HAVE_PTHREAD AND PRESENT)
366 message(STATUS " libusb 1.0 found (libusb-1.0.so) Adding smartreader support ")
367 add_definitions ("-DWITH_LIBUSB=1")
368 set (USE_LIBUSB "USE_LIBUSB")
369 set (STATICLIBUSB False)
370 endif(HAVE_LIBUSB AND HAVE_PTHREAD AND PRESENT)
371 elseif(STATIC_LIBUSB EQUAL 1)
372 if (HAVE_LIBUSB AND HAVE_PTHREAD AND PRESENT)
373 message(STATUS " static libusb 1.0 found (libusb-1.0.a). Adding smartreader support ")
374 add_definitions ("-DWITH_LIBUSB=1")
375 set (USE_LIBUSB "USE_LIBUSB")
376 set (STATICLIBUSB True)
377 else (HAVE_LIBUSB AND HAVE_PTHREAD AND PRESENT)
378 message(STATUS " no libusb 1.0 found. No smartreader support")
379 set (HAVE_LIBUSB False)
380 endif (HAVE_LIBUSB AND HAVE_PTHREAD AND PRESENT)
381 endif(NOT STATIC_LIBUSB OR STATIC_LIBUSB EQUAL 0)
383 endif( HAVE_LIBRT OR HAVE_LIBRT_STATIC)
385 check_include_file ("PCSC/wintypes.h" HAVE_PCSC)
387 FIND_PATH (PCSC_PATH PCSC/wintypes.h)
388 if(OPTIONAL_INCLUDE_DIR AND EXISTS ${OPTIONAL_INCLUDE_DIR}/PCSC/wintypes.h)
389 message(STATUS " PCSC headers found (${OPTIONAL_INCLUDE_DIR}/PCSC). Adding PCSC support ")
390 add_definitions ("-DWITH_PCSC=1")
391 add_definitions ("-I${OPTIONAL_INCLUDE_DIR}/PCSC")
392 set (USE_PCSC "USE_PCSC")
393 elseif (EXISTS ${PCSC_PATH}/PCSC/wintypes.h AND NOT OPTIONAL_INCLUDE_DIR)
394 message(STATUS " PCSC headers found (${PCSC_PATH}/PCSC). Adding PCSC support ")
395 add_definitions ("-DWITH_PCSC=1")
396 add_definitions ("-I${PCSC_PATH}/PCSC")
397 set (USE_PCSC "USE_PCSC")
398 else (OPTIONAL_INCLUDE_DIR AND EXISTS ${OPTIONAL_INCLUDE_DIR}/PCSC/wintypes.h)
399 if (NOT OSCamOperatingSystem MATCHES "Mac OS X")
400 set (HAVE_PCSC False)
401 if(OPTIONAL_INCLUDE_DIR)
402 message(STATUS " PCSC headers not found (not in /usr/include/PCSC or /usr/local/include/PCSC or ${OPTIONAL_INCLUDE_DIR}/PCSC). No PCSC support ")
403 else(OPTIONAL_INCLUDE_DIR)
404 message(STATUS " PCSC headers not found (not in /usr/include/PCSC or /usr/local/include/PCSC). No PCSC support ")
405 endif(OPTIONAL_INCLUDE_DIR)
406 endif (NOT OSCamOperatingSystem MATCHES "Mac OS X")
407 endif(OPTIONAL_INCLUDE_DIR AND EXISTS ${OPTIONAL_INCLUDE_DIR}/PCSC/wintypes.h)
408 if (OSCamOperatingSystem MATCHES "Mac OS X" AND NOT HAVE_PCSC EQUAL 0)
409 set (USE_PCSC "USE_PCSC")
411 endif (OSCamOperatingSystem MATCHES "Mac OS X" AND NOT HAVE_PCSC EQUAL 0)
413 if (OSCamOperatingSystem MATCHES "Windows/Cygwin")
414 add_definitions ("-Icygwin")
416 set (USE_PCSC "USE_PCSC")
417 endif (OSCamOperatingSystem MATCHES "Windows/Cygwin")
420 execute_process (COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/config.sh --enabled MODULE_STREAMRELAY OUTPUT_VARIABLE CONFIG_STREAMRELAY OUTPUT_STRIP_TRAILING_WHITESPACE)
421 if (CONFIG_STREAMRELAY MATCHES "Y" AND NOT MODULE_STREAMRELAY EQUAL 1)
423 check_include_file ("${LIBDVBCSADIR}/include/dvbcsa/dvbcsa.h" FOUND_LIBDVBCSA)
424 set (LIBADVBCSA_LIBRARY "${LIBDVBCSADIR}/libdvbcsa.a")
425 set (LIBDVBCSA_LIBRARY "${LIBDVBCSADIR}/libdvbcsa.so")
427 check_include_file ("dvbcsa/dvbcsa.h" FOUND_LIBDVBCSA)
428 find_library (LIBADVBCSA_LIBRARY NAMES libdvbcsa.a)
429 find_library (LIBDVBCSA_LIBRARY NAMES dvbcsa)
433 if (STATIC_LIBDVBCSA AND FOUND_LIBDVBCSA AND EXISTS ${LIBADVBCSA_LIBRARY})
434 message(STATUS " static libdvbcsa found (libdvbcsa.a).")
435 add_library(imp_libdvbcsa STATIC IMPORTED)
436 set_property(TARGET imp_libdvbcsa PROPERTY IMPORTED_LOCATION ${LIBADVBCSA_LIBRARY})
437 set (dvbcsa_link "imp_libdvbcsa")
438 set (STATICLIBDVBCSA True)
439 elseif ((NOT STATIC_LIBDVBCSA OR STATIC_LIBDVBCSA EQUAL 0) AND FOUND_LIBDVBCSA AND EXISTS ${LIBDVBCSA_LIBRARY})
440 message(STATUS " libdvbcsa found (libdvbcsa.so).")
441 add_library(imp_libdvbcsa SHARED IMPORTED)
442 set_property(TARGET imp_libdvbcsa PROPERTY IMPORTED_LOCATION ${LIBDVBCSA_LIBRARY} )
443 set(dvbcsa_link dvbcsa)
444 set (STATICLIBDVBCSA False)
445 else (STATIC_LIBDVBCSA AND FOUND_LIBDVBCSA AND EXISTS ${LIBADVBCSA_LIBRARY})
446 message(FATAL_ERROR " no libdvbcsa found!")
447 endif (STATIC_LIBDVBCSA AND FOUND_LIBDVBCSA AND EXISTS ${LIBADVBCSA_LIBRARY})
448 else (HAVE_LIBDVBCSA)
449 message(FATAL_ERROR " HAVE_LIBDVBCSA disabled!")
450 endif (HAVE_LIBDVBCSA)
451 endif (CONFIG_STREAMRELAY MATCHES "Y" AND NOT MODULE_STREAMRELAY EQUAL 1)
453 # Manage config.h based on command line parameters
454 # Manipulate config file based on given parameters and read unset parameters
456 execute_process (COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/config.sh --show-valid OUTPUT_VARIABLE config_vars_string OUTPUT_STRIP_TRAILING_WHITESPACE)
457 string(REGEX MATCHALL "[A-Z0-9_]+" config_vars ${config_vars_string})
459 MACRO(GENERATE_OSCAM_CONFIG fullpath)
460 foreach(option ${config_vars})
461 if(DEFINED ${option})
463 execute_process (COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/config.sh --enable ${option})
465 execute_process (COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/config.sh --disable ${option})
467 endif(DEFINED ${option})
469 ENDMACRO(GENERATE_OSCAM_CONFIG fullpath)
471 GENERATE_OSCAM_CONFIG("${CMAKE_CURRENT_SOURCE_DIR}/config.h")
473 # Build config.mak and related files
474 # FIXME: Create USE_FLAGS and pass them to config.sh using --use-flags
475 execute_process (COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/config.sh --objdir ${CMAKE_CURRENT_BINARY_DIR} --use-flags "${USE_STAPI} ${USE_STAPI5} /
476 ${USE_COOLAPI} ${USE_SU980} ${USE_AZBOX} ${USE_MCA} ${USE_SSL} ${USE_LIBCRYPTO} ${USE_LIBUSB} ${USE_PCSC}" --make-config.mak)
477 # Generate webif/pages.c
478 execute_process (COMMAND make --no-print-directory --quiet -C ${CMAKE_CURRENT_SOURCE_DIR}/webif)
480 #----------------------- subdirectories ------------------------------
482 add_subdirectory (csctapi)
483 add_subdirectory (minilzo)
484 add_subdirectory (cscrypt)
486 #----------------------- file groups ------------------------------
487 execute_process (COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/config.sh --enabled MODULE_CAMD33 OUTPUT_VARIABLE CAMD33 OUTPUT_STRIP_TRAILING_WHITESPACE)
488 if (CAMD33 MATCHES "N")
489 set (CAMD_33 "module-camd33*")
490 endif (CAMD33 MATCHES "N")
491 if (OSCamOperatingSystem MATCHES "Mac OS X")
492 file (GLOB csmodules_mac "module-dvbapi*" "module-lcd*" "${CAMD_33}")
493 file (GLOB csmodules_srcs "module-*.c" "webif/pages.c")
494 list (REMOVE_ITEM csmodules_srcs ${csmodules_mac})
495 file (GLOB csmodules_hdrs "module-*.h" "webif/pages.h")
496 list (REMOVE_ITEM csmodules_hdrs ${csmodules_mac})
497 file (GLOB csreaders_srcs "reader-*.c")
498 file (GLOB csreaders_hdrs "reader-*.h")
499 file (GLOB csoscam_srcs "oscam-*.c")
500 file (GLOB csoscam_hdrs "oscam-*.h")
501 file (GLOB exe_srcs "oscam.c")
502 file (GLOB exe_hdrs "globals.h")
503 file (GLOB all_srcs ${csmodules_srcs} ${csreaders_srcs} ${csoscam_srcs} ${exe_srcs})
504 else (OSCamOperatingSystem MATCHES "Mac OS X")
505 file (GLOB csmodules_srcs "module-*.c" "webif/pages.c")
506 file (GLOB csmodules_hdrs "module-*.h" "webif/pages.h")
507 file (GLOB csreaders_srcs "reader-*.c")
508 file (GLOB csreaders_hdrs "reader-*.h")
509 file (GLOB csoscam_srcs "oscam-*.c" "${CMAKE_CURRENT_BINARY_DIR}/config.c")
510 file (GLOB csoscam_hdrs "oscam-*.h")
511 file (GLOB exe_srcs "oscam.c")
512 file (GLOB exe_hdrs "globals.h")
513 file (GLOB all_srcs ${csmodules_srcs} ${csreaders_srcs} ${csoscam_srcs} ${exe_srcs})
514 endif (OSCamOperatingSystem MATCHES "Mac OS X")
515 #----------------------- modules ------------------------------
517 set (csmodules "csmodules")
518 add_library (${csmodules} STATIC ${csmodules_srcs} ${csmodules_hdrs})
520 #----------------------- readers ------------------------------
522 set (csreaders "csreaders")
523 add_library (${csreaders} STATIC ${csreaders_srcs} ${csreaders_hdrs})
525 #----------------------- other oscam files ------------------------------
527 set (csoscam "csoscam")
528 add_library (${csoscam} STATIC ${csoscam_srcs} ${csoscam_hdrs})
530 #----------------------- the executable ------------------------------
532 set (exe_name "oscam")
533 add_executable (${exe_name} ${exe_srcs} ${exe_hdrs})
534 target_link_libraries (${exe_name} ${csoscam} ${csmodules} ${csreaders} csctapi cscrypt minilzo)
535 if(HAVE_LIBRT AND HAVE_LIBUSB)
537 set (libusb_link "imp_libusb")
540 set (libusb_link "libusb-1.0.a")
542 set (libusb_link "usb-1.0")
545 if (NOT OSCamOperatingSystem MATCHES "Mac OS X")
547 endif (NOT OSCamOperatingSystem MATCHES "Mac OS X")
548 if (OSCamOperatingSystem MATCHES "Windows/Cygwin")
549 set (setupapi_link "setupapi")
550 set (ole32_link "ole32")
551 set (shell32_link "shell32")
552 endif (OSCamOperatingSystem MATCHES "Windows/Cygwin")
553 endif(HAVE_LIBRT AND HAVE_LIBUSB)
555 if (HAVE_LIBRT_STATIC AND HAVE_LIBUSB)
557 set (libusb_link "imp_libusb")
560 set (libusb_link "libusb-1.0.a")
562 set (libusb_link "usb-1.0")
565 if (NOT OSCamOperatingSystem MATCHES "Mac OS X")
566 set (rt_link "imp_librt")
567 endif (NOT OSCamOperatingSystem MATCHES "Mac OS X")
568 if (OSCamOperatingSystem MATCHES "Windows/Cygwin")
569 set (setupapi_link "setupapi")
570 set (ole32_link "ole32")
571 set (shell32_link "shell32")
572 endif (OSCamOperatingSystem MATCHES "Windows/Cygwin")
573 endif (HAVE_LIBRT_STATIC AND HAVE_LIBUSB)
576 set (pthread_link "pthread")
580 target_link_libraries (${exe_name} ssl)
584 target_link_libraries (${exe_name} crypto)
585 endif (HAVE_LIBCRYPTO)
587 # some systems need libm for the nagra cak7 functions to work
588 check_include_file("math.h" HAVE_LIBM)
590 target_link_libraries (${exe_name} m)
594 if (NOT OSCamOperatingSystem MATCHES "Mac OS X")
595 if (NOT OSCamOperatingSystem MATCHES "Windows/Cygwin")
596 target_link_libraries (${exe_name} pcsclite)
597 endif (NOT OSCamOperatingSystem MATCHES "Windows/Cygwin")
598 endif (NOT OSCamOperatingSystem MATCHES "Mac OS X")
602 target_link_libraries(${exe_name} stapilib)
603 endif (HAVE_LIBSTAPI)
606 target_link_libraries(${exe_name} stapi5lib)
607 endif (HAVE_LIBSTAPI5)
609 add_dependencies (${exe_name} ${csoscam} ${csreaders} ${csmodules})
611 #----------------------- specific options ------------------------------
613 if (NOT OSCamOperatingSystem MATCHES "(Mac OS X|Windows/Cygwin|FreeBSD|OpenBSD)")
614 target_link_libraries (${exe_name} rt)
615 endif (NOT OSCamOperatingSystem MATCHES "(Mac OS X|Windows/Cygwin|FreeBSD|OpenBSD)")
617 if (OSCamOperatingSystem MATCHES "Linux")
618 elseif (OSCamOperatingSystem MATCHES "Mac OS X")
619 if (NOT HAVE_PCSC EQUAL 0)
620 FIND_LIBRARY (PCSC_LIBRARY PCSC)
621 message (STATUS "PCSC Mac OS X found : ${PCSC_LIBRARY}")
622 add_definitions ("-DWITH_PCSC=1")
623 target_link_libraries ( ${exe_name} ${PCSC_LIBRARY})
625 FIND_LIBRARY (IOKit_LIBRARY IOKit)
626 target_link_libraries ( ${exe_name} ${IOKit_LIBRARY})
627 FIND_LIBRARY (CoreFoundation_LIBRARY CoreFoundation)
628 target_link_libraries ( ${exe_name} ${CoreFoundation_LIBRARY})
629 else (NOT HAVE_PCSC EQUAL 0)
630 message (STATUS "PCSC Mac OS X not found no pcsc support")
631 endif (NOT HAVE_PCSC EQUAL 0)
632 elseif (OSCamOperatingSystem MATCHES "Tuxbox")
634 elseif (OSCamOperatingSystem MATCHES "TripleDragon")
636 elseif (OSCamOperatingSystem MATCHES "SlugOS")
637 elseif (OSCamOperatingSystem MATCHES "OpenWRT")
638 elseif (OSCamOperatingSystem MATCHES "Fonera2")
639 elseif (OSCamOperatingSystem MATCHES "DIR-825")
640 elseif (OSCamOperatingSystem MATCHES "agv2+w")
641 elseif (OSCamOperatingSystem MATCHES "WRT54G")
642 elseif (OSCamOperatingSystem MATCHES "Amino")
643 elseif (OSCamOperatingSystem MATCHES "QboxHD")
644 elseif (OSCamOperatingSystem MATCHES "Windows/Cygwin")
645 message (STATUS "Windows system PCSC : winscard.dll")
646 target_link_libraries (${exe_name} winscard)
647 target_link_libraries (${exe_name} setupapi )
648 target_link_libraries (${exe_name} ole32)
649 target_link_libraries (${exe_name} shell32)
650 elseif (OSCamOperatingSystem MATCHES "NeutrinoHD")
651 target_link_libraries (${exe_name} rt nxp)
652 elseif (OSCamOperatingSystem MATCHES "NHD2")
653 target_link_libraries (${exe_name} lnxcssUsr lnxscsUsr lnxnotifyqUsr lnxUKAL lnxplatUsr rt)
654 elseif (OSCamOperatingSystem MATCHES "AZBox")
655 add_library(xcas STATIC IMPORTED)
656 set_property(TARGET xcas PROPERTY IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/extapi/openxcas/libOpenXCASAPI.a)
657 set (xcas_link "xcas")
658 elseif (OSCamOperatingSystem MATCHES "SU980")
659 target_link_libraries (${exe_name} rt entropic)
660 endif (OSCamOperatingSystem MATCHES "Linux")
662 target_link_libraries (${exe_name} ${libusb_link} ${rt_link} ${setupapi_link} ${ole32_link} ${shell32_link} ${pthread_link} ${dl_link} ${xcas_link} ${dvbcsa_link})
664 #----------------------- put svnversion in the build ------------------------------
665 # at every target rebuild, we re-build the oscam.c compilation...
667 # add the needed dependency
668 add_dependencies (${exe_name} svnversion)
669 add_dependencies (${csoscam} svnversion-log)
671 # how to re-build the files which printout the version
675 touch ${CMAKE_CURRENT_SOURCE_DIR}/oscam.c
680 touch ${CMAKE_CURRENT_SOURCE_DIR}/oscam-log.c
683 execute_process (COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/config.sh --oscam-revision COMMAND tr -d '\n' OUTPUT_VARIABLE CS_SVN_VERSION)
684 add_definitions ("-D'CS_SVN_VERSION=\"${CS_SVN_VERSION}\"'")
686 execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpmachine COMMAND tr -d '\n' OUTPUT_VARIABLE CS_TARGET)
687 add_definitions ("-D'CS_TARGET=\"${CS_TARGET}\"'")
689 execute_process (COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/config.sh --enabled WITH_ARM_NEON OUTPUT_VARIABLE CONFIG_WITH_ARM_NEON OUTPUT_STRIP_TRAILING_WHITESPACE)
690 if (CONFIG_WITH_ARM_NEON MATCHES "Y" AND NOT WITH_ARM_NEON EQUAL 0)
691 add_definitions ("-DWITH_ARM_NEON")
692 set (WITH_ARM_NEON "1")
693 elseif (CONFIG_WITH_ARM_NEON MATCHES "Y" AND NOT WITH_ARM_NEON EQUAL 0)
694 message (status " The config file has WITH_ARM_NEON enabled, but You disabled it by you cmake command COMPILING WHITOUT arm neon optimization")
695 endif (CONFIG_WITH_ARM_NEON MATCHES "Y" AND NOT WITH_ARM_NEON EQUAL 0)
696 #----------------------- global compile and link options ------------------------------
697 #enable sse2 on x86, neon on arm
698 if (CMAKE_SYSTEM_PROCESSOR MATCHES "(x86)|(X86)|(amd64)|(AMD64)")
699 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse -msse2 -msse3")
700 elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "(arm)|(ARM)")
701 if (WITH_ARM_NEON EQUAL 1)
702 message(status " ARM NEON is enabled, compiling with neon optimization")
703 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfpu=neon")
704 set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -mfpu=neon")
705 else (WITH_ARM_NEON EQUAL 1)
706 message(status " ARM NEON is disabled, compiling without neon optimization")
707 endif (WITH_ARM_NEON EQUAL 1)
708 endif (CMAKE_SYSTEM_PROCESSOR MATCHES "(x86)|(X86)|(amd64)|(AMD64)")
710 # disable warning about unused but set variables in gcc 4.6+
711 if (CMAKE_COMPILER_IS_GNUCC)
712 execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION)
713 string(REGEX MATCHALL "[0-9]+" GCC_VERSION_COMPONENTS ${GCC_VERSION})
714 list(GET GCC_VERSION_COMPONENTS 0 GCC_MAJOR)
715 list(GET GCC_VERSION_COMPONENTS 0 GCC_MINOR)
716 add_definitions ("-W -Wall ")
717 set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -O2 -pipe -ffunction-sections -fdata-sections -fomit-frame-pointer -fno-schedule-insns")
718 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -O2")
719 set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0 -ggdb")
720 set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -ggdb")
721 endif (CMAKE_COMPILER_IS_GNUCC)
723 if (OSCamOperatingSystem MATCHES "Mac OS X")
724 if (SWVER GREATER 10.6)
725 if (SWVER EQUAL 10.7 AND XCODEVER LESS 4.3)
726 add_definitions("-isysroot /Developer/SDKs/MacOSX${SWVER}.sdk")
727 else (SWVER EQUAL 10.7 AND XCODEVER LESS 4.3)
728 add_definitions("-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${SWVER}.sdk")
729 endif (SWVER EQUAL 10.7 AND XCODEVER LESS 4.3)
730 elseif(SWVER LESS 10.7)
731 add_definitions("-isysroot /Developer/SDKs/MacOSX${SWVER}.sdk")
732 endif (SWVER GREATER 10.6)
733 endif (OSCamOperatingSystem MATCHES "Mac OS X")
735 # we don't want the '-rdynamic' in the link command
736 set (CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "")
738 # we want to strip if not Debug build
739 if (OSCamOperatingSystem MATCHES "Mac OS X")
740 if (SWVER MATCHES "10.8")
741 if (NOT CMAKE_BUILD_TYPE STREQUAL Debug)
742 set (CMAKE_EXE_LINKER_FLAGS "-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${SWVER}.sdk")
743 else (NOT CMAKE_BUILD_TYPE STREQUAL Debug)
744 message (STATUS " building with debug")
745 set (CMAKE_EXE_LINKER_FLAGS "-ggdb -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${SWVER}.sdk")
746 endif (NOT CMAKE_BUILD_TYPE STREQUAL Debug)
747 elseif (SWVER MATCHES "10.7")
748 if (SWVER EQUAL 10.7 AND XCODEVER LESS 4.3)
749 if (NOT CMAKE_BUILD_TYPE STREQUAL Debug)
750 set (CMAKE_EXE_LINKER_FLAGS "-isysroot /Developer/SDKs/MacOSX${SWVER}.sdk")
751 else (NOT CMAKE_BUILD_TYPE STREQUAL Debug)
752 message (STATUS " building with debug")
753 set (CMAKE_EXE_LINKER_FLAGS "-ggdb -isysroot /Developer/SDKs/MacOSX${SWVER}.sdk")
754 endif (NOT CMAKE_BUILD_TYPE STREQUAL Debug)
755 else(SWVER EQUAL 10.7 AND XCODEVER LESS 4.3)
756 if (NOT CMAKE_BUILD_TYPE STREQUAL Debug)
757 set (CMAKE_EXE_LINKER_FLAGS "-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${SWVER}.sdk")
758 else (NOT CMAKE_BUILD_TYPE STREQUAL Debug)
759 message (STATUS " building with debug")
760 set (CMAKE_EXE_LINKER_FLAGS "-ggdb -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${SWVER}.sdk")
761 endif (NOT CMAKE_BUILD_TYPE STREQUAL Debug)
762 endif(SWVER EQUAL 10.7 AND XCODEVER LESS 4.3)
763 elseif (SWVER MATCHES "10.6")
764 if (NOT CMAKE_BUILD_TYPE STREQUAL Debug)
765 set (CMAKE_EXE_LINKER_FLAGS "-isysroot /Developer/SDKs/MacOSX${SWVER}.sdk")
766 else (NOT CMAKE_BUILD_TYPE STREQUAL Debug)
767 message (STATUS " building with debug")
768 set (CMAKE_EXE_LINKER_FLAGS "-ggdb -isysroot /Developer/SDKs/MacOSX${SWVER}.sdk")
769 endif (NOT CMAKE_BUILD_TYPE STREQUAL Debug)
770 endif (SWVER MATCHES "10.8")
771 else (OSCamOperatingSystem MATCHES "Mac OS X")
772 if (NOT CMAKE_BUILD_TYPE STREQUAL Debug)
773 set (CMAKE_EXE_LINKER_FLAGS "-s")
774 else (NOT CMAKE_BUILD_TYPE STREQUAL Debug)
775 message (STATUS " building with debug")
776 set (CMAKE_EXE_LINKER_FLAGS "-ggdb")
777 endif (NOT CMAKE_BUILD_TYPE STREQUAL Debug)
778 endif (OSCamOperatingSystem MATCHES "Mac OS X")
780 if (OSCamOperatingSystem MATCHES "Windows/Cygwin")
781 set (CMAKE_EXE_LINKER_FLAGS "--enable-stdcall-fixup")
782 endif (OSCamOperatingSystem MATCHES "Windows/Cygwin")
784 #----------------------- subdirectory list smargo ------------------------------
786 if( HAVE_LIBRT OR HAVE_LIBRT_STATIC)
788 add_subdirectory (utils)
790 endif( HAVE_LIBRT OR HAVE_LIBRT_STATIC)
792 #--------------------------------------------------------------------------------
794 #----------------------- installation -----------------------------
796 file (GLOB config_files "${CMAKE_CURRENT_SOURCE_DIR}/Distribution/oscam.*")
797 file (GLOB doc_files "${CMAKE_CURRENT_SOURCE_DIR}/Distribution/doc/txt/*.txt")
798 file (GLOB man1_files "${CMAKE_CURRENT_SOURCE_DIR}/Distribution/doc/man/*.1")
799 file (GLOB man5_files "${CMAKE_CURRENT_SOURCE_DIR}/Distribution/doc/man/*.5")
800 file (GLOB example_files "${CMAKE_CURRENT_SOURCE_DIR}/Distribution/doc/example/oscam.ac"
801 "${CMAKE_CURRENT_SOURCE_DIR}/Distribution/doc/example/oscam.cert"
802 "${CMAKE_CURRENT_SOURCE_DIR}/Distribution/doc/example/oscam.conf"
803 "${CMAKE_CURRENT_SOURCE_DIR}/Distribution/doc/example/oscam.guess"
804 "${CMAKE_CURRENT_SOURCE_DIR}/Distribution/doc/example/oscam.ird"
805 "${CMAKE_CURRENT_SOURCE_DIR}/Distribution/doc/example/oscam.server"
806 "${CMAKE_CURRENT_SOURCE_DIR}/Distribution/doc/example/oscam.services"
807 "${CMAKE_CURRENT_SOURCE_DIR}/Distribution/doc/example/oscam.srvid"
808 "${CMAKE_CURRENT_SOURCE_DIR}/Distribution/doc/example/oscam.user")
809 file (GLOB monitor_files "${CMAKE_CURRENT_SOURCE_DIR}/Distribution/monitor/mpcs*.sh"
810 "${CMAKE_CURRENT_SOURCE_DIR}/Distribution/monitor/mpcs*.tar")
812 install (PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${exe_name}${CMAKE_EXECUTABLE_SUFFIX} DESTINATION bin COMPONENT bin)
813 install (FILES ${config_files} DESTINATION etc COMPONENT config)
814 install (FILES ${doc_files} DESTINATION share/doc/oscam COMPONENT doc)
815 install (FILES ${man1_files} DESTINATION share/man/man1 COMPONENT doc)
816 install (FILES ${man5_files} DESTINATION share/man/man5 COMPONENT doc)
817 install (FILES ${example_files} DESTINATION share/doc/oscam/example COMPONENT doc)
818 install (FILES ${monitor_files} DESTINATION share/doc/oscam/monitor COMPONENT doc)
820 #----------------------- we can use CPack to build pacakges --------------------------
822 # get version from source file
823 execute_process (COMMAND grep CS_VERSION ${CMAKE_CURRENT_SOURCE_DIR}/globals.h
824 OUTPUT_VARIABLE CS_VERSION)
825 string (REGEX REPLACE ".*\"\(.*\)\".*" "\\1" CS_VERSION ${CS_VERSION})
826 string (REGEX REPLACE "\(.*\)\\..*\\..*" "\\1" CPACK_PACKAGE_VERSION_MAJOR ${CS_VERSION})
827 string (REGEX REPLACE ".*\\.\(.*\)\\..*" "\\1" CPACK_PACKAGE_VERSION_MINOR ${CS_VERSION})
828 string (REGEX REPLACE ".*\\..*\\.\(.*\)" "\\1" CPACK_PACKAGE_VERSION_PATCH ${CS_VERSION})
829 set (CPACK_PACKAGE_VERSION
830 "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
832 # compute my filename
833 set (CPACK_PACKAGE_FILE_NAME
834 "${PROJECT_NAME}-${CPACK_PACKAGE_VERSION}-${CS_TARGET}")
836 # wich archive we want to generate
837 set (CPACK_GENERATOR "TGZ")
839 # what to put in the archive
840 set (CPACK_STRIP_FILES TRUE)
841 set (CPACK_COMPONENTS_ALL bin)# config doc)
843 # ok, we can now use CPack
846 #----------------------- printout resume -----------------------------
849 message (STATUS " operating system: ${OSCamOperatingSystem}")
850 message (STATUS " target system: ${CS_TARGET}")
851 message (STATUS " revision: ${CS_SVN_VERSION}")
853 message (STATUS " use system libcrypto functions")
854 else (HAVE_LIBCRYPTO)
855 message (STATUS " use built-in crypt functions")
856 endif (HAVE_LIBCRYPTO)
858 message (STATUS " use system pcsc functions")
861 message (STATUS " use system pthread functions")
864 if(STATIC_LIBUSB EQUAL 1)
865 message (STATUS " You selected to enable static libusb")
866 endif(STATIC_LIBUSB EQUAL 1)
867 if(STATICLIBUSB AND NOT LIBUSBDIR)
868 message (STATUS " use static libusb functions")
869 else(STATICLIBUSB AND NOT LIBUSBDIR)
870 if (LIBUSBDIR AND STATIC_LIBUSB EQUAL 0)
871 message(STATUS " use system libusb from selected LIBUSBDIR functions")
872 elseif (LIBUSBDIR AND STATIC_LIBUSB EQUAL 1)
873 message(STATUS " use static libusb from selected LIBUSBDIR functions")
875 message(STATUS " use system libusb from selected LIBUSBDIR functions")
876 elseif(NOT LIBUSBDIR AND NOT STATIC_LIBUSB)
877 message (STATUS " use system libusb functions")
878 endif(LIBUSBDIR AND STATIC_LIBUSB EQUAL 0)
879 endif(STATICLIBUSB AND NOT LIBUSBDIR)
882 if(STATIC_LIBDVBCSA EQUAL 1)
883 message (STATUS " You selected to enable static libdvbcsa")
884 endif(STATIC_LIBDVBCSA EQUAL 1)
885 if(STATICLIBDVBCSA AND NOT LIBDVBCSADIR)
886 message (STATUS " use static libdvbcsa functions")
887 else(STATICLIBDVBCSA AND NOT LIBDVBCSADIR)
888 if (LIBDVBCSADIR AND STATIC_LIBDVBCSA EQUAL 0)
889 message(STATUS " use system libdvbcsa from selected LIBDVBCSADIR functions")
890 elseif (LIBDVBCSADIR AND STATIC_LIBDVBCSA EQUAL 1)
891 message(STATUS " use static libdvbcsa from selected LIBDVBCSADIR functions")
893 message(STATUS " use system libdvbcsa from selected LIBDVBCSADIR functions")
894 elseif(NOT LIBDVBCSADIR AND NOT STATIC_LIBDVBCSA)
895 message (STATUS " use system libdvbcsa functions")
896 endif(LIBDVBCSADIR AND STATIC_LIBDVBCSA EQUAL 0)
897 endif(STATICLIBDVBCSA AND NOT LIBDVBCSADIR)
898 endif (HAVE_LIBDVBCSA)