Add:core:Initial support for cmake build system. This first stage partly supports...
authorrikky <rikky@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Sat, 2 Oct 2010 19:58:55 +0000 (19:58 +0000)
committerrikky <rikky@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Sat, 2 Oct 2010 19:58:55 +0000 (19:58 +0000)
git-svn-id: https://navit.svn.sourceforge.net/svnroot/navit/trunk@3589 ffa7fe5e-494d-0410-b361-a75ebd5db220

44 files changed:
navit/CMakeLists.txt [new file with mode: 0644]
navit/cmake/navit_macros.cmake [new file with mode: 0644]
navit/cmake/navit_xml_parser.cmake [new file with mode: 0644]
navit/cmake/version.cmake [new file with mode: 0644]
navit/config.h.cmake [new file with mode: 0644]
navit/man/CMakeLists.txt [new file with mode: 0644]
navit/navit/CMakeLists.txt [new file with mode: 0644]
navit/navit/binding/dbus/CMakeLists.txt [new file with mode: 0644]
navit/navit/fib-1.1/CMakeLists.txt [new file with mode: 0644]
navit/navit/graphics/CMakeLists.txt [new file with mode: 0644]
navit/navit/graphics/null/CMakeLists.txt [new file with mode: 0644]
navit/navit/graphics/opengl/CMakeLists.txt [new file with mode: 0644]
navit/navit/graphics/qt_qpainter/CMakeLists.txt [new file with mode: 0644]
navit/navit/graphics/sdl/CMakeLists.txt [new file with mode: 0644]
navit/navit/graphics/win32/CMakeLists.txt [new file with mode: 0644]
navit/navit/gui/gtk/CMakeLists.txt [new file with mode: 0644]
navit/navit/gui/internal/CMakeLists.txt [new file with mode: 0644]
navit/navit/gui/qml/CMakeLists.txt [new file with mode: 0644]
navit/navit/gui/win32/CMakeLists.txt [new file with mode: 0644]
navit/navit/map/binfile/CMakeLists.txt [new file with mode: 0644]
navit/navit/map/filter/CMakeLists.txt [new file with mode: 0644]
navit/navit/map/mg/CMakeLists.txt [new file with mode: 0644]
navit/navit/map/shapefile/CMakeLists.txt [new file with mode: 0644]
navit/navit/map/textfile/CMakeLists.txt [new file with mode: 0644]
navit/navit/maptool/CMakeLists.txt [new file with mode: 0644]
navit/navit/osd/core/CMakeLists.txt [new file with mode: 0644]
navit/navit/speech/cmdline/CMakeLists.txt [new file with mode: 0644]
navit/navit/speech/dbus/CMakeLists.txt [new file with mode: 0644]
navit/navit/speech/speech_dispatcher/CMakeLists.txt [new file with mode: 0644]
navit/navit/support/ezxml/CMakeLists.txt [new file with mode: 0644]
navit/navit/support/glib/CMakeLists.txt [new file with mode: 0644]
navit/navit/support/libpng/CMakeLists.txt [new file with mode: 0644]
navit/navit/support/win32/CMakeLists.txt [new file with mode: 0644]
navit/navit/support/wordexp/CMakeLists.txt [new file with mode: 0644]
navit/navit/support/zlib/CMakeLists.txt [new file with mode: 0644]
navit/navit/vehicle/demo/CMakeLists.txt [new file with mode: 0644]
navit/navit/vehicle/file/CMakeLists.txt [new file with mode: 0644]
navit/navit/vehicle/gpsd/CMakeLists.txt [new file with mode: 0644]
navit/navit/vehicle/gpsd_dbus/CMakeLists.txt [new file with mode: 0644]
navit/navit/vehicle/gypsy/CMakeLists.txt [new file with mode: 0644]
navit/navit/vehicle/wince/CMakeLists.txt [new file with mode: 0644]
navit/navit/version.h.in [new file with mode: 0644]
navit/navit/xpm/CMakeLists.txt [new file with mode: 0644]
navit/po/CMakeLists.txt [new file with mode: 0644]

