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. git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4389 3789f03b-4d11-0410-bbf8-ca57d06f2519tags/v1.1.90
@@ -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) |
@@ -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 | |||
) |
@@ -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) |