Revision: 4389
          http://tigervnc.svn.sourceforge.net/tigervnc/?rev=4389&view=rev
Author:   ossman_
Date:     2011-04-28 14:38:04 +0000 (Thu, 28 Apr 2011)

Log Message:
-----------
Finish up the gettext handling in CMake. The included functions in CMake only
take care of finding the gettext tools, not the headers and libraries needed
to build things. Use the licq project as inspiration on how to solve this.

Modified Paths:
--------------
    trunk/CMakeLists.txt
    trunk/vncviewer/CMakeLists.txt

Added Paths:
-----------
    trunk/cmake/
    trunk/cmake/Modules/
    trunk/cmake/Modules/FindIconv.cmake

Removed Paths:
-------------
    trunk/cmakescripts/

Modified: trunk/CMakeLists.txt
===================================================================
--- trunk/CMakeLists.txt        2011-04-28 09:29:13 UTC (rev 4388)
+++ trunk/CMakeLists.txt        2011-04-28 14:38:04 UTC (rev 4389)
@@ -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 @@
 # 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,9 +129,39 @@
 
 # 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)
 

Added: trunk/cmake/Modules/FindIconv.cmake
===================================================================
--- trunk/cmake/Modules/FindIconv.cmake                         (rev 0)
+++ trunk/cmake/Modules/FindIconv.cmake 2011-04-28 14:38:04 UTC (rev 4389)
@@ -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
+)

Modified: trunk/vncviewer/CMakeLists.txt
===================================================================
--- trunk/vncviewer/CMakeLists.txt      2011-04-28 09:29:13 UTC (rev 4388)
+++ trunk/vncviewer/CMakeLists.txt      2011-04-28 14:38:04 UTC (rev 4389)
@@ -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 @@
 
 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)


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
WhatsUp Gold - Download Free Network Management Software
The most intuitive, comprehensive, and cost-effective network 
management toolset available today.  Delivers lowest initial 
acquisition cost and overall TCO of any competing solution.
http://p.sf.net/sfu/whatsupgold-sd
_______________________________________________
Tigervnc-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tigervnc-commits

Reply via email to