diff --git a/navit/CMakeLists.txt b/navit/CMakeLists.txt
new file mode 100644 (file)
index 0000000..11b5cdd
--- /dev/null
@@ -0,0 +1,293 @@
+project(navit)
+
+cmake_minimum_required(VERSION 2.8)
+cmake_policy(VERSION 2.8)
+
+set(PACKAGE_VERSION "0.2.0")
+set(PACKAGE_NAME "navit-svn")
+
+include("${PROJECT_SOURCE_DIR}/cmake/navit_macros.cmake")
+
+### set defaults
+# modules
+add_module(binding/dbus TRUE)
+add_module(graphics/android FALSE)
+add_module(graphics/gd FALSE)
+add_module(graphics/gtk_drawing_area FALSE)
+add_module(graphics/null FALSE)
+add_module(graphics/opengl TRUE)
+add_module(graphics/qt_qpainter FALSE)
+add_module(graphics/sdl TRUE)
+add_module(graphics/win32 FALSE)
+add_module(gui/gtk FALSE)
+add_module(gui/internal TRUE)
+add_module(gui/qml FALSE)
+add_module(gui/win32 FALSE)
+add_module(map/binfile TRUE)
+add_module(map/filter TRUE)
+add_module(map/mg TRUE)
+add_module(map/shapefile TRUE)
+add_module(map/textfile TRUE)
+add_module(osd/core TRUE)
+add_module(plugin/pedestrian FALSE)
+add_module(speech/android FALSE)
+add_module(speech/cmdline TRUE)
+add_module(speech/dbus FALSE)
+add_module(speech/espeak FALSE)
+add_module(speech/speech_dispatcher TRUE)
+add_plugin(support/espeak FALSE)
+add_plugin(support/ezxml TRUE)
+add_plugin(support/glib FALSE)
+add_plugin(support/libpng FALSE)
+add_plugin(support/win32 FALSE)
+add_plugin(support/wordexp FALSE)
+add_plugin(support/zlib FALSE)
+add_module(vehicle/android FALSE)
+add_module(vehicle/demo TRUE)
+add_module(vehicle/file TRUE)
+add_module(vehicle/gpsd TRUE)
+add_module(vehicle/gpsd_dbus FALSE)
+add_module(vehicle/gypsy TRUE)
+add_module(vehicle/iphone FALSE)
+add_module(vehicle/maemo FALSE)
+add_module(vehicle/null FALSE)
+add_module(vehicle/wince FALSE)
+
+# other features
+set(USE_PLUGINS TRUE)
+set(USE_ROUTING TRUE)# routing/reason=default
+set(USE_SVG TRUE)
+set(SVG2PNG TRUE)
+set(DBUS_USE_SYSTEM_BUS FALSE)
+set(BUILD_MAPTOOL TRUE)
+
+# install path
+set(BIN_DIR bin)
+set(SHARE_DIR share/navit)
+set(LOCALE_DIR share)
+set(IMAGE_DIR share/navit/xpm)
+set(LIB_DIR lib)
+#message (STATUS ${CMAKE_SYSTEM_NAME})
+
+# set platform defaults
+if(WIN32)
+   set_with_reason(graphics/win32 "win32" TRUE)
+   set_with_reason(support/glib "win32" TRUE)
+   set_with_reason(support/libpng "win32" TRUE)
+   set_with_reason(support/win32 "win32" TRUE)
+   set_with_reason(speech/espeak "win32" TRUE)
+   set_with_reason(support/espeak "win32" TRUE)
+
+   # vehicle_file is broken for windows. use vehicle_wince instead
+   set_with_reason(vehicle/wince "win32: replace broken vehicle_file" TRUE)
+   set_with_reason(vehicle/file "win32: currently broken" FALSE)
+
+   # plugins currently not supported on windows
+   set_with_reason(USE_PLUGINS "win32: currently not supported" FALSE)
+
+   set_with_reason(HAVE_API_WIN32_BASE 1)
+   set_with_reason(HAVE_API_WIN32 1)
+   
+   # Image stuff
+   set_with_reason(USE_SVG "win32: urrently not supported" TRUE)
+
+   set_with_reason(SVG2PNG FALSE)
+   set_with_reason(svg2png_scaling 32 48 96)
+   set_with_reason(svg2png_scaling_flag 32 48 96)
+   set_with_reason(svg2png_scaling_nav 32 48 96)
+   
+   set(BIN_DIR ./)
+   set(SHARE_DIR ./)
+   set(LOCALE_DIR ./)
+   set(IMAGE_DIR xpm)
+
+endif()
+
+foreach(PLUMO ${ALL_PLUGINS} ${ALL_MODULES} USE_PLUGINS USE_ROUTING BUILD_MAPTOOL USE_SVG SVG2PNG DBUS_USE_SYSTEM_BUS)
+   set(OLDVALUE ${${PLUMO}})
+   OPTION(${PLUMO} "Enable/Disable module/plugin/support" ${${PLUMO}})
+   if ( NOT (${OLDVALUE} STREQUAL ${${PLUMO}} ))
+      set(${PLUMO}_REASON "User defined")
+   endif()
+endforeach()
+
+## check for all nessessary progs and libs
+INCLUDE (CheckIncludeFiles)
+
+# SVG2PNG conversion
+set (IMAGE_CONVERTER_PROGS rsvg-convert ksvgtopng ksvgtopng4)
+find_program(IMAGE_CONVERTER NAMES ${IMAGE_CONVERTER_PROGS})
+if (SVG2PNG)
+   message(STATUS ${IMAGE_CONVERTER})
+   if (NOT IMAGE_CONVERTER)
+      message(WARNING "No SVG2PNG converter found. Please install one of the following tools: ${IMAGE_CONVERTER_PROGS}")
+      set_with_reason(SVG2PNG "no converter found" FALSE)
+   endif(NOT IMAGE_CONVERTER)
+endif(SVG2PNG)
+
+if (NOT ${support/glib})
+   # Find glib
+   find_package(GTK2 2.6 COMPONENTS gtk)
+
+   if(GTK2_GLIB_INCLUDE_DIR)
+      include_directories(${GTK2_GLIB_INCLUDE_DIR} ${GTK2_GLIBCONFIG_INCLUDE_DIR})
+      #  link_directories(${GTK2_GLIB_LIBRARY})
+      set(HAVE_GLIB 1)
+      if (FOUND_GTK2)
+         list(APPEND NAVIT_LIBS ${GTK2_GLIB_LIBRARY})
+         set(HAVE_GTK2 1)
+         set_with_reason(gui/gtk "GTK libs found" TRUE)
+         set_with_reason(graphics/gtk_drawing_area "GTK libs found" TRUE)
+      endif(FOUND_GTK2)
+   else()
+      message (FATAL_ERROR "glib not found  ${GTK_glib_INCLUDE_PATH}") 
+   endif()
+endif(NOT ${support/glib})
+
+# QT stuff
+find_package(Qt4 COMPONENTS QtCore QtGui QtXml QtDeclarative QtSvg OPTIONAL)
+if (QT_FOUND)
+   if (QT_QTCORE_FOUND AND QT_QTGUI_FOUND)
+      set(graphics/qt_qpainter TRUE)# graphics/qt/qpainter/reason=default
+       
+      if (QT_QTDECLARATIVE_FOUND AND QT_QTXML_FOUND)
+         set_with_reason(gui/qml "Qt libs found" TRUE)# gui/qml/reason=default
+      endif()
+      
+      if (QT_QTSVG_FOUND)
+         set(HAVE_QT_SVG 1)
+      elseif( USE_SVG AND graphics/qt_qpainter)
+         message( WARNING "QT compiled without SVG support")
+      endif()
+      
+      include(${QT_USE_FILE})
+      list(APPEND NAVIT_LIBS ${QT_LIBRARIES})
+   endif()
+endif(QT_FOUND)
+
+# zlib
+find_package(ZLIB)
+if(ZLIB_FOUND)
+   set(HAVE_ZLIB 1)
+   list(APPEND NAVIT_LIBS ${ZLIB_LIBRARIES})
+else()
+   message(STATUS "using internal zlib")
+   set_with_reason(support/zlib "native zlib missing" TRUE)
+endif(ZLIB_FOUND)
+
+# OpenGL
+if (${graphics/opengl})
+   CHECK_INCLUDE_FILES(glc.h HAVE_GLC)
+   if (NOT HAVE_GLC)
+      set(graphics/opengl FALSE)
+      message (STATUS "no glc implementation found. Install Quesoglc for OpenGL support")
+   else()
+      find_package(OpenGL)
+      if (OPENGL_FOUND AND OPENGL_GLU_FOUND AND OPENGL_INCLUDE_DIR)
+         message (STATUS "opengl found: ${OPENGL_gl_LIBRARY}")
+         include_directories(${OPENGL_INCLUDE_DIR})
+      else()
+         set(graphics/opengl FALSE)
+         message (STATUS "opengl not found")
+      endif()   
+   endif(NOT HAVE_GLC)
+endif()
+
+# SDL
+if (${graphics/sdl})
+   find_package(SDL)
+   if (SDL_FOUND)
+      list(APPEND NAVIT_LIBS ${SDL_LIBRARY})
+      find_package(SDL_ttf)
+      if(SDLTTF_FOUND)
+         set(SDL_TTF 1)
+         list(APPEND NAVIT_LIBS ${SDLTTF_LIBRARY})
+      endif(SDLTTF_FOUND)
+   else()
+      set_with_reason(graphics/sdl "SDL libs missing" FALSE)
+   endif(SDL_FOUND)   
+
+   find_package(SDL_image)
+   if (SDLIMAGE_FOUND)
+      list(APPEND NAVIT_LIBS ${SDLIMAGE_LIBRARY})
+      set(SDL_IMAGE 1)
+   endif(SDLIMAGE_FOUND)   
+endif()
+
+# freetype
+find_package(Freetype)
+if (FREETYPE_FOUND)
+   include_directories(${FREETYPE_INCLUDE_DIRS})
+endif(FREETYPE_FOUND)
+
+CHECK_INCLUDE_FILES(wordexp.h HAVE_WORDEXP)
+if (NOT HAVE_WORDEXP)
+  set_with_reason(support/wordexp "native wordexp missing" TRUE)
+  message(STATUS "wordexp.h not found. use internal wordexp")
+endif()
+
+# gpsd
+CHECK_INCLUDE_FILES(gps.h HAVE_LIBGPS)
+if ( NOT HAVE_LIBGPS)
+   set_with_reason(vehicle/gpsd "gpsd lib missing" FALSE)
+   set_with_reason(vehicle/gpsd_dbus "gpsd lib missing" FALSE)
+endif()
+
+# gypsy
+CHECK_LIBRARY_EXISTS(gypsy gypsy_control_get_default "" GYPSY_FOUND)
+if (NOT GYPSY_FOUND)
+   set_with_reason(vehicle/gypsy "gypsy lib missing" FALSE)
+endif(NOT GYPSY_FOUND)   
+
+# gettext
+find_package(Gettext)
+
+# DBUS
+if(${binding/dbus})
+   find_package(PkgConfig)
+   if(PKG_CONFIG_FOUND)
+      pkg_check_modules(DBUS_GLIB dbus-glib-1)
+      if(DBUS_GLIB_FOUND)
+         include_directories(${DBUS_GLIB_INCLUDE_DIRS})
+         set_with_reason(speech/dbus "dbus-glib-1 found" TRUE)# speech/dbus/reason=default
+         set_with_reason(vehicle/gpsd_dbus "dbus-glib-1 found" TRUE)# vehicle/gpsd/dbus/reason=default
+      else()
+         set_with_reason(binding/dbus "dbus-glib-1 missing" FALSE)
+      endif()
+   endif()
+endif()
+
+
+# speech
+if(${speech/speech_dispatcher})
+   CHECK_INCLUDE_FILES(libspeechd.h HAVE_LIBSPEECHD)
+   if (NOT HAVE_LIBSPEECHD)
+      set_with_reason(speech/speech_dispatcher "speech_dispatcher lib missing" FALSE)
+   endif()
+endif()
+
+
+# Plugins
+if(USE_PLUGINS)
+   set(MODULE_BUILD_TYPE "MODULE")
+   list(APPEND NAVIT_COMPILE_FLAGS -fPIC)
+   message(STATUS "Use plugins: ${MODULE_BUILD_TYPE}")
+else()
+   set(MODULE_BUILD_TYPE "STATIC")
+endif(USE_PLUGINS)
+
+CHECK_INCLUDE_FILES (malloc.h HAVE_MALLOC_H)
+CHECK_INCLUDE_FILES ("sys/param.h;sys/mount.h" HAVE_SYS_MOUNT_H)
+#CHECK_INCLUDE_FILES (windows.h HAVE_API_WIN32_BASE)
+CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
+
+add_subdirectory (navit)
+add_subdirectory (man)
+
+if (GETTEXT_FOUND)
+   add_subdirectory (po)
+endif(GETTEXT_FOUND)
+
+install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/locale DESTINATION ${LOCALE_DIR})
diff --git a/navit/cmake/navit_macros.cmake b/navit/cmake/navit_macros.cmake
new file mode 100644 (file)
index 0000000..cc8b714
--- /dev/null
@@ -0,0 +1,44 @@
+macro(set_with_reason VARIABLE REASON)
+   set(${VARIABLE} ${ARGN})
+   set(${VARIABLE}_REASON ${REASON})
+endmacro()
+
+# modules may be linked static, or shared for import at runtime
+macro(add_module MODULE_PATH)
+   list(APPEND ALL_MODULES ${MODULE_PATH})
+   set(${MODULE_PATH} ${ARGN})
+   set(${MODULE_PATH}_REASON "default")
+endmacro()
+
+# plugins are always linked static
+macro(add_plugin PLUGIN_PATH)
+   list(APPEND ALL_PLUGINS ${PLUGIN_PATH})
+   set(${PLUGIN_PATH} ${ARGN})
+   set(${PLUGIN_PATH}_REASON "default")
+endmacro()
+
+macro(module_add_library MODULE_NAME )
+#   add_definitions( -DMODULE=${MODULE_NAME} -fPIC)
+   add_library(${MODULE_NAME} ${MODULE_BUILD_TYPE} ${ARGN}) 
+   SET_TARGET_PROPERTIES(${MODULE_NAME} PROPERTIES COMPILE_DEFINITIONS "MODULE=${MODULE_NAME}")
+   
+   if (USE_PLUGINS)
+      SET_TARGET_PROPERTIES( ${LIB_NAME} PROPERTIES COMPILE_FLAGS ${NAVIT_COMPILE_FLAGS})
+      TARGET_LINK_LIBRARIES(${MODULE_NAME} navit_core)
+      install(TARGETS ${MODULE_NAME}
+              DESTINATION ${LIB_DIR}/navit
+              PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
+   endif()
+#   TARGET_LINK_LIBRARIES(${MODULE_NAME} ${NAVIT_SUPPORT_LIBS})
+endmacro(module_add_library)
+
+macro(supportlib_add_library LIB_NAME )
+   add_library(${LIB_NAME} ${ARGN}) 
+   if (USE_PLUGINS)
+      SET_TARGET_PROPERTIES( ${LIB_NAME} PROPERTIES COMPILE_FLAGS ${NAVIT_COMPILE_FLAGS})
+      TARGET_LINK_LIBRARIES(${MODULE_NAME} navit_core)
+   endif()
+#   SET_TARGET_PROPERTIES(${LIB_NAME} PROPERTIES COMPILE_DEFINITIONS "MODULE=${LIB_NAME}")
+
+#   TARGET_LINK_LIBRARIES(${LIB_NAME} ${NAVIT_SUPPORT_LIBS})
+endmacro(supportlib_add_library)
diff --git a/navit/cmake/navit_xml_parser.cmake b/navit/cmake/navit_xml_parser.cmake
new file mode 100644 (file)
index 0000000..d398330
--- /dev/null
@@ -0,0 +1,8 @@
+file(STRINGS "${SRC}" TEXT_LINES REGEX "_\\(")
+file(WRITE ${DST} "// Strings from navit_shipped.xml\n")
+
+foreach (LINE ${TEXT_LINES})
+   message(STATUS ${LINE})
+   string(REGEX REPLACE ".*(_\\(\"[^\"]*\"\\)).*" "\\1\n" OUTPUT_LINE ${LINE})
+   file(APPEND ${DST} ${OUTPUT_LINE})
+endforeach()
diff --git a/navit/cmake/version.cmake b/navit/cmake/version.cmake
new file mode 100644 (file)
index 0000000..87cc1ac
--- /dev/null
@@ -0,0 +1,54 @@
+#FIND_PACKAGE(Subversion)
+
+#if (Subversion_FOUND)
+#    Subversion_WC_INFO("${PROJECT_SOURCE_DIR}" Project)
+#    MESSAGE("Current revision is ${Project_WC_REVISION}")
+#    set (VERSION ${Project_WC_REVISION})
+#    Subversion_WC_LOG(${PROJECT_SOURCE_DIR} Project)
+#    MESSAGE("Last changed log is ${Project_LAST_CHANGED_LOG}")
+#endif(Subversion_FOUND)
+
+
+#FIND_PROGRAM(Subversion_SVN_EXECUTABLE svn DOC "subversion command line client")
+#EXECUTE_PROCESS(
+#     COMMAND ${Subversion_SVN_EXECUTABLE} --version
+#     OUTPUT_VARIABLE VERSION
+#     OUTPUT_STRIP_TRAILING_WHITESPACE
+#)
+FIND_PROGRAM(GIT_EXECUTABLE git DOC "git command line client")
+
+#set (VERSION "")
+EXECUTE_PROCESS(
+     COMMAND ${GIT_EXECUTABLE} svn info
+     COMMAND grep "Revision"
+     WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
+     OUTPUT_VARIABLE VERSION
+     OUTPUT_STRIP_TRAILING_WHITESPACE
+)
+
+set( SVN_VERSION "unknown" )
+
+if (NOT VERSION)
+   FIND_PACKAGE(Subversion)
+
+   if (Subversion_FOUND)
+
+   EXECUTE_PROCESS(
+      COMMAND svnversion
+      WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
+      OUTPUT_VARIABLE VERSION
+      OUTPUT_STRIP_TRAILING_WHITESPACE
+   )
+   endif(Subversion_FOUND)
+
+   if (VERSION)
+      set( SVN_VERSION ${VERSION} )
+   endif(VERSION)
+else()
+   string(REGEX REPLACE "Revision: " "" SVN_VERSION ${VERSION})
+endif(NOT VERSION)
+
+set(NAVIT_VARIANT "-")
+
+message (STATUS "SVN-version ${SVN_VERSION}")
+CONFIGURE_FILE(${SRC} ${DST} @ONLY)
diff --git a/navit/config.h.cmake b/navit/config.h.cmake
new file mode 100644 (file)
index 0000000..7f580eb
--- /dev/null
@@ -0,0 +1,25 @@
+#cmakedefine HAVE_MALLOC_H 1
+#cmakedefine HAVE_SYS_MOUNT_H
+#cmakedefine HAVE_API_WIN32_BASE 1
+#cmakedefine HAVE_API_WIN32 1
+#cmakedefine HAVE_GLIB 1
+
+/* Versions */
+#cmakedefine PACKAGE_VERSION "@PACKAGE_VERSION@"
+#cmakedefine PACKAGE_NAME "@PACKAGE_NAME@"
+
+#cmakedefine HAVE_ZLIB 1
+
+#cmakedefine USE_ROUTING 1
+
+#cmakedefine HAVE_GTK2 1
+
+#cmakedefine USE_PLUGINS 1
+
+#cmakedefine SDL_TTF 1
+
+#cmakedefine SDL_IMAGE 1
+
+#cmakedefine HAVE_QT_SVG 1
+
+#cmakedefine DBUS_USE_SYSTEM_BUS 1
diff --git a/navit/man/CMakeLists.txt b/navit/man/CMakeLists.txt
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/navit/navit/CMakeLists.txt b/navit/navit/CMakeLists.txt
new file mode 100644 (file)
index 0000000..d477b97
--- /dev/null
@@ -0,0 +1,111 @@
+include_directories( "${PROJECT_BINARY_DIR}")
+include_directories( "${CMAKE_CURRENT_SOURCE_DIR}")
+include_directories( "${CMAKE_CURRENT_BINARY_DIR}")
+include_directories( "${CMAKE_CURRENT_SOURCE_DIR}/support")
+
+message("" )
+message("Summary:\n")
+
+foreach ( PLUGIN_PATH ${ALL_PLUGINS})
+   if (${${PLUGIN_PATH}})
+      message("Enabled   ${PLUGIN_PATH} ( ${${PLUGIN_PATH}_REASON} )")
+      
+      include_directories( "${CMAKE_CURRENT_SOURCE_DIR}/${PLUGIN_PATH}")
+      
+      string(REPLACE "/" "_" MODULE_INC ${PLUGIN_PATH})
+      list(APPEND NAVIT_SUPPORT_LIBS ${MODULE_INC})
+   else()
+      message("Disabled  ${PLUGIN_PATH} ( ${${PLUGIN_PATH}_REASON} )")
+   endif()
+endforeach()
+
+foreach ( MODULE_PATH ${ALL_MODULES})
+   if (${${MODULE_PATH}})
+      message("Enabled   ${MODULE_PATH} ( ${${MODULE_PATH}_REASON} )")
+      
+      include_directories( "${CMAKE_CURRENT_SOURCE_DIR}/${MODULE_PATH}")
+      
+      string(REPLACE "/" "_" MODULE_INC ${MODULE_PATH})
+      list(APPEND MODULES_PROTOTYPE "void\tmodule_${MODULE_INC}_init(void)\;\\n")
+      list(APPEND MODULES_FUNC "module_${MODULE_INC}_init()\;\\n")
+      
+      if (NOT USE_PLUGINS)
+         list(APPEND MODULES_NAME ${MODULE_INC})
+      endif()
+   else()
+      message("Disabled  ${MODULE_PATH} ( ${${MODULE_PATH}_REASON} )")
+   endif()
+endforeach()
+
+message( "")
+
+include_directories( "${CMAKE_CURRENT_SOURCE_DIR}/fib-1.1")
+
+# Add module paths
+foreach (CURRENT_MODULE ${ALL_PLUGINS} ${ALL_MODULES})
+   if (${${CURRENT_MODULE}})
+      add_subdirectory( "${CMAKE_CURRENT_SOURCE_DIR}/${CURRENT_MODULE}")
+   endif()
+endforeach()
+
+add_subdirectory (fib-1.1)
+
+# navit cre
+set(NAVIT_SRC announcement.c atom.c attr.c cache.c callback.c command.c compass.c config_.c coord.c country.c data_window.c debug.c 
+       event.c file.c graphics.c gui.c item.c layout.c log.c main.c map.c 
+       linguistics.c mapset.c maptype.c menu.c messages.c bookmarks.c navit.c navigation.c osd.c param.c phrase.c plugin.c popup.c
+       profile.c projection.c roadprofile.c route.c routech.c search.c speech.c start_real.c sunriset.c transform.c track.c 
+       util.c vehicle.c vehicleprofile.c xmlconfig.c )
+
+if(NOT USE_PLUGINS)
+  list(APPEND NAVIT_SRC  builtin.c)
+endif(NOT USE_PLUGINS)
+
+if (${HAVE_GLIB})
+  list(APPEND NAVIT_SRC event_glib.c)
+endif()
+
+add_library (navit_core ${NAVIT_SRC} )
+target_link_libraries(navit_core  ${MODULES_NAME} ${NAVIT_SUPPORT_LIBS} fib) # support_glib support_zlib support_win32 support_libpng support_wordexp 
+set_target_properties(navit_core PROPERTIES COMPILE_DEFINITIONS "MODULE=navit;LIBDIR=\"${CMAKE_INSTALL_PREFIX}/${LIB_DIR}\";PREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
+set_target_properties(navit_core PROPERTIES COMPILE_FLAGS ${NAVIT_COMPILE_FLAGS})
+
+# Subversion revision
+ADD_CUSTOM_TARGET(
+    version
+    cd ${CMAKE_CURRENT_SOURCE_DIR} && ${CMAKE_COMMAND} -D SRC=${CMAKE_CURRENT_SOURCE_DIR}/version.h.in
+                     -D DST=${CMAKE_CURRENT_BINARY_DIR}/version.h
+                     -P ${PROJECT_SOURCE_DIR}/cmake/version.cmake
+)
+
+ADD_CUSTOM_COMMAND(
+  OUTPUT builtin.c
+  COMMAND echo -e \"${MODULES_PROTOTYPE}\" >  ${CMAKE_CURRENT_BINARY_DIR}/builtin.c
+  COMMAND echo -e \"extern void builtin_init(void)\;\\nvoid builtin_init(void) {\" >>  ${CMAKE_CURRENT_BINARY_DIR}/builtin.c
+  COMMAND echo -e \"${MODULES_FUNC}\" >>  ${CMAKE_CURRENT_BINARY_DIR}/builtin.c
+  COMMAND echo -e "\"}\"" >>  ${CMAKE_CURRENT_BINARY_DIR}/builtin.c
+)
+
+ADD_CUSTOM_COMMAND(
+  OUTPUT navit.xml
+  DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/navit_shipped.xml
+  COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/navit_shipped.xml ${CMAKE_CURRENT_BINARY_DIR}/navit.xml
+)
+
+
+#configure_file (${CMAKE_CURRENT_SOURCE_DIR}/version.h.in ${CMAKE_CURRENT_BINARY_DIR}/version.h)
+ADD_DEPENDENCIES(navit_core version)
+
+add_executable (navit start.c navit.xml)
+target_link_libraries (navit navit_core ${NAVIT_LIBS} m)
+set_target_properties(navit PROPERTIES COMPILE_DEFINITIONS "MODULE=${MODULE_NAME}")
+
+add_subdirectory (xpm)
+
+install(TARGETS navit
+        DESTINATION ${BIN_DIR}
+        PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
+
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/navit.xml
+        DESTINATION ${SHARE_DIR}
+        PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
diff --git a/navit/navit/binding/dbus/CMakeLists.txt b/navit/navit/binding/dbus/CMakeLists.txt
new file mode 100644 (file)
index 0000000..95fbd82
--- /dev/null
@@ -0,0 +1 @@
+module_add_library(binding_dbus binding_dbus.c) 
diff --git a/navit/navit/fib-1.1/CMakeLists.txt b/navit/navit/fib-1.1/CMakeLists.txt
new file mode 100644 (file)
index 0000000..01ea116
--- /dev/null
@@ -0,0 +1,5 @@
+add_library(fib fib.c)
+if (USE_PLUGINS)
+   SET_TARGET_PROPERTIES( fib PROPERTIES COMPILE_FLAGS -fPIC)
+endif()
+
diff --git a/navit/navit/graphics/CMakeLists.txt b/navit/navit/graphics/CMakeLists.txt
new file mode 100644 (file)
index 0000000..004accf
--- /dev/null
@@ -0,0 +1,11 @@
+# Create a library called "Hello" which includes the source file "hello.cxx".
+# The extension is already found. Any number of sources could be listed here.
+
+add_subdirectory (ezxml)
+
+if (HAVE_API_WIN32_BASE)
+add_subdirectory (glib)
+add_subdirectory (win32)
+endif (HAVE_API_WIN32_BASE)
+
+add_subdirectory (zlib)
diff --git a/navit/navit/graphics/null/CMakeLists.txt b/navit/navit/graphics/null/CMakeLists.txt
new file mode 100644 (file)
index 0000000..f9cd65e
--- /dev/null
@@ -0,0 +1 @@
+module_add_library(graphics_null graphics_null.c)
diff --git a/navit/navit/graphics/opengl/CMakeLists.txt b/navit/navit/graphics/opengl/CMakeLists.txt
new file mode 100644 (file)
index 0000000..335d27f
--- /dev/null
@@ -0,0 +1,2 @@
+module_add_library(graphics_opengl graphics_opengl.c) 
+
diff --git a/navit/navit/graphics/qt_qpainter/CMakeLists.txt b/navit/navit/graphics/qt_qpainter/CMakeLists.txt
new file mode 100644 (file)
index 0000000..c87bb81
--- /dev/null
@@ -0,0 +1,10 @@
+# Create a library called "Hello" which includes the source file "hello.cxx".
+# The extension is already found. Any number of sources could be listed here.
+
+add_definitions( -DMODULE=graphics_qt_qpainter )
+
+QT4_GENERATE_MOC(graphics_qt_qpainter.cpp graphics_qt_qpainter.moc)
+
+include_directories(${CMAKE_CURRENT_BINARY_DIR})
+add_library(graphics_qt_qpainter ${MODULE_BUILD_TYPE} graphics_qt_qpainter.moc graphics_qt_qpainter.cpp  ) 
+
diff --git a/navit/navit/graphics/sdl/CMakeLists.txt b/navit/navit/graphics/sdl/CMakeLists.txt
new file mode 100644 (file)
index 0000000..b8cad60
--- /dev/null
@@ -0,0 +1,2 @@
+module_add_library(graphics_sdl graphics_sdl.c raster.c) 
+
diff --git a/navit/navit/graphics/win32/CMakeLists.txt b/navit/navit/graphics/win32/CMakeLists.txt
new file mode 100644 (file)
index 0000000..68013db
--- /dev/null
@@ -0,0 +1 @@
+module_add_library(graphics_win32 graphics_win32.c xpm2bmp.c)
diff --git a/navit/navit/gui/gtk/CMakeLists.txt b/navit/navit/gui/gtk/CMakeLists.txt
new file mode 100644 (file)
index 0000000..33b5d3c
--- /dev/null
@@ -0,0 +1,2 @@
+module_add_library(gui_gtk datawindow.c destination.c gui_gtk_statusbar.c gui_gtk_action.c gui_gtk_window.c) 
+
diff --git a/navit/navit/gui/internal/CMakeLists.txt b/navit/navit/gui/internal/CMakeLists.txt
new file mode 100644 (file)
index 0000000..4b9133c
--- /dev/null
@@ -0,0 +1 @@
+module_add_library(gui_internal gui_internal.c)
diff --git a/navit/navit/gui/qml/CMakeLists.txt b/navit/navit/gui/qml/CMakeLists.txt
new file mode 100644 (file)
index 0000000..531817e
--- /dev/null
@@ -0,0 +1,14 @@
+# Create a library called "Hello" which includes the source file "hello.cxx".
+# The extension is already found. Any number of sources could be listed here.
+
+add_definitions( -DMODULE=gui_qml )
+QT4_GENERATE_MOC(proxy.h proxy.moc)
+QT4_GENERATE_MOC(ngqpoint.h ngqpoint.moc)
+QT4_GENERATE_MOC(searchProxy.h searchProxy.moc)
+QT4_GENERATE_MOC(bookmarksProxy.h bookmarksProxy.moc)
+QT4_GENERATE_MOC(vehicleProxy.h vehicleProxy.moc)
+QT4_GENERATE_MOC(navitProxy.h navitProxy.moc)
+QT4_GENERATE_MOC(guiProxy.h guiProxy.moc)
+QT4_GENERATE_MOC(gui_qml.cpp gui_qml.moc)
+add_library(gui_qml ${MODULE_BUILD_TYPE} gui_qml.cpp proxy.moc ngqpoint.moc searchProxy.moc bookmarksProxy.moc vehicleProxy.moc navitProxy.moc guiProxy.moc gui_qml.moc) 
+
diff --git a/navit/navit/gui/win32/CMakeLists.txt b/navit/navit/gui/win32/CMakeLists.txt
new file mode 100644 (file)
index 0000000..16b653c
--- /dev/null
@@ -0,0 +1,2 @@
+module_add_library(gui_win32 gui_win32.c win32_gui_destination.c win32_gui_notify.c ceglue.c) 
+
diff --git a/navit/navit/map/binfile/CMakeLists.txt b/navit/navit/map/binfile/CMakeLists.txt
new file mode 100644 (file)
index 0000000..9b5a6cc
--- /dev/null
@@ -0,0 +1 @@
+module_add_library(map_binfile binfile.c) 
diff --git a/navit/navit/map/filter/CMakeLists.txt b/navit/navit/map/filter/CMakeLists.txt
new file mode 100644 (file)
index 0000000..15da3f3
--- /dev/null
@@ -0,0 +1 @@
+module_add_library(map_filter filter.c) 
diff --git a/navit/navit/map/mg/CMakeLists.txt b/navit/navit/map/mg/CMakeLists.txt
new file mode 100644 (file)
index 0000000..5a2dd38
--- /dev/null
@@ -0,0 +1 @@
+module_add_library(map_mg map.c block.c town.c tree.c poly.c street.c)
diff --git a/navit/navit/map/shapefile/CMakeLists.txt b/navit/navit/map/shapefile/CMakeLists.txt
new file mode 100644 (file)
index 0000000..7401f7e
--- /dev/null
@@ -0,0 +1,6 @@
+set (map_shapefile_SRC shapefile.c)
+if (NOT HAVE_SYSTEM_SHAPEFILELIB)
+       set (map_shapefile_SRC ${map_shapefile_SRC} dbfopen.c shpopen.c shptree.c)
+endif()
+
+module_add_library(map_shapefile ${map_shapefile_SRC})
diff --git a/navit/navit/map/textfile/CMakeLists.txt b/navit/navit/map/textfile/CMakeLists.txt
new file mode 100644 (file)
index 0000000..00ef821
--- /dev/null
@@ -0,0 +1 @@
+module_add_library(map_textfile textfile.c)
diff --git a/navit/navit/maptool/CMakeLists.txt b/navit/navit/maptool/CMakeLists.txt
new file mode 100644 (file)
index 0000000..848e2c1
--- /dev/null
@@ -0,0 +1,12 @@
+
+if(BUILD_MAPTOOL)
+   add_definitions( -DMODULE=maptool )
+   add_library (maptool_core boundaries.c buffer.c ch.c coastline.c geom.c itembin.c itembin_buffer.c misc.c osm.c sourcesink.c tempfile.c tile.c zip.c )
+   add_executable (maptool maptool.c)
+   target_link_libraries(maptool maptool_core navit_core ${NAVIT_LIBS} m)
+
+   install(TARGETS maptool
+           DESTINATION ${BIN_DIR}
+           PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
+   
+endif()
diff --git a/navit/navit/osd/core/CMakeLists.txt b/navit/navit/osd/core/CMakeLists.txt
new file mode 100644 (file)
index 0000000..8423146
--- /dev/null
@@ -0,0 +1 @@
+module_add_library(osd_core osd_core.c)
diff --git a/navit/navit/speech/cmdline/CMakeLists.txt b/navit/navit/speech/cmdline/CMakeLists.txt
new file mode 100644 (file)
index 0000000..f8c00ad
--- /dev/null
@@ -0,0 +1 @@
+module_add_library(speech_cmdline speech_cmdline.c)
diff --git a/navit/navit/speech/dbus/CMakeLists.txt b/navit/navit/speech/dbus/CMakeLists.txt
new file mode 100644 (file)
index 0000000..8741301
--- /dev/null
@@ -0,0 +1 @@
+module_add_library(speech_dbus speech_dbus.c) 
diff --git a/navit/navit/speech/speech_dispatcher/CMakeLists.txt b/navit/navit/speech/speech_dispatcher/CMakeLists.txt
new file mode 100644 (file)
index 0000000..897a8c0
--- /dev/null
@@ -0,0 +1 @@
+module_add_library(speech_speech_dispatcher speech_speech_dispatcher.c)
diff --git a/navit/navit/support/ezxml/CMakeLists.txt b/navit/navit/support/ezxml/CMakeLists.txt
new file mode 100644 (file)
index 0000000..77cb571
--- /dev/null
@@ -0,0 +1,2 @@
+add_definitions( -DMODULE=support_ezxml -DEZXML_NOMMAP )
+add_library(support_ezxml ezxml.c ezxml_init.c ) 
diff --git a/navit/navit/support/glib/CMakeLists.txt b/navit/navit/support/glib/CMakeLists.txt
new file mode 100644 (file)
index 0000000..658cac6
--- /dev/null
@@ -0,0 +1,4 @@
+add_definitions( -DMODULE=support_glib )
+add_library(support_glib STATIC fake.c galiasdef.c gatomic.c gerror.c ghash.c 
+glib_init.c glist.c gmem.c gmessages.c gprimes.c gprintf.c gslice.c 
+gstrfuncs.c gstring.c gutf8.c gutils.c) 
diff --git a/navit/navit/support/libpng/CMakeLists.txt b/navit/navit/support/libpng/CMakeLists.txt
new file mode 100644 (file)
index 0000000..cb8ea6f
--- /dev/null
@@ -0,0 +1,3 @@
+add_definitions( -DMODULE=support_libpng )
+add_library(support_libpng png.c pngerror.c pngget.c pngmem.c pngread.c pngrio.c pngrtran.c pngrutil.c pngset.c pngtrans.c libpng_init.c) 
+
diff --git a/navit/navit/support/win32/CMakeLists.txt b/navit/navit/support/win32/CMakeLists.txt
new file mode 100644 (file)
index 0000000..2b1db52
--- /dev/null
@@ -0,0 +1,3 @@
+add_definitions( -DMODULE=support_win32 )
+add_library(support_win32 mmap.c win32_init.c ConvertUTF.c) 
+
diff --git a/navit/navit/support/wordexp/CMakeLists.txt b/navit/navit/support/wordexp/CMakeLists.txt
new file mode 100644 (file)
index 0000000..650c9d1
--- /dev/null
@@ -0,0 +1 @@
+supportlib_add_library(support_wordexp wordexp.c wordexp_init.c glob.c)
diff --git a/navit/navit/support/zlib/CMakeLists.txt b/navit/navit/support/zlib/CMakeLists.txt
new file mode 100644 (file)
index 0000000..80bcffd
--- /dev/null
@@ -0,0 +1,2 @@
+add_definitions( -DMODULE=support_zlib )
+add_library(support_zlib adler32.c crc32.c infback.c inffast.c inflate.c inftrees.c zutil.c zlib_init.c) 
diff --git a/navit/navit/vehicle/demo/CMakeLists.txt b/navit/navit/vehicle/demo/CMakeLists.txt
new file mode 100644 (file)
index 0000000..e7f57f9
--- /dev/null
@@ -0,0 +1 @@
+module_add_library(vehicle_demo vehicle_demo.c)
diff --git a/navit/navit/vehicle/file/CMakeLists.txt b/navit/navit/vehicle/file/CMakeLists.txt
new file mode 100644 (file)
index 0000000..ed71e92
--- /dev/null
@@ -0,0 +1,3 @@
+module_add_library(vehicle_file vehicle_file.c)
+module_add_library(vehicle_pipe vehicle_pipe.c)
+module_add_library(vehicle_socket vehicle_socket.c)
diff --git a/navit/navit/vehicle/gpsd/CMakeLists.txt b/navit/navit/vehicle/gpsd/CMakeLists.txt
new file mode 100644 (file)
index 0000000..913bc13
--- /dev/null
@@ -0,0 +1,2 @@
+module_add_library(vehicle_gpsd vehicle_gpsd.c) 
+
diff --git a/navit/navit/vehicle/gpsd_dbus/CMakeLists.txt b/navit/navit/vehicle/gpsd_dbus/CMakeLists.txt
new file mode 100644 (file)
index 0000000..435a987
--- /dev/null
@@ -0,0 +1,2 @@
+module_add_library(vehicle_gpsd_dbus vehicle_gpsd_dbus.c) 
+
diff --git a/navit/navit/vehicle/gypsy/CMakeLists.txt b/navit/navit/vehicle/gypsy/CMakeLists.txt
new file mode 100644 (file)
index 0000000..a57a8fb
--- /dev/null
@@ -0,0 +1,2 @@
+module_add_library(vehicle_gypsy vehicle_gypsy.c) 
+
diff --git a/navit/navit/vehicle/wince/CMakeLists.txt b/navit/navit/vehicle/wince/CMakeLists.txt
new file mode 100644 (file)
index 0000000..d35904a
--- /dev/null
@@ -0,0 +1 @@
+module_add_library(vehicle_wince vehicle_wince.c)
diff --git a/navit/navit/version.h.in b/navit/navit/version.h.in
new file mode 100644 (file)
index 0000000..cc58ebe
--- /dev/null
@@ -0,0 +1,2 @@
+#cmakedefine SVN_VERSION "@SVN_VERSION@"
+#cmakedefine NAVIT_VARIANT "@NAVIT_VARIANT@"
diff --git a/navit/navit/xpm/CMakeLists.txt b/navit/navit/xpm/CMakeLists.txt
new file mode 100644 (file)
index 0000000..fad65cc
--- /dev/null
@@ -0,0 +1,80 @@
+macro(convert_svg2png IMAGE_INPUT IMAGE_OUTPUT SCALE)
+   if(${IMAGE_CONVERTER} MATCHES "rsvg-convert")
+      if (${SCALE} GREATER 0)
+         set(SCALE_ARGS --width=${SCALE} --height=${SCALE})
+      endif()
+      set(COMMAND_ARGS ${SCALE_ARGS} --output ${IMAGE_OUTPUT} ${IMAGE_INPUT})
+   elseif(${IMAGE_CONVERTER} MATCHES "ksvgtopng")
+      set (NEW_SCALE ${SCALE})
+      if (${SCALE} EQUAL 0)
+         file(STRINGS  ${IMAGE_INPUT} NEW_SCALE_LINE REGEX "width=\"[0-9pxt.]*\"")
+         string(REGEX REPLACE ".*width=\"([0-9]*).*\"" "\\1" NEW_SCALE ${NEW_SCALE_LINE})
+         message(STATUS "newscale='${NEW_SCALE}'")
+       endif()
+      set(COMMAND_ARGS ${NEW_SCALE} ${NEW_SCALE}  ${IMAGE_INPUT} --output ${IMAGE_OUTPUT})
+   else()
+      message(FATAL_ERROR "no svg2png converter defined here.")
+   endif()
+
+   add_custom_command (
+      OUTPUT ${IMAGE_OUTPUT}
+      DEPENDS ${IMAGE_INPUT}
+      COMMAND ${IMAGE_CONVERTER} ${COMMAND_ARGS}
+   )
+endmacro()
+
+macro(add_scale_targets IMAGE_NAME)
+   foreach (CURRENT_SCALE ${ARGN})
+      convert_svg2png(
+         ${CMAKE_CURRENT_SOURCE_DIR}/${SVG} 
+         ${CMAKE_CURRENT_BINARY_DIR}/${IMAGE_NAME}_${CURRENT_SCALE}_${CURRENT_SCALE}.png 
+         ${CURRENT_SCALE}
+      )
+      list(APPEND IMAGE_TARGETS ${CMAKE_CURRENT_BINARY_DIR}/${IMAGE_NAME}_${CURRENT_SCALE}_${CURRENT_SCALE}.png)
+   endforeach()
+endmacro()
+
+#install(FILES  desktop_icons/navit.desktop DESTINATION share/applications)
+#install(FILES  desktop_icons/22x22/navit.png DESTINATION share/icons/hicolor/22x22/apps)
+#install(FILES  desktop_icons/128x128/navit.png DESTINATION share/icons/hicolor/128x128/apps)
+#install(FILES  bench.xpm DESTINATION )
+
+FILE(GLOB XPM_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.xpm")
+list(APPEND IMAGE_TARGETS ${XPM_FILES})
+
+if (USE_SVG OR SVG2PNG)
+   FILE(GLOB SVG_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.svg")
+   
+   if(USE_SVG)
+      list(APPEND IMAGE_TARGETS ${SVG_FILES})
+   endif(USE_SVG)
+
+   if (SVG2PNG)
+      foreach (SVG ${SVG_FILES})
+            string(REPLACE ".svg" "" IMAGE ${SVG})
+            
+            if ( DEFINED svg2png_scaling_nav AND ${IMAGE} MATCHES "^nav_")
+               add_scale_targets(${IMAGE} ${svg2png_scaling_nav})
+            elseif( DEFINED svg2png_scaling_flag AND ${IMAGE} MATCHES "^country_")
+               add_scale_targets(${IMAGE} ${svg2png_scaling_flag})
+            elseif( DEFINED svg2png_scaling)
+               add_scale_targets(${IMAGE} ${svg2png_scaling})
+            endif()
+            
+            convert_svg2png (
+               "${CMAKE_CURRENT_SOURCE_DIR}/${SVG}"
+               "${CMAKE_CURRENT_BINARY_DIR}/${IMAGE}.png"
+               0
+            )
+            list(APPEND IMAGE_TARGETS "${CMAKE_CURRENT_BINARY_DIR}/${IMAGE}.png")
+      endforeach()
+   endif(SVG2PNG)
+endif(USE_SVG OR SVG2PNG)
+
+add_custom_target(images ALL DEPENDS ${IMAGE_TARGETS})
+
+install(
+   FILES ${IMAGE_TARGETS}
+   DESTINATION ${IMAGE_DIR}
+   PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
+)
diff --git a/navit/po/CMakeLists.txt b/navit/po/CMakeLists.txt
new file mode 100644 (file)
index 0000000..e73c79a
--- /dev/null
@@ -0,0 +1,53 @@
+FIND_PROGRAM(XGETTEXT xgettext)
+
+set(POTFILES
+      ${PROJECT_SOURCE_DIR}/navit/main.c
+      ${PROJECT_SOURCE_DIR}/navit/navigation.c
+      ${PROJECT_SOURCE_DIR}/navit/navit.c
+      ${PROJECT_SOURCE_DIR}/navit/popup.c
+      ${PROJECT_SOURCE_DIR}/navit/country.c
+      ${PROJECT_SOURCE_DIR}/navit/gui/gtk/destination.c
+      ${PROJECT_SOURCE_DIR}/navit/gui/gtk/gui_gtk_action.c
+      ${PROJECT_SOURCE_DIR}/navit/gui/gtk/gui_gtk_statusbar.c
+      ${PROJECT_SOURCE_DIR}/navit/gui/internal/gui_internal.c
+      navit_shipped.c
+)     
+
+ADD_CUSTOM_COMMAND(
+   OUTPUT navit_shipped.c
+   DEPENDS ${PROJECT_SOURCE_DIR}/navit/navit_shipped.xml
+   COMMAND ${CMAKE_COMMAND} -D SRC=${PROJECT_SOURCE_DIR}/navit/navit_shipped.xml -D DST=${CMAKE_CURRENT_BINARY_DIR}/navit_shipped.c
+                     -P ${PROJECT_SOURCE_DIR}/cmake/navit_xml_parser.cmake
+)
+
+
+ADD_CUSTOM_COMMAND(
+   OUTPUT navit.po
+   DEPENDS ${POTFILES}
+   COMMAND ${XGETTEXT} --no-location --default-domain=navit --add-comments --keyword=_ --keyword=_n ${POTFILES}
+)
+
+FILE(GLOB POIN_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.po.in")
+
+string(REPLACE ".po.in" "" LANGUAGES "${POIN_FILES}")
+string(REPLACE ".po.in" ".mo" MOFILES "${POIN_FILES}")
+
+foreach (LANG ${LANGUAGES})
+   ADD_CUSTOM_COMMAND(
+      OUTPUT ${LANG}.po
+      DEPENDS navit.po
+      COMMAND sed 's/^\"Project-Id-Version:.*/\"Project-Id-Version: ${PACKAGE_STRING}\\\\n\"/' <  "${CMAKE_CURRENT_SOURCE_DIR}/${LANG}.po.in" | ${GETTEXT_MSGMERGE_EXECUTABLE} --no-fuzzy-matching --verbose -o "${CMAKE_CURRENT_BINARY_DIR}/${LANG}.po" - navit.po
+   )
+endforeach(LANG ${LANGUAGES})
+
+foreach (LANG ${LANGUAGES})
+   ADD_CUSTOM_COMMAND(
+      OUTPUT ${LANG}.mo
+      DEPENDS ${LANG}.po
+      COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} --check --verbose --statistics --output-file="${CMAKE_CURRENT_BINARY_DIR}/${LANG}.mo" "${CMAKE_CURRENT_BINARY_DIR}/${LANG}.po" 
+      COMMAND ${CMAKE_COMMAND} -E make_directory "${PROJECT_BINARY_DIR}/locale/${LANG}/LC_MESSAGES" 
+      COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_BINARY_DIR}/${LANG}.mo" "${PROJECT_BINARY_DIR}/locale/${LANG}/LC_MESSAGES/navit.mo"
+   )
+endforeach(LANG ${LANGUAGES})
+
+add_custom_target(locales ALL DEPENDS  ${MOFILES})