From 8d3e5d15deaf717ca16e8014a9c16e55b2aa055a Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Wed, 25 May 2016 11:11:49 +0000 Subject: [PATCH] rewrite Iconv CMake module Signed-off-by: Ivailo Monev --- cmake/modules/FindIconv.cmake | 88 ++++++++++++++++++------------------------- src/core/codecs/codecs.cmake | 2 +- 2 files changed, 37 insertions(+), 53 deletions(-) diff --git a/cmake/modules/FindIconv.cmake b/cmake/modules/FindIconv.cmake index 24cdae340..80de67cf0 100644 --- a/cmake/modules/FindIconv.cmake +++ b/cmake/modules/FindIconv.cmake @@ -1,57 +1,41 @@ -# - 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(CheckCXXSourceCompiles) +# - Try to find Iconv +# Once done this will define +# +# ICONV_FOUND - system has Iconv +# ICONV_INCLUDES - the Iconv include directory +# ICONV_LIBRARIES - The libraries needed to use Iconv +# +# Copyright (c) 2016, Ivailo Monev, +# +# Redistribution and use is allowed according to the terms of the BSD license. -IF (ICONV_INCLUDE_DIR AND ICONV_LIBRARIES) - # Already in cache, be silent - SET(ICONV_FIND_QUIETLY TRUE) -ENDIF (ICONV_INCLUDE_DIR AND ICONV_LIBRARIES) +if(ICONV_INCLUDES AND ICONV_LIBRARIES) + set(ICONV_FIND_QUIETLY TRUE) +endif() -FIND_PATH(ICONV_INCLUDE_DIR iconv.h) - -FIND_LIBRARY(ICONV_LIBRARIES NAMES iconv libiconv libiconv-2 c) - -IF(ICONV_INCLUDE_DIR AND ICONV_LIBRARIES) - SET(ICONV_FOUND TRUE) -ENDIF(ICONV_INCLUDE_DIR AND ICONV_LIBRARIES) +# Iconv does not provide pkg-config files -set(CMAKE_REQUIRED_INCLUDES ${ICONV_INCLUDE_DIR}) -set(CMAKE_REQUIRED_LIBRARIES ${ICONV_LIBRARIES}) -IF(ICONV_FOUND) - check_cxx_source_compiles(" - #include - 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 ) -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) +find_path(ICONV_INCLUDES + NAMES + iconv.h + HINTS + $ENV{ICONVDIR}/include + /usr/include + /usr/local/include + ${INCLUDE_INSTALL_DIR} +) -MARK_AS_ADVANCED( - ICONV_INCLUDE_DIR - ICONV_LIBRARIES - ICONV_SECOND_ARGUMENT_IS_CONST +find_library(ICONV_LIBRARIES + NAMES + iconv libiconv libiconv-2 c + HINTS + $ENV{ICONVDIR}/lib + /usr/lib + /usr/local/lib + ${LIB_INSTALL_DIR} ) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Iconv DEFAULT_MSG ICONV_INCLUDES ICONV_LIBRARIES) + +mark_as_advanced(ICONV_INCLUDES ICONV_LIBRARIES) diff --git a/src/core/codecs/codecs.cmake b/src/core/codecs/codecs.cmake index 807744bb9..5af5c553b 100644 --- a/src/core/codecs/codecs.cmake +++ b/src/core/codecs/codecs.cmake @@ -42,7 +42,7 @@ if(UNIX) ${ICONV_LIBRARIES} ) endif() - include_directories(${ICONV_INCLUDE_DIR}) + include_directories(${ICONV_INCLUDES}) else() # no iconv, so we put all plugins in the library set(CORE_HEADERS -- 2.11.0