/[zanavi_public1]/navit/CMakeLists.txt
ZANavi

Contents of /navit/CMakeLists.txt

Parent Directory Parent Directory | Revision Log Revision Log


Revision 56 - (show annotations) (download)
Sun Mar 19 08:44:36 2017 UTC (7 years ago) by zoff99
File MIME type: text/plain
File size: 28156 byte(s)
updates
1
2
3 # cmake command:
4 #U:\_Projekte\android\sdk\android-sdk-windows\cmake\3.6.3155560\bin\cmake.exe -HD:\_ready\git_repos\zanavi -BD:\_ready\git_repos\zanavi\navit\android\.externalNativeBuild\cmake\debug\armeabi "-GAndroid Gradle - Ninja" -DANDROID_ABI=armeabi -DANDROID_NDK=U:\_Projekte\android\sdk\android-sdk-windows\ndk-bundle -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=D:\_ready\git_repos\zanavi\navit\android\build\intermediates\cmake\debug\obj\armeabi -DCMAKE_BUILD_TYPE=Debug -DCMAKE_MAKE_PROGRAM=U:\_Projekte\android\sdk\android-sdk-windows\cmake\3.6.3155560\bin\ninja.exe -DCMAKE_TOOLCHAIN_FILE=U:\_Projekte\android\sdk\android-sdk-windows\ndk-bundle\build\cmake\android.toolchain.cmake -DANDROID_NATIVE_API_LEVEL=9
5
6 # compile command:
7 #cmd.exe /C "cd /D D:\_ready\git_repos\zanavi\navit\android\.externalNativeBuild\cmake\debug\mips64\navit && U:\_Projekte\android\sdk\android-sdk-windows\cmake\3.6.3155560\bin\cmake.exe -D SRC=D:/_ready/git_repos/zanavi/navit/version.h.in -D DST=D:/_ready/git_repos/zanavi/navit/android/.externalNativeBuild/cmake/debug/mips64/navit/version.h -D NAME="GIT_VERSION" -P D:/_ready/git_repos/zanavi/cmake/version.cmake"
8
9
10 message(STATUS "Building with CMake V${CMAKE_VERSION}")
11 project(zanavi C)
12
13 set(CMAKE_VERBOSE_MAKEFILE TRUE)
14
15
16 # Workaround for CMake issue 8345 / 9220, see http://trac.navit-project.org/ticket/1041
17 if(DEFINED CMAKE_CXX_COMPILER AND CMAKE_CXX_COMPILER MATCHES "^$")
18 set(CMAKE_CXX_COMPILER CMAKE_CXX_COMPILER-NOTFOUND)
19 endif(DEFINED CMAKE_CXX_COMPILER AND CMAKE_CXX_COMPILER MATCHES "^$")
20 if (NOT DISABLE_CXX)
21 enable_language(CXX OPTIONAL)
22 endif(NOT DISABLE_CXX)
23
24
25 cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
26 set(NAVIT_VERSION_MAJOR "0")
27 set(NAVIT_VERSION_MINOR "5")
28 set(NAVIT_VERSION_PATCH "1")
29 set(PACKAGE_VERSION "${NAVIT_VERSION_MAJOR}.${NAVIT_VERSION_MINOR}.${NAVIT_VERSION_PATCH}")
30
31 set(PACKAGE_NAME "zanavi-git")
32 set(PACKAGE "zanavi")
33 set(PACKAGE_STRING "${PACKAGE} ${PACKAGE_VERSION}")
34
35 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")
36 include("${PROJECT_SOURCE_DIR}/cmake/navit_macros.cmake")
37
38 IF(NOT CMAKE_BUILD_TYPE)
39 SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." FORCE)
40 ENDIF(NOT CMAKE_BUILD_TYPE)
41
42 # install path
43 set(BIN_DIR bin)
44 set(SHARE_DIR share/navit)
45 set(LOCALE_DIR share/locale)
46 set(IMAGE_DIR share/navit/xpm)
47 set(MAN_DIR share/man/man1)
48 # LIB_DIR
49 IF(UNIX AND NOT ANDROID AND NOT APPLE)
50 IF (NOT LIBDIR)
51 MESSAGE(STATUS "LIBDIR variable is not defined. It will be autodetected now.")
52 MESSAGE(STATUS "You can set it manually with -DLIBDIR=<value>")
53 # check 64 bit
54 IF (CMAKE_SIZEOF_VOID_P EQUAL 4)
55 SET(LIB_DIR lib)
56 MESSAGE(STATUS " LIB_DIR (highest subdirectory if LIBDIR) is set to '${LIB_DIR}'")
57 ELSE (CMAKE_SIZEOF_VOID_P EQUAL 4)
58 SET(LIB_DIR lib64)
59 MESSAGE(STATUS " LIB_DIR (highest subdirectory if LIBDIR) is set to '${LIB_DIR}'")
60 ENDIF (CMAKE_SIZEOF_VOID_P EQUAL 4)
61 ELSE (NOT LIBDIR)
62 GET_FILENAME_COMPONENT (LIB_DIR ${LIBDIR} NAME)
63 MESSAGE(STATUS " LIB_DIR (highest subdirectory if LIBDIR) is set to '${LIB_DIR}'")
64 ENDIF (NOT LIBDIR)
65 ELSE (UNIX AND NOT ANDROID AND NOT APPLE)
66 SET(LIB_DIR lib)
67 ENDIF (UNIX AND NOT ANDROID AND NOT APPLE)
68
69 foreach(EXTRA_MODULE ${EXTRA_MODULES})
70 add_module(${EXTRA_MODULE} "extra module specified" TRUE)
71 endforeach()
72
73 if (EXTRA_LIBS)
74 list(APPEND NAVIT_LIBS ${EXTRA_LIBS})
75 endif(EXTRA_LIBS)
76
77 if (EXTRA_INCLUDES)
78 include_directories(${EXTRA_INCLUDES})
79 endif(EXTRA_INCLUDES)
80
81 if (EXTRA_LIBDIR)
82 link_directories(${EXTRA_LIBDIR})
83 endif(EXTRA_LIBDIR)
84
85 ### Detect environment
86
87 add_plugin(support/ezxml "native Glib found" FALSE)
88 add_plugin(support/glib "native Glib found" FALSE)
89 add_plugin(support/zlib "native zlib found" FALSE)
90 #add_plugin(support/libpng "native libpng found" FALSE)
91 add_plugin(support/wordexp "native wordexp found" FALSE)
92 #add_plugin(../intl "native libintl found" FALSE)
93 #add_subdirectory (./intl ./intl)
94 add_module(font/freetype "freetype not found" FALSE)
95 add_module(graphics/android "FreeType library not found" FALSE)
96 add_module(graphics/gd "FreeType library not found" FALSE)
97 add_module(graphics/gtk_drawing_area "FreeType library not found" FALSE)
98 add_module(graphics/opengl "FreeType library not found" FALSE)
99 add_module(graphics/sdl "Required library not found" FALSE)
100 add_module(graphics/egl "Required library not found" FALSE)
101 add_module(graphics/qt_qpainter "Qt libraries not found" FALSE)
102 add_module(graphics/qt5 "Qt5 libraries not found" FALSE)
103 add_module(gui/qml "Qt Declarative not found" FALSE)
104 add_module(gui/gtk "GTK libs not found" FALSE)
105 add_module(vehicle/gpsd "gpsd lib not found" FALSE)
106 add_module(vehicle/gypsy "gypsy lib not found" FALSE)
107 add_module(vehicle/maemo "Default" FALSE)
108 add_module(binding/win32 "Default" FALSE)
109 add_module(binding/dbus "dbus-glib-1 not found" FALSE)
110 add_module(binding/python "python libraries not found" FALSE)
111 add_module(speech/dbus "dbus-glib-1 not found" FALSE)
112 # add_module(speech/cmdline "neither system() nor CreateProcess() found" FALSE)
113 add_module(speech/cmdline "disabled" FALSE)
114 add_module(vehicle/gpsd_dbus "dbus-glib-1 not found" FALSE)
115 add_module(vehicle/qt5 "Qt5 libraries not found" FALSE)
116 add_module(speech/speech_dispatcher "speech_dispatcher lib not found" FALSE)
117 add_module(autoload/osso "Default" FALSE)
118 add_module(map/garmin "Garmin library not found" FALSE)
119 add_feature(USE_NATIVE_LANGUAGE_SUPPORT "Gettext not found and not on Windows" FALSE)
120 set(CPACK_PROJECT_CONFIG_FILE "${CMAKE_SOURCE_DIR}/cpack.cmake")
121 set(CPACK_PACKAGE_VENDOR "Navit team")
122 set(CPACK_PACKAGE_VERSION_MAJOR ${NAVIT_VERSION_MAJOR})
123 set(CPACK_PACKAGE_VERSION_MINOR ${NAVIT_VERSION_MINOR})
124 set(CPACK_PACKAGE_VERSION_PATCH "${NAVIT_VERSION_PATCH}")
125 set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/README")
126 set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/GPL-2")
127 set(CPACK_NSIS_PACKAGE_NAME "Navit ${PACKAGE_VERSION}")
128 set(CPACK_PACKAGE_FILE_NAME ${PACKAGE})
129 set(CPACK_PACKAGE_EXECUTABLES "navit;Navit")
130 set(CPACK_NSIS_HELP_LINK "http://www.navit-project.org/?page=contact")
131 set(CPACK_NSIS_URL_INFO_ABOUT "http://www.navit-project.org")
132 if(WIN32)
133 add_feature(USE_NSIS "makensis not found" FALSE)
134 FIND_PROGRAM(NSIS_EXECUTABLE NAMES makensis makensis.exe)
135 if(NSIS_EXECUTABLE)
136 set_with_reason(USE_NSIS "makensis found" TRUE)
137 endif(NSIS_EXECUTABLE)
138
139 set(CPACK_GENERATOR ZIP)
140 if(USE_NSIS)
141 list(APPEND CPACK_GENERATOR NSIS)
142 endif(USE_NSIS)
143 set(CPACK_PACKAGE_INSTALL_DIRECTORY Navit)
144 endif(WIN32)
145 INCLUDE (CPack)
146
147 INCLUDE (CheckIncludeFiles)
148 INCLUDE (CheckLibraryExists)
149 INCLUDE (CheckFunctionExists)
150 INCLUDE (CheckSymbolExists)
151 find_package(Glib)
152 find_package(Gmodule)
153 find_package(ZLIB)
154 find_package(Freetype)
155 find_library(SDL2MAIN SDL2)
156 find_library(SDL2IMAGE SDL2_image)
157 find_library(GLES2 GLESv2)
158 find_package(SDL)
159 find_package(SDL_ttf)
160 find_package(SDL_image)
161 find_package(OpenGL)
162 find_package(GLUT)
163 find_package(GTK2 2.6 COMPONENTS gtk)
164 find_package(Gettext)
165 find_package(PNG)
166 find_package(DBusGLib)
167 find_package(PythonLibs)
168 find_package(OpenSSL)
169 find_package(Threads)
170 libfind_pkg_check_modules(FONTCONFIG fontconfig)
171
172 #pkg-config based detection
173 find_package(PkgConfig)
174
175 #Simple checks
176 CHECK_INCLUDE_FILES(wordexp.h HAVE_WORDEXP)
177 CHECK_INCLUDE_FILES(endian.h HAVE_ENDIAN_H)
178 CHECK_INCLUDE_FILES(stdint.h HAVE_STDINT_H)
179 CHECK_INCLUDE_FILES(byteswap.h HAVE_BYTESWAP_H)
180 CHECK_LIBRARY_EXISTS(gypsy gypsy_control_get_default "" GYPSY_FOUND)
181 CHECK_INCLUDE_FILES(libspeechd.h HAVE_LIBSPEECHD)
182 CHECK_INCLUDE_FILES(sys/socket.h HAVE_SOCKET)
183 CHECK_INCLUDE_FILES(sys/shm.h HAVE_SHMEM)
184 CHECK_FUNCTION_EXISTS(snprintf HAVE_SNPRINTF)
185 if (NOT HAVE_SNPRINTF)
186 CHECK_FUNCTION_EXISTS(_snprintf HAVE_DECL__SNPRINTF)
187 if (HAVE_DECL__SNPRINTF)
188 set(HAVE_SNPRINTF 1)
189 endif(HAVE_DECL__SNPRINTF)
190 endif(NOT HAVE_SNPRINTF)
191 CHECK_INCLUDE_FILES(locale.h HAVE_LC_MESSAGES)
192 #CHECK_INCLUDE_FILES(libintl.h HAVE_LIBINTL)
193 CHECK_INCLUDE_FILES(sys/time.h HAVE_SYS_TIME_H)
194 CHECK_INCLUDE_FILES(getopt.h HAVE_GETOPT_H)
195 CHECK_INCLUDE_FILES(string.h HAVE_STRING_H)
196 CHECK_FUNCTION_EXISTS(gettimeofday HAVE_GETTIMEOFDAY)
197 CHECK_SYMBOL_EXISTS(system stdlib.h HAVE_SYSTEM)
198 CHECK_SYMBOL_EXISTS(CreateProcess windows.h HAVE_CREATEPROCESS)
199 CHECK_SYMBOL_EXISTS(stpcpy string.h HAVE_STPCPY)
200 CHECK_FUNCTION_EXISTS(sbrk HAVE_SBRK)
201 CHECK_FUNCTION_EXISTS(getdelim HAVE_GETDELIM)
202 CHECK_FUNCTION_EXISTS(getline HAVE_GETLINE)
203 CHECK_FUNCTION_EXISTS(fsync HAVE_FSYNC)
204
205
206 ### Configure build
207
208 if (Glib_FOUND)
209 set(HAVE_GLIB 1)
210 include_directories(${Glib_INCLUDE_DIRS})
211 list(APPEND NAVIT_LIBS ${Glib_LIBRARIES})
212 else(Glib_FOUND)
213 set_with_reason(support/glib "Glib not found" TRUE ${INTL_LIBS})
214 endif(Glib_FOUND)
215 if (Gmodule_FOUND)
216 set(HAVE_GMODULE 1)
217 include_directories(${Gmodule_INCLUDE_DIRS})
218 list(APPEND NAVIT_LIBS ${Gmodule_LIBRARIES})
219 endif(Gmodule_FOUND)
220 if(ZLIB_FOUND)
221 set(HAVE_ZLIB 1)
222 include_directories(${ZLIB_INCLUDE_DIRS})
223 list(APPEND NAVIT_LIBS ${ZLIB_LIBRARIES})
224 else(ZLIB_FOUND)
225 message(STATUS "using internal zlib")
226 set_with_reason(support/zlib "native zlib missing" TRUE)
227 endif(ZLIB_FOUND)
228 if(OPENSSL_CRYPTO_LIBRARIES)
229 set(HAVE_LIBCRYPTO 1)
230 include_directories(${OPENSSL_INCLUDE_DIR})
231 list(APPEND NAVIT_LIBS ${OPENSSL_CRYPTO_LIBRARIES})
232 endif()
233 if(PNG_FOUND)
234 set(HAVE_PNG 1)
235 include_directories(${PNG_INCLUDE_DIR})
236 list(APPEND NAVIT_LIBS ${PNG_LIBRARIES})
237 else(PNG_FOUND)
238 message(STATUS "using internal libpng")
239 #set_with_reason(support/libpng "native libpng missing" TRUE)
240 endif(PNG_FOUND)
241 if (NOT HAVE_WORDEXP)
242 message(STATUS "wordexp.h not found. use internal wordexp")
243 set_with_reason(support/wordexp "native wordexp missing" TRUE)
244 endif()
245 if (NOT Glib_FOUND)
246 set_with_reason(support/ezxml "Glib not found" TRUE)
247 endif()
248
249 if(FREETYPE_FOUND)
250 pkg_check_modules(FRIBIDI fribidi)
251 pkg_check_modules(FRIBIDI2 fribidi>=0.19.0)
252 include_directories(${FREETYPE_INCLUDE_DIRS})
253 set_with_reason(font/freetype "freetype found" TRUE "${FREETYPE_LIBRARY};${FONTCONFIG_LDFLAGS};${FRIBIDI_LIBRARIES}")
254 else(FREETYPE_FOUND)
255 MESSAGE("No freetype library found, graphics modules may not be available")
256 set_with_reason(graphics/android "FreeType library not found" FALSE)
257 set_with_reason(graphics/gd "FreeType library not found" FALSE)
258 set_with_reason(graphics/gtk_drawing_area "FreeType library not found" FALSE)
259 set_with_reason(graphics/opengl "FreeType library not found" FALSE)
260 set_with_reason(graphics/sdl "FreeType library not found" FALSE)
261 set_with_reason(graphics/egl "FreeType library not found" FALSE)
262 endif(FREETYPE_FOUND)
263
264 if(FONTCONFIG_FOUND)
265 set(HAVE_FONTCONFIG 1)
266 endif(FONTCONFIG_FOUND)
267
268
269
270 CHECK_LIBRARY_EXISTS(freeimage FreeImage_Load "" HAVE_FREEIMAGE)
271
272 if (GETTEXT_FOUND)
273 set_with_reason(USE_NATIVE_LANGUAGE_SUPPORT "Gettext found" TRUE)
274 endif(GETTEXT_FOUND)
275
276 #Independent modules
277 #add_module(graphics/null "Default" FALSE)
278 add_module(osd/core "Default" TRUE)
279 add_module(vehicle/demo "Default" TRUE)
280 add_module(vehicle/file "Default" FALSE)
281 #add_module(vehicle/null "Default" FALSE)
282 add_module(gui/internal "Default" TRUE)
283 add_module(map/binfile "Default" TRUE)
284 #add_module(map/filter "Default" FALSE)
285 #if(NOT MSVC)
286 #add_module(map/mg "Default" FALSE)
287 #endif(NOT MSVC)
288 add_module_plugin(support/shapefile "Default" FALSE)
289 set(map_shapefile_INCLUDES "${CMAKE_SOURCE_DIR}/navit/support/shapefile")
290 #set(map_shapefile_LIBRARY_DIRS "${CMAKE_BINARY_DIR}/navit/support/shapefile")
291 set(map_shapefile_LIBS "support_shapefile")
292 add_module(map/shapefile "Default" FALSE)
293 add_module(map/textfile "Default" TRUE)
294 add_module(map/csv "Default" TRUE)
295
296 #Modules without test yet
297 add_module(plugin/pedestrian "Default" FALSE)
298 add_module(plugin/j1850 "Default" FALSE)
299 add_module(speech/android "Default" FALSE)
300 add_module(speech/espeak "Default" FALSE)
301 add_module(speech/iphone "Default" FALSE)
302 add_plugin(support/espeak "Default" FALSE)
303 add_module(vehicle/android "Default" FALSE)
304 add_module(vehicle/iphone "Default" FALSE)
305 add_module(vehicle/wince "Default" FALSE)
306 add_module(graphics/cocoa "Default" FALSE)
307
308 # other features
309 add_feature(USE_PLUGINS "default" TRUE)
310 add_feature(USE_ROUTING "default" TRUE)
311 add_feature(USE_SVG "default" TRUE)
312 add_feature(SVG2PNG "default" TRUE)
313 add_feature(SAMPLE_MAP "default" FALSE)
314
315 IF(NOT svg2png_scaling)
316 IF(NOT ANDROID)
317 set(svg2png_scaling 0 16 32 48 64 96)
318 ELSE()
319 set(svg2png_scaling -1 24 32 48 64 96 128)
320 ENDIF()
321 ENDIF()
322 IF(NOT svg2png_scaling_flag)
323 IF(NOT ANDROID)
324 set(svg2png_scaling_flag 32)
325 ELSE()
326 set(svg2png_scaling_flag -1 24 32 64 96)
327 ENDIF()
328 ENDIF()
329 IF(NOT svg2png_scaling_nav)
330 IF(NOT ANDROID)
331 set(svg2png_scaling_nav 64)
332 ELSE()
333 set(svg2png_scaling_nav -1 24 32 48 64 96 128)
334 ENDIF()
335 ENDIF()
336
337 add_feature(DBUS_USE_SYSTEM_BUS "default" FALSE)
338 add_feature(BUILD_MAPTOOL "default" TRUE)
339 add_feature(XSL_PROCESSING "default" FALSE)
340
341 set(SUPPORTED_XSLT_PROCESSORS "saxonb-xslt;saxon;saxon8;saxon-xslt;xsltproc;transform.exe")
342 find_program(XSLT_PROCESSOR NAMES ${SUPPORTED_XSLT_PROCESSORS})
343 if(XSLT_PROCESSOR)
344 message(STATUS "Found XSLT processor: ${XSLT_PROCESSOR}")
345 execute_process(COMMAND ${XSLT_PROCESSOR} -snone ${CMAKE_CURRENT_SOURCE_DIR}/cmake/test.xml ${CMAKE_CURRENT_SOURCE_DIR}/cmake/test.xslt
346 RESULT_VARIABLE SAXON_ERROR OUTPUT_QUIET ERROR_QUIET)
347 if (NOT SAXON_ERROR)
348 set (XSLT_PROCESSOR_OPTIONS -snone)
349 endif()
350 # additional parameter is passed to the stylesheet processor as transformation parameter
351 macro(compose_xslt_transform_command CMDVAR XSLT_FILE SRC_XML DEST_XML)
352 if(${XSLT_PROCESSOR} MATCHES "xsltproc")
353 set(${CMDVAR} COMMAND ${XSLT_PROCESSOR} ${XSLT_PROCESSOR_OPTIONS} ${XSLT_FILE} ${SRC_XML} >${DEST_XML})
354 else()
355 set(${CMDVAR} COMMAND ${XSLT_PROCESSOR} ${XSLT_PROCESSOR_OPTIONS} ${SRC_XML} ${XSLT_FILE} ${ARGN} >${DEST_XML})
356 endif()
357 endmacro()
358 else()
359 cfg_feature(XSL_PROCESSING "Saxon missing" FALSE)
360 endif(XSLT_PROCESSOR)
361
362 if (NOT XSL_PROCESSING)
363 message(WARNING "No XSLT processor available. You have to configure "
364 "navit.xml yourself, or install an XSLT processor (supported: "
365 "${SUPPORTED_XSLT_PROCESSORS}).")
366 endif()
367
368 ### Platform specific settings
369 if(NOT CACHE_SIZE)
370 SET(CACHE_SIZE 1048576)
371 endif(NOT CACHE_SIZE)
372
373 if(WIN32 OR WINCE)
374 SET(CMAKE_EXECUTABLE_SUFFIX ".exe")
375 add_module(graphics/win32 "Windows detected" TRUE)
376 add_plugin(support/win32 "Windows detected" TRUE)
377
378 SET(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> -O coff -I ${CMAKE_CURRENT_SOURCE_DIR}/navit/gui/win32/resources <DEFINES> -i <SOURCE> -o <OBJECT>")
379 set_with_reason(support/ezxml "Windows detected" TRUE)
380 set_with_reason(speech/espeak "Windows detected" TRUE)
381 set_with_reason(support/espeak "Windows detected" TRUE)
382 set_with_reason(binding/win32 "Windows detected" TRUE)
383
384 # vehicle_file is broken for windows. use vehicle_wince instead
385 # whicle_wince isn't buildable on non-CE windows ssytems
386
387 # plugins currently not supported on windows
388 set_with_reason(USE_PLUGINS "win32: currently not supported" FALSE)
389
390 set(HAVE_API_WIN32_BASE 1)
391 set(EZXML_NOMMAP 1)
392
393 # Image stuff
394 if(NOT graphics/qt_qpainter)
395 set_with_reason(USE_SVG "win32: SVGs currently not supported" FALSE)
396 else(NOT graphics/qt_qpainter)
397 MESSAGE(STATUS "win32: SVGs may not be supported by every available graphics")
398 endif(NOT graphics/qt_qpainter)
399
400 set(BIN_DIR bin)
401 set(SHARE_DIR ./)
402 set(LOCALE_DIR locale)
403 set(IMAGE_DIR xpm)
404
405
406 if(HAVE_GTK2 AND NOT MSVC)
407 #GTK requires special compile flags
408 add_definitions("-mms-bitfields")
409 endif(HAVE_GTK2 AND NOT MSVC)
410 if(MSVC AND support/espeak)
411 add_definitions(-DPLATFORM_WINDOWS)
412 endif(MSVC AND support/espeak)
413 CHECK_LIBRARY_EXISTS(ws2_32 WSAStartup "" HAVE_WINSOCK)
414 if(HAVE_WINSOCK)
415 list(APPEND NAVIT_LIBS ws2_32)
416 else()
417 CHECK_LIBRARY_EXISTS(ws2 WSAStartup "" HAVE_WINSOCK_2)
418 if(HAVE_WINSOCK_2)
419 set(HAVE_WINSOCK 1)
420 list(APPEND NAVIT_LIBS ws2)
421 endif()
422 endif(HAVE_WINSOCK)
423
424 if(MSVC)
425 set(HAVE_PRAGMA_PACK 1)
426 add_plugin(support/xgetopt "Windows detected" TRUE)
427 endif(MSVC)
428 set_with_reason(USE_NATIVE_LANGUAGE_SUPPORT "Windows detected" TRUE)
429 enable_language(RC)
430
431 set(XSLTS "windows;${XSLTS}" CACHE STRING "define a semicolon seperated list of XSLTs to process")
432 endif()
433 if (WIN32 AND NOT WINCE)
434 set(HAVE_API_WIN32 1)
435 set(HAVE_STDINT_H 1)
436 list(APPEND NAVIT_LIBS winmm)
437 endif()
438 if(WINCE)
439 add_plugin(support/libc "wince detected" TRUE)
440 set(HAVE_API_WIN32_CE 1)
441 set(BUILD_MAPTOOL FALSE)
442 # mingw32ce since gcc 4.7.0 needs HAVE_PRAGMA_PACK as __attribute__((packed)) is broken, see gcc bug 52991
443 set(HAVE_PRAGMA_PACK 1)
444 set_with_reason(vehicle/file "wince: currently broken" FALSE)
445 set_with_reason(vehicle/wince "wince detected" TRUE)
446 endif()
447
448 if(CMAKE_SIZEOF_VOID_P LESS 8)
449 set_with_reason(BUILD_MAPTOOL "maptool works only on 64 bit architectures" FALSE)
450 endif()
451
452 set(LOCALEDIR "${LOCALE_DIR}/locale")
453
454 find_program(BZCAT NAMES bzcat)
455 if (SAMPLE_MAP)
456 if(CMAKE_CROSSCOMPILING)
457 cfg_feature(SAMPLE_MAP "downloading binary map because of cross compiling" TRUE)
458 set(DOWNLOAD_SAMPLE_MAP TRUE)
459 elseif(NOT BZCAT)
460 cfg_feature(SAMPLE_MAP "downloading binary map because of missing bzcat" TRUE)
461 set(DOWNLOAD_SAMPLE_MAP TRUE)
462 elseif(NOT BUILD_MAPTOOL)
463 cfg_feature(SAMPLE_MAP "downloading binary map because maptool compilation is disabled" TRUE)
464 set(DOWNLOAD_SAMPLE_MAP TRUE)
465 endif(CMAKE_CROSSCOMPILING)
466 endif(SAMPLE_MAP)
467
468 if(ANDROID)
469 list(APPEND NAVIT_LIBS log)
470 set(HAVE_API_ANDROID 1)
471 set_with_reason(graphics/android "Android detected" TRUE)
472 set_with_reason(speech/android "Android detected" TRUE)
473 set_with_reason(vehicle/android "Android detected" TRUE)
474 set(SHARED_LIBNAVIT TRUE)
475
476 add_feature(XPM2PNG "Android detected" TRUE)
477 set(NAVIT_COMPILE_FLAGS "${NAVIT_COMPILE_FLAGS} -fPIC")
478 endif(ANDROID)
479
480 # Image conversion
481 find_program(IMAGE_CONVERTER NAMES convert)
482 execute_process(COMMAND ${IMAGE_CONVERTER} -list format OUTPUT_VARIABLE CONVERT_FORMATS)
483 if(CONVERT_FORMATS MATCHES ".*XPM[ *][ ]*XPM[ ]*r[w-].*")
484 set(IMAGE_CONVERTER_XPM ${IMAGE_CONVERTER})
485 endif()
486
487 set(CMAKE_APPBUNDLE_PATH "")
488 if (SVG2PNG)
489 if (NOT IMAGE_CONVERTER_SVGZ)
490 set (SVG_CONVERTER_PROGS rsvg-convert ksvgtopng ksvgtopng4 inkscape)
491 set (CMAKE_FIND_APPBUNDLE "NEVER")
492 find_program(IMAGE_CONVERTER_SVGZ NAMES ${SVG_CONVERTER_PROGS} PATHS /Applications/Inkscape.app/Contents/Resources/bin)
493 if (NOT IMAGE_CONVERTER_SVGZ)
494 if(CONVERT_FORMATS MATCHES ".*[ ]*SVG[ ]*r[w-].*")
495 set(IMAGE_CONVERTER_SVGZ ${IMAGE_CONVERTER})
496 endif()
497 endif()
498 endif(NOT IMAGE_CONVERTER_SVGZ)
499 if (NOT IMAGE_CONVERTER_SVG)
500 set(IMAGE_CONVERTER_SVG ${IMAGE_CONVERTER_SVGZ})
501 endif(NOT IMAGE_CONVERTER_SVG)
502
503 message(STATUS "SVG2PNG-Converter: ${IMAGE_CONVERTER_SVGZ}")
504 if (NOT IMAGE_CONVERTER_SVGZ)
505 message(WARNING "No SVG2PNG converter found. Please install one of the following tools: ${SVG_CONVERTER_PROGS}, or imagemagick with svg support")
506 set_with_reason(SVG2PNG "no converter found" FALSE)
507 endif(NOT IMAGE_CONVERTER_SVGZ)
508 endif(SVG2PNG)
509
510 if (XPM2PNG)
511 message(STATUS "XPM2PNG-Converter: ${IMAGE_CONVERTER_XPM}")
512 if (NOT IMAGE_CONVERTER_XPM)
513 message(WARNING "No XPM2PNG converter found. Please install imagemagick with xpm support")
514 set_with_reason(XPM2PNG "no converter found" FALSE)
515 endif(NOT IMAGE_CONVERTER_XPM)
516 endif(XPM2PNG)
517
518 set(XSLTS ${XSLTS} CACHE STRING "define a semicolon seperated list of XSLTs to process")
519
520 # Plugins
521 if(USE_PLUGINS)
522 set(MODULE_BUILD_TYPE "MODULE")
523 add_definitions("-fPIC")
524 list(APPEND NAVIT_LIBS dl)
525 else()
526 set(MODULE_BUILD_TYPE "STATIC")
527 endif(USE_PLUGINS)
528 message(STATUS "Use plugins: ${MODULE_BUILD_TYPE}")
529
530 CHECK_INCLUDE_FILES (malloc.h HAVE_MALLOC_H)
531 CHECK_INCLUDE_FILES ("sys/param.h;sys/mount.h" HAVE_SYS_MOUNT_H)
532 CHECK_INCLUDE_FILES (unistd.h HAVE_UNISTD_H)
533 CHECK_FUNCTION_EXISTS (getcwd HAVE_GETCWD)
534 CHECK_FUNCTION_EXISTS (memalign HAVE_MEMALIGN)
535 CHECK_FUNCTION_EXISTS (valloc HAVE_VALLOC)
536 CHECK_FUNCTION_EXISTS (posix_memalign HAVE_POSIX_MEMALIGN)
537 CHECK_FUNCTION_EXISTS (popen HAVE_POPEN)
538 CHECK_FUNCTION_EXISTS (_atoi64 HAVE__ATOI64)
539
540 CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
541
542 # Compile with -Wall -Wextra. We need all the help we can get from the compiler :-).
543 # Disabled warnings:
544 # -Wno-missing-field-initializers: Used a lot, does not seem problematic.
545 # -Wno-unused-parameter: Unfortunately occurs frequently because of
546 # functions implementing the interface of a plugin.
547 # -Wno-sign-compare: We currently just use int almost everywhere.
548 # Unclear if it's really worth correcting.
549 if(CMAKE_COMPILER_IS_GNUCC OR CCMAKE_COMPILER_IS_GNUCXX)
550 set(COMMON_COMPILER_FLAGS "-Wall -Wundef -Wcast-align -Wpointer-arith -Wno-unused-parameter -Wno-sign-compare")
551 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COMMON_COMPILER_FLAGS}")
552 set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} ${COMMON_COMPILER_FLAGS}")
553 # flags not available in old GCC versions, or not for both C and C++
554 #add_compiler_flag_if_available("-Wno-missing-field-initializers")
555 #add_compiler_flag_if_available("-Wextra")
556 # -Wreturn-type
557 #add_compiler_flag_if_available("-Wmissing-prototypes")
558 #add_compiler_flag_if_available("-Wstrict-prototypes ")
559
560 # ---------------------------
561 MESSAGE( STATUS "0 CMAKE_C_COMPILER: " ${CMAKE_C_COMPILER} )
562 MESSAGE( STATUS "0 CMAKE_CXX_COMPILER: " ${CMAKE_CXX_COMPILER} )
563 MESSAGE( STATUS "0 CMAKE_C_FLAGS: " ${CMAKE_C_FLAGS} )
564 MESSAGE( STATUS "0 CMAKE_CXX_FLAGS: " ${CMAKE_CXX_FLAGS} )
565 MESSAGE( STATUS "0 COMMON_COMPILER_FLAGS: " ${COMMON_COMPILER_FLAGS} )
566 # ---------------------------
567
568
569 #remove_compiler_flag("-Wall")
570 #remove_compiler_flag("-Werror")
571 #remove_compiler_flag("-Wreturn-type")
572
573 string (REPLACE "-Wall" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
574 #string (REPLACE "-Werror" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
575 string (REPLACE "-Wreturn-type" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
576
577 string (REPLACE "-Wall" "" CMAKE_C_FLAGS ${CMAKE_C_FLAGS})
578 #string (REPLACE "-Werror" "" CMAKE_C_FLAGS ${CMAKE_C_FLAGS})
579 string (REPLACE "-Wreturn-type" "" CMAKE_C_FLAGS ${CMAKE_C_FLAGS})
580
581 string (REPLACE "-Wall" "" COMMON_COMPILER_FLAGS ${COMMON_COMPILER_FLAGS})
582 #string (REPLACE "-Werror" "" COMMON_COMPILER_FLAGS ${COMMON_COMPILER_FLAGS})
583 string (REPLACE "-Wreturn-type" "" COMMON_COMPILER_FLAGS ${COMMON_COMPILER_FLAGS})
584
585 endif()
586
587
588 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -lgcc -ljnigraphics -lm")
589 set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -lgcc -ljnigraphics -lm")
590
591
592 if (EXTRA_DEFINES)
593 add_definitions("${EXTRA_DEFINES}")
594 endif(EXTRA_DEFINES)
595
596 remove_definitions(-Werror)
597 remove_definitions(-Wreturn-type)
598
599 # ---------------------------
600 MESSAGE( STATUS "CMAKE_C_COMPILER: " ${CMAKE_C_COMPILER} )
601 MESSAGE( STATUS "CMAKE_CXX_COMPILER: " ${CMAKE_CXX_COMPILER} )
602 MESSAGE( STATUS "CMAKE_CXX_COMPILER: " ${CMAKE_C_FLAGS} )
603 MESSAGE( STATUS "CMAKE_CXX_COMPILER: " ${CMAKE_CXX_FLAGS} )
604 MESSAGE( STATUS "CMAKE_CXX_COMPILER: " ${COMMON_COMPILER_FLAGS} )
605 # ---------------------------
606
607
608 # ---------------------------
609 MESSAGE( STATUS "ANDROID_COMPILER_FLAGS: " ${ANDROID_COMPILER_FLAGS} )
610 MESSAGE( STATUS "ANDROID_COMPILER_FLAGS_CXX: " ${ANDROID_COMPILER_FLAGS_CXX} )
611 MESSAGE( STATUS "ANDROID_COMPILER_FLAGS_DEBUG: " ${ANDROID_COMPILER_FLAGS_DEBUG} )
612 MESSAGE( STATUS "ANDROID_COMPILER_FLAGS_RELEASE: " ${ANDROID_COMPILER_FLAGS_RELEASE} )
613 # ---------------------------
614
615 #string(REPLACE "-Werror" "" ANDROID_COMPILER_FLAGS "${ANDROID_COMPILER_FLAGS}")
616 #string(REPLACE "-Werror" "" ANDROID_COMPILER_FLAGS_CXX "${ANDROID_COMPILER_FLAGS_CXX}")
617 #string(REPLACE "-Werror" "" ANDROID_COMPILER_FLAGS_DEBUG "${ANDROID_COMPILER_FLAGS_DEBUG}")
618 #string(REPLACE "-Werror" "" ANDROID_COMPILER_FLAGS_RELEASE "${ANDROID_COMPILER_FLAGS_RELEASE}")
619
620 # ---------------------------
621 MESSAGE( STATUS "ANDROID_COMPILER_FLAGS: " ${ANDROID_COMPILER_FLAGS} )
622 MESSAGE( STATUS "ANDROID_COMPILER_FLAGS_CXX: " ${ANDROID_COMPILER_FLAGS_CXX} )
623 MESSAGE( STATUS "ANDROID_COMPILER_FLAGS_DEBUG: " ${ANDROID_COMPILER_FLAGS_DEBUG} )
624 MESSAGE( STATUS "ANDROID_COMPILER_FLAGS_RELEASE: " ${ANDROID_COMPILER_FLAGS_RELEASE} )
625 # ---------------------------
626
627
628
629
630 if (NOT NAVIT_DEPENDENCY_ERROR)
631 message("\nSummary:\n")
632
633 set(SUMMARY_COMPONENTS ${ALL_PLUGINS} ${ALL_MODULE_PLUGINS} ${ALL_MODULES})
634 list(SORT SUMMARY_COMPONENTS)
635
636 set(LAST_TYPE NONE)
637 foreach ( SUMMARY_COMP ${SUMMARY_COMPONENTS})
638 # split path to type and name
639 string(REPLACE "/" ";" SUMMARY_COMP_LIST ${SUMMARY_COMP})
640 list(GET SUMMARY_COMP_LIST 0 SUMMARY_COMP_TYPE)
641 list(LENGTH SUMMARY_COMP_LIST SUMMARY_COMP_LIST_LENGTH)
642 if ( SUMMARY_COMP_LIST_LENGTH GREATER 1 )
643 list(GET SUMMARY_COMP_LIST 1 SUMMARY_COMP_NAME)
644 else()
645 set(SUMMARY_COMP_NAME ${SUMMARY_COMP})
646 endif()
647 if ( NOT ${LAST_TYPE} STREQUAL ${SUMMARY_COMP_TYPE})
648 message("\n--->>> ${SUMMARY_COMP_TYPE}")
649 set(LAST_TYPE ${SUMMARY_COMP_TYPE})
650 endif()
651 if (${SUMMARY_COMP})
652 message("Enabled ${SUMMARY_COMP_NAME} ( ${${SUMMARY_COMP}_REASON} )")
653 else()
654 message("Disabled ${SUMMARY_COMP_NAME} ( ${${SUMMARY_COMP}_REASON} )")
655 endif()
656 endforeach()
657
658 list(SORT ALL_FEATURES)
659 message("\n--->>> Features")
660 foreach ( FEATURE ${ALL_FEATURES})
661 if ( ${FEATURE} )
662 message("Enabled ${FEATURE} ( ${${FEATURE}_REASON} )")
663 else()
664 message("Disabled ${FEATURE} ( ${${FEATURE}_REASON} )")
665 endif()
666 endforeach()
667
668 if (XSL_PROCESSING)
669 if (XSLTS)
670 message("\nProcessing XSLT files: ${XSLTS}")
671 else()
672 message("\nProcessing XSLT files: NONE")
673 endif(XSLTS)
674 message("See navit/xslt for available XSLT files, and put them into "
675 "cache variable 'XSLTS' (without extension .xslt).")
676 endif(XSL_PROCESSING)
677
678 message("\nTo configure your build use 'cmake -L' to find changeable variables and run cmake again with 'cmake -D <var-name>=<your value> ...'.")
679 endif(NOT NAVIT_DEPENDENCY_ERROR)
680
681
682
683 # ---------------------------
684 MESSAGE( STATUS "CMAKE_C_COMPILER: " ${CMAKE_C_COMPILER} )
685 MESSAGE( STATUS "CMAKE_CXX_COMPILER: " ${CMAKE_CXX_COMPILER} )
686 MESSAGE( STATUS "CMAKE_C_FLAGS: " ${CMAKE_C_FLAGS} )
687 MESSAGE( STATUS "CMAKE_CXX_FLAGS: " ${CMAKE_CXX_FLAGS} )
688 MESSAGE( STATUS "COMMON_COMPILER_FLAGS: " ${COMMON_COMPILER_FLAGS} )
689 # ---------------------------
690
691
692 # ---------------------------
693 MESSAGE( STATUS "ANDROID_COMPILER_FLAGS: " ${ANDROID_COMPILER_FLAGS} )
694 MESSAGE( STATUS "ANDROID_COMPILER_FLAGS_CXX: " ${ANDROID_COMPILER_FLAGS_CXX} )
695 MESSAGE( STATUS "ANDROID_COMPILER_FLAGS_DEBUG: " ${ANDROID_COMPILER_FLAGS_DEBUG} )
696 MESSAGE( STATUS "ANDROID_COMPILER_FLAGS_RELEASE: " ${ANDROID_COMPILER_FLAGS_RELEASE} )
697
698 MESSAGE( STATUS "CMAKE_C_FLAGS_DEBUG: " ${CMAKE_C_FLAGS_DEBUG} )
699 MESSAGE( STATUS "CMAKE_CXX_FLAGS_DEBUG: " ${CMAKE_CXX_FLAGS_DEBUG} )
700 # ---------------------------
701
702 add_subdirectory (navit)
703
704

   
Visit the ZANavi Wiki