Browse Source

Autoconf Update
1. Remove many redundant macros.
2. Reorder several macros to more appropriate locations.
3. Several macros take lists of items to process, not just individual items. Combined duplicated macros' parameters into lists.
4. Some macros had unnecessary parameters.
5. Added some AX_REQUIRE_DEFINED() checks for the macros used.
6. Add cyassl/options.h to the AC_CONFIG_FILES list. It will be recreated from the template when running config.status the same as wolfssl/options.h
7. Remove the dist-dir rule from Makefile.am. This is prefering the process rather than automating that one step. Make dist will not run config.status.

* AC_PROG_CC must be before any macros that will try to compile for tests.
* AC_CHECK_SIZEOF takes a single type, no size values.
* Only one of the AC_CANONICAL_X macros are expanded. Removed AC_CANONICAL_BUILD since it is never actually used.
* Removed the AC_PROG_CXX and anything C++ related.
* Removed LT_LANG([C]) as it is the default and the C doesn't do anything.

John Safranek 6 years ago
parent
commit
ce2f393bc7
3 changed files with 23 additions and 73 deletions
  1. 0 3
      Makefile.am
  2. 19 70
      configure.ac
  3. 4 0
      m4/ax_harden_compiler_flags.m4

+ 0 - 3
Makefile.am

@@ -205,6 +205,3 @@ merge-clean:
 	@find ./ | $(GREP) \.BASE | xargs rm -f
 	@find ./ | $(GREP) \~$$ | xargs rm -f
 
-dist-hook:
-	cp $(distdir)/wolfssl/options.h.in $(distdir)/wolfssl/options.h
-

+ 19 - 70
configure.ac

@@ -6,39 +6,32 @@
 #
 #
 AC_COPYRIGHT([Copyright (C) 2006-2018 wolfSSL Inc.])
