forked from facebook/hhvm
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFindLibiconv.cmake
42 lines (35 loc) · 1.19 KB
/
FindLibiconv.cmake
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
#
# $Id$
#
# - Find libiconv
# Find libiconv
#
# LIBICONV_INCLUDE_DIR - where to find iconv.h, etc.
# LIBICONV_LIBRARY - List of libraries when using libiconv.
# LIBICONV_FOUND - True if libiconv found.
IF (LIBICONV_INCLUDE_DIR)
# Already in cache, be silent
SET(LIBICONV_FIND_QUIETLY TRUE)
ENDIF ()
FIND_PATH(LIBICONV_INCLUDE_DIR iconv.h)
FIND_LIBRARY(LIBICONV_LIBRARY iconv)
# handle the QUIETLY and REQUIRED arguments and set Libmemcached_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(LIBICONV DEFAULT_MSG LIBICONV_LIBRARY LIBICONV_INCLUDE_DIR)
SET(LIBICONV_OLD_CMAKE_REQUIRED_LIBRARIES)
SET(CMAKE_REQUIRED_LIBRARIES iconv)
INCLUDE(CheckCXXSourceCompiles)
CHECK_CXX_SOURCE_COMPILES("#include <string.h>
#include <iconv.h>
int main() {
iconv_t cd = 0;
const char *in_p = \"testing\";
size_t in_left = strlen(in_p);
char out_p[20];
size_t out_left = sizeof(out_p);
iconv(cd, (const char **)&in_p, &in_left, (char **)&out_p, &out_left);
return 0;
}" LIBICONV_CONST)
SET(CMAKE_REQUIRED_LIBRARIES LIBICONV_OLD_CMAKE_REQUIRED_LIBRARIES)
MARK_AS_ADVANCED(LIBICONV_LIBRARY LIBICONV_INCLUDE_DIR LIBICONV_CONST)