From 9d0462137c48a149b41ffc8cce183999374c8683 Mon Sep 17 00:00:00 2001 From: Juergen Kahrs Date: Wed, 13 Feb 2013 08:58:16 +0100 Subject: Moved much code into new files for configuring and packaging. --- cmake/configure.cmake | 226 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 226 insertions(+) create mode 100644 cmake/configure.cmake (limited to 'cmake/configure.cmake') diff --git a/cmake/configure.cmake b/cmake/configure.cmake new file mode 100644 index 00000000..8b285e51 --- /dev/null +++ b/cmake/configure.cmake @@ -0,0 +1,226 @@ +# +# cmake/configure --- CMake input file for gawk +# +# Copyright (C) 2013 +# the Free Software Foundation, Inc. +# +# This file is part of GAWK, the GNU implementation of the +# AWK Programming Language. +# +# GAWK is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# GAWK is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA +# + +## process this file with CMake to produce Makefile + +include(CheckIncludeFiles) +include(CheckIncludeFile) +include(CheckSymbolExists) +include(CheckFunctionExists) +include(CheckLibraryExists) +include(CheckTypeSize) +include(CheckStructHasMember) + +MACRO(DefineFunctionIfAvailable func feature) + check_function_exists("${func}" "${feature}") + IF (${feature}) + ADD_DEFINITIONS (-D ${feature}) + ENDIF () +ENDMACRO(DefineFunctionIfAvailable) + +MACRO(DefineHFileIfAvailable hfile feature) + check_include_file("${hfile}" "${feature}") + IF (${feature}) + ADD_DEFINITIONS (-D ${feature}) + ENDIF () +ENDMACRO(DefineHFileIfAvailable) + +MACRO(DefineTypeIfAvailable type feature) + check_type_size("${type}" "${feature}") + IF (${feature}) + ADD_DEFINITIONS (-D ${feature}=${${feature}}) + ENDIF () +ENDMACRO(DefineTypeIfAvailable) + +MACRO(DefineSymbolIfAvailable symbol hfile feature) + check_symbol_exists("${symbol}" "${hfile}" "${feature}") + IF (${feature}) + ADD_DEFINITIONS (-D ${feature}) + ENDIF () +ENDMACRO(DefineSymbolIfAvailable) + +MACRO(DefineStructHasMemberIfAvailable struct member hfile feature) + check_struct_has_member("${struct}" "${member}" "${hfile}" "${feature}") + IF (${feature}) + ADD_DEFINITIONS (-D ${feature}) + ENDIF () +ENDMACRO(DefineStructHasMemberIfAvailable) + +MACRO(DefineLibraryIfAvailable lib func location feature) + check_library_exists("${lib}" "${func}" "${location}" "${feature}") + IF (${feature}) + ADD_DEFINITIONS (-D ${feature}) + ENDIF () +ENDMACRO(DefineLibraryIfAvailable) + +file( WRITE config.h "/* empty file, all settings defined by CMake. */" ) +# Configure a header file to pass some of the CMake settings +# to the source code +# http://www.cmake.org/cmake/help/v2.8.8/cmake.html#command:configure_file +# CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.cmake.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h IMMEDIATE ) + +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}") +STRING( REGEX REPLACE ".*[0-9]+\\.([0-9]+)\\.[0-9]+.*" "\\1" GAWK_MINOR_VERSION "${GAWK_AUTOMAKE_LINE_VERSION}") +STRING( REGEX REPLACE ".*[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" GAWK_BUGFIX_VERSION "${GAWK_AUTOMAKE_LINE_VERSION}") + +add_definitions(-DGAWK) +set(GAWK_VERSION "${GAWK_MAJOR_VERSION}.${GAWK_MINOR_VERSION}.${GAWK_BUGFIX_VERSION}") +add_definitions(-D VERSION=\\"${GAWK_VERSION}\\") +add_definitions(-D PACKAGE=\\"gawk\\") +add_definitions(-D PACKAGE_STRING="GNU Awk ${GAWK_VERSION}") +add_definitions(-D PACKAGE_TARNAME=\\"gawk\\") +add_definitions(-D PACKAGE_URL=\\"http://www.gnu.org/software/gawk/\\") +add_definitions(-D PACKAGE_VERSION=\\"${GAWK_VERSION}\\") +add_definitions(-D DEFPATH=\\"${CMAKE_BINARY_DIR}/awk\\") +add_definitions(-D DEFLIBPATH=\\"${CMAKE_BINARY_DIR}/lib\\") +#DefineFunctionIfAvailable(dlopen DYNAMIC) +DefineHFileIfAvailable(dlfcn.h DYNAMIC) +#add_definitions(-D SHLIBEXT=\\"${CMAKE_SHARED_LIBRARY_SUFFIX}\\") +add_definitions(-D SHLIBEXT=\\"so\\") +DefineTypeIfAvailable("unsigned int" SIZEOF_UNSIGNED_INT) +DefineTypeIfAvailable("unsigned long" SIZEOF_UNSIGNED_LONG) +#/* Define to 1 if *printf supports %F format */ +add_definitions(-D PRINTF_HAS_F_FORMAT) +#/* Define as the return type of signal handlers (`int' or `void'). */ +add_definitions(-D RETSIGTYPE=void) +#add_definitions(-D PIPES_SIMULATED) +add_definitions(-D GETPGRP_VOID) +#add_definitions(-D YYPARSE_PARAM) + +DefineFunctionIfAvailable(snprintf HAVE_SNPRINTF) +DefineFunctionIfAvailable(vprintf HAVE_VPRINTF) +DefineHFileIfAvailable(sys/types.h HAVE_SYS_TYPES_H) +DefineHFileIfAvailable(sys/stat.h HAVE_SYS_STAT_H) +DefineHFileIfAvailable(string.h HAVE_STRING_H) +DefineHFileIfAvailable(memory.h HAVE_MEMORY_H) +DefineHFileIfAvailable(strings.h HAVE_STRINGS_H) +DefineHFileIfAvailable(stdint.h HAVE_STDINT_H) +DefineHFileIfAvailable(inttypes.h HAVE_INTTYPES_H) +DefineHFileIfAvailable(stdlib.h HAVE_STDLIB_H) +DefineHFileIfAvailable(unistd.h HAVE_UNISTD_H) +DefineFunctionIfAvailable(gettext HAVE_GETTEXT) +DefineFunctionIfAvailable(dcgettext HAVE_DCGETTEXT) + FIND_PACKAGE(Gettext REQUIRED) +# FIND_PACKAGE(XGettext REQUIRED) +# FIND_PACKAGE(Iconv REQUIRED) + FIND_PATH(INTL_INCLUDE_DIR libintl.h PATHS /usr/include /usr/local/include) + FIND_LIBRARY(INTL_LIBRARIES intl c PATHS /usr/lib/ /usr/local/lib) +DefineSymbolIfAvailable("CODESET" "langinfo.h" HAVE_LANGINFO_CODESET) +DefineSymbolIfAvailable("LC_MESSAGES" "locale.h" HAVE_LC_MESSAGES) +DefineTypeIfAvailable("_Bool" HAVE__BOOL) +if (${HAVE_GETTEXT} AND ${HAVE_DCGETTEXT} AND ${HAVE_LANGINFO_CODESET} AND ${HAVE_LC_MESSAGES}) + add_definitions(-D LOCALEDIR=\\"/usr/share/locale\\") + add_definitions(-D ENABLE_NLS) + ADD_SUBDIRECTORY( po ) +endif() +DefineHFileIfAvailable(stdbool.h HAVE_STDBOOL_H) +DefineHFileIfAvailable(sys/wait.h HAVE_SYS_WAIT_H) +DefineHFileIfAvailable(arpa/inet.h HAVE_ARPA_INET_H) +DefineHFileIfAvailable(fcntl.h HAVE_FCNTL_H) +DefineHFileIfAvailable(limits.h HAVE_LIMITS_H) +DefineHFileIfAvailable(locale.h HAVE_LOCALE_H) +DefineHFileIfAvailable(libintl.h HAVE_LIBINTL_H) +DefineHFileIfAvailable(mcheck.h HAVE_MCHECK_H) +DefineHFileIfAvailable(netdb.h HAVE_NETDB_H) +DefineHFileIfAvailable(netinet/in.h HAVE_NETINET_IN_H) +DefineHFileIfAvailable(stdarg.h HAVE_STDARG_H) +DefineHFileIfAvailable(stddef.h HAVE_STDDEF_H) +DefineHFileIfAvailable(sys/ioctl.h HAVE_SYS_IOCTL_H) +DefineHFileIfAvailable(sys/param.h HAVE_SYS_PARAM_H) +DefineHFileIfAvailable(sys/socket.h HAVE_SYS_SOCKET_H) +DefineHFileIfAvailable(sys/termios.h HAVE_TERMIOS_H) +DefineHFileIfAvailable(stropts.h HAVE_STROPTS_H) +DefineHFileIfAvailable(wchar.h HAVE_WCHAR_H) +DefineHFileIfAvailable(wctype.h HAVE_WCTYPE_H) +#DefineTypeIfAvailable("long long int" HAVE_LONG_LONG_INT) +#add_definitions(-D HAVE_UNSIGNED_LONG_LONG_INT) +DefineTypeIfAvailable(intmax_t INTMAX_T) +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) +add_definitions(-D HAVE_SOCKADDR_STORAGE) +#DefineTypeIfAvailable("struct sockaddr_storage" SOCKADDR_STORAGE) +add_definitions(-D HAVE_STRUCT_STAT_ST_BLKSIZE) +#DefineStructHasMemberIfAvailable("struct stat" st_blksize bits/stat.h HAVE_STRUCT_STAT_ST_BLKSIZE) +add_definitions(-D HAVE_ST_BLKSIZE) +#DefineStructHasMemberIfAvailable("struct stat" st_blksize bits/stat.h HAVE_ST_BLKSIZE) +DefineStructHasMemberIfAvailable("struct tm" tm_zone time.h HAVE_TM_ZONE) +DefineStructHasMemberIfAvailable("struct tm" tm_zone time.h HAVE_STRUCT_TM_TM_ZONE) + +DefineHFileIfAvailable(sys/time.h HAVE_SYS_TIME_H) +DefineFunctionIfAvailable(alarm HAVE_ALARM) +DefineFunctionIfAvailable(mktime HAVE_MKTIME) +DefineFunctionIfAvailable(getaddrinfo HAVE_GETADDRINFO) +DefineFunctionIfAvailable(atexit HAVE_ATEXIT) +DefineFunctionIfAvailable(btowc HAVE_BTOWC) +add_definitions(-D HAVE_FMOD) +#DefineFunctionIfAvailable(fmod HAVE_FMOD) +DefineFunctionIfAvailable(isinf HAVE_ISINF) +DefineFunctionIfAvailable(ismod HAVE_ISMOD) +DefineFunctionIfAvailable(getgrent HAVE_GETGRENT) +DefineFunctionIfAvailable(getgroups HAVE_GETGROUPS) +add_definitions(-D GETGROUPS_T=gid_t) +DefineTypeIfAvailable("pid_t" PID_T) +DefineFunctionIfAvailable(grantpt HAVE_GRANTPT) +DefineFunctionIfAvailable(isascii HAVE_ISASCII) +DefineFunctionIfAvailable(iswctype HAVE_ISWCTYPE) +DefineFunctionIfAvailable(iswlower HAVE_ISWLOWER) +DefineFunctionIfAvailable(iswupper HAVE_ISUPPER) +DefineFunctionIfAvailable(mbrlen HAVE_MBRLEN) +DefineFunctionIfAvailable(memcmp HAVE_MEMCMP) +DefineFunctionIfAvailable(memcpy HAVE_MEMCPY) +DefineFunctionIfAvailable(memmove HAVE_MEMMOVE) +DefineFunctionIfAvailable(memset HAVE_MEMSET) +DefineFunctionIfAvailable(mkstemp HAVE_MKSTEMP) +DefineFunctionIfAvailable(posix_openpt HAVE_POSIX_OPENPT) +DefineFunctionIfAvailable(setenv HAVE_SETENV) +DefineFunctionIfAvailable(setlocale HAVE_SETLOCALE) +DefineFunctionIfAvailable(setsid HAVE_SETSID) +DefineFunctionIfAvailable(strchr HAVE_STRCHR) +DefineFunctionIfAvailable(strerror HAVE_STRERROR) +DefineFunctionIfAvailable(strftime HAVE_STRFTIME) +DefineFunctionIfAvailable(strncasecmp HAVE_STRNCASECMP) +DefineFunctionIfAvailable(strcoll HAVE_STRCOLL) +DefineFunctionIfAvailable(strtod HAVE_STRTOD) +DefineFunctionIfAvailable(strtoul HAVE_STRTOUL) +DefineFunctionIfAvailable(system HAVE_SYSTEM) +DefineFunctionIfAvailable(tmpfile HAVE_TMPFILE) +DefineFunctionIfAvailable(towlower HAVE_TOWLOWER) +DefineFunctionIfAvailable(towupper HAVE_TOWUPPER) +DefineFunctionIfAvailable(tzset HAVE_TZSET) +DefineFunctionIfAvailable(usleep HAVE_USLEEP) +DefineFunctionIfAvailable(wcrtomb HAVE_WCRTOMB) +DefineFunctionIfAvailable(wcscoll HAVE_WCSCOLL) +DefineFunctionIfAvailable(wctype HAVE_WCTYPE) +DefineFunctionIfAvailable(mbrtowc HAVE_MBRTOWC) + +add_definitions(-D HAVE_STRINGIZE) +add_definitions(-D _Noreturn=) + -- cgit v1.2.3 From 8401ded64836e829620dfbbc2b6edf731edfb337 Mon Sep 17 00:00:00 2001 From: Juergen Kahrs Date: Sun, 17 Feb 2013 14:44:47 +0100 Subject: CMake option USE_CONFIG_H allows to generate config.h. Some test cases with extensions still fail with this option switched ON. --- cmake/configure.cmake | 54 ++++++++++++++++++++++++++++----------------------- 1 file changed, 30 insertions(+), 24 deletions(-) (limited to 'cmake/configure.cmake') diff --git a/cmake/configure.cmake b/cmake/configure.cmake index 8b285e51..a4f3161f 100644 --- a/cmake/configure.cmake +++ b/cmake/configure.cmake @@ -24,6 +24,18 @@ ## process this file with CMake to produce Makefile +option (USE_CONFIG_H "Generate a file config.h for inclusion into C source code" OFF) +if (USE_CONFIG_H) + file( WRITE config.h "/* all settings defined by CMake. */\n\n" ) + ADD_DEFINITIONS (-D HAVE_CONFIG_H) + # Configure a header file to pass some of the CMake settings + # to the source code + # http://www.cmake.org/cmake/help/v2.8.8/cmake.html#command:configure_file + # CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.cmake.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h IMMEDIATE ) +else() + file( WRITE config.h "/* empty file, all settings defined by CMake. */" ) +endif() + include(CheckIncludeFiles) include(CheckIncludeFile) include(CheckSymbolExists) @@ -32,54 +44,48 @@ include(CheckLibraryExists) include(CheckTypeSize) include(CheckStructHasMember) +MACRO(DefineConfigH feature) +# message(STATUS feature=${feature}=${${feature}}) + if (${feature}) + if (${USE_CONFIG_H} STREQUAL ON) + FILE( APPEND config.h "#define ${feature} ${${feature}}\n") + else() + #ADD_DEFINITIONS (-D ${feature}) + ADD_DEFINITIONS (-D${feature}=${${feature}}) + endif () + endif () +ENDMACRO(DefineConfigH) + MACRO(DefineFunctionIfAvailable func feature) check_function_exists("${func}" "${feature}") - IF (${feature}) - ADD_DEFINITIONS (-D ${feature}) - ENDIF () + DefineConfigH(${feature}) ENDMACRO(DefineFunctionIfAvailable) MACRO(DefineHFileIfAvailable hfile feature) check_include_file("${hfile}" "${feature}") - IF (${feature}) - ADD_DEFINITIONS (-D ${feature}) - ENDIF () + DefineConfigH(${feature}) ENDMACRO(DefineHFileIfAvailable) MACRO(DefineTypeIfAvailable type feature) check_type_size("${type}" "${feature}") - IF (${feature}) - ADD_DEFINITIONS (-D ${feature}=${${feature}}) - ENDIF () + DefineConfigH(${feature}) ENDMACRO(DefineTypeIfAvailable) MACRO(DefineSymbolIfAvailable symbol hfile feature) check_symbol_exists("${symbol}" "${hfile}" "${feature}") - IF (${feature}) - ADD_DEFINITIONS (-D ${feature}) - ENDIF () + DefineConfigH(${feature}) ENDMACRO(DefineSymbolIfAvailable) MACRO(DefineStructHasMemberIfAvailable struct member hfile feature) check_struct_has_member("${struct}" "${member}" "${hfile}" "${feature}") - IF (${feature}) - ADD_DEFINITIONS (-D ${feature}) - ENDIF () + DefineConfigH(${feature}) ENDMACRO(DefineStructHasMemberIfAvailable) MACRO(DefineLibraryIfAvailable lib func location feature) check_library_exists("${lib}" "${func}" "${location}" "${feature}") - IF (${feature}) - ADD_DEFINITIONS (-D ${feature}) - ENDIF () + DefineConfigH(${feature}) ENDMACRO(DefineLibraryIfAvailable) -file( WRITE config.h "/* empty file, all settings defined by CMake. */" ) -# Configure a header file to pass some of the CMake settings -# to the source code -# http://www.cmake.org/cmake/help/v2.8.8/cmake.html#command:configure_file -# CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.cmake.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h IMMEDIATE ) - 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}") -- cgit v1.2.3 From 08fc54511a406a767652b617f9c8e293e794258a Mon Sep 17 00:00:00 2001 From: Juergen Kahrs Date: Sun, 17 Feb 2013 15:12:46 +0100 Subject: Pass a few more defined via config.h. --- cmake/configure.cmake | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) (limited to 'cmake/configure.cmake') diff --git a/cmake/configure.cmake b/cmake/configure.cmake index a4f3161f..b0640706 100644 --- a/cmake/configure.cmake +++ b/cmake/configure.cmake @@ -56,6 +56,11 @@ MACRO(DefineConfigH feature) endif () ENDMACRO(DefineConfigH) +MACRO(DefineConfigHValue feature value) + set(${feature} ${value}) + DefineConfigH(${feature}) +ENDMACRO(DefineConfigHValue) + MACRO(DefineFunctionIfAvailable func feature) check_function_exists("${func}" "${feature}") DefineConfigH(${feature}) @@ -92,16 +97,18 @@ STRING( REGEX REPLACE ".*([0-9]+)\\.[0-9]+\\.[0-9]+.*" "\\1" GAWK_MAJOR_VERSION STRING( REGEX REPLACE ".*[0-9]+\\.([0-9]+)\\.[0-9]+.*" "\\1" GAWK_MINOR_VERSION "${GAWK_AUTOMAKE_LINE_VERSION}") STRING( REGEX REPLACE ".*[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" GAWK_BUGFIX_VERSION "${GAWK_AUTOMAKE_LINE_VERSION}") +# The definition for GAWK cannot be passed in config.he because +# the extensions will fail to build. add_definitions(-DGAWK) -set(GAWK_VERSION "${GAWK_MAJOR_VERSION}.${GAWK_MINOR_VERSION}.${GAWK_BUGFIX_VERSION}") -add_definitions(-D VERSION=\\"${GAWK_VERSION}\\") -add_definitions(-D PACKAGE=\\"gawk\\") -add_definitions(-D PACKAGE_STRING="GNU Awk ${GAWK_VERSION}") -add_definitions(-D PACKAGE_TARNAME=\\"gawk\\") -add_definitions(-D PACKAGE_URL=\\"http://www.gnu.org/software/gawk/\\") -add_definitions(-D PACKAGE_VERSION=\\"${GAWK_VERSION}\\") -add_definitions(-D DEFPATH=\\"${CMAKE_BINARY_DIR}/awk\\") -add_definitions(-D DEFLIBPATH=\\"${CMAKE_BINARY_DIR}/lib\\") +DefineConfigHValue(GAWK_VERSION "${GAWK_MAJOR_VERSION}.${GAWK_MINOR_VERSION}.${GAWK_BUGFIX_VERSION}") +DefineConfigHValue(VERSION \\"${GAWK_VERSION}\\") +DefineConfigHValue(PACKAGE \\"gawk\\") +DefineConfigHValue(PACKAGE_STRING "GNU Awk ${GAWK_VERSION}") +DefineConfigHValue(PACKAGE_TARNAME \\"gawk\\") +DefineConfigHValue(PACKAGE_URL \\"http://www.gnu.org/software/gawk/\\") +DefineConfigHValue(PACKAGE_VERSION \\"${GAWK_VERSION}\\") +DefineConfigHValue(DEFPATH \\"${CMAKE_BINARY_DIR}/awk\\") +DefineConfigHValue(DEFLIBPATH \\"${CMAKE_BINARY_DIR}/lib\\") #DefineFunctionIfAvailable(dlopen DYNAMIC) DefineHFileIfAvailable(dlfcn.h DYNAMIC) #add_definitions(-D SHLIBEXT=\\"${CMAKE_SHARED_LIBRARY_SUFFIX}\\") -- cgit v1.2.3 From a5f1cf2beb31002f3cd35bfef7cb8af8843fc2b5 Mon Sep 17 00:00:00 2001 From: Juergen Kahrs Date: Sun, 17 Feb 2013 16:31:08 +0100 Subject: Moved all configuration stuff into cmake/configure.cmake so that config.h contains all settings. All 265 basic test cases pass now with USE_CONFIG_H set to ON. --- cmake/configure.cmake | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'cmake/configure.cmake') diff --git a/cmake/configure.cmake b/cmake/configure.cmake index b0640706..9e896284 100644 --- a/cmake/configure.cmake +++ b/cmake/configure.cmake @@ -237,3 +237,37 @@ DefineFunctionIfAvailable(mbrtowc HAVE_MBRTOWC) add_definitions(-D HAVE_STRINGIZE) add_definitions(-D _Noreturn=) +find_package(BISON REQUIRED) +if (${BISON_FOUND} STREQUAL "TRUE") + BISON_TARGET(awkgram awkgram.y ${CMAKE_SOURCE_DIR}/awkgram.c) +endif() + +#http://www.cmake.org/cmake/help/v2.8.10/cmake.html#module:FindGettext +find_package(Gettext REQUIRED) +if (GETTEXT_FOUND STREQUAL "TRUE") + include_directories(${GETTEXT_INCLUDE_DIR}) +else () + message( FATAL_ERROR "Gettext not found" ) +endif() + +find_package(LATEX) +include(GNUInstallDirs) +include(GetPrerequisites) + +# For some unknown reason the defines for the extension +# are written into config.h only if they are implemented +# here and not in extension/CMakeLists.txt. +DefineLibraryIfAvailable(m sin "" HAVE_LIBM) +DefineLibraryIfAvailable(mpfr mpfr_add_si "" HAVE_MPFR) +DefineLibraryIfAvailable(c socket "" HAVE_SOCKETS) +DefineFunctionIfAvailable(fnmatch HAVE_FNMATCH) +DefineHFileIfAvailable(fnmatch.h HAVE_FNMATCH_H) +DefineHFileIfAvailable(dirent.h HAVE_DIRENT_H) +DefineFunctionIfAvailable(getdtablesize HAVE_GETDTABLESIZE) +DefineFunctionIfAvailable(select HAVE_SELECT) +DefineFunctionIfAvailable(gettimeofday HAVE_GETTIMEOFDAY) +DefineHFileIfAvailable(sys/select.h HAVE_SYS_SELECT_H) +DefineFunctionIfAvailable(nanosleep HAVE_NANOSLEEP) +DefineHFileIfAvailable(time.h HAVE_TIME_H) +DefineFunctionIfAvailable(GetSystemTimeAsFileTime HAVE_GETSYSTEMTIMEASFILETIME) + -- cgit v1.2.3 From 13eee814c9d9e5c7b4cf0e0f55c23951fec443f2 Mon Sep 17 00:00:00 2001 From: Juergen Kahrs Date: Sun, 17 Feb 2013 21:58:56 +0100 Subject: USE_CONFIG_H is now ON be default. Found clean implementation for DYNAMIC and SHLIBEXT. --- cmake/configure.cmake | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'cmake/configure.cmake') diff --git a/cmake/configure.cmake b/cmake/configure.cmake index 9e896284..38265b98 100644 --- a/cmake/configure.cmake +++ b/cmake/configure.cmake @@ -24,7 +24,7 @@ ## process this file with CMake to produce Makefile -option (USE_CONFIG_H "Generate a file config.h for inclusion into C source code" OFF) +option (USE_CONFIG_H "Generate a file config.h for inclusion into C source code" ON) if (USE_CONFIG_H) file( WRITE config.h "/* all settings defined by CMake. */\n\n" ) ADD_DEFINITIONS (-D HAVE_CONFIG_H) @@ -109,10 +109,19 @@ DefineConfigHValue(PACKAGE_URL \\"http://www.gnu.org/software/gawk/\\") DefineConfigHValue(PACKAGE_VERSION \\"${GAWK_VERSION}\\") DefineConfigHValue(DEFPATH \\"${CMAKE_BINARY_DIR}/awk\\") DefineConfigHValue(DEFLIBPATH \\"${CMAKE_BINARY_DIR}/lib\\") -#DefineFunctionIfAvailable(dlopen DYNAMIC) -DefineHFileIfAvailable(dlfcn.h DYNAMIC) -#add_definitions(-D SHLIBEXT=\\"${CMAKE_SHARED_LIBRARY_SUFFIX}\\") -add_definitions(-D SHLIBEXT=\\"so\\") +if (CMAKE_DL_LIBS) + message(STATUS "Found CMAKE_DL_LIBS:${CMAKE_DL_LIBS}") + DefineConfigHValue(DYNAMIC 1) +else() + message(STATUS "Found no CMAKE_DL_LIBS") +endif() +if (CMAKE_SHARED_LIBRARY_SUFFIX) + STRING( REGEX REPLACE "^(\\.)([a-zA-Z0-9])" "\\2" SHLIBEXT "${CMAKE_SHARED_LIBRARY_SUFFIX}") + DefineConfigHValue(SHLIBEXT \\"${SHLIBEXT}\\") + message(STATUS "Found SHLIBEXT: ${SHLIBEXT}") +else() + message(STATUS "Found no SHLIBEXT") +endif() DefineTypeIfAvailable("unsigned int" SIZEOF_UNSIGNED_INT) DefineTypeIfAvailable("unsigned long" SIZEOF_UNSIGNED_LONG) #/* Define to 1 if *printf supports %F format */ -- cgit v1.2.3 From f4eb81006930f3d2fe944298b63bb546f0ee3e9f Mon Sep 17 00:00:00 2001 From: Juergen Kahrs Date: Mon, 18 Feb 2013 18:35:09 +0100 Subject: Testing, documentation, gettext and bison only on UNIX-based systems. --- cmake/configure.cmake | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) (limited to 'cmake/configure.cmake') diff --git a/cmake/configure.cmake b/cmake/configure.cmake index 38265b98..cd66e24b 100644 --- a/cmake/configure.cmake +++ b/cmake/configure.cmake @@ -143,13 +143,15 @@ DefineHFileIfAvailable(stdint.h HAVE_STDINT_H) DefineHFileIfAvailable(inttypes.h HAVE_INTTYPES_H) DefineHFileIfAvailable(stdlib.h HAVE_STDLIB_H) DefineHFileIfAvailable(unistd.h HAVE_UNISTD_H) -DefineFunctionIfAvailable(gettext HAVE_GETTEXT) -DefineFunctionIfAvailable(dcgettext HAVE_DCGETTEXT) +if (CMAKE_HOST_UNIX) + DefineFunctionIfAvailable(gettext HAVE_GETTEXT) + DefineFunctionIfAvailable(dcgettext HAVE_DCGETTEXT) FIND_PACKAGE(Gettext REQUIRED) -# FIND_PACKAGE(XGettext REQUIRED) -# FIND_PACKAGE(Iconv REQUIRED) + # FIND_PACKAGE(XGettext REQUIRED) + # FIND_PACKAGE(Iconv REQUIRED) FIND_PATH(INTL_INCLUDE_DIR libintl.h PATHS /usr/include /usr/local/include) FIND_LIBRARY(INTL_LIBRARIES intl c PATHS /usr/lib/ /usr/local/lib) +endif() DefineSymbolIfAvailable("CODESET" "langinfo.h" HAVE_LANGINFO_CODESET) DefineSymbolIfAvailable("LC_MESSAGES" "locale.h" HAVE_LC_MESSAGES) DefineTypeIfAvailable("_Bool" HAVE__BOOL) @@ -246,22 +248,24 @@ DefineFunctionIfAvailable(mbrtowc HAVE_MBRTOWC) add_definitions(-D HAVE_STRINGIZE) add_definitions(-D _Noreturn=) -find_package(BISON REQUIRED) -if (${BISON_FOUND} STREQUAL "TRUE") - BISON_TARGET(awkgram awkgram.y ${CMAKE_SOURCE_DIR}/awkgram.c) -endif() +if (CMAKE_HOST_UNIX) + find_package(BISON REQUIRED) + if (${BISON_FOUND} STREQUAL "TRUE") + BISON_TARGET(awkgram awkgram.y ${CMAKE_SOURCE_DIR}/awkgram.c) + endif() -#http://www.cmake.org/cmake/help/v2.8.10/cmake.html#module:FindGettext -find_package(Gettext REQUIRED) -if (GETTEXT_FOUND STREQUAL "TRUE") - include_directories(${GETTEXT_INCLUDE_DIR}) -else () - message( FATAL_ERROR "Gettext not found" ) -endif() + #http://www.cmake.org/cmake/help/v2.8.10/cmake.html#module:FindGettext + find_package(Gettext REQUIRED) + if (GETTEXT_FOUND STREQUAL "TRUE") + include_directories(${GETTEXT_INCLUDE_DIR}) + else () + message( FATAL_ERROR "Gettext not found" ) + endif() -find_package(LATEX) -include(GNUInstallDirs) -include(GetPrerequisites) + find_package(LATEX) + include(GNUInstallDirs) + include(GetPrerequisites) +endif() # For some unknown reason the defines for the extension # are written into config.h only if they are implemented -- cgit v1.2.3 From 451a255062f7e54bb6654ea8ea437cfbb4ec929d Mon Sep 17 00:00:00 2001 From: Juergen Kahrs Date: Sat, 9 Mar 2013 21:11:34 +0100 Subject: Dynamic extensions can be invoked now on Windows. DYNAMIC 1 will be set if CMAKE_SHARED_LIBRARY_SUFFIX exists (and not if CMAKE_DL_LIBS, as it was up to now). ext.c can now be compiled with DYNAMIC set because of include_directories(${CMAKE_SOURCE_DIR}/pc (thanks to Eli for the hint). --- cmake/configure.cmake | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'cmake/configure.cmake') diff --git a/cmake/configure.cmake b/cmake/configure.cmake index cd66e24b..d7e44cf7 100644 --- a/cmake/configure.cmake +++ b/cmake/configure.cmake @@ -97,8 +97,8 @@ STRING( REGEX REPLACE ".*([0-9]+)\\.[0-9]+\\.[0-9]+.*" "\\1" GAWK_MAJOR_VERSION STRING( REGEX REPLACE ".*[0-9]+\\.([0-9]+)\\.[0-9]+.*" "\\1" GAWK_MINOR_VERSION "${GAWK_AUTOMAKE_LINE_VERSION}") STRING( REGEX REPLACE ".*[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" GAWK_BUGFIX_VERSION "${GAWK_AUTOMAKE_LINE_VERSION}") -# The definition for GAWK cannot be passed in config.he because -# the extensions will fail to build. +# The definition of the symbol GAWK cannot be passed in config.h +# because the extensions will fail to build. add_definitions(-DGAWK) DefineConfigHValue(GAWK_VERSION "${GAWK_MAJOR_VERSION}.${GAWK_MINOR_VERSION}.${GAWK_BUGFIX_VERSION}") DefineConfigHValue(VERSION \\"${GAWK_VERSION}\\") @@ -111,11 +111,11 @@ DefineConfigHValue(DEFPATH \\"${CMAKE_BINARY_DIR}/awk\\") DefineConfigHValue(DEFLIBPATH \\"${CMAKE_BINARY_DIR}/lib\\") if (CMAKE_DL_LIBS) message(STATUS "Found CMAKE_DL_LIBS:${CMAKE_DL_LIBS}") - DefineConfigHValue(DYNAMIC 1) else() message(STATUS "Found no CMAKE_DL_LIBS") endif() if (CMAKE_SHARED_LIBRARY_SUFFIX) + DefineConfigHValue(DYNAMIC 1) STRING( REGEX REPLACE "^(\\.)([a-zA-Z0-9])" "\\2" SHLIBEXT "${CMAKE_SHARED_LIBRARY_SUFFIX}") DefineConfigHValue(SHLIBEXT \\"${SHLIBEXT}\\") message(STATUS "Found SHLIBEXT: ${SHLIBEXT}") @@ -267,7 +267,7 @@ if (CMAKE_HOST_UNIX) include(GetPrerequisites) endif() -# For some unknown reason the defines for the extension +# For some unknown reason the defines for the extensions # are written into config.h only if they are implemented # here and not in extension/CMakeLists.txt. DefineLibraryIfAvailable(m sin "" HAVE_LIBM) -- cgit v1.2.3 From 3473e4d1cd41d32c1b902dd17e56977bf9051c2b Mon Sep 17 00:00:00 2001 From: Juergen Kahrs Date: Mon, 11 Mar 2013 08:53:22 +0100 Subject: Search for bison on all platforms and let it generate awkgram.c. Use existing awkgram.c otherwise. --- cmake/configure.cmake | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'cmake/configure.cmake') diff --git a/cmake/configure.cmake b/cmake/configure.cmake index d7e44cf7..ddb54b99 100644 --- a/cmake/configure.cmake +++ b/cmake/configure.cmake @@ -248,12 +248,17 @@ DefineFunctionIfAvailable(mbrtowc HAVE_MBRTOWC) add_definitions(-D HAVE_STRINGIZE) add_definitions(-D _Noreturn=) -if (CMAKE_HOST_UNIX) - find_package(BISON REQUIRED) - if (${BISON_FOUND} STREQUAL "TRUE") - BISON_TARGET(awkgram awkgram.y ${CMAKE_SOURCE_DIR}/awkgram.c) - endif() +find_package(BISON QUIET) +# If there is a bison installed on this platform, +if (${BISON_FOUND} STREQUAL "TRUE") + # then let bison generate awkgram.c. + BISON_TARGET(awkgram awkgram.y ${CMAKE_SOURCE_DIR}/awkgram.c) +else() + # otherwise use the existing awkgram.c. + set(BISON_awkgram_OUTPUTS ${CMAKE_SOURCE_DIR}/awkgram.c) +endif() +if (CMAKE_HOST_UNIX) #http://www.cmake.org/cmake/help/v2.8.10/cmake.html#module:FindGettext find_package(Gettext REQUIRED) if (GETTEXT_FOUND STREQUAL "TRUE") -- cgit v1.2.3 From b6a5e7aa9d0e8b125fc885168f9a8b63bc0f7758 Mon Sep 17 00:00:00 2001 From: Juergen Kahrs Date: Tue, 30 Apr 2013 12:18:24 +0200 Subject: Cleaned up some more auto-detection macros. --- cmake/configure.cmake | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) (limited to 'cmake/configure.cmake') diff --git a/cmake/configure.cmake b/cmake/configure.cmake index ddb54b99..7bc27be6 100644 --- a/cmake/configure.cmake +++ b/cmake/configure.cmake @@ -179,22 +179,19 @@ DefineHFileIfAvailable(sys/termios.h HAVE_TERMIOS_H) DefineHFileIfAvailable(stropts.h HAVE_STROPTS_H) DefineHFileIfAvailable(wchar.h HAVE_WCHAR_H) DefineHFileIfAvailable(wctype.h HAVE_WCTYPE_H) -#DefineTypeIfAvailable("long long int" HAVE_LONG_LONG_INT) -#add_definitions(-D HAVE_UNSIGNED_LONG_LONG_INT) +DefineTypeIfAvailable("long long int" HAVE_LONG_LONG_INT) +DefineTypeIfAvailable("unsigned long long int" HAVE_UNSIGNED_LONG_LONG_INT) DefineTypeIfAvailable(intmax_t INTMAX_T) 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) -add_definitions(-D HAVE_SOCKADDR_STORAGE) -#DefineTypeIfAvailable("struct sockaddr_storage" SOCKADDR_STORAGE) -add_definitions(-D HAVE_STRUCT_STAT_ST_BLKSIZE) -#DefineStructHasMemberIfAvailable("struct stat" st_blksize bits/stat.h HAVE_STRUCT_STAT_ST_BLKSIZE) -add_definitions(-D HAVE_ST_BLKSIZE) -#DefineStructHasMemberIfAvailable("struct stat" st_blksize bits/stat.h HAVE_ST_BLKSIZE) +#add_definitions(-D WINT_T) +DefineTypeIfAvailable("wint_t" 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) DefineStructHasMemberIfAvailable("struct tm" tm_zone time.h HAVE_TM_ZONE) DefineStructHasMemberIfAvailable("struct tm" tm_zone time.h HAVE_STRUCT_TM_TM_ZONE) @@ -204,8 +201,7 @@ DefineFunctionIfAvailable(mktime HAVE_MKTIME) DefineFunctionIfAvailable(getaddrinfo HAVE_GETADDRINFO) DefineFunctionIfAvailable(atexit HAVE_ATEXIT) DefineFunctionIfAvailable(btowc HAVE_BTOWC) -add_definitions(-D HAVE_FMOD) -#DefineFunctionIfAvailable(fmod HAVE_FMOD) +DefineFunctionIfAvailable(fmod HAVE_FMOD) DefineFunctionIfAvailable(isinf HAVE_ISINF) DefineFunctionIfAvailable(ismod HAVE_ISMOD) DefineFunctionIfAvailable(getgrent HAVE_GETGRENT) -- cgit v1.2.3 From 5c5a827839987b36fc8f0fc3003d745d0923814b Mon Sep 17 00:00:00 2001 From: Juergen Kahrs Date: Tue, 30 Apr 2013 18:57:40 +0200 Subject: Extension readdir can now be built; now the extensions are complete. --- cmake/configure.cmake | 1 + 1 file changed, 1 insertion(+) (limited to 'cmake/configure.cmake') diff --git a/cmake/configure.cmake b/cmake/configure.cmake index 7bc27be6..642b15e8 100644 --- a/cmake/configure.cmake +++ b/cmake/configure.cmake @@ -277,6 +277,7 @@ DefineLibraryIfAvailable(c socket "" HAVE_SOCKETS) DefineFunctionIfAvailable(fnmatch HAVE_FNMATCH) DefineHFileIfAvailable(fnmatch.h HAVE_FNMATCH_H) DefineHFileIfAvailable(dirent.h HAVE_DIRENT_H) +DefineFunctionIfAvailable(dirfd HAVE_DIRFD) DefineFunctionIfAvailable(getdtablesize HAVE_GETDTABLESIZE) DefineFunctionIfAvailable(select HAVE_SELECT) DefineFunctionIfAvailable(gettimeofday HAVE_GETTIMEOFDAY) -- cgit v1.2.3 From 30826905fb5989599ee4313e1d4af584ac478fb4 Mon Sep 17 00:00:00 2001 From: Juergen Kahrs Date: Tue, 30 Apr 2013 19:56:19 +0200 Subject: New macro DefineIfSourceCompiles helps in auto-detection of wint_t. --- cmake/configure.cmake | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'cmake/configure.cmake') 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) -- cgit v1.2.3 From e58a44a35b0c64d8072d4663b68a5cfdebc6a83b Mon Sep 17 00:00:00 2001 From: Juergen Kahrs Date: Tue, 30 Apr 2013 20:30:42 +0200 Subject: Found a clean way to auto-detect wctype_t and wint_t. --- cmake/configure.cmake | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) (limited to 'cmake/configure.cmake') diff --git a/cmake/configure.cmake b/cmake/configure.cmake index 2f0823e4..1c74bc5c 100644 --- a/cmake/configure.cmake +++ b/cmake/configure.cmake @@ -189,20 +189,12 @@ DefineTypeIfAvailable("long long int" HAVE_LONG_LONG_INT) DefineTypeIfAvailable("unsigned long long int" HAVE_UNSIGNED_LONG_LONG_INT) DefineTypeIfAvailable(intmax_t INTMAX_T) 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) -# 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) +SET(CMAKE_EXTRA_INCLUDE_FILES wctype.h) +DefineTypeIfAvailable("wctype_t" HAVE_WCTYPE_T) +DefineTypeIfAvailable("wint_t" HAVE_WINT_T) +SET(CMAKE_EXTRA_INCLUDE_FILES) + 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) -- cgit v1.2.3 From b04f6c730f608e853f84c6e2c77d018039a3a693 Mon Sep 17 00:00:00 2001 From: Juergen Kahrs Date: Wed, 1 May 2013 12:12:16 +0200 Subject: Auto-detection is now mostly free from explicite conditionals. --- cmake/configure.cmake | 38 ++++++++++++++++---------------------- 1 file changed, 16 insertions(+), 22 deletions(-) (limited to 'cmake/configure.cmake') diff --git a/cmake/configure.cmake b/cmake/configure.cmake index 1c74bc5c..ec4c4e52 100644 --- a/cmake/configure.cmake +++ b/cmake/configure.cmake @@ -149,15 +149,8 @@ DefineHFileIfAvailable(stdint.h HAVE_STDINT_H) DefineHFileIfAvailable(inttypes.h HAVE_INTTYPES_H) DefineHFileIfAvailable(stdlib.h HAVE_STDLIB_H) DefineHFileIfAvailable(unistd.h HAVE_UNISTD_H) -if (CMAKE_HOST_UNIX) - DefineFunctionIfAvailable(gettext HAVE_GETTEXT) - DefineFunctionIfAvailable(dcgettext HAVE_DCGETTEXT) - FIND_PACKAGE(Gettext REQUIRED) - # FIND_PACKAGE(XGettext REQUIRED) - # FIND_PACKAGE(Iconv REQUIRED) - FIND_PATH(INTL_INCLUDE_DIR libintl.h PATHS /usr/include /usr/local/include) - FIND_LIBRARY(INTL_LIBRARIES intl c PATHS /usr/lib/ /usr/local/lib) -endif() +FIND_PATH(INTL_INCLUDE_DIR libintl.h PATHS /usr/include /usr/local/include) +FIND_LIBRARY(INTL_LIBRARIES intl c PATHS /usr/lib/ /usr/local/lib) DefineSymbolIfAvailable("CODESET" "langinfo.h" HAVE_LANGINFO_CODESET) DefineSymbolIfAvailable("LC_MESSAGES" "locale.h" HAVE_LC_MESSAGES) DefineTypeIfAvailable("_Bool" HAVE__BOOL) @@ -203,6 +196,7 @@ DefineStructHasMemberIfAvailable("struct tm" tm_zone time.h HAVE_STRUCT_TM_TM_ZO DefineHFileIfAvailable(sys/time.h HAVE_SYS_TIME_H) DefineFunctionIfAvailable(alarm HAVE_ALARM) +DefineFunctionIfAvailable(tzname HAVE_DECL_TZNAME) DefineFunctionIfAvailable(mktime HAVE_MKTIME) DefineFunctionIfAvailable(getaddrinfo HAVE_GETADDRINFO) DefineFunctionIfAvailable(atexit HAVE_ATEXIT) @@ -214,11 +208,12 @@ DefineFunctionIfAvailable(getgrent HAVE_GETGRENT) DefineFunctionIfAvailable(getgroups HAVE_GETGROUPS) add_definitions(-D GETGROUPS_T=gid_t) DefineTypeIfAvailable("pid_t" PID_T) +DefineTypeIfAvailable("intmax_t" HAVE_INTMAX_T) DefineFunctionIfAvailable(grantpt HAVE_GRANTPT) DefineFunctionIfAvailable(isascii HAVE_ISASCII) DefineFunctionIfAvailable(iswctype HAVE_ISWCTYPE) DefineFunctionIfAvailable(iswlower HAVE_ISWLOWER) -DefineFunctionIfAvailable(iswupper HAVE_ISUPPER) +DefineFunctionIfAvailable(iswupper HAVE_ISWUPPER) DefineFunctionIfAvailable(mbrlen HAVE_MBRLEN) DefineFunctionIfAvailable(memcmp HAVE_MEMCMP) DefineFunctionIfAvailable(memcpy HAVE_MEMCPY) @@ -260,20 +255,19 @@ else() set(BISON_awkgram_OUTPUTS ${CMAKE_SOURCE_DIR}/awkgram.c) endif() -if (CMAKE_HOST_UNIX) - #http://www.cmake.org/cmake/help/v2.8.10/cmake.html#module:FindGettext - find_package(Gettext REQUIRED) - if (GETTEXT_FOUND STREQUAL "TRUE") - include_directories(${GETTEXT_INCLUDE_DIR}) - else () - message( FATAL_ERROR "Gettext not found" ) - endif() - - find_package(LATEX) - include(GNUInstallDirs) - include(GetPrerequisites) +find_package(Gettext REQUIRED) +if (GETTEXT_FOUND STREQUAL "TRUE") + include_directories(${GETTEXT_INCLUDE_DIR}) + DefineFunctionIfAvailable(gettext HAVE_GETTEXT) + DefineFunctionIfAvailable(dcgettext HAVE_DCGETTEXT) +else () + message( FATAL_ERROR "Gettext not found" ) endif() +find_package(LATEX) +include(GNUInstallDirs) +include(GetPrerequisites) + # For some unknown reason the defines for the extensions # are written into config.h only if they are implemented # here and not in extension/CMakeLists.txt. -- cgit v1.2.3 From 55775186a2fb7e4f61b57e2923abe4e6e4728eb0 Mon Sep 17 00:00:00 2001 From: Juergen Kahrs Date: Mon, 6 May 2013 21:18:05 +0200 Subject: Found better way to auto-detect GETGROUPS_T and GETPGRP_VOID. --- cmake/configure.cmake | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'cmake/configure.cmake') diff --git a/cmake/configure.cmake b/cmake/configure.cmake index ec4c4e52..c8ab206a 100644 --- a/cmake/configure.cmake +++ b/cmake/configure.cmake @@ -44,6 +44,7 @@ include(CheckLibraryExists) include(CheckTypeSize) include(CheckStructHasMember) INCLUDE(CheckCSourceCompiles) +include(CheckPrototypeDefinition) MACRO(DefineConfigH feature) # message(STATUS feature=${feature}=${${feature}}) @@ -135,7 +136,8 @@ add_definitions(-D PRINTF_HAS_F_FORMAT) #/* Define as the return type of signal handlers (`int' or `void'). */ add_definitions(-D RETSIGTYPE=void) #add_definitions(-D PIPES_SIMULATED) -add_definitions(-D GETPGRP_VOID) +check_prototype_definition(getpgrp "pid_t getpgrp(void)" "NULL" "unistd.h" GETPGRP_VOID) +DefineConfigH(GETPGRP_VOID) #add_definitions(-D YYPARSE_PARAM) DefineFunctionIfAvailable(snprintf HAVE_SNPRINTF) @@ -205,8 +207,16 @@ DefineFunctionIfAvailable(fmod HAVE_FMOD) DefineFunctionIfAvailable(isinf HAVE_ISINF) DefineFunctionIfAvailable(ismod HAVE_ISMOD) DefineFunctionIfAvailable(getgrent HAVE_GETGRENT) -DefineFunctionIfAvailable(getgroups HAVE_GETGROUPS) -add_definitions(-D GETGROUPS_T=gid_t) +DefineSymbolIfAvailable("getgroups" "unistd.h" HAVE_GETGROUPS) +if (${HAVE_GETGROUPS}) + check_prototype_definition(getgroups "int getgroups(int size, gid_t list[])" "NULL" "unistd.h" GETGROUPS_T) + if (${GETGROUPS_T}) + DefineConfigHValue(GETGROUPS_T gid_t) + else() + DefineConfigHValue(GETGROUPS_T int) + endif() +endif() + DefineTypeIfAvailable("pid_t" PID_T) DefineTypeIfAvailable("intmax_t" HAVE_INTMAX_T) DefineFunctionIfAvailable(grantpt HAVE_GRANTPT) -- cgit v1.2.3 From 57fe811dd036e276abd30eed3aac135df7e362ab Mon Sep 17 00:00:00 2001 From: Juergen Kahrs Date: Sun, 12 May 2013 15:31:28 +0200 Subject: HAVE_LIBREADLINE is now detected and used. --- cmake/configure.cmake | 1 + 1 file changed, 1 insertion(+) (limited to 'cmake/configure.cmake') diff --git a/cmake/configure.cmake b/cmake/configure.cmake index c8ab206a..6ff19995 100644 --- a/cmake/configure.cmake +++ b/cmake/configure.cmake @@ -284,6 +284,7 @@ include(GetPrerequisites) DefineLibraryIfAvailable(m sin "" HAVE_LIBM) DefineLibraryIfAvailable(mpfr mpfr_add_si "" HAVE_MPFR) DefineLibraryIfAvailable(c socket "" HAVE_SOCKETS) +DefineLibraryIfAvailable(readline readline "" HAVE_LIBREADLINE) DefineFunctionIfAvailable(fnmatch HAVE_FNMATCH) DefineHFileIfAvailable(fnmatch.h HAVE_FNMATCH_H) DefineHFileIfAvailable(dirent.h HAVE_DIRENT_H) -- cgit v1.2.3 From 88cdccf6bceb2078895fec825f0b776487197c78 Mon Sep 17 00:00:00 2001 From: Juergen Kahrs Date: Tue, 24 Jun 2014 14:38:18 +0200 Subject: Definition of _GL_ATTRIBUTE_PURE is needed by dfa.h for some strange reason. --- cmake/configure.cmake | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'cmake/configure.cmake') diff --git a/cmake/configure.cmake b/cmake/configure.cmake index 6ff19995..204b2793 100644 --- a/cmake/configure.cmake +++ b/cmake/configure.cmake @@ -107,10 +107,11 @@ STRING( REGEX REPLACE ".*[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" GAWK_BUGFIX_VERSION # The definition of the symbol GAWK cannot be passed in config.h # because the extensions will fail to build. add_definitions(-DGAWK) +DefineConfigHValue(_GL_ATTRIBUTE_PURE "__attribute__ ((__pure__))") DefineConfigHValue(GAWK_VERSION "${GAWK_MAJOR_VERSION}.${GAWK_MINOR_VERSION}.${GAWK_BUGFIX_VERSION}") DefineConfigHValue(VERSION \\"${GAWK_VERSION}\\") DefineConfigHValue(PACKAGE \\"gawk\\") -DefineConfigHValue(PACKAGE_STRING "GNU Awk ${GAWK_VERSION}") +DefineConfigHValue(PACKAGE_STRING \\"GNU Awk ${GAWK_VERSION}\\") DefineConfigHValue(PACKAGE_TARNAME \\"gawk\\") DefineConfigHValue(PACKAGE_URL \\"http://www.gnu.org/software/gawk/\\") DefineConfigHValue(PACKAGE_VERSION \\"${GAWK_VERSION}\\") -- cgit v1.2.3 From 1f4bd1601d0abb51db4cf28d0a3b51d8661bda94 Mon Sep 17 00:00:00 2001 From: Juergen Kahrs Date: Tue, 12 Aug 2014 17:10:28 +0200 Subject: Copyright notice updated. --- cmake/configure.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'cmake/configure.cmake') diff --git a/cmake/configure.cmake b/cmake/configure.cmake index 204b2793..7dbe841c 100644 --- a/cmake/configure.cmake +++ b/cmake/configure.cmake @@ -1,7 +1,7 @@ # # cmake/configure --- CMake input file for gawk # -# Copyright (C) 2013 +# Copyright (C) 2013-2014 # the Free Software Foundation, Inc. # # This file is part of GAWK, the GNU implementation of the -- cgit v1.2.3