|
From: Stefano A. <xa...@us...> - 2009-12-23 22:49:06
|
Module: performous
Branch: master
Commit: ba68c919e21177708790fbadc4e31a2a91d81c99
Author: Xaldyz <xa...@us...>
Date: Wed Dec 23 23:46:43 2009 +0100
Added FindMsgfmt.cmake
Fixed Msgfmt script to don't break the compilation if there is no msgfmt program available
Added locale support into Linux
---
CMakeLists.txt | 21 +++++++++++++++------
cmake/Modules/FindGettext.cmake | 7 -------
cmake/Modules/FindMsgfmt.cmake | 13 +++++++++++++
game/config.cmake.hh | 2 ++
game/main.cc | 8 +++++---
lang/CMakeLists.txt | 4 ++--
6 files changed, 37 insertions(+), 18 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 00e61e3..21bfaa6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -32,23 +32,32 @@ mark_as_advanced(SHARE_INSTALL)
include_directories(libs/plugin++/include)
include_directories(libs/libda/include)
-add_subdirectory(libs)
-add_subdirectory(themes)
-add_subdirectory(data)
-add_subdirectory(game)
-add_subdirectory(docs)
+#need to put here do setting LOCALE_DIR variable
find_package(Gettext)
if(Gettext_FOUND)
if(WIN32)
SET(LOCALE_DIR "../locale")
+ else()#other os
+ SET(LOCALE_DIR "/usr/share/locale")
endif(WIN32)
if(NOT LOCALE_DIR)
message(QUIET "Set LOCALE_DIR to path to get Gettext working")
else()
- add_subdirectory(lang)
+ find_package(msgfmt)
+ if(Msgfmt_FOUND)
+ message(STATUS "Found msgfmt to convert language file. Translation enabled")
+ add_subdirectory(lang)
+ else()
+ message(STATUS "Cannot find msgfmt to convert language file. Translation won't be enabled")
+ endif()
endif(NOT LOCALE_DIR)
endif(Gettext_FOUND)
+add_subdirectory(libs)
+add_subdirectory(themes)
+add_subdirectory(data)
+add_subdirectory(game)
+add_subdirectory(docs)
set(LIB_SUFFIX "" CACHE STRING "Optional suffix to use on lib folders (e.g. 64 for lib64)")
diff --git a/cmake/Modules/FindGettext.cmake b/cmake/Modules/FindGettext.cmake
index d29827d..251dc88 100644
--- a/cmake/Modules/FindGettext.cmake
+++ b/cmake/Modules/FindGettext.cmake
@@ -34,10 +34,3 @@ find_path(Gettext_INCLUDE_DIR
set(Gettext_PROCESS_INCLUDES Gettext_INCLUDE_DIR)
libfind_process(Gettext)
-
-if(Gettext_FOUND)
- find_program(MSGFMT msgfmt)
- if(NOT MSGFMT)
- message(FATAL_ERROR "Cannot find msgfmt to convert language file. Please specify path of msgfmt")
- endif(NOT MSGFMT)
-endif(Gettext_FOUND)
\ No newline at end of file
diff --git a/cmake/Modules/FindMsgfmt.cmake b/cmake/Modules/FindMsgfmt.cmake
new file mode 100644
index 0000000..8238cd1
--- /dev/null
+++ b/cmake/Modules/FindMsgfmt.cmake
@@ -0,0 +1,13 @@
+# - Try to find Msgfmt
+# Once done, this will define
+#
+# Msgfmt_FOUND - system has Gettext
+# Msgfmt_BIN - path to binary file
+
+find_program(Msgfmt_BIN msgfmt)
+
+if(Msgfmt_BIN)
+ set(Msgfmt_FOUND 1)
+else()
+ set(Msgfmt_FOUND 0)
+endif(Msgfmt_BIN)
\ No newline at end of file
diff --git a/game/config.cmake.hh b/game/config.cmake.hh
index d4b5fc0..300ba05 100644
--- a/game/config.cmake.hh
+++ b/game/config.cmake.hh
@@ -4,6 +4,8 @@
#ifndef PERFORMOUS_CONFIG_HH
#define PERFORMOUS_CONFIG_HH
+#define LOCALEDIR "@LOCALE_DIR@"
+
#define PACKAGE "@CMAKE_PROJECT_NAME@"
#define VERSION "@PROJECT_VERSION@"
diff --git a/game/main.cc b/game/main.cc
index 3e9414a..bcf3062 100644
--- a/game/main.cc
+++ b/game/main.cc
@@ -207,10 +207,12 @@ template <typename Container> void confOverride(Container const& c, std::string
}
int main(int argc, char** argv) {
+#ifdef USE_GETTEXT
// initialize gettext
- setlocale (LC_ALL, "");
- bindtextdomain (PACKAGE, "../locale");
- textdomain (PACKAGE);
+ setlocale (LC_MESSAGES, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+#endif
std::cout << PACKAGE " " VERSION << std::endl;
std::signal(SIGINT, quit);
diff --git a/lang/CMakeLists.txt b/lang/CMakeLists.txt
index 5dcecef..7c141dd 100644
--- a/lang/CMakeLists.txt
+++ b/lang/CMakeLists.txt
@@ -3,6 +3,6 @@ file(GLOB LANGUAGES *.po)
foreach(language ${LANGUAGES})
string(REGEX REPLACE "(.+(\\\\|/))+" "" language ${language})
string(REGEX REPLACE "\\.po$" "" language ${language})
- execute_process(COMMAND ${MSGFMT} ${CMAKE_CURRENT_SOURCE_DIR}/${language}.po -o ${CMAKE_CURRENT_BINARY_DIR}/${language}.mo)
- install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${language}.mo DESTINATION ${LOCALE_DIR}/${language}/LC_MESSAGES/${CMAKE_PROJECT_NAME}.mo)
+ execute_process(COMMAND ${Msgfmt_BIN} ${CMAKE_CURRENT_SOURCE_DIR}/${language}.po -o ${CMAKE_CURRENT_BINARY_DIR}/${language}.mo)
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${language}.mo DESTINATION ${LOCALE_DIR}/${language}/LC_MESSAGES RENAME ${CMAKE_PROJECT_NAME}.mo)
endforeach(language)
\ No newline at end of file
|