aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt40
-rw-r--r--cmake/Modules/FindIconv.cmake66
-rw-r--r--cmake/getdate.bat (renamed from cmakescripts/getdate.bat)0
-rw-r--r--vncviewer/CMakeLists.txt3
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)