Make gettext optional

master
Giuseppe Bilotta 2011-07-21 07:53:13 +02:00
parent 89b8b792c1
commit 89af509d10
2 changed files with 48 additions and 27 deletions

View File

@ -5,6 +5,16 @@ if(RUN_IN_PLACE)
add_definitions ( -DRUN_IN_PLACE ) add_definitions ( -DRUN_IN_PLACE )
endif(RUN_IN_PLACE) endif(RUN_IN_PLACE)
if(USE_GETTEXT)
add_definitions( -DUSE_GETTEXT )
message(STATUS "GetText enabled")
else()
set(GETTEXT_INCLUDE_DIR "")
set(GETTEXT_BIN_DIR "")
set(GETTEXT_LIBRARIES "")
message(STATUS "GetText disabled")
endif(USE_GETTEXT)
if(NOT MSVC) if(NOT MSVC)
set(USE_GPROF 0 CACHE BOOL "Use -pg flag for g++") set(USE_GPROF 0 CACHE BOOL "Use -pg flag for g++")
endif() endif()
@ -27,14 +37,16 @@ if(WIN32)
CACHE FILEPATH "Path to zlibwapi.lib") CACHE FILEPATH "Path to zlibwapi.lib")
set(ZLIB_DLL "${PROJECT_SOURCE_DIR}/../../zlib125dll/dll32/zlibwapi.dll" set(ZLIB_DLL "${PROJECT_SOURCE_DIR}/../../zlib125dll/dll32/zlibwapi.dll"
CACHE FILEPATH "Path to zlibwapi.dll (for installation)") CACHE FILEPATH "Path to zlibwapi.dll (for installation)")
set(IRRLICHT_SOURCE_DIR "${PROJECT_SOURCE_DIR}/../../irrlicht-1.7.2"
CACHE PATH "irrlicht dir")
if (USE_GETTEXT)
set(GETTEXT_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/../../gettext/include" set(GETTEXT_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/../../gettext/include"
CACHE PATH "gettext include directory") CACHE PATH "gettext include directory")
set(GETTEXT_BIN_DIR "${PROJECT_SOURCE_DIR}/../../gettext/bin" set(GETTEXT_BIN_DIR "${PROJECT_SOURCE_DIR}/../../gettext/bin"
CACHE PATH "gettext bin directory") CACHE PATH "gettext bin directory")
set(GETTEXT_LIBRARIES "${PROJECT_SOURCE_DIR}/../../gettext/lib/libintl.lib" set(GETTEXT_LIBRARIES "${PROJECT_SOURCE_DIR}/../../gettext/lib/libintl.lib"
CACHE FILEPATH "gettext libintl.lib") CACHE FILEPATH "gettext libintl.lib")
set(IRRLICHT_SOURCE_DIR "${PROJECT_SOURCE_DIR}/../../irrlicht-1.7.2" endif(USE_GETTEXT)
CACHE PATH "irrlicht dir")
else() else()
# Unix probably # Unix probably
if(BUILD_CLIENT) if(BUILD_CLIENT)
@ -221,7 +233,7 @@ else()
set(ARCH i386) set(ARCH i386)
endif() endif()
if(WIN32) if(WIN32 AND USE_GETTEXT)
set(CMAKE_EXE_LINKER_FLAGS "-lintl -L ${GETTEXT_BIN_DIR}") set(CMAKE_EXE_LINKER_FLAGS "-lintl -L ${GETTEXT_BIN_DIR}")
endif() endif()
@ -265,7 +277,7 @@ if(BUILD_CLIENT)
if(DEFINED ZLIB_DLL) if(DEFINED ZLIB_DLL)
install(FILES ${ZLIB_DLL} DESTINATION ${BINDIR}) install(FILES ${ZLIB_DLL} DESTINATION ${BINDIR})
endif() endif()
if(DEFINED GETTEXT_BIN_DIR) if(USE_GETTEXT AND DEFINED GETTEXT_BIN_DIR)
install(FILES ${GETTEXT_BIN_DIR}/libintl3.dll DESTINATION ${BINDIR}) install(FILES ${GETTEXT_BIN_DIR}/libintl3.dll DESTINATION ${BINDIR})
install(FILES ${GETTEXT_BIN_DIR}/libiconv2.dll DESTINATION ${BINDIR}) install(FILES ${GETTEXT_BIN_DIR}/libiconv2.dll DESTINATION ${BINDIR})
endif() endif()
@ -276,6 +288,7 @@ if(BUILD_SERVER)
install(TARGETS ${PROJECT_NAME}server DESTINATION ${BINDIR}) install(TARGETS ${PROJECT_NAME}server DESTINATION ${BINDIR})
endif(BUILD_SERVER) endif(BUILD_SERVER)
if (USE_GETTEXT)
if(WIN32) if(WIN32)
set(GETTEXT_MSGFMT "${GETTEXT_BIN_DIR}/msgfmt.exe" CACHE FILEPATH "path to msgfmt") set(GETTEXT_MSGFMT "${GETTEXT_BIN_DIR}/msgfmt.exe" CACHE FILEPATH "path to msgfmt")
elseif(APPLE) elseif(APPLE)
@ -296,6 +309,7 @@ add_custom_command(
COMMENT "mo-update [de]: Creating mo file." COMMENT "mo-update [de]: Creating mo file."
) )
add_custom_target(translation_de ALL COMMENT "mo update [de]" DEPENDS ${CMAKE_BINARY_DIR}/locale/de/LC_MESSAGES/minetest-delta.mo) add_custom_target(translation_de ALL COMMENT "mo update [de]" DEPENDS ${CMAKE_BINARY_DIR}/locale/de/LC_MESSAGES/minetest-delta.mo)
endif(USE_GETTEXT)
# Subdirectories # Subdirectories

View File

@ -1,9 +1,16 @@
#ifdef USE_GETTEXT
#include <libintl.h> #include <libintl.h>
#else
#define gettext(String) String
#define bindtextdomain(domain, dir) /* */
#define textdomain(domain) /* */
#endif
#define _(String) gettext(String) #define _(String) gettext(String)
#define gettext_noop(String) String #define gettext_noop(String) String
#define N_(String) gettext_noop (String) #define N_(String) gettext_noop (String)
inline wchar_t* chartowchar_t(char *str) inline wchar_t* chartowchar_t(const char *str)
{ {
size_t l = strlen(str)+1; size_t l = strlen(str)+1;
wchar_t* nstr = new wchar_t[l]; wchar_t* nstr = new wchar_t[l];