+AC_PREREQ([2.63])
 AC_INIT([wolfssl],[3.15.0],[https://github.com/wolfssl/wolfssl/issues],[wolfssl],[https://www.wolfssl.com])
-
 AC_CONFIG_AUX_DIR([build-aux])
 
 # The following sets CFLAGS and CXXFLAGS to empty if unset on command line.
-# We do not want the default "-g -O2" that AC_PROG_CC AC_PROG_CXX sets
-# automatically.
+# We do not want the default "-g -O2" that AC_PROG_CC sets automatically.
 : ${CFLAGS=""}
-: ${CXXFLAGS=""}
 
 # Test ar for the "U" option. Should be checked before the libtool macros.
 xxx_ar_flags=$((ar --help) 2>&1)
 AS_CASE([$xxx_ar_flags],[*'use actual timestamps and uids/gids'*],[: ${AR_FLAGS="Ucru"}])
 
+AC_PROG_CC
+AM_PROG_CC_C_O
 AC_CANONICAL_HOST
-AC_CANONICAL_BUILD
+AC_CONFIG_MACRO_DIR([m4])
 
 AM_INIT_AUTOMAKE([1.11 -Wall -Werror -Wno-portability foreign tar-ustar subdir-objects no-define color-tests])
-AC_PREREQ([2.63])
+m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
 
 AC_ARG_PROGRAM
-AC_DEFUN([PROTECT_AC_USE_SYSTEM_EXTENSIONS],
-         [AX_SAVE_FLAGS
-          AC_LANG_PUSH([C])
-          AC_USE_SYSTEM_EXTENSIONS
-          AC_LANG_POP([C])
-          AX_RESTORE_FLAGS
-          ])
-#PROTECT_AC_USE_SYSTEM_EXTENSIONS
 
-AC_CONFIG_MACRO_DIR([m4])
+AC_CONFIG_HEADERS([config.h:config.in])
 
-AC_CONFIG_HEADERS([config.h:config.in])dnl Keep filename to 8.3 for MS-DOS.
+LT_PREREQ([2.2])
+LT_INIT([disable-static win32-dll])
 
 #shared library versioning
 WOLFSSL_LIBRARY_VERSION=17:0:0
@@ -60,57 +53,29 @@ AC_SUBST([WOLFSSL_LIBRARY_VERSION])
 USER_C_EXTRA_FLAGS="$C_EXTRA_FLAGS"
 USER_CFLAGS="$CFLAGS"
 
-LT_PREREQ([2.2])
-LT_INIT([disable-static],[win32-dll])
-LT_LANG([C++])
-LT_LANG([C])
-
 gl_VISIBILITY
 AS_IF([ test -n "$CFLAG_VISIBILITY" ], [
        AM_CPPFLAGS="$AM_CPPFLAGS $CFLAG_VISIBILITY"
        CPPFLAGS="$CPPFLAGS $CFLAG_VISIBILITY"
        ])
 
-m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
 
 # Moved these size of and type checks before the library checks.
 # The library checks add the library to subsequent test compiles
 # and in some rare cases, the networking check causes these sizeof
 # checks to fail.
-AC_CHECK_SIZEOF(long long, 8)
-AC_CHECK_SIZEOF(long, 4)
-AC_CHECK_TYPES(__uint128_t)
-AC_CHECK_FUNCS([gethostbyname])
-AC_CHECK_FUNCS([getaddrinfo])
-AC_CHECK_FUNCS([gettimeofday])
-AC_CHECK_FUNCS([gmtime_r])
-AC_CHECK_FUNCS([inet_ntoa])
-AC_CHECK_FUNCS([memset])
-AC_CHECK_FUNCS([socket])
-AC_CHECK_HEADERS([arpa/inet.h])
-AC_CHECK_HEADERS([fcntl.h])
-AC_CHECK_HEADERS([limits.h])
-AC_CHECK_HEADERS([netdb.h])
-AC_CHECK_HEADERS([netinet/in.h])
-AC_CHECK_HEADERS([stddef.h])
-AC_CHECK_HEADERS([sys/ioctl.h])
-AC_CHECK_HEADERS([sys/socket.h])
-AC_CHECK_HEADERS([sys/time.h])
-AC_CHECK_HEADERS([errno.h])
-AC_CHECK_LIB(network,socket)
+AC_CHECK_SIZEOF([long long])
+AC_CHECK_SIZEOF([long])
+AC_CHECK_TYPES([__uint128_t])
+AC_CHECK_FUNCS([gethostbyname getaddrinfo gettimeofday gmtime_r inet_ntoa memset socket])
+AC_CHECK_HEADERS([arpa/inet.h fcntl.h limits.h netdb.h netinet/in.h stddef.h sys/ioctl.h sys/socket.h sys/time.h errno.h])
+AC_CHECK_LIB([network],[socket])
 AC_C_BIGENDIAN
-# mktime check takes forever on some systems, if time supported it would be
-# highly unusual for mktime to be missing
-#AC_FUNC_MKTIME
 
-AC_PROG_CC
-AC_PROG_CC_C_O
-AC_PROG_CXX
 AC_PROG_INSTALL
 AC_TYPE_SIZE_T
 AC_TYPE_UINT8_T
 AM_PROG_AS
-AM_PROG_CC_C_O
 LT_LIB_M
 
 OPTIMIZE_CFLAGS="-Os -fomit-frame-pointer"
@@ -120,13 +85,9 @@ DEBUG_CFLAGS="-g -DDEBUG -DDEBUG_WOLFSSL"
 LIB_ADD=
 LIB_STATIC_ADD=
 
-thread_ls_on=no
 # Thread local storage
-AX_TLS([
-        [AM_CFLAGS="$AM_CFLAGS -DHAVE_THREAD_LS"]
-        [thread_ls_on=yes]
-       ] , [:])
-
+AX_TLS([thread_ls_on=yes],[thread_ls_on=no])
+AS_IF([test "x$thread_ls_on" = "xyes"],[AM_CFLAGS="$AM_CFLAGS -DHAVE_THREAD_LS"])
 
 # DEBUG
 AX_DEBUG
@@ -135,7 +96,6 @@ AS_IF([test "$ax_enable_debug" = "yes"],
       [AM_CFLAGS="$AM_CFLAGS -DNDEBUG"])
 
 
-
 # Distro build feature subset (Debian, Ubuntu, etc.)
 AC_ARG_ENABLE([distro],
     [AS_HELP_STRING([--enable-distro],[Enable wolfSSL distro build (default: disabled)])],
@@ -280,7 +240,7 @@ AS_IF([ test "x$ENABLED_SINGLETHREADED" = "xno" ],[
                    ],[
                       ENABLED_SINGLETHREADED=yes
                       ])
-       ])
+      ])
 
 AS_IF([ test "x$ENABLED_SINGLETHREADED" = "xyes" ],[ AM_CFLAGS="-DSINGLE_THREADED $AM_CFLAGS" ])
 
