diff options
-rw-r--r-- | CMakeLists.txt | 40 | ||||
-rw-r--r-- | cmake/Modules/FindIconv.cmake | 66 | ||||
-rw-r--r-- | cmake/getdate.bat (renamed from cmakescripts/getdate.bat) | 0 | ||||
-rw-r--r-- | vncviewer/CMakeLists.txt | 3 |
4 files changed, 105 insertions, 4 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 7322cbc8..1731899c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,8 +4,12 @@ cmake_minimum_required(VERSION 2.6) +# Internal cmake modules +set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/Modules) + include(CheckIncludeFiles) include(CheckFunctionExists) +include(CheckLibraryExists) include(CheckTypeSize) include(CheckCSourceCompiles) include(CheckCXXSourceCompiles) @@ -29,7 +33,7 @@ add_definitions(-DLOCALEDIR="${CMAKE_INSTALL_PREFIX}/share/locale") # some kind of Unix system. The id will be empty if things fail. set(BUILD "") if(MSVC) - execute_process(COMMAND "${CMAKE_SOURCE_DIR}/cmakescripts/getdate.bat" + execute_process(COMMAND "${CMAKE_SOURCE_DIR}/cmake/getdate.bat" OUTPUT_VARIABLE BUILD) else() execute_process(COMMAND "date" "+%Y%m%d" OUTPUT_VARIABLE BUILD) @@ -125,8 +129,38 @@ endif() # Check for gettext option(ENABLE_NLS "Enable translation of program messages" ON) -find_package(Gettext) -set(LOCALE_DIR "${CMAKE_INSTALL_PREFIX}/share/locale") +if(ENABLE_NLS) + # Tools + find_package(Gettext REQUIRED) + set(LOCALE_DIR "${CMAKE_INSTALL_PREFIX}/share/locale") + + # Gettext needs iconv + find_package(Iconv REQUIRED) + + # Headers and libraries (copied from licq) + set(GETTEXT_FOUND FALSE) + + find_path(GETTEXT_INCLUDE_DIR libintl.h) + if(GETTEXT_INCLUDE_DIR) + set(CMAKE_REQUIRED_LIBRARIES ${ICONV_LIBRARIES}) + check_function_exists(dgettext LIBC_HAS_DGETTEXT) + if(LIBC_HAS_DGETTEXT) + set(GETTEXT_FOUND TRUE) + else() + find_library(LIBINTL_LIBRARY NAMES intl libintl) + check_library_exists(${LIBINTL_LIBRARY} "dgettext" "" LIBINTL_HAS_DGETTEXT) + if(LIBINTL_HAS_DGETTEXT) + set(GETTEXT_LIBRARIES ${LIBINTL_LIBRARY}) + set(GETTEXT_FOUND TRUE) + endif() + endif() + set(CMAKE_REQUIRED_LIBRARIES) + endif() + + if(NOT GETTEXT_FOUND) + message(FATAL_ERROR "Gettext NOT found") + endif() +endif() # Check for libjpeg find_package(JPEG REQUIRED) diff --git a/cmake/Modules/FindIconv.cmake b/cmake/Modules/FindIconv.cmake new file mode 100644 index 00000000..cf268ea0 --- /dev/null +++ b/cmake/Modules/FindIconv.cmake @@ -0,0 +1,66 @@ +# From: http://gitorious.org/gammu/mainline/blobs/master/cmake/FindIconv.cmake + +# - Try to find Iconv +# Once done this will define +# +# ICONV_FOUND - system has Iconv +# ICONV_INCLUDE_DIR - the Iconv include directory +# ICONV_LIBRARIES - Link these to use Iconv +# ICONV_SECOND_ARGUMENT_IS_CONST - the second argument for iconv() is const +# +include(CheckCCompilerFlag) +include(CheckCXXSourceCompiles) + +IF (ICONV_INCLUDE_DIR AND ICONV_LIBRARIES) + # Already in cache, be silent + SET(ICONV_FIND_QUIETLY TRUE) +ENDIF (ICONV_INCLUDE_DIR AND ICONV_LIBRARIES) + +FIND_PATH(ICONV_INCLUDE_DIR iconv.h) + +FIND_LIBRARY(ICONV_LIBRARIES NAMES iconv libiconv c) + +IF(ICONV_INCLUDE_DIR AND ICONV_LIBRARIES) + SET(ICONV_FOUND TRUE) +ENDIF(ICONV_INCLUDE_DIR AND ICONV_LIBRARIES) + +set(CMAKE_REQUIRED_INCLUDES ${ICONV_INCLUDE_DIR}) +set(CMAKE_REQUIRED_LIBRARIES ${ICONV_LIBRARIES}) +IF(ICONV_FOUND) + check_c_compiler_flag("-Werror" ICONV_HAVE_WERROR) + set (CMAKE_C_FLAGS_BACKUP "${CMAKE_C_FLAGS}") + if(ICONV_HAVE_WERROR) + set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror") + endif(ICONV_HAVE_WERROR) + check_c_source_compiles(" + #include <iconv.h> + int main(){ + iconv_t conv = 0; + const char* in = 0; + size_t ilen = 0; + char* out = 0; + size_t olen = 0; + iconv(conv, &in, &ilen, &out, &olen); + return 0; + } +" ICONV_SECOND_ARGUMENT_IS_CONST ) + set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS_BACKUP}") +ENDIF(ICONV_FOUND) +set(CMAKE_REQUIRED_INCLUDES) +set(CMAKE_REQUIRED_LIBRARIES) + +IF(ICONV_FOUND) + IF(NOT ICONV_FIND_QUIETLY) + MESSAGE(STATUS "Found Iconv: ${ICONV_LIBRARIES}") + ENDIF(NOT ICONV_FIND_QUIETLY) +ELSE(ICONV_FOUND) + IF(Iconv_FIND_REQUIRED) + MESSAGE(FATAL_ERROR "Could not find Iconv") + ENDIF(Iconv_FIND_REQUIRED) +ENDIF(ICONV_FOUND) + +MARK_AS_ADVANCED( + ICONV_INCLUDE_DIR + ICONV_LIBRARIES + ICONV_SECOND_ARGUMENT_IS_CONST +) diff --git a/cmakescripts/getdate.bat b/cmake/getdate.bat index b4251bbb..b4251bbb 100644 --- a/cmakescripts/getdate.bat +++ b/cmake/getdate.bat diff --git a/vncviewer/CMakeLists.txt b/vncviewer/CMakeLists.txt index b4f888e1..c832b354 100644 --- a/vncviewer/CMakeLists.txt +++ b/vncviewer/CMakeLists.txt @@ -1,4 +1,5 @@ include_directories(${FLTK_INCLUDE_DIR}) +include_directories(${GETTEXT_INCLUDE_DIR}) include_directories(${CMAKE_SOURCE_DIR}/common) set(VNCVIEWER_SOURCES @@ -16,6 +17,6 @@ endif() add_executable(vncviewer ${VNCVIEWER_SOURCES}) -target_link_libraries(vncviewer rfb network rdr os Xregion ${FLTK_LIBRARIES}) +target_link_libraries(vncviewer rfb network rdr os Xregion ${FLTK_LIBRARIES} ${GETTEXT_LIBRARIES}) install (TARGETS vncviewer DESTINATION bin) |