@@ -28,7 +28,6 @@ project(
2828 LANGUAGES C
2929)
3030
31- include (CheckLibraryExists)
3231include (CheckSourceRuns)
3332include (CheckSymbolExists)
3433include (CMakeDependentOption)
@@ -66,7 +65,7 @@ target_sources(
6665 PRIVATE
6766 iconv.c
6867 iconv.stub.php
69- php_iconv.def
68+ $<$< AND :$<PLATFORM_ID:Windows>,$< NOT :$< IN_LIST :$<TARGET_PROPERTY: TYPE >,MODULE_LIBRARY;SHARED_LIBRARY>>>: php_iconv.def>
7069 PUBLIC
7170 FILE_SET HEADERS
7271 FILES
@@ -94,27 +93,31 @@ if(TARGET Iconv::Iconv)
9493 # Sanity and library type checks.
9594 if (Iconv_IS_BUILT_IN)
9695 # When iconv is built into C library, first check if iconv function exists.
97- check_symbol_exists(iconv iconv.h _HAVE_ICONV )
96+ check_symbol_exists(iconv iconv.h _PHP_HAVE_ICONV )
9897
9998 # And if not, then check for libiconv function.
100- if (NOT _HAVE_ICONV )
99+ if (NOT _PHP_HAVE_ICONV )
101100 check_symbol_exists(libiconv iconv.h HAVE_LIBICONV)
102101 endif ()
103102 else ()
104- check_library_exists(Iconv::Iconv libiconv "" HAVE_LIBICONV)
103+ cmake_push_check_state(RESET)
104+ set (CMAKE_REQUIRED_LIBRARIES Iconv::Iconv)
105105
106- if (HAVE_LIBICONV)
107- set (ICONV_ALIASED_LIBICONV TRUE )
108- else ()
109- check_library_exists(Iconv::Iconv iconv "" _HAVE_ICONV)
110- endif ()
106+ check_symbol_exists(libiconv iconv.h HAVE_LIBICONV)
107+
108+ if (HAVE_LIBICONV)
109+ set (ICONV_ALIASED_LIBICONV TRUE )
110+ else ()
111+ check_symbol_exists(iconv iconv.h _PHP_HAVE_ICONV)
112+ endif ()
113+ cmake_pop_check_state()
111114 endif ()
112115
113- if (NOT _HAVE_ICONV AND NOT HAVE_LIBICONV)
116+ if (NOT _PHP_HAVE_ICONV AND NOT HAVE_LIBICONV)
114117 message (
115118 FATAL_ERROR
116- "Iconv sanity check failed: neither 'iconv()' nor 'libiconv()' function "
117- "could be found."
119+ "ext/iconv sanity check failed: neither 'iconv()' nor 'libiconv()' "
120+ "function could be found."
118121 )
119122 endif ()
120123
@@ -124,16 +127,16 @@ if(TARGET Iconv::Iconv)
124127 cmake_push_check_state(RESET)
125128 set (CMAKE_REQUIRED_LIBRARIES Iconv::Iconv)
126129 set (CMAKE_REQUIRED_QUIET TRUE )
127- check_symbol_exists(_libiconv_version iconv.h _have_gnu_libiconv )
130+ check_symbol_exists(_libiconv_version iconv.h _PHP_HAVE_GNU_LIBICONV )
128131 cmake_pop_check_state()
129- if (_have_gnu_libiconv )
132+ if (_PHP_HAVE_GNU_LIBICONV )
130133 message (CHECK_PASS "GNU libiconv" )
131134 set (HAVE_LIBICONV TRUE )
132135 set (PHP_ICONV_IMPL "libiconv" )
133136 endif ()
134137
135138 # Check for glibc implementation.
136- if (NOT _have_gnu_libiconv )
139+ if (NOT _PHP_HAVE_GNU_LIBICONV )
137140 cmake_push_check_state(RESET)
138141 set (CMAKE_REQUIRED_LIBRARIES Iconv::Iconv)
139142 set (CMAKE_REQUIRED_QUIET TRUE )
@@ -146,20 +149,20 @@ if(TARGET Iconv::Iconv)
146149 endif ()
147150
148151 # Check for Konstantin Chuguev's iconv implementation.
149- if (NOT _have_gnu_libiconv AND NOT HAVE_GLIBC_ICONV)
152+ if (NOT _PHP_HAVE_GNU_LIBICONV AND NOT HAVE_GLIBC_ICONV)
150153 cmake_push_check_state(RESET)
151154 set (CMAKE_REQUIRED_LIBRARIES Iconv::Iconv)
152155 set (CMAKE_REQUIRED_QUIET TRUE )
153- check_symbol_exists(iconv_ccs_init iconv.h _have_bsd_iconv )
156+ check_symbol_exists(iconv_ccs_init iconv.h _PHP_HAVE_BSD_ICONV )
154157 cmake_pop_check_state()
155158 endif ()
156- if (_have_bsd_iconv )
159+ if (_PHP_HAVE_BSD_ICONV )
157160 message (CHECK_PASS "BSD iconv" )
158161 set (PHP_ICONV_IMPL "BSD iconv" )
159162 endif ()
160163
161164 # Check for IBM iconv implementation.
162- if (NOT _have_gnu_libiconv AND NOT HAVE_GLIBC_ICONV AND NOT _have_bsd_iconv )
165+ if (NOT _PHP_HAVE_GNU_LIBICONV AND NOT HAVE_GLIBC_ICONV AND NOT _PHP_HAVE_BSD_ICONV )
163166 cmake_push_check_state(RESET)
164167 set (CMAKE_REQUIRED_LIBRARIES Iconv::Iconv)
165168 set (CMAKE_REQUIRED_QUIET TRUE )
0 commit comments