diff options
author | Juergen Kahrs <Juergen.Kahrs@googlemail.com> | 2013-04-30 19:56:19 +0200 |
---|---|---|
committer | Juergen Kahrs <Juergen.Kahrs@googlemail.com> | 2013-04-30 19:56:19 +0200 |
commit | 30826905fb5989599ee4313e1d4af584ac478fb4 (patch) | |
tree | 331af4534a7525a514518994ff57a24814a41980 /cmake/configure.cmake | |
parent | 5c5a827839987b36fc8f0fc3003d745d0923814b (diff) | |
download | egawk-30826905fb5989599ee4313e1d4af584ac478fb4.tar.gz egawk-30826905fb5989599ee4313e1d4af584ac478fb4.tar.bz2 egawk-30826905fb5989599ee4313e1d4af584ac478fb4.zip |
New macro DefineIfSourceCompiles helps in auto-detection of wint_t.
Diffstat (limited to 'cmake/configure.cmake')
-rw-r--r-- | cmake/configure.cmake | 18 |
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) |