aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cmake/configure.cmake18
1 files changed, 16 insertions, 2 deletions
diff --git a/cmake/configure.cmake b/cmake/configure.cmake
index 642b15e8..2f0823e4 100644
--- a/cmake/configure.cmake
+++ b/cmake/configure.cmake
@@ -43,6 +43,7 @@ include(CheckFunctionExists)
include(CheckLibraryExists)
include(CheckTypeSize)
include(CheckStructHasMember)
+INCLUDE(CheckCSourceCompiles)
MACRO(DefineConfigH feature)
# message(STATUS feature=${feature}=${${feature}})
@@ -91,6 +92,11 @@ MACRO(DefineLibraryIfAvailable lib func location feature)
DefineConfigH(${feature})
ENDMACRO(DefineLibraryIfAvailable)
+MACRO(DefineIfSourceCompiles source feature)
+ check_c_source_compiles( "${source}" "${feature}")
+ DefineConfigH(${feature})
+ENDMACRO(DefineIfSourceCompiles)
+
FILE( READ configure.ac CONFIG_AUTOMAKE )
STRING( REGEX MATCH "AC_INIT\\(\\[GNU Awk\\], ([0-9]+\\.[0-9]+\\.[0-9]+)" GAWK_AUTOMAKE_LINE_VERSION "${CONFIG_AUTOMAKE}")
STRING( REGEX REPLACE ".*([0-9]+)\\.[0-9]+\\.[0-9]+.*" "\\1" GAWK_MAJOR_VERSION "${GAWK_AUTOMAKE_LINE_VERSION}")
@@ -187,8 +193,16 @@ DefineTypeIfAvailable(uintmax_t UINTMAX_T)
# Some of these dont work, maybe CheckCSourceCompiles would be better.
DefineTypeIfAvailable("time_t" TIME_T_IN_SYS_TYPES_H)
DefineTypeIfAvailable("wctype_t" WCTYPE_T)
-#add_definitions(-D WINT_T)
-DefineTypeIfAvailable("wint_t" WINT_T)
+# Detection of wint_t works but in an unsatisfying way.
+DefineIfSourceCompiles(
+ "#include \"wchar.h\"
+ static void testcb(wint_t w) { }
+ int main() {
+ wint_t w = 0;
+ testcb(w);
+ return 0;
+ }"
+ HAVE_WINT_T)
DefineStructHasMemberIfAvailable("struct sockaddr_storage" ss_family sys/socket.h HAVE_SOCKADDR_STORAGE)
DefineStructHasMemberIfAvailable("struct stat" st_blksize sys/stat.h HAVE_STRUCT_STAT_ST_BLKSIZE)
DefineStructHasMemberIfAvailable("struct stat" st_blksize sys/stat.h HAVE_ST_BLKSIZE)