source: trunk/CMakeLists.txt@ 4149

Last change on this file since 4149 was 3983, checked in by hapeba, 13 years ago

revert #3981 and #3982 because _network and other devs means,
that is a big error

File size: 28.2 KB
Line 
1project (OSCam C)
2
3#----------------------- minimum version of cmake to use ------------
4
5# if you want to switch to 2.6 min, please look at the escaped definitions
6# later in this file (the add_definitions in 2.6 don't need to be escaped),
7# and remove the CMP0005 policy.
8# the CMP0003 could also be removed for cmake 2.6
9cmake_minimum_required (VERSION 2.4)
10if(COMMAND cmake_policy)
11 cmake_policy(SET CMP0005 OLD)
12 cmake_policy(SET CMP0003 NEW)
13endif(COMMAND cmake_policy)
14
15#----------------------- detect system ------------------------------
16
17if (CMAKE_CROSSCOMPILING)
18 if (OSCAM_SYSTEM_NAME MATCHES "Tuxbox")
19 set (OSCamOperatingSystem "Tuxbox")
20 set (CS_OS_HW "tuxbox")
21 set (CS_OS_SYS "linux")
22 elseif (OSCAM_SYSTEM_NAME MATCHES "TripleDragon")
23 set (OSCamOperatingSystem "TripleDragon")
24 set (CS_OS_HW "tuxbox")
25 set (CS_OS_SYS "linux")
26 elseif (OSCAM_SYSTEM_NAME MATCHES "Coolstream")
27 set (OSCamOperatingSystem "NeutrinoHD")
28 set (CS_OS_HW "coolstream")
29 set (CS_OS_SYS "linux")
30 elseif (OSCAM_SYSTEM_NAME MATCHES "NSLU2")
31 set (OSCamOperatingSystem "SlugOS")
32 set (CS_OS_HW "nslu2")
33 set (CS_OS_SYS "linux")
34 elseif (OSCAM_SYSTEM_NAME MATCHES "Dockstar")
35 set (OSCamOperatingSystem "OpenWRT")
36 set (CS_OS_HW "dockstar")
37 set (CS_OS_SYS "linux")
38 elseif (OSCAM_SYSTEM_NAME MATCHES "Fonera2")
39 set (OSCamOperatingSystem "Fonera2")
40 set (CS_OS_HW "fonera2")
41 set (CS_OS_SYS "linux")
42 elseif (OSCAM_SYSTEM_NAME MATCHES "DIR-825")
43 set (OSCamOperatingSystem "DIR-825")
44 set (CS_OS_HW "dir825")
45 set (CS_OS_SYS "linux")
46 elseif (OSCAM_SYSTEM_NAME MATCHES "AZBox")
47 set (OSCamOperatingSystem "AZBox")
48 set (CS_OS_HW "azbox")
49 set (CS_OS_SYS "linux")
50 elseif (OSCAM_SYSTEM_NAME MATCHES "agv2+w")
51 set (OSCamOperatingSystem "agv2+w")
52 set (CS_OS_HW "agv2+w")
53 set (CS_OS_SYS "linux")
54 elseif (OSCAM_SYSTEM_NAME MATCHES "WRT54G")
55 set (OSCamOperatingSystem "WRT54G")
56 set (CS_OS_HW "wrt54g")
57 set (CS_OS_SYS "linux")
58 elseif (OSCAM_SYSTEM_NAME MATCHES "Amino")
59 set (OSCamOperatingSystem "Amino")
60 set (CS_OS_HW "amino")
61 set (CS_OS_SYS "linux")
62 elseif (OSCAM_SYSTEM_NAME MATCHES "QboxHD")
63 set (OSCamOperatingSystem "QboxHD")
64 set (CS_OS_HW "qboxhd")
65 set (CS_OS_SYS "linux")
66 else (OSCAM_SYSTEM_NAME MATCHES "Tuxbox")
67 message (STATUS "Unknown cross system name: <${CMAKE_SYSTEM_NAME}>")
68 set (OSCamOperatingSystem "Unknown")
69 set (CS_OS_HW "unknown")
70 set (CS_OS_SYS "unknown")
71 endif (OSCAM_SYSTEM_NAME MATCHES "Tuxbox")
72else (CMAKE_CROSSCOMPILING)
73 if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
74 set (OSCamOperatingSystem "Linux")
75 set (CS_OS_HW "pc")
76 set (CS_OS_SYS "linux")
77 elseif (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
78 set (OSCamOperatingSystem "FreeBSD")
79 set (CS_OS_HW "pc")
80 set (CS_OS_SYS "freebsd")
81 elseif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
82 set (OSCamOperatingSystem "Mac OS X")
83 set (CS_OS_HW "mac")
84 set (CS_OS_SYS "macosx")
85 SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32" )
86 SET( CMAKE_CFLAGS "${CMAKE_CFLAGS} -m32" )
87 elseif (${CYGWIN})
88 set (OSCamOperatingSystem "Windows/Cygwin")
89 set (CS_OS_HW "pc")
90 set (CS_OS_SYS "cygwin")
91 set (CMAKE_SYSTEM_PROCESSOR "i386")
92 else (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
93 message (STATUS "Unknown system name: <${CMAKE_SYSTEM_NAME}>")
94 set (OSCamOperatingSystem "Unknown")
95 set (CS_OS_HW "unknown")
96 set (CS_OS_SYS "unknown")
97 endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
98endif (CMAKE_CROSSCOMPILING)
99
100#----------------------- some paths ------------------------------
101
102set (OPTIONAL_LINK_DIR "" CACHE STRING "Some optional link directories")
103set (OPTIONAL_INCLUDE_DIR "" CACHE STRING "Some optional include directories")
104
105if (OSCamOperatingSystem MATCHES "Windows/Cygwin")
106if(CS_WITH_GBOX)
107 include_directories (
108 ${CMAKE_CURRENT_SOURCE_DIR}/csctapi
109 ${CMAKE_CURRENT_SOURCE_DIR}/cscrypt
110 ${CMAKE_CURRENT_SOURCE_DIR}/csgbox
111 ${CMAKE_CURRENT_SOURCE_DIR}/cygwin
112 /usr/include/w32api
113 ${OPTIONAL_INCLUDE_DIR}
114 )
115else(CS_WITH_GBOX)
116 include_directories (
117 ${CMAKE_CURRENT_SOURCE_DIR}/csctapi
118 ${CMAKE_CURRENT_SOURCE_DIR}/cscrypt
119 ${CMAKE_CURRENT_SOURCE_DIR}/csgbox
120 ${CMAKE_CURRENT_SOURCE_DIR}/cygwin
121 /usr/include/w32api
122 ${OPTIONAL_INCLUDE_DIR}
123 )
124endif(CS_WITH_GBOX)
125else (OSCamOperatingSystem MATCHES "Windows/Cygwin")
126if(CS_WITH_GBOX)
127 include_directories (
128 ${CMAKE_CURRENT_SOURCE_DIR}/csctapi
129 ${CMAKE_CURRENT_SOURCE_DIR}/cscrypt
130 ${CMAKE_CURRENT_SOURCE_DIR}/csgbox
131 ${OPTIONAL_INCLUDE_DIR}
132 )
133else(CS_WITH_GBOX)
134 include_directories (
135 ${CMAKE_CURRENT_SOURCE_DIR}/csctapi
136 ${CMAKE_CURRENT_SOURCE_DIR}/cscrypt
137 ${OPTIONAL_INCLUDE_DIR}
138 )
139endif(CS_WITH_GBOX)
140endif (OSCamOperatingSystem MATCHES "Windows/Cygwin")
141
142if(OSCamOperatingSystem MATCHES "Windows/Cygwin")
143link_directories (
144 /usr/lib
145 /usr/lib/w32api
146 /cygdrive/c/WINDOWS/system32/
147 ${OPTIONAL_LINK_DIR}
148 )
149else (OSCamOperatingSystem MATCHES "Windows/Cygwin")
150link_directories (
151 ${OPTIONAL_LINK_DIR}
152 )
153endif (OSCamOperatingSystem MATCHES "Windows/Cygwin")
154
155#----------------------- global options ------------------------------
156
157if (OSCamOperatingSystem MATCHES "Linux")
158 add_definitions ("-DOS_LINUX")
159 set (DEFAULT_CS_CONFDIR "/usr/local/etc")
160elseif (OSCamOperatingSystem MATCHES "Mac OS X")
161 add_definitions ("-DOS_MACOSX -DHAVE_PCSC -DNEED_DAEMON")
162 set (DEFAULT_CS_CONFDIR "/usr/local/etc")
163elseif (OSCamOperatingSystem MATCHES "Tuxbox")
164 set (DEFAULT_CS_CONFDIR "/var/tuxbox/config")
165 if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "mips")
166 add_definitions ("-DOS_LINUX -DTUXBOX -DMIPSEL")
167 else (${CMAKE_SYSTEM_PROCESSOR} MATCHES "mips")
168 add_definitions ("-DOS_LINUX -DTUXBOX -DPPC")
169 endif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "mips")
170elseif (OSCamOperatingSystem MATCHES "TripleDragon")
171 add_definitions ("-DOS_LINUX -DTRIPLEDRAGON -DSTB04SCI -DTUXBOX -DPPC")
172 set (DEFAULT_CS_CONFDIR "/var/tuxbox/config")
173elseif (OSCamOperatingSystem MATCHES "NeutrinoHD")
174 add_definitions ("-DOS_LINUX -DTUXBOX -DCOOL")
175 set (DEFAULT_CS_CONFDIR "/var/tuxbox/config")
176elseif (OSCamOperatingSystem MATCHES "SlugOS")
177 add_definitions ("-DOS_LINUX -DARM")
178 set (DEFAULT_CS_CONFDIR "/var/etc")
179elseif (OSCamOperatingSystem MATCHES "OpenWRT")
180 if (CS_OS_HW MATCHES "dockstar")
181 add_definitions ("-DOS_LINUX -DARM -DDOCKSTAR")
182 else (CS_OS_HW MATCHES "dockstar")
183 add_definitions ("-DOS_LINUX -DARM")
184 endif (CS_OS_HW MATCHES "dockstar")
185 set (DEFAULT_CS_CONFDIR "/usr/oscam")
186elseif (OSCamOperatingSystem MATCHES "Fonera2")
187 add_definitions ("-DOS_LINUX -DMIPSEL -DUCLIBC")
188 set (DEFAULT_CS_CONFDIR "/var/etc")
189elseif (OSCamOperatingSystem MATCHES "DIR-825")
190 add_definitions ("-DOS_LINUX -DMIPSEL -DUCLIBC")
191 set (DEFAULT_CS_CONFDIR "/var/etc")
192elseif (OSCamOperatingSystem MATCHES "AZBox")
193 add_definitions ("-DOS_LINUX -DMIPSEL -DAZBOX")
194 set (DEFAULT_CS_CONFDIR "/PLUGINS/OpenXCAS/oscamCAS")
195elseif (OSCamOperatingSystem MATCHES "agv2+w")
196 add_definitions ("-DOS_LINUX -DUCLIBC")
197 set (DEFAULT_CS_CONFDIR "/etc")
198elseif (OSCamOperatingSystem MATCHES "WRT54G")
199 add_definitions ("-DOS_LINUX -DMIPSEL -DUCLIBC -DUSE_GPIO")
200 set (DEFAULT_CS_CONFDIR "/jffs/etc/config/oscam")
201elseif (OSCamOperatingSystem MATCHES "Amino")
202 add_definitions ("-DOS_LINUX -DSH4 -DTUXBOX")
203 set (DEFAULT_CS_CONFDIR "/usr/local/etc")
204elseif (OSCamOperatingSystem MATCHES "QboxHD")
205 add_definitions ("-DOS_LINUX -DSH4 -DQBOXHD -DTUXBOX")
206 set (DEFAULT_CS_CONFDIR "/var/tuxbox/config")
207elseif (OSCamOperatingSystem MATCHES "Windows/Cygwin")
208 add_definitions ("-DOS_CYGWIN32 -static -DHAVE_PCSC")
209 set (DEFAULT_CS_CONFDIR ".")
210elseif (OSCamOperatingSystem MATCHES "FreeBSD")
211 add_definitions ("-DOS_FREEBSD")
212 set (DEFAULT_CS_CONFDIR ".")
213endif (OSCamOperatingSystem MATCHES "Linux")
214
215set (CS_CONFDIR ${DEFAULT_CS_CONFDIR} CACHE STRING "Default path for the config files")
216add_definitions ("-DCS_CONFDIR=\\\"${CS_CONFDIR}\\\"")
217
218set (CS_OS_CPU ${CMAKE_SYSTEM_PROCESSOR})
219set (CS_OSTYPE ${CS_OS_CPU}-${CS_OS_HW}-${CS_OS_SYS})
220
221add_definitions ("-DUSE_CMAKE")
222add_definitions ("-DCS_OSTYPE=\\\"${CS_OSTYPE}\\\"")
223add_definitions ("-DCS_OS_CPU=\\\"${CS_OS_CPU}\\\"")
224add_definitions ("-DCS_OS_HW=\\\"${CS_OS_HW}\\\"")
225add_definitions ("-DCS_OS_SYS=\\\"${CS_OS_SYS}\\\"")
226
227# Manage oscam-config.h based on command line parameters
228# Manipulate config file based on given parameters and read unset parameters
229
230# Available options
231set(addons WEBIF HAVE_DVBAPI IRDETO_GUESSING CS_ANTICASC WITH_DEBUG CS_WITH_DOUBLECHECK CS_LED QBOXHD_LED CS_LOGHISTORY WITH_SSL)
232set(protocols MODULE_CAMD33 MODULE_CAMD35 MODULE_CAMD35_TCP MODULE_NEWCAMD MODULE_CCCAM MODULE_RADEGAST MODULE_SERIAL MODULE_MONITOR MODULE_CONSTCW)
233set(readers WITH_CARDREADER READER_NAGRA READER_IRDETO READER_CONAX READER_CRYPTOWORKS READER_SECA READER_VIACCESS READER_VIDEOGUARD READER_DRE READER_TONGFANG)
234
235MACRO(GENERATE_OSCAM_CONFIG fullpath)
236 file(READ ${fullpath} config)
237 foreach(option ${addons} ${protocols} ${readers})
238 if(DEFINED ${option})
239 # Note: cmake does not read the file as individual lines but as a long
240 # string, hence we use \n instead of ^ to determine where a line begins
241
242 if(${option})
243 string(REGEX REPLACE "\n//#define ${option}" "\n#define ${option}" config ${config})
244 else(${option})
245 string(REGEX REPLACE "\n#define ${option}" "\n//#define ${option}" config ${config})
246 endif(${option})
247 else(DEFINED ${option})
248 # read value from current oscam-config.h
249
250 if(${config} MATCHES "\n#define ${option}")
251 SET(${option} TRUE)
252 endif(${config} MATCHES "\n#define ${option}")
253 endif(DEFINED ${option})
254 endforeach(option)
255 file(WRITE ${fullpath} ${config})
256ENDMACRO(GENERATE_OSCAM_CONFIG fullpath)
257
258#----------------------- subdirectories ------------------------------
259
260include (CheckIncludeFile)
261GENERATE_OSCAM_CONFIG("${CMAKE_CURRENT_SOURCE_DIR}/oscam-config.h")
262
263if(CS_WITH_GBOX)
264 add_definitions ("-DCS_WITH_GBOX")
265endif(CS_WITH_GBOX)
266
267check_include_file ("pthread.h" HAVE_PTHREAD)
268if (HAVE_PTHREAD)
269 message(STATUS " pthread found. Adding pthread support ")
270 add_definitions ("-DHAVE_PTHREAD_H")
271elseif (HAVE_PTHREAD)
272 message(STATUS " no pthread found. No smartreader ")
273endif (HAVE_PTHREAD)
274
275check_include_file ("openssl/aes.h" HAVE_AES)
276if (HAVE_AES)
277 add_definitions ("-DHAVE_AES")
278endif (HAVE_AES)
279
280check_include_file ("openssl/sha.h" HAVE_SHA)
281if (HAVE_SHA)
282 add_definitions ("-DHAVE_SHA")
283endif (HAVE_SHA)
284
285find_package(OpenSSL QUIET)
286if (OPENSSL_FOUND)
287 include_directories(${OPENSSL_INCLUDE_DIR})
288 message(STATUS " openssl found.")
289else (OPENSSL_FOUND)
290 message(STATUS " openssl not found.")
291 if (WITH_SSL)
292 message(FATAL " ssl support requested but not found! ")
293 endif (WITH_SSL)
294endif (OPENSSL_FOUND)
295
296if (NOT OSCamOperatingSystem MATCHES "Mac OS X")
297 if (LIBRTDIR)
298 check_include_file ("${LIBRTDIR}/include/time.h" HAVE_LIBRT_STATIC)
299 if (HAVE_LIBRT_STATIC)
300 if (EXISTS ${LIBRTDIR}/lib/librt.a)
301 message(STATUS " static librt found : ${LIBRTDIR}/lib/librt.a (needed by libusb).")
302 add_definitions ("-I${LIBRTDIR}/include/")
303 add_library(imp_librt STATIC IMPORTED)
304 set_property(TARGET imp_librt PROPERTY IMPORTED_LOCATION ${LIBRTDIR}/lib/librt.a)
305 else (EXISTS ${LIBRTDIR}/lib/librt.a)
306 message(STATUS " ${LIBRTDIR}/lib/librt.a not found (needed by libusb). No smartreader support)")
307 unset (HAVE_LIBRT_STATIC)
308 endif (EXISTS ${LIBRTDIR}/lib/librt.a)
309 else (HAVE_LIBRT_STATIC)
310 message(STATUS " no librt found (needed by libusb). No smartreader support")
311 endif (HAVE_LIBRT_STATIC)
312 else (LIBRTDIR)
313 check_include_file ("time.h" HAVE_LIBRT)
314 if (HAVE_LIBRT)
315 message(STATUS " librt found (needed by libusb).")
316 else (HAVE_LIBRT)
317 message(STATUS " no librt found (needed by libusb. No smartreader support")
318 endif (HAVE_LIBRT)
319 endif (LIBRTDIR)
320else (NOT OSCamOperatingSystem MATCHES "Mac OS X")
321 set (HAVE_LIBRT True)
322endif (NOT OSCamOperatingSystem MATCHES "Mac OS X")
323
324
325if( HAVE_LIBRT OR HAVE_LIBRT_STATIC)
326 if (LIBUSBDIR)
327 check_include_file ("${LIBUSBDIR}/include/libusb-1.0/libusb.h" HAVE_LIBUSB)
328 if (HAVE_LIBUSB AND HAVE_PTHREAD)
329 if (EXISTS ${LIBUSBDIR}/lib/libusb-1.0.a)
330 message(STATUS " static libusb 1.0 found (${LIBUSBDIR}/lib/libusb-1.0.a). Adding smartreader support ")
331 add_definitions ("-DLIBUSB")
332 add_definitions ("-I${LIBUSBDIR}/include/")
333 add_library(imp_libusb STATIC IMPORTED)
334 set_property(TARGET imp_libusb PROPERTY IMPORTED_LOCATION ${LIBUSBDIR}/lib/libusb-1.0.a)
335 else (EXISTS ${LIBUSBDIR}/lib/libusb-1.0.a)
336 message(STATUS " static libusb 1.0 not found (${LIBUSBDIR}/lib/libusb-1.0.a). No smartreader support ")
337 unset(HAVE_LIBUSB)
338 unset(HAVE_LIBRT)
339 unset(HAVE_LIBRT_STATIC)
340 endif (EXISTS ${LIBUSBDIR}/lib/libusb-1.0.a)
341 else (HAVE_LIBUSB AND HAVE_PTHREAD)
342 message(STATUS " no libusb 1.0 found. No smartreader support")
343 endif (HAVE_LIBUSB AND HAVE_PTHREAD)
344 else (LIBUSBDIR)
345 check_include_file ("libusb-1.0/libusb.h" HAVE_LIBUSB)
346 if (HAVE_LIBUSB AND HAVE_PTHREAD)
347 if (EXISTS /usr/local/lib/libusb-1.0.a)
348 message(STATUS " static libusb 1.0 found : /usr/local/lib/libusb-1.0.a . Adding smartreader support ")
349 add_definitions ("-DLIBUSB")
350 add_definitions ("-I/usr/local/include")
351 add_library(imp_libusb STATIC IMPORTED)
352 set_property(TARGET imp_libusb PROPERTY IMPORTED_LOCATION /usr/local/lib/libusb-1.0.a)
353 elseif (EXISTS /usr/lib/libusb-1.0.a)
354 message(STATUS " static libusb 1.0 found : /usr/lib/libusb-1.0.a . Adding smartreader support ")
355 add_definitions ("-DLIBUSB")
356 add_library(imp_libusb STATIC IMPORTED)
357 set_property(TARGET imp_libusb PROPERTY IMPORTED_LOCATION /usr/lib/libusb-1.0.a)
358 else (EXISTS /usr/local/lib/libusb-1.0.a)
359 message(STATUS " static libusb 1.0 not found (not in /usr/local/lib/ or /usr/lib/) . No smartreader support ")
360 unset(HAVE_LIBUSB)
361 unset(HAVE_LIBRT)
362 unset(HAVE_LIBRT_STATIC)
363 endif (EXISTS /usr/local/lib/libusb-1.0.a)
364 else (HAVE_LIBUSB AND HAVE_PTHREAD)
365 message(STATUS " no libusb 1.0 found. No smartreader support")
366 endif (HAVE_LIBUSB AND HAVE_PTHREAD)
367 endif (LIBUSBDIR)
368endif( HAVE_LIBRT OR HAVE_LIBRT_STATIC)
369
370
371check_include_file ("PCSC/wintypes.h" HAVE_PCSC)
372if (HAVE_PCSC)
373 add_definitions ("-DHAVE_PCSC")
374if (OSCamOperatingSystem MATCHES "Linux")
375 add_definitions ("-I/usr/include/PCSC")
376endif (OSCamOperatingSystem MATCHES "Linux")
377else (HAVE_PCSC)
378if (OSCamOperatingSystem MATCHES "Windows/Cygwin")
379 add_definitions ("-Icygwin")
380 set (HAVE_PCSC "1")
381endif (OSCamOperatingSystem MATCHES "Windows/Cygwin")
382endif (HAVE_PCSC)
383
384
385#----------------------- subdirectories ------------------------------
386
387add_subdirectory (csctapi)
388add_subdirectory (cscrypt)
389if(CS_WITH_GBOX)
390 add_subdirectory (csgbox)
391endif(CS_WITH_GBOX)
392if( HAVE_LIBRT OR HAVE_LIBRT_STATIC)
393 if (HAVE_LIBUSB)
394 add_subdirectory (utils)
395 endif (HAVE_LIBUSB)
396endif( HAVE_LIBRT OR HAVE_LIBRT_STATIC)
397
398#----------------------- file groups ------------------------------
399
400file (GLOB csmodules_srcs "module-*.c")
401file (GLOB csmodules_hdrs "module-*.h")
402file (GLOB csreaders_srcs "reader-*.c")
403file (GLOB csreaders_hdrs "reader-*.h")
404file (GLOB csoscam_srcs "oscam-*.c")
405file (GLOB csoscam_hdrs "oscam-*.h")
406file (GLOB exe_srcs "oscam.c")
407file (GLOB exe_hdrs "globals.h")
408file (GLOB all_srcs ${csmodules_srcs} ${csreaders_srcs} ${csoscam_srcs} ${exe_srcs})
409
410#----------------------- modules ------------------------------
411
412set (csmodules "csmodules")
413add_library (${csmodules} STATIC ${csmodules_srcs} ${csmodules_hdrs})
414
415#----------------------- readers ------------------------------
416
417set (csreaders "csreaders")
418add_library (${csreaders} STATIC ${csreaders_srcs} ${csreaders_hdrs})
419
420#----------------------- other oscam files ------------------------------
421
422set (csoscam "csoscam")
423add_library (${csoscam} STATIC ${csoscam_srcs} ${csoscam_hdrs})
424
425#----------------------- the executable ------------------------------
426
427set (exe_name "oscam")
428add_executable (${exe_name} ${exe_srcs} ${exe_hdrs})
429if(CS_WITH_GBOX)
430 target_link_libraries (${exe_name} ${csoscam} ${csmodules} ${csreaders} csctapi cscrypt csgbox)
431else(CS_WITHGBOX)
432 target_link_libraries (${exe_name} ${csoscam} ${csmodules} ${csreaders} csctapi cscrypt)
433endif(CS_WITH_GBOX)
434if(HAVE_LIBRT AND HAVE_LIBUSB)
435 target_link_libraries (${exe_name} imp_libusb)
436 if (NOT OSCamOperatingSystem MATCHES "Mac OS X")
437 target_link_libraries (${exe_name} rt)
438 endif (NOT OSCamOperatingSystem MATCHES "Mac OS X")
439 if (OSCamOperatingSystem MATCHES "Windows/Cygwin")
440 target_link_libraries (${exe_name} setupapi)
441 target_link_libraries (${exe_name} ole32)
442 target_link_libraries (${exe_name} shell32)
443 endif (OSCamOperatingSystem MATCHES "Windows/Cygwin")
444endif(HAVE_LIBRT AND HAVE_LIBUSB)
445
446if (HAVE_LIBRT_STATIC AND HAVE_LIBUSB)
447 target_link_libraries (${exe_name} imp_libusb)
448 if (NOT OSCamOperatingSystem MATCHES "Mac OS X")
449 target_link_libraries (${exe_name} imp_librt)
450 endif (NOT OSCamOperatingSystem MATCHES "Mac OS X")
451 if (OSCamOperatingSystem MATCHES "Windows/Cygwin")
452 target_link_libraries (${exe_name} setupapi)
453 target_link_libraries (${exe_name} ole32)
454 target_link_libraries (${exe_name} shell32)
455 endif (OSCamOperatingSystem MATCHES "Windows/Cygwin")
456endif (HAVE_LIBRT_STATIC AND HAVE_LIBUSB)
457
458if (HAVE_PTHREAD)
459 target_link_libraries (${exe_name} pthread)
460endif (HAVE_PTHREAD)
461
462if (WITH_SSL)
463 target_link_libraries (${exe_name} ssl)
464endif (WITH_SSL)
465
466if (HAVE_AES)
467 target_link_libraries (${exe_name} crypto)
468endif (HAVE_AES)
469
470if (HAVE_PCSC)
471if (NOT OSCamOperatingSystem MATCHES "Mac OS X")
472if (NOT OSCamOperatingSystem MATCHES "Windows/Cygwin")
473 target_link_libraries (${exe_name} pcsclite)
474endif (NOT OSCamOperatingSystem MATCHES "Windows/Cygwin")
475endif (NOT OSCamOperatingSystem MATCHES "Mac OS X")
476endif (HAVE_PCSC)
477
478
479add_dependencies (${exe_name} ${csoscam} ${csreaders} ${csmodules})
480
481#----------------------- specific options ------------------------------
482
483if (OSCamOperatingSystem MATCHES "Linux")
484elseif (OSCamOperatingSystem MATCHES "Mac OS X")
485 FIND_LIBRARY (PCSC_LIBRARY PCSC)
486 message (STATUS "OS X system PCSC : ${PCSC_LIBRARY}")
487 target_link_libraries ( ${exe_name} ${PCSC_LIBRARY})
488 set (HAVE_PCSC "1")
489 FIND_LIBRARY (IOKit_LIBRARY IOKit)
490 target_link_libraries ( ${exe_name} ${IOKit_LIBRARY})
491 FIND_LIBRARY (CoreFoundation_LIBRARY CoreFoundation)
492 target_link_libraries ( ${exe_name} ${CoreFoundation_LIBRARY})
493elseif (OSCamOperatingSystem MATCHES "Tuxbox")
494 target_link_libraries ( ${exe_name} dl)
495elseif (OSCamOperatingSystem MATCHES "TripleDragon")
496 target_link_libraries ( ${exe_name} dl)
497elseif (OSCamOperatingSystem MATCHES "SlugOS")
498elseif (OSCamOperatingSystem MATCHES "OpenWRT")
499elseif (OSCamOperatingSystem MATCHES "Fonera2")
500elseif (OSCamOperatingSystem MATCHES "DIR-825")
501elseif (OSCamOperatingSystem MATCHES "agv2+w")
502elseif (OSCamOperatingSystem MATCHES "WRT54G")
503elseif (OSCamOperatingSystem MATCHES "Amino")
504elseif (OSCamOperatingSystem MATCHES "QboxHD")
505elseif (OSCamOperatingSystem MATCHES "Windows/Cygwin")
506 message (STATUS "Windows system PCSC : winscard.dll")
507 target_link_libraries (${exe_name} winscard)
508 target_link_libraries (${exe_name} setupapi )
509 target_link_libraries (${exe_name} ole32)
510 target_link_libraries (${exe_name} shell32)
511elseif (OSCamOperatingSystem MATCHES "NeutrinoHD")
512 target_link_libraries ( ${exe_name} rt nxp )
513elseif (OSCamOperatingSystem MATCHES "AZBox")
514 add_library(xcas STATIC IMPORTED)
515 set_property(TARGET xcas PROPERTY IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/openxcas/libOpenXCASAPI.a)
516 target_link_libraries(${exe_name} xcas)
517endif (OSCamOperatingSystem MATCHES "Linux")
518
519#----------------------- put svnversion in the build ------------------------------
520# at every target rebuild, we re-build the oscam.c compilation...
521
522# add the needed dependency
523add_dependencies (${exe_name} svnversion)
524add_dependencies (${csoscam} svnversion-log)
525
526# how to re-build the files which printout the version
527add_custom_target (
528 svnversion
529 ALL
530 touch ${CMAKE_CURRENT_SOURCE_DIR}/oscam.c
531)
532add_custom_target (
533 svnversion-log
534 ALL
535 touch ${CMAKE_CURRENT_SOURCE_DIR}/oscam-log.c
536)
537
538#if the svnversion program is absent, this will leave the SVN_REVISION string empty,
539#but won't stop CMake.
540execute_process (COMMAND "svnversion" "-n" "-c" "${CMAKE_CURRENT_SOURCE_DIR}" OUTPUT_VARIABLE OSCAM_SVN_REVISION)
541
542if (OSCAM_SVN_REVISION)
543 string (REGEX REPLACE "[0-9]+:" "" OSCAM_SVN_REVISION "${OSCAM_SVN_REVISION}")
544 string (REPLACE "M" "" OSCAM_SVN_REVISION "${OSCAM_SVN_REVISION}")
545 string (REPLACE "exported" "0" OSCAM_SVN_REVISION "${OSCAM_SVN_REVISION}")
546else (OSCAM_SVN_REVISION)
547 set (OSCAM_SVN_REVISION "0")
548endif (OSCAM_SVN_REVISION)
549
550# pass the version to the compilations as a define
551add_definitions ("-D'CS_SVN_VERSION=\"${OSCAM_SVN_REVISION}\"'")
552
553#----------------------- global compile and link options ------------------------------
554
555# some optimisations
556if (OSCamOperatingSystem MATCHES "Mac OS X")
557 add_definitions ("-O2 -Winline -Wall -Wextra -finline-functions -fomit-frame-pointer -m32 -mmacosx-version-min=10.5 -isysroot /Developer/SDKs/MacOSX10.5.sdk")
558 set (CMAKE_C_FLAGS_DEBUG "-O0 -g -m32")
559 set (CMAKE_CXX_FLAGS_DEBUG "-O0 -g -m32")
560elseif (OSCAM_SYSTEM_NAME MATCHES "NSLU2")
561 add_definitions ("-O2 -Winline -Wall -finline-functions -fomit-frame-pointer")
562elseif (OSCAM_SYSTEM_NAME MATCHES "Dockstar")
563 add_definitions ("-O2 -Winline -Wall -finline-functions -fomit-frame-pointer")
564else (OSCamOperatingSystem MATCHES "Mac OS X")
565 add_definitions ("-Winline -Wall -Wextra")
566 set (CMAKE_C_FLAGS "-O2 -finline-functions -fomit-frame-pointer")
567 set (CMAKE_C_FLAGS_DEBUG "-O0 -g")
568 set (CMAKE_CXX_FLAGS_DEBUG "-O0 -g")
569endif (OSCamOperatingSystem MATCHES "Mac OS X")
570
571# we don't want the '-rdynamic' in the link command
572set (CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "")
573
574# we want to strip if not Debug build
575if (OSCamOperatingSystem MATCHES "Mac OS X")
576 if (NOT CMAKE_BUILD_TYPE STREQUAL Debug)
577 set (CMAKE_EXE_LINKER_FLAGS "-s -m32 -mmacosx-version-min=10.5 -isysroot /Developer/SDKs/MacOSX10.5.sdk")
578 else (NOT CMAKE_BUILD_TYPE STREQUAL Debug)
579 message (STATUS " building with debug")
580 set (CMAKE_EXE_LINKER_FLAGS "-ggdb -m32 -mmacosx-version-min=10.5 -isysroot /Developer/SDKs/MacOSX10.5.sdk")
581 endif (NOT CMAKE_BUILD_TYPE STREQUAL Debug)
582else (OSCamOperatingSystem MATCHES "Mac OS X")
583 if (NOT CMAKE_BUILD_TYPE STREQUAL Debug)
584 set (CMAKE_EXE_LINKER_FLAGS "-s")
585 else (NOT CMAKE_BUILD_TYPE STREQUAL Debug)
586 message (STATUS " building with debug")
587 set (CMAKE_EXE_LINKER_FLAGS "-ggdb")
588 endif (NOT CMAKE_BUILD_TYPE STREQUAL Debug)
589endif (OSCamOperatingSystem MATCHES "Mac OS X")
590
591if (OSCamOperatingSystem MATCHES "Windows/Cygwin")
592 set (CMAKE_EXE_LINKER_FLAGS "--enable-stdcall-fixup")
593endif (OSCamOperatingSystem MATCHES "Windows/Cygwin")
594
595#----------------------- installation -----------------------------
596
597file (GLOB config_files "${CMAKE_CURRENT_SOURCE_DIR}/Distribution/oscam.*")
598file (GLOB doc_files "${CMAKE_CURRENT_SOURCE_DIR}/Distribution/doc/txt/*.txt")
599file (GLOB man1_files "${CMAKE_CURRENT_SOURCE_DIR}/Distribution/doc/man/*.1")
600file (GLOB man5_files "${CMAKE_CURRENT_SOURCE_DIR}/Distribution/doc/man/*.5")
601file (GLOB example_files "${CMAKE_CURRENT_SOURCE_DIR}/Distribution/doc/example/oscam.ac"
602 "${CMAKE_CURRENT_SOURCE_DIR}/Distribution/doc/example/oscam.cert"
603 "${CMAKE_CURRENT_SOURCE_DIR}/Distribution/doc/example/oscam.conf"
604 "${CMAKE_CURRENT_SOURCE_DIR}/Distribution/doc/example/oscam.guess"
605 "${CMAKE_CURRENT_SOURCE_DIR}/Distribution/doc/example/oscam.ird"
606 "${CMAKE_CURRENT_SOURCE_DIR}/Distribution/doc/example/oscam.server"
607 "${CMAKE_CURRENT_SOURCE_DIR}/Distribution/doc/example/oscam.services"
608 "${CMAKE_CURRENT_SOURCE_DIR}/Distribution/doc/example/oscam.srvid"
609 "${CMAKE_CURRENT_SOURCE_DIR}/Distribution/doc/example/oscam.user")
610file (GLOB monitor_files "${CMAKE_CURRENT_SOURCE_DIR}/Distribution/monitor/mpcs*.sh"
611 "${CMAKE_CURRENT_SOURCE_DIR}/Distribution/monitor/mpcs*.tar")
612
613install (PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${exe_name}${CMAKE_EXECUTABLE_SUFFIX} DESTINATION bin COMPONENT bin)
614install (FILES ${config_files} DESTINATION etc COMPONENT config)
615install (FILES ${doc_files} DESTINATION share/doc/oscam COMPONENT doc)
616install (FILES ${man1_files} DESTINATION share/man/man1 COMPONENT doc)
617install (FILES ${man5_files} DESTINATION share/man/man5 COMPONENT doc)
618install (FILES ${example_files} DESTINATION share/doc/oscam/example COMPONENT doc)
619install (FILES ${monitor_files} DESTINATION share/doc/oscam/monitor COMPONENT doc)
620
621#----------------------- we can use CPack to build pacakges --------------------------
622
623# get version from source file
624execute_process (COMMAND grep CS_VERSION ${CMAKE_CURRENT_SOURCE_DIR}/globals.h
625 OUTPUT_VARIABLE CS_VERSION)
626string (REGEX REPLACE ".*\"\(.*\)\".*" "\\1" CS_VERSION ${CS_VERSION})
627string (REGEX REPLACE "\(.*\)\\..*\\..*" "\\1" CPACK_PACKAGE_VERSION_MAJOR ${CS_VERSION})
628string (REGEX REPLACE ".*\\.\(.*\)\\..*" "\\1" CPACK_PACKAGE_VERSION_MINOR ${CS_VERSION})
629string (REGEX REPLACE ".*\\..*\\.\(.*\)" "\\1" CPACK_PACKAGE_VERSION_PATCH ${CS_VERSION})
630set (CPACK_PACKAGE_VERSION
631 "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
632
633# compute my filename
634set (CPACK_PACKAGE_FILE_NAME
635 "${PROJECT_NAME}-${CPACK_PACKAGE_VERSION}-${CS_OSTYPE}")
636
637# wich archive we want to generate
638set (CPACK_GENERATOR "TGZ")
639
640# what to put in the archive
641set (CPACK_STRIP_FILES TRUE)
642set (CPACK_COMPONENTS_ALL bin)# config doc)
643
644# ok, we can now use CPack
645include (CPack)
646
647#----------------------- printout resume -----------------------------
648
649message (STATUS "")
650message (STATUS " operating system: ${OSCamOperatingSystem}")
651message (STATUS " system type: ${CS_OSTYPE}")
652message (STATUS " system: ${CS_OS_SYS}")
653message (STATUS " cpu: ${CS_OS_CPU}")
654message (STATUS " hw: ${CS_OS_HW}")
655if (HAVE_AES)
656 message (STATUS " use system aes functions")
657else (HAVE_AES)
658 message (STATUS " use built-in aes functions")
659endif (HAVE_AES)
660if (HAVE_SHA)
661 message (STATUS " use system sha functions")
662else (HAVE_SHA)
663 message (STATUS " use built-in sha functions")
664endif (HAVE_SHA)
665if (HAVE_PCSC)
666 message (STATUS " use system pcsc functions")
667endif (HAVE_PCSC)
668if (HAVE_PTHREAD)
669 message (STATUS " use system pthread functions")
670endif (HAVE_PTHREAD)
671if (HAVE_LIBUSB)
672 message (STATUS " use system libusb functions")
673endif (HAVE_LIBUSB)
674if(CS_WITH_GBOX)
675 message (STATUS " gbox protocol enabled")
676endif(CS_WITH_GBOX)
677
678message (STATUS "")
Note: See TracBrowser for help on using the repository browser.