summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Wildemann <gta04@metalstrolche.de>2017-04-10 16:52:47 +0200
committerStefan Wildemann <gta04@metalstrolche.de>2017-04-10 16:57:22 +0200
commitefdf6144474d9aeb4cb962887c39f18f427cc248 (patch)
tree9cd5800d59dcbd73f2db3986cb748282d4c4ba8e
parentf466ed624c282e30869fa1cc04f191812e0b4888 (diff)
downloadnavit-efdf6144474d9aeb4cb962887c39f18f427cc248.tar.gz
Support unusual building
This patch updates navits cmake system to allow more unusual build and install path configurations as well as renaming the navit binary. This sis required for restricted environments like Sailfish OS harbour that do not follow usual path conventions.
-rwxr-xr-xCMakeLists.txt29
-rw-r--r--man/CMakeLists.txt6
-rw-r--r--navit/CMakeLists.txt4
-rw-r--r--navit/main.c6
-rw-r--r--navit/xpm/CMakeLists.txt11
-rw-r--r--navit/xpm/desktop_icons/navit.desktop.in (renamed from navit/xpm/desktop_icons/navit.desktop)4
-rw-r--r--po/CMakeLists.txt2
7 files changed, 40 insertions, 22 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index fe9457e23..5e8faf5b4 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -18,7 +18,7 @@ set(NAVIT_VERSION_PATCH "1")
set(PACKAGE_VERSION "${NAVIT_VERSION_MAJOR}.${NAVIT_VERSION_MINOR}.${NAVIT_VERSION_PATCH}")
set(PACKAGE_NAME "navit-git")
-set(PACKAGE "navit")
+set(PACKAGE "navit" CACHE STRING "Navit package name")
set(PACKAGE_STRING "${PACKAGE} ${PACKAGE_VERSION}")
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")
@@ -28,12 +28,19 @@ IF(NOT CMAKE_BUILD_TYPE)
SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." FORCE)
ENDIF(NOT CMAKE_BUILD_TYPE)
+# binary name
+set(NAVIT_BINARY navit CACHE PATH "Navit binary name")
# install path
-set(BIN_DIR bin)
-set(SHARE_DIR share/navit)
-set(LOCALE_DIR share/locale)
-set(IMAGE_DIR share/navit/xpm)
-set(MAN_DIR share/man/man1)
+set(BIN_DIR bin CACHE PATH "Navit bin path")
+add_definitions ("-DBIN_DIR=\"${BIN_DIR}\"")
+set(SHARE_DIR share/navit CACHE PATH "Navit share path")
+add_definitions ("-DSHARE_DIR=\"${SHARE_DIR}\"")
+set(LOCALE_DIR share/locale CACHE PATH "Navit locale path")
+add_definitions ("-DLOCALE_DIR=\"${LOCALE_DIR}\"")
+set(IMAGE_DIR share/navit/xpm CACHE PATH "Navit image path")
+add_definitions ("-DIMAGE_DIR=\"${IMAGE_DIR}\"")
+set(MAN_DIR share/man/man1 CACHE PATH "Navit man path")
+add_definitions ("-DMAN_DIR=\"${MAN_DIR}\"")
# LIB_DIR
IF(UNIX AND NOT ANDROID AND NOT APPLE)
IF (NOT LIBDIR)
@@ -41,10 +48,10 @@ IF(UNIX AND NOT ANDROID AND NOT APPLE)
MESSAGE(STATUS "You can set it manually with -DLIBDIR=<value>")
# check 64 bit
IF (CMAKE_SIZEOF_VOID_P EQUAL 4)
- SET(LIB_DIR lib)
+ SET(LIB_DIR lib CACHE PATH "Navit 32bit bin path")
MESSAGE(STATUS " LIB_DIR (highest subdirectory if LIBDIR) is set to '${LIB_DIR}'")
ELSE (CMAKE_SIZEOF_VOID_P EQUAL 4)
- SET(LIB_DIR lib64)
+ SET(LIB_DIR lib64 CACHE PATH "Navit 64bit bin path")
MESSAGE(STATUS " LIB_DIR (highest subdirectory if LIBDIR) is set to '${LIB_DIR}'")
ENDIF (CMAKE_SIZEOF_VOID_P EQUAL 4)
ELSE (NOT LIBDIR)
@@ -52,12 +59,12 @@ IF(UNIX AND NOT ANDROID AND NOT APPLE)
MESSAGE(STATUS " LIB_DIR (highest subdirectory if LIBDIR) is set to '${LIB_DIR}'")
ENDIF (NOT LIBDIR)
ELSE (UNIX AND NOT ANDROID AND NOT APPLE)
- SET(LIB_DIR lib)
+ SET(LIB_DIR lib CACHE PATH "Navit unix bin path")
ENDIF (UNIX AND NOT ANDROID AND NOT APPLE)
-
foreach(EXTRA_MODULE ${EXTRA_MODULES})
add_module(${EXTRA_MODULE} "extra module specified" TRUE)
endforeach()
+add_definitions ("-DLIB_DIR=\"${LIB_DIR}\"")
if (EXTRA_LIBS)
list(APPEND NAVIT_LIBS ${EXTRA_LIBS})
@@ -634,7 +641,7 @@ if(CMAKE_SIZEOF_VOID_P LESS 8)
set_with_reason(BUILD_MAPTOOL "maptool works only on 64 bit architectures" FALSE)
endif()
-set(LOCALEDIR "${LOCALE_DIR}/locale")
+set(LOCALEDIR "${LOCALE_DIR}")
find_program(BZCAT NAMES bzcat)
if (SAMPLE_MAP)
diff --git a/man/CMakeLists.txt b/man/CMakeLists.txt
index ceb2ca3c9..886dc1227 100644
--- a/man/CMakeLists.txt
+++ b/man/CMakeLists.txt
@@ -1 +1,5 @@
-INSTALL(FILES maptool.1 navit.1 DESTINATION ${MAN_DIR})
+INSTALL(FILES maptool.1 DESTINATION ${MAN_DIR})
+if(NOT DEFINED NAVIT_BINARY)
+ set(NAVIT_BINARY navit)
+endif()
+INSTALL(FILES navit.1 DESTINATION ${MAN_DIR} RENAME ${NAVIT_BINARY}.1)
diff --git a/navit/CMakeLists.txt b/navit/CMakeLists.txt
index 5333c9ff4..c9d56cd34 100644
--- a/navit/CMakeLists.txt
+++ b/navit/CMakeLists.txt
@@ -81,7 +81,9 @@ if(NOT ANDROID)
endif()
add_executable(navit ${NAVIT_START_SRC})
target_link_libraries (navit ${NAVIT_LIBNAME})
- set_target_properties(navit PROPERTIES COMPILE_DEFINITIONS "MODULE=${MODULE_NAME}")
+ if(DEFINED NAVIT_BINARY)
+ set_target_properties(navit PROPERTIES OUTPUT_NAME ${NAVIT_BINARY})
+ endif(DEFINED NAVIT_BINARY)
if (BUILD_BUNDLE)
add_custom_command(OUTPUT resources/share COMMAND mkdir -p resources/share)
set_source_files_properties(resources/share resources/Icon.png resources/Default.png PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
diff --git a/navit/main.c b/navit/main.c
index 986bcb13b..a64ed1067 100644
--- a/navit/main.c
+++ b/navit/main.c
@@ -81,9 +81,9 @@ setenv(char *var, char *val, int overwrite)
* '~' replaced with HOME
*/
static char *environment_vars[][5]={
- {"NAVIT_LIBDIR", ":", "::/navit", ":\\lib", ":/lib"},
- {"NAVIT_SHAREDIR", ":", ":/share/navit", ":", ":/share"},
- {"NAVIT_LOCALEDIR", ":/../locale",":/share/locale",":\\locale", ":/locale"},
+ {"NAVIT_LIBDIR", ":", ":/"LIB_DIR"/navit",":\\lib", ":/lib"},
+ {"NAVIT_SHAREDIR", ":", ":/"SHARE_DIR, ":", ":/share"},
+ {"NAVIT_LOCALEDIR", ":/../locale",":/"LOCALE_DIR, ":\\locale", ":/locale"},
{"NAVIT_USER_DATADIR",":", "~/.navit", ":\\data", ":/home"},
{"NAVIT_LOGFILE", NULL, NULL, ":\\navit.log",NULL},
{"NAVIT_LIBPREFIX", "*/.libs/", NULL, NULL, NULL},
diff --git a/navit/xpm/CMakeLists.txt b/navit/xpm/CMakeLists.txt
index a2ce9e4b4..096d76ff0 100644
--- a/navit/xpm/CMakeLists.txt
+++ b/navit/xpm/CMakeLists.txt
@@ -66,9 +66,14 @@ macro(add_scale_targets IMAGE_SRC IMAGE_NAME)
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)
+if(NOT DEFINED ${NAVIT_BINARY})
+ set(NAVIT_BINARY navit)
+endif()
+#patch binary name in desktop file
+configure_file(desktop_icons/navit.desktop.in desktop_icons/${PACKAGE}.desktop)
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/desktop_icons/${PACKAGE}.desktop DESTINATION share/applications)
+install(FILES desktop_icons/22x22/navit.png DESTINATION share/icons/hicolor/22x22/apps RENAME ${PACKAGE}.png)
+install(FILES desktop_icons/128x128/navit.png DESTINATION share/icons/hicolor/128x128/apps RENAME ${PACKAGE}.png)
#install(FILES bench.xpm DESTINATION )
if (USE_SVG OR SVG2PNG)
diff --git a/navit/xpm/desktop_icons/navit.desktop b/navit/xpm/desktop_icons/navit.desktop.in
index ff66f8aeb..03ce80da1 100644
--- a/navit/xpm/desktop_icons/navit.desktop
+++ b/navit/xpm/desktop_icons/navit.desktop.in
@@ -6,8 +6,8 @@ Name[fr]=Navit
Comment=The open source vector based navigation program with routing engine
Comment[de]=Ein vektorbasiertes Navigationsprogramm
Comment[fr]=Le logiciel opensource de navigation vectorielle
-Exec=navit
-Icon=navit
+Exec=@NAVIT_BINARY@
+Icon=@PACKAGE@
StartupNotify=true
Terminal=false
Type=Application
diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt
index de83bb52b..1967005b4 100644
--- a/po/CMakeLists.txt
+++ b/po/CMakeLists.txt
@@ -84,7 +84,7 @@ foreach (LANG ${LANGUAGES})
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_BINARY_DIR}/${LANG}.mo" "${PROJECT_BINARY_DIR}/locale/${LANG}/LC_MESSAGES/navit.mo"
)
SET(MOFILES ${CMAKE_CURRENT_BINARY_DIR}/${LANG}.mo ${MOFILES})
- INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${LANG}.mo DESTINATION ${LOCALE_DIR}/${LANG}/LC_MESSAGES RENAME navit.mo)
+ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${LANG}.mo DESTINATION ${LOCALE_DIR}/${LANG}/LC_MESSAGES RENAME ${PACKAGE}.mo)
endforeach(LANG ${LANGUAGES})
add_custom_target(locales ALL DEPENDS ${MOFILES})