Fix:build/cmake:Remove some unneeded link dependencies
[profile/ivi/navit.git] / navit / CMakeLists.txt
1 project(navit)
2
3 cmake_minimum_required(VERSION 2.6)
4 cmake_policy(VERSION 2.6)
5
6 set(PACKAGE_VERSION "0.5.0")
7 set(PACKAGE_NAME "navit-svn")
8 set(PACKAGE "navit")
9 set(PACKAGE_STRING "${PACKAGE} ${PACKAGE_VERSION}")
10
11 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")
12 include("${PROJECT_SOURCE_DIR}/cmake/navit_macros.cmake")
13
14 IF(NOT CMAKE_BUILD_TYPE)
15    SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." FORCE)
16 ENDIF(NOT CMAKE_BUILD_TYPE)
17
18 # install path
19 set(BIN_DIR bin)
20 set(SHARE_DIR share/navit)
21 set(LOCALE_DIR share)
22 set(IMAGE_DIR share/navit/xpm)
23 set(LIB_DIR lib)
24
25 ### Detect environment
26 foreach(EXTRA_MODULE ${EXTRA_MODULES}) 
27    add_module(${EXTRA_MODULE} "extra module specified" TRUE)
28 endforeach()
29
30 add_plugin(support/ezxml "native Glib found" FALSE)
31 add_plugin(support/glib "native Glib found" FALSE)
32 add_plugin(support/zlib "native zlib found" FALSE)
33 add_plugin(support/libpng "native libpng found" FALSE)
34 add_plugin(support/wordexp "native wordexp found" FALSE)
35 add_module(font/freetype "freetype not found" FALSE)
36 add_module(graphics/android "FreeType library not found" FALSE)
37 add_module(graphics/gd "FreeType library not found" FALSE)
38 add_module(graphics/gtk_drawing_area "FreeType library not found" FALSE)
39 add_module(graphics/opengl "FreeType library not found" FALSE)
40 add_module(graphics/sdl "FreeType library not found" FALSE)
41 add_module(graphics/qt_qpainter "Qt libraries not found" FALSE)
42 add_module(gui/qml "Qt Declarative not found" FALSE)
43 add_module(gui/gtk "GTK libs not found" FALSE)
44 add_module(vehicle/gpsd "gpsd lib not found" FALSE)
45 add_module(vehicle/gypsy "gypsy lib not found" FALSE)
46 add_module(vehicle/maemo "Default" FALSE)
47 add_module(binding/dbus "dbus-glib-1 not found" FALSE)
48 add_module(speech/dbus "dbus-glib-1 not found" FALSE)
49 add_module(vehicle/gpsd_dbus "dbus-glib-1 not found" FALSE)
50 add_module(speech/speech_dispatcher "speech_dispatcher lib not found" FALSE)
51 add_module(autoload/osso "Default" FALSE)
52 add_feature(ENABLE_NLS "default" TRUE)
53
54 INCLUDE (CPack)
55 INCLUDE (CheckIncludeFiles)
56 INCLUDE (CheckLibraryExists)
57 INCLUDE (CheckFunctionExists)
58 find_package(Glib)
59 find_package(Gmodule)
60 find_package(ZLIB)
61 find_package(Freetype)
62 find_package(SDL)
63 find_package(SDL_ttf)
64 find_package(SDL_image)
65 find_package(OpenGL)
66 find_package(GLUT)
67 find_package(GTK2 2.6 COMPONENTS gtk)
68 find_package(Gettext)
69 find_package(PNG)
70 find_package(DBusGLib)
71 find_package(OpenSSL)
72 find_package(Threads)
73 libfind_pkg_check_modules(FONTCONFIG fontconfig)
74 #Qt detection
75 SET(QT_USE_QTSVG TRUE)
76 SET(QT_USE_QTXML TRUE)
77 SET(QT_USE_QTDECLARATIVE TRUE)
78 find_package(Qt4 COMPONENTS QtCore QtGui QtXml QtDeclarative QtSvg OPTIONAL)
79 #pkg-config based detection
80 find_package(PkgConfig)
81 if(PKG_CONFIG_FOUND)
82    pkg_check_modules(QUESOGLC quesoglc)
83    pkg_check_modules(LIBGPSD libgpsd)
84    pkg_check_modules(LIBLOCATION liblocation)
85    pkg_check_modules(LIBOSSO libosso)
86 endif(PKG_CONFIG_FOUND)
87 #Simple checks
88 CHECK_INCLUDE_FILES(wordexp.h HAVE_WORDEXP)
89 CHECK_INCLUDE_FILES(stdint.h HAVE_STDINT_H)
90 CHECK_INCLUDE_FILES(byteswap.h HAVE_BYTESWAP_H)
91 CHECK_LIBRARY_EXISTS(gypsy gypsy_control_get_default "" GYPSY_FOUND)
92 CHECK_INCLUDE_FILES(libspeechd.h HAVE_LIBSPEECHD)
93 CHECK_INCLUDE_FILES(sys/socket.h HAVE_SOCKET)
94 CHECK_FUNCTION_EXISTS(snprintf   HAVE_SNPRINTF)
95 CHECK_INCLUDE_FILES(locale.h HAVE_LC_MESSAGES)
96 CHECK_INCLUDE_FILES(libintl.h HAVE_LIBINTL)
97 CHECK_INCLUDE_FILES(sys/time.h HAVE_SYS_TIME_H)
98 CHECK_INCLUDE_FILES(getopt.h HAVE_GETOPT_H)
99 CHECK_INCLUDE_FILES(string.h HAVE_STRING_H)
100 CHECK_FUNCTION_EXISTS(gettimeofday HAVE_GETTIMEOFDAY)
101
102 ### Configure build
103 #Required libraries, supplied with navit
104 if (NOT HAVE_LIBINTL)
105    add_plugin(intl_cmake "native libintl missing" TRUE)
106    set(USE_LIBGNUINTL TRUE)
107 else()
108    CHECK_LIBRARY_EXISTS(intl libintl_fprintf "" NEEDS_LIBINTL)
109    if (NEEDS_LIBINTL)
110       list(APPEND NAVIT_LIBS intl)
111       set(INTL_LIBS intl)
112    endif(NEEDS_LIBINTL)
113 endif(NOT HAVE_LIBINTL)
114
115
116 if (CMAKE_USE_PTHREADS_INIT)
117    set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_THREAD_LIBS_INIT}")
118    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_THREAD_LIBS_INIT}")
119    set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${CMAKE_THREAD_LIBS_INIT}")
120 endif(CMAKE_USE_PTHREADS_INIT)
121 if (Glib_FOUND)
122    set(HAVE_GLIB 1)
123    include_directories(${Glib_INCLUDE_DIRS})
124    list(APPEND NAVIT_LIBS ${Glib_LIBRARIES})
125 else(Glib_FOUND)
126    set_with_reason(support/glib "Glib not found" TRUE ${INTL_LIBS})
127 endif(Glib_FOUND)
128 if (Gmodule_FOUND)
129    set(HAVE_GMODULE 1)
130    include_directories(${Gmodule_INCLUDE_DIRS})
131    list(APPEND NAVIT_LIBS ${Gmodule_LIBRARIES})
132 endif(Gmodule_FOUND)
133 if(ZLIB_FOUND)
134    set(HAVE_ZLIB 1)
135    include_directories(${ZLIB_INCLUDE_DIRS})
136    list(APPEND NAVIT_LIBS ${ZLIB_LIBRARIES})
137 else(ZLIB_FOUND)
138    message(STATUS "using internal zlib")
139    set_with_reason(support/zlib "native zlib missing" TRUE)
140 endif(ZLIB_FOUND)
141 if(OPENSSL_CRYPTO_LIBRARIES)
142    set(HAVE_LIBCRYPTO 1)
143    include_directories(${OPENSSL_INCLUDE_DIR})
144    list(APPEND NAVIT_LIBS ${OPENSSL_CRYPTO_LIBRARIES})
145 endif()
146 if(PNG_FOUND)
147    set(HAVE_PNG 1)
148 else(PNG_FOUND)
149    message(STATUS "using internal libpng")
150    set_with_reason(support/libpng "native libpng missing" TRUE)
151 endif(PNG_FOUND)
152 if (NOT HAVE_WORDEXP)
153    message(STATUS "wordexp.h not found. use internal wordexp")
154    set_with_reason(support/wordexp "native wordexp missing" TRUE)
155 endif()
156 if (NOT Glib_FOUND)
157    set_with_reason(support/ezxml "Glib not found" TRUE)
158 endif()
159
160 if(FREETYPE_FOUND)
161    include_directories(${FREETYPE_INCLUDE_DIRS})
162    set_with_reason(font/freetype "freetype found" TRUE "${FREETYPE_LIBRARY};${FONTCONFIG_LIBRARIES}")
163    add_subdirectory( "${CMAKE_CURRENT_SOURCE_DIR}/navit/fonts")
164 else(FREETYPE_FOUND)
165    MESSAGE("No freetype library found, graphics modules may not be available")
166    set_with_reason(graphics/android "FreeType library not found" FALSE)
167    set_with_reason(graphics/gd "FreeType library not found" FALSE)
168    set_with_reason(graphics/gtk_drawing_area "FreeType library not found" FALSE)
169    set_with_reason(graphics/opengl "FreeType library not found" FALSE)
170    set_with_reason(graphics/sdl "FreeType library not found" FALSE)
171 endif(FREETYPE_FOUND)
172
173 if(FONTCONFIG_FOUND)
174    set(HAVE_FONTCONFIG 1)
175 endif(FONTCONFIG_FOUND)
176
177 if (QT_FOUND)
178    if (QT_QTCORE_FOUND AND QT_QTGUI_FOUND AND FREETYPE_FOUND)
179       include(${QT_USE_FILE})
180       set_with_reason(graphics/qt_qpainter "Qt libraries found" TRUE ${QT_LIBRARIES})
181
182       if (QT_QTDECLARATIVE_FOUND AND QT_QTXML_FOUND)
183          set_with_reason(gui/qml "Qt Declarative found" TRUE ${QT_LIBRARIES})
184       endif()
185
186       if (QT_QTSVG_FOUND)
187          set(HAVE_QT_SVG 1)
188       elseif( USE_SVG AND graphics/qt_qpainter)
189          message( WARNING "QT compiled without SVG support")
190       endif()
191    endif()
192 endif(QT_FOUND)
193
194 if(GTK2_FOUND)
195    include_directories(${GTK2_INCLUDE_DIRS})
196    set(HAVE_GTK2 1)
197    set_with_reason(gui/gtk "GTK libs found" TRUE ${GTK2_LIBRARIES})
198    if(FREETYPE_FOUND)
199       set_with_reason(graphics/gtk_drawing_area "GTK libs found" TRUE ${GTK2_LIBRARIES})
200    endif(FREETYPE_FOUND)
201 endif(GTK2_FOUND)
202
203 CHECK_LIBRARY_EXISTS(freeimage FreeImage_Load "" FREEIMAGE_FOUND)
204 if (QUESOGLC_FOUND AND FREETYPE_FOUND)
205    if (OPENGL_FOUND AND OPENGL_GLU_FOUND AND OPENGL_INCLUDE_DIR AND FREEIMAGE_FOUND)
206       message (STATUS "opengl found: ${OPENGL_gl_LIBRARY}")
207       include_directories(${OPENGL_INCLUDE_DIR})
208       set_with_reason(graphics/opengl "Found OpenGL and Quesoglc" TRUE ${OPENGL_gl_LIBRARY};${OPENGL_glu_LIBRARY};${GLUT_glut_LIBRARY};freeimage)
209    else()
210       message (STATUS "opengl not found")
211    endif()
212 else()
213    message (STATUS "no glc implementation found. Install Quesoglc for OpenGL support")
214 endif(QUESOGLC_FOUND AND FREETYPE_FOUND)
215
216 if(SDL_FOUND AND SDLIMAGE_FOUND AND FREETYPE_FOUND)
217    set(SDL_IMAGE 1)
218    if(SDLTTF_FOUND)
219       set(SDL_TTF 1)
220       list(APPEND SDL_LIBRARY ${SDLTTF_LIBRARY})
221    endif(SDLTTF_FOUND)
222    set_with_reason(graphics/sdl "SDL/SDL_image libs found" TRUE ${SDL_LIBRARY} ${SDLIMAGE_LIBRARY})
223 endif(SDL_FOUND AND SDLIMAGE_FOUND AND FREETYPE_FOUND)
224
225 if (HAVE_LIBGPS)
226    set_with_reason(vehicle/gpsd "gpsd lib found" TRUE)
227 endif(HAVE_LIBGPS)
228
229 if (GYPSY_FOUND)
230    set_with_reason(vehicle/gypsy "gypsy lib found" TRUE)
231 endif(GYPSY_FOUND)
232
233 if(DBusGLib_FOUND)
234    include_directories(${DBusGLib_INCLUDE_DIRS})
235    set_with_reason(binding/dbus "dbus-glib-1 found" TRUE ${DBusGLib_LIBRARIES})
236    set_with_reason(speech/dbus "dbus-glib-1 found" TRUE ${DBusGLib_LIBRARIES})
237    set_with_reason(vehicle/gpsd_dbus "dbus-glib-1 found" TRUE ${DBusGLib_LIBRARIES})
238 endif()
239
240 if (HAVE_LIBSPEECHD)
241    set_with_reason(speech/speech_dispatcher "speech_dispatcher lib found" TRUE speechd)
242 endif(HAVE_LIBSPEECHD)
243
244 if (GETTEXT_FOUND)
245    execute_process(COMMAND echo "<test/>" COMMAND xgettext -L glade - RESULT_VARIABLE GETTEXT_RET)
246    if ("${GETTEXT_RET}" STREQUAL "0")
247       set(XGETTEXT_GLADE TRUE)
248    else()
249       set(XGETTEXT_GLADE FALSE)
250    endif()
251 endif(GETTEXT_FOUND)
252
253 if (LIBLOCATION_FOUND)
254     set_with_reason(vehicle/maemo "Maemo location library found" TRUE ${LIBLOCATION_LIBRARIES})
255 endif(LIBLOCATION_FOUND)
256
257 if (LIBOSSO_FOUND)
258     set_with_reason(autoload/osso "Maemo osso library found" TRUE ${LIBOSSO_LIBRARIES})
259 endif(LIBOSSO_FOUND)
260
261 #Independent modules
262 add_module(graphics/null "Default" TRUE)
263 add_module(osd/core "Default" TRUE)
264 add_module(vehicle/demo "Default" TRUE)
265 add_module(vehicle/file "Default" TRUE)
266 add_module(vehicle/null "Default" FALSE)
267 add_module(gui/internal "Default" TRUE)
268 add_module(map/binfile "Default" TRUE)
269 add_module(map/filter "Default" TRUE)
270 if(NOT MSVC)
271 add_module(map/mg "Default" TRUE)
272 endif(NOT MSVC)
273 add_module(map/shapefile "Default" TRUE)
274 add_module(map/textfile "Default" TRUE)
275 add_module(map/csv "Default" TRUE)
276 add_module(speech/cmdline "Default" TRUE)
277
278 #Modules without test yet
279 add_module(plugin/pedestrian "Default" FALSE)
280 add_module(speech/android "Default" FALSE)
281 add_module(speech/espeak "Default" FALSE)
282 add_plugin(support/espeak "Default" FALSE)
283 add_module(vehicle/android "Default" FALSE)
284 add_module(vehicle/iphone "Default" FALSE)
285 add_module(vehicle/wince "Default" FALSE)
286
287 # other features
288 add_feature(USE_PLUGINS "default" TRUE)
289 add_feature(SHARED_LIBNAVIT "default" FALSE)
290 add_feature(USE_ROUTING "default" TRUE)
291 add_feature(USE_SVG "default" TRUE)
292 add_feature(SVG2PNG "default" TRUE)
293 add_feature(SAMPLE_MAP "default" TRUE)
294
295 IF(NOT svg2png_scaling)
296    set(svg2png_scaling 0 32 48 64)
297 ENDIF()
298 IF(NOT svg2png_scaling_flag)
299    set(svg2png_scaling_flag 32)
300 ENDIF()
301 IF(NOT svg2png_scaling_nav)
302    set(svg2png_scaling_nav 64)
303 ENDIF()
304
305 add_feature(DBUS_USE_SYSTEM_BUS "default" FALSE)
306 add_feature(BUILD_MAPTOOL "default" TRUE)
307 add_feature(XSL_PROCESSING "default" TRUE)
308
309 find_program(SAXON NAMES saxon saxon8 saxon-xslt saxonb-xslt)
310 if(NOT SAXON)
311    cfg_feature(XSL_PROCESSING "Saxon missing" FALSE)
312 endif()
313
314 if (NOT XSL_PROCESSING)
315    message(WARNING "XSLT processing disabled. You have to configure navit.xml yourself, or enable XSLT processing.")
316 endif()
317
318 ### Platform specific settings
319 if(NOT CACHE_SIZE)
320    SET(CACHE_SIZE 1048576)
321 endif(CACHE_SIZE)
322
323 if(WIN32 OR WINCE)
324    SET(CMAKE_EXECUTABLE_SUFFIX ".exe")
325    add_module(graphics/win32 "Windows detected" TRUE)
326    add_plugin(support/win32 "Windows detected" TRUE)
327
328    SET(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> -O coff <DEFINES> -i <SOURCE> -o <OBJECT>")
329    set_with_reason(support/ezxml "Windows detected" TRUE)
330    set_with_reason(speech/espeak "Windows detected" TRUE)
331    set_with_reason(support/espeak "Windows detected" TRUE)
332
333    # vehicle_file is broken for windows. use vehicle_wince instead
334    # whicle_wince isn't buildable on non-CE windows ssytems
335
336    # plugins currently not supported on windows
337    set_with_reason(USE_PLUGINS "win32: currently not supported" FALSE)
338
339    set(HAVE_API_WIN32_BASE 1)
340    set(EZXML_NOMMAP 1)
341
342    # Image stuff
343    if(NOT graphics/qt_qpainter)
344       set_with_reason(USE_SVG "win32: SVGs currently not supported" FALSE)
345    else(NOT graphics/qt_qpainter)
346       MESSAGE(STATUS "win32: SVGs may not be supported by every available graphics")
347    endif(NOT graphics/qt_qpainter)
348
349    set(BIN_DIR ./)
350    set(SHARE_DIR ./)
351    set(LOCALE_DIR ./)
352    set(IMAGE_DIR xpm)
353
354    
355    if(HAVE_GTK2 AND NOT MSVC)
356       #GTK requires special compile flags
357       add_definitions("-mms-bitfields")
358    endif(HAVE_GTK2 AND NOT MSVC)
359    if(MSVC AND support/espeak)
360       add_definitions(-DPLATFORM_WINDOWS)
361    endif(MSVC AND support/espeak)
362    CHECK_LIBRARY_EXISTS(ws2_32 WSAStartup "" HAVE_WINSOCK)
363    if(HAVE_WINSOCK)
364       list(APPEND NAVIT_LIBS ws2_32)
365    else()
366       CHECK_LIBRARY_EXISTS(ws2 WSAStartup "" HAVE_WINSOCK_2)
367       if(HAVE_WINSOCK_2)
368          set(HAVE_WINSOCK 1)
369          list(APPEND NAVIT_LIBS ws2)
370       endif()
371    endif(HAVE_WINSOCK)
372
373    if(MSVC)
374        add_plugin(support/xgetopt "Windows detected" TRUE)
375        set(ENABLE_NLS FALSE)
376    else(MSVC)
377        set(ENABLE_NLS TRUE)
378    endif(MSVC)
379    enable_language(RC)
380
381    set(XSLTS "windows;${XSLTS}" CACHE STRING "define a semicolon seperated list of XSLTs to process")
382 endif()
383 if (WIN32)
384    set(HAVE_API_WIN32 1)
385    set(HAVE_STDINT_H 1)
386    #set(BUILD_MAPTOOL FALSE)
387    set(SAMPLE_MAP FALSE)
388    list(APPEND NAVIT_LIBS winmm)
389 endif()
390 if(WINCE)
391    add_plugin(support/libc "wince detected" TRUE)
392    set(HAVE_API_WIN32_CE 1)
393    set(BUILD_MAPTOOL FALSE)
394    set_with_reason(vehicle/file "wince: currently broken" FALSE)
395    set_with_reason(vehicle/wince "wince detected" TRUE)
396 endif()
397
398 set(LOCALEDIR "${LOCALE_DIR}/locale")
399
400 find_program(BZCAT NAMES bzcat)
401 if (SAMPLE_MAP)
402    if(CMAKE_CROSSCOMPILING)
403       cfg_feature(SAMPLE_MAP "downloading binary map because of cross compiling" TRUE)
404    elseif(NOT BZCAT)
405       cfg_feature(SAMPLE_MAP "downloading binary map because of missing bzcat" TRUE)
406    endif(CMAKE_CROSSCOMPILING)
407 endif(SAMPLE_MAP)
408
409 if(ANDROID)
410    find_program(ANDROID_LOCATION NAMES android android.bat)
411    find_program(ANT_LOCATION NAMES ant)
412    if (NOT ANT_LOCATION)
413       message_error("Could not find ant. Please install ant and add it to the search path.")
414    endif()
415    if (NOT ANDROID_LOCATION)
416       message_error( "Could not find 'Android SDK and AVD Manager'. Please install the android sdk and add the <android-sdk>/tools directory to the search path.")
417    endif()
418    if (NOT XSL_PROCESSING)
419       message(WARNING "XSLT processing disabled. You have to configure navit.xml yourself, or enable XSLT processing.")
420    endif()
421    set(XSLTS "android;${XSLTS}" CACHE STRING "define a semicolon seperated list of XSLTs to process")
422    list(APPEND NAVIT_LIBS log)
423    set(HAVE_API_ANDROID 1)
424    set_with_reason(graphics/android "Android detected" TRUE)
425    set_with_reason(speech/android "Android detected" TRUE)
426    set_with_reason(vehicle/android "Android detected" TRUE)
427    set_with_reason(plugin/pedestrian "Android detected" TRUE)
428    cfg_feature(SHARED_LIBNAVIT "Android detected" TRUE)
429    
430    add_feature(XPM2PNG "Android detected" TRUE)
431    set(NAVIT_COMPILE_FLAGS "${NAVIT_COMPILE_FLAGS} -fPIC")
432
433 endif(ANDROID)
434
435 # Image conversion
436 find_program(IMAGE_CONVERTER NAMES convert)
437 execute_process(COMMAND ${IMAGE_CONVERTER} -list format OUTPUT_VARIABLE CONVERT_FORMATS)
438 if(CONVERT_FORMATS MATCHES ".*XPM[ *][ ]*XPM[ ]*r[w-].*")
439    set(IMAGE_CONVERTER_XPM ${IMAGE_CONVERTER})
440 endif()
441
442 if (SVG2PNG)
443    if (NOT IMAGE_CONVERTER_SVGZ)
444       set (SVG_CONVERTER_PROGS rsvg-convert ksvgtopng ksvgtopng4)
445       find_program(IMAGE_CONVERTER_SVGZ NAMES ${SVG_CONVERTER_PROGS})
446       if (NOT IMAGE_CONVERTER_SVGZ)
447          if(CONVERT_FORMATS MATCHES ".*[ ]*SVG[ ]*r[w-].*")
448             set(IMAGE_CONVERTER_SVGZ ${IMAGE_CONVERTER})
449          endif()
450       endif()
451    endif(NOT IMAGE_CONVERTER_SVGZ)
452    if (NOT IMAGE_CONVERTER_SVG)
453       set(IMAGE_CONVERTER_SVG ${IMAGE_CONVERTER_SVGZ})
454    endif(NOT IMAGE_CONVERTER_SVG)
455
456    message(STATUS "SVG2PNG-Converter: ${IMAGE_CONVERTER_SVGZ}")
457    if (NOT IMAGE_CONVERTER_SVGZ)
458       message(WARNING "No SVG2PNG converter found. Please install one of the following tools: ${SVG_CONVERTER_PROGS}, or imagemagick with svg support")
459       set_with_reason(SVG2PNG "no converter found" FALSE)
460    endif(NOT IMAGE_CONVERTER_SVGZ)
461 endif(SVG2PNG)
462
463 if (XPM2PNG)
464    message(STATUS "XPM2PNG-Converter: ${IMAGE_CONVERTER_XPM}")
465    if (NOT IMAGE_CONVERTER_XPM)
466       message(WARNING "No XPM2PNG converter found. Please install imagemagick with xpm support")
467       set_with_reason(XPM2PNG "no converter found" FALSE)
468    endif(NOT IMAGE_CONVERTER_XPM)
469 endif(XPM2PNG)
470
471 set(XSLTS ${XSLTS} CACHE STRING "define a semicolon seperated list of XSLTs to process")
472
473 # Plugins
474 if(USE_PLUGINS)
475    set(MODULE_BUILD_TYPE "MODULE")
476    add_definitions("-fPIC")
477    list(APPEND NAVIT_LIBS dl)
478 else()
479    set(MODULE_BUILD_TYPE "STATIC")
480 endif(USE_PLUGINS)
481 message(STATUS "Use plugins: ${MODULE_BUILD_TYPE}")
482
483 if (SHARED_LIBNAVIT)
484   set(NAVIT_CORE_BUILD_TYPE "STATIC")
485 else(SHARED_LIBNAVIT)
486   set(NAVIT_CORE_BUILD_TYPE "SHARED")
487 endif(SHARED_LIBNAVIT)
488
489 CHECK_INCLUDE_FILES (malloc.h HAVE_MALLOC_H)
490 CHECK_INCLUDE_FILES ("sys/param.h;sys/mount.h" HAVE_SYS_MOUNT_H)
491 CHECK_INCLUDE_FILES (unistd.h HAVE_UNISTD_H)
492 CHECK_FUNCTION_EXISTS (getcwd HAVE_GETCWD)
493 CHECK_FUNCTION_EXISTS (memalign HAVE_MEMALIGN)
494 CHECK_FUNCTION_EXISTS (valloc HAVE_VALLOC)
495 CHECK_FUNCTION_EXISTS (posix_memalign HAVE_POSIX_MEMALIGN)
496 CHECK_FUNCTION_EXISTS (popen HAVE_POPEN)
497 CHECK_FUNCTION_EXISTS (_atoi64 HAVE__ATOI64)
498
499 CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
500
501 add_definitions("-Wall")
502
503 if (NOT NAVIT_DEPENDENCY_ERROR)
504    message("\nSummary:\n")
505
506    set(SUMMARY_COMPONENTS ${ALL_PLUGINS} ${ALL_MODULES})
507    list(SORT SUMMARY_COMPONENTS)
508
509    set(LAST_TYPE NONE)
510    foreach ( SUMMARY_COMP ${SUMMARY_COMPONENTS})
511       # split path to type and name
512       string(REPLACE "/" ";" SUMMARY_COMP_LIST ${SUMMARY_COMP})
513       list(GET SUMMARY_COMP_LIST 0 SUMMARY_COMP_TYPE)
514       list(LENGTH SUMMARY_COMP_LIST SUMMARY_COMP_LIST_LENGTH)
515       if ( SUMMARY_COMP_LIST_LENGTH GREATER 1 )
516          list(GET SUMMARY_COMP_LIST 1 SUMMARY_COMP_NAME)
517       else()
518          set(SUMMARY_COMP_NAME ${SUMMARY_COMP})
519       endif()
520       if ( NOT ${LAST_TYPE} STREQUAL ${SUMMARY_COMP_TYPE})
521          message("\n--->>> ${SUMMARY_COMP_TYPE}")
522          set(LAST_TYPE ${SUMMARY_COMP_TYPE})
523       endif()
524       if (${SUMMARY_COMP})
525          message("Enabled   ${SUMMARY_COMP_NAME} ( ${${SUMMARY_COMP}_REASON} )")
526       else()
527          message("Disabled  ${SUMMARY_COMP_NAME} ( ${${SUMMARY_COMP}_REASON} )")
528       endif()
529    endforeach()
530
531    list(SORT ALL_FEATURES)
532    message("\n--->>> Features")
533    foreach ( FEATURE ${ALL_FEATURES})
534       if ( ${FEATURE} )
535          message("Enabled   ${FEATURE} ( ${${FEATURE}_REASON} )")
536       else()
537          message("Disabled  ${FEATURE} ( ${${FEATURE}_REASON} )")
538       endif()
539    endforeach()
540    
541    if (XSL_PROCESSING)
542       if (XSLTS)
543          message("\nProcessing XSLTS: ${XSLTS}")
544       else()
545          message("\nProcessing XSLTS: NONE")
546       endif(XSLTS)
547    endif(XSL_PROCESSING)
548    
549    message("\nTo configure your build use 'cmake -L' to find changeable variables and run cmake again with 'cmake -D <var-name>=<your value> ...'.")
550 endif(NOT NAVIT_DEPENDENCY_ERROR)
551
552 add_subdirectory (navit)
553 add_subdirectory (man)
554
555 if (GETTEXT_FOUND)
556    add_subdirectory (po)
557    #install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/locale DESTINATION ${LOCALE_DIR})
558 endif(GETTEXT_FOUND)
559
560