@@ -4225,7 +4185,6 @@ fi
 OPTION_FLAGS="$USER_CFLAGS $USER_C_EXTRA_FLAGS $CPPFLAGS $AM_CFLAGS"
 
 
-
 CREATE_HEX_VERSION
 AC_SUBST([AM_CPPFLAGS])
 AC_SUBST([AM_CFLAGS])
@@ -4236,17 +4195,7 @@ AC_SUBST([LIB_STATIC_ADD])
 
 # FINAL
 AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h])
-AC_CONFIG_FILES([Makefile])
-AC_CONFIG_FILES([wolfssl/version.h])
-AC_CONFIG_FILES([wolfssl/options.h])
-#have options.h and version.h for autoconf fips tag and build
-#if test "x$ENABLED_FIPS" = "xyes"
-#then
-#    AC_CONFIG_FILES([cyassl/version.h])
-#    AC_CONFIG_FILES([cyassl/options.h])
-#fi
-AC_CONFIG_FILES([support/wolfssl.pc])
-AC_CONFIG_FILES([rpm/spec])
+AC_CONFIG_FILES([Makefile wolfssl/version.h wolfssl/options.h cyassl/options.h support/wolfssl.pc rpm/spec])
 
 AX_CREATE_GENERIC_CONFIG
 AX_AM_JOBSERVER([yes])

+ 4 - 0
m4/ax_harden_compiler_flags.m4

@@ -67,6 +67,7 @@
 # changes: deleted the clearing of CFLAGS
 
   AC_DEFUN([AX_HARDEN_LINKER_FLAGS], [
+      AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG])
       AC_REQUIRE([AX_VCS_CHECKOUT])
       AC_REQUIRE([AX_DEBUG])
 
@@ -95,6 +96,7 @@
       ])
 
   AC_DEFUN([AX_HARDEN_CC_COMPILER_FLAGS], [
+      AX_REQUIRE_DEFINED([AX_APPEND_COMPILE_FLAGS])
       AC_REQUIRE([AX_HARDEN_LINKER_FLAGS])
 
       AC_LANG_PUSH([C])
@@ -160,6 +162,7 @@
       ])
 
   AC_DEFUN([AX_HARDEN_CXX_COMPILER_FLAGS], [
+      AC_REQUIRE_DEFINED([AX_APPEND_COMPILE_FLAGS])
       AC_REQUIRE([AX_HARDEN_CC_COMPILER_FLAGS])
       AC_LANG_PUSH([C++])
 
@@ -227,6 +230,7 @@
       ])
 
   AC_DEFUN([AX_CC_OTHER_FLAGS], [
+      AX_REQUIRE_DEFINED([AX_APPEND_COMPILE_FLAGS])
       AC_REQUIRE([AX_HARDEN_CC_COMPILER_FLAGS])
 
       AC_LANG_PUSH([C])