summaryrefslogtreecommitdiffstats
path: root/cmake/FindIconv.cmake
blob: 9e6ded99dc4da68e149707ce8e926838d0749eb3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# - 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
#

if(ICONV_INCLUDE_DIR AND ICONV_LIBRARIES)
	# Already in cache, be silent
	set(ICONV_FIND_QUIETLY TRUE)
endif()

find_path(ICONV_INCLUDE_DIR iconv.h)
check_function_exists(iconv_open libc_has_iconv)
find_library(iconv_lib NAMES iconv libiconv libiconv-2 c)

if(ICONV_INCLUDE_DIR AND libc_has_iconv)
	set(ICONV_FOUND TRUE)
	set(ICONV_LIBRARIES "")
	if(NOT ICONV_FIND_QUIETLY)
		message(STATUS "Found Iconv: provided by libc")
	endif(NOT ICONV_FIND_QUIETLY)
elseif(ICONV_INCLUDE_DIR AND iconv_lib)
	set(ICONV_FOUND TRUE)
	# split iconv into -L and -l linker options, so we can
	# set them for pkg-config
	get_filename_component(iconv_path ${iconv_lib} PATH)
	get_filename_component(iconv_name ${iconv_lib} NAME_WE)
	string(REGEX REPLACE "^lib" "" iconv_name ${iconv_name})
	set(ICONV_LIBRARIES "-L${iconv_path} -l${iconv_name}")

	if(NOT ICONV_FIND_QUIETLY)
		message(STATUS "Found Iconv: ${ICONV_LIBRARIES}")
	endif()
else()
	if(Iconv_FIND_REQUIRED)
		message(FATAL_ERROR "Could not find Iconv")
	endif(Iconv_FIND_REQUIRED)
endif()

mark_as_advanced(
	ICONV_INCLUDE_DIR
	ICONV_LIBRARIES
)