Fix build on MacOS.
authorBen Laurie <ben@links.org>
Sun, 19 Apr 2015 13:10:54 +0000 (14:10 +0100)
committerBen Laurie <ben@links.org>
Fri, 1 May 2015 16:46:17 +0000 (17:46 +0100)
Reviewed-by: Andy Polyakov
Configurations/10-main.conf
Configure
config

index 025bd86..372080c 100644 (file)
     "linux-x86_64-clang" => {
         inherit_from     => [ "linux-x86_64" ],
         cc               => "clang",
-        # TODO(openssl-team): fix problems and investigate if (at least) the
-        # following warnings can also be enabled:
-        # -Wconditional-uninitialized, -Wswitch-enum, -Wunused-macros,
-        # -Wmissing-field-initializers, -Wmissing-variable-declarations,
-        # -Wincompatible-pointer-types-discards-qualifiers, -Wcast-align,
-        # -Wunreachable-code -Wunused-parameter -Wlanguage-extension-token
-        # -Wextended-offsetof
-        cflags           => "-m64 -DL_ENDIAN -Wall -Wextra $clang_disabled_warnings -Qunused-arguments",
+        cflags           => "-m64 -DL_ENDIAN -Wall -Wextra -Qunused-arguments",
     },
     "linux-x32" => {
         inherit_from     => [ "linux-generic32", asm("x86_64_asm") ],
index 53ff45d..b9e0f50 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -112,7 +112,15 @@ my $usage="Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [experimenta
 
 my $gcc_devteam_warn = "-Wall -pedantic -DPEDANTIC -Wno-long-long -Wsign-compare -Wmissing-prototypes -Wshadow -Wformat -Wtype-limits -Werror -DCRYPTO_MDEBUG_ALL -DCRYPTO_MDEBUG_ABORT -DREF_CHECK -DDEBUG_UNUSED";
 
-my $clang_disabled_warnings = "-Wno-unused-parameter -Wno-missing-field-initializers -Wno-language-extension-token -Wno-extended-offsetof";
+# These are used in addition to $gcc_devteam_warn when the compiler is clang.
+# TODO(openssl-team): fix problems and investigate if (at least) the
+# following warnings can also be enabled: -Wconditional-uninitialized,
+# -Wswitch-enum, -Wunused-macros, -Wmissing-field-initializers,
+# -Wmissing-variable-declarations,
+# -Wincompatible-pointer-types-discards-qualifiers, -Wcast-align,
+# -Wunreachable-code -Wunused-parameter -Wlanguage-extension-token
+# -Wextended-offsetof
+my $clang_devteam_warn = "-Wno-unused-parameter -Wno-missing-field-initializers -Wno-language-extension-token -Wno-extended-offsetof";
 
 my $strict_warnings = 0;
 
@@ -1726,12 +1734,21 @@ if ($shlib_version_number =~ /(^[0-9]*)\.([0-9\.]*)/)
 
 if ($strict_warnings)
        {
+       my $ecc = $cc;
+       $ecc = "clang" if `$cc --version 2>&1` =~ /clang/;
        my $wopt;
-       die "ERROR --strict-warnings requires gcc or clang" unless ($cc =~ /gcc$/ or $cc =~ /clang$/);
+       die "ERROR --strict-warnings requires gcc or clang" unless ($ecc =~ /gcc$/ or $ecc =~ /clang$/);
        foreach $wopt (split /\s+/, $gcc_devteam_warn)
                {
                $cflags .= " $wopt" unless ($cflags =~ /$wopt/)
                }
+       if ($ecc eq "clang")
+               {
+               foreach $wopt (split /\s+/, $clang_devteam_warn)
+                       {
+                       $cflags .= " $wopt" unless ($cflags =~ /$wopt/)
+                       }
+               }
        }
 
 open(IN,"<Makefile.org") || die "unable to read Makefile.org:$!\n";
diff --git a/config b/config
index 944ead2..94534cb 100755 (executable)
--- a/config
+++ b/config
@@ -518,10 +518,12 @@ case "$GUESSOS" in
        ISA64=`(sysctl -n hw.optional.x86_64) 2>/dev/null`
        if [ "$ISA64" = "1" -a -z "$KERNEL_BITS" ]; then
            echo "WARNING! If you wish to build 64-bit library, then you have to"
-           echo "         invoke './Configure darwin64-x86_64-cc' *manually*."
+           echo "         invoke './Configure darwin64-x86_64-cc $options' *manually*."
            if [ "$TEST" = "false" -a -t 1 ]; then
              echo "         You have about 5 seconds to press Ctrl-C to abort."
-             (trap "stty `stty -g`" 2 0; stty -icanon min 0 time 50; read waste) <&1
+             # The stty technique used elsewhere doesn't work on
+             # MacOS. At least, right now on this Mac.
+             sleep 5
            fi
        fi
        if [ "$ISA64" = "1" -a "$KERNEL_BITS" = "64" ]; then