summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Wildemann <metalstrolch@users.noreply.github.com>2017-04-24 11:19:49 +0200
committerGitHub <noreply@github.com>2017-04-24 11:19:49 +0200
commitf221cd197fc8ef915b76c3b7b170ccd76178ad74 (patch)
tree90782890a6d126983d22244e473eb7c3cca9420c
parentc25b3e102955e12ff1409c0a85a15f848e2d8225 (diff)
downloadnavit-f221cd197fc8ef915b76c3b7b170ccd76178ad74.tar.gz
Fix: Allow unusual building (#215)R7404
* 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. You can now: redefine the binary name (NAVIT_BINARY) control the translation file names (PACKAGE) select the library directory (LIB_DIR) select the share directory (SHARE_DIR) select the locales directory (LOCALE_DIR) select the images directory (IMAGE_DIR) select the man directory (MAN_DIR) the .desktop file is updated and the man file is renamed according to this and the install prefix is still honoured.
-rwxr-xr-xCMakeLists.txt29
-rw-r--r--cmake/navit_macros.cmake2
-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
8 files changed, 41 insertions, 23 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index fe9457e23..310639de1 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 STRING "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/navit 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/navit 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/navit 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/cmake/navit_macros.cmake b/cmake/navit_macros.cmake
index 3baf5c9ed..6591d7463 100644
--- a/cmake/navit_macros.cmake
+++ b/cmake/navit_macros.cmake
@@ -70,7 +70,7 @@ macro(module_add_library MODULE_NAME )
set_target_properties( ${MODULE_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/.libs")
install(TARGETS ${MODULE_NAME}
- DESTINATION ${LIB_DIR}/navit/${${MODULE_NAME}_TYPE}
+ DESTINATION ${LIB_DIR}/${${MODULE_NAME}_TYPE}
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
endif()
endmacro(module_add_library)
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..25dcb5267 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, ":\\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..c9153839a 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 CACHE STRING "Navit binary name not defined")
+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})