X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=Configure;h=3bf2e889151e93aa37b52f3c0720efa7ac940f09;hp=5afa63dd2a6578f51642fc1b4db487b71f68fe17;hb=d63a5e5e7d96f173e2bbf711e3f1f813bf0df05e;hpb=f4a748a17d6a38f410acd342e8539d0e7196cbdb diff --git a/Configure b/Configure index 5afa63dd2a..3bf2e88915 100755 --- a/Configure +++ b/Configure @@ -15,7 +15,7 @@ use File::Path qw/mkpath/; # see INSTALL for instructions. -my $usage="Usage: Configure [no- ...] [enable- ...] [experimental- ...] [-Dxxx] [-lxxx] [-Lxxx] [-fxxx] [-Kxxx] [no-hw-xxx|no-hw] [[no-]threads] [[no-]shared] [[no-]zlib|zlib-dynamic] [no-asm] [no-dso] [no-egd] [sctp] [386] [--prefix=DIR] [--openssldir=OPENSSLDIR] [--with-xxx[=vvv]] [--config=FILE] os/compiler[:flags]\n"; +my $usage="Usage: Configure [no- ...] [enable- ...] [-Dxxx] [-lxxx] [-Lxxx] [-fxxx] [-Kxxx] [no-hw-xxx|no-hw] [[no-]threads] [[no-]shared] [[no-]zlib|zlib-dynamic] [no-asm] [no-dso] [no-egd] [sctp] [386] [--prefix=DIR] [--openssldir=OPENSSLDIR] [--with-xxx[=vvv]] [--config=FILE] os/compiler[:flags]\n"; # Options: # @@ -32,10 +32,6 @@ my $usage="Usage: Configure [no- ...] [enable- ...] [experimenta # This becomes the value of OPENSSLDIR in Makefile and in C. # (Default: PREFIX/ssl) # -# --install_prefix Additional prefix for package builders (empty by -# default). This needn't be set in advance, you can -# just as well use "make INSTALL_PREFIX=/whatever install". -# # --cross-compile-prefix Add specified prefix to binutils components. # # --api One of 0.9.8, 1.0.0 or 1.1.0. Do not compile support for @@ -80,23 +76,42 @@ my $usage="Usage: Configure [no- ...] [enable- ...] [experimenta # Minimum warning options... any contributions to OpenSSL should at least get # past these. -my $gcc_devteam_warn = "-Wall -pedantic -DPEDANTIC -Wno-long-long -Wsign-compare -Wmissing-prototypes -Wshadow -Wformat -Wtype-limits -Werror -DREF_CHECK -DDEBUG_UNUSED"; +my $gcc_devteam_warn = "-DPEDANTIC -DREF_DEBUG -DDEBUG_UNUSED -DBIO_DEBUG" + . " -pedantic" + . " -Wall" + . " -Wno-long-long" + . " -Wsign-compare" + . " -Wmissing-prototypes" + . " -Wshadow" + . " -Wformat" + . " -Wtype-limits" + . " -Werror" + ; # 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: -# -Wswitch-enum, -Wunused-macros, -Wmissing-field-initializers, -# -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 -Wconditional-uninitialized -Qunused-arguments -Wincompatible-pointer-types-discards-qualifiers -Wmissing-variable-declarations"; - -# Warn that "make depend" should be run? -my $warn_make_depend = 0; - -# These are used in addition to $gcc_devteam_warn unless this is a mingw build. -# This adds backtrace information to the memory leak info. -my $memleak_devteam_backtrace = "-rdynamic -DCRYPTO_MDEBUG_BACKTRACE"; +# -Wswitch-enum +# -Wunused-macros +# -Wcast-align +# -Wunreachable-code +# -Wlanguage-extension-token +# -Wextended-offsetof +my $clang_devteam_warn = "" + . " -Qunused-arguments" + . " -Wextra" + . " -Wno-unused-parameter" + . " -Wno-missing-field-initializers" + . " -Wno-language-extension-token" + . " -Wno-extended-offsetof" + . " -Wconditional-uninitialized" + . " -Wincompatible-pointer-types-discards-qualifiers" + . " -Wmissing-variable-declarations" + ; + +# This adds backtrace information to the memory leak info. Is only used +# when crypto-mdebug-backtrace is enabled. +my $memleak_devteam_backtrace = "-rdynamic"; my $strict_warnings = 0; @@ -187,7 +202,6 @@ $config{prefix}=""; $config{openssldir}=""; $config{processor}=""; $config{libdir}=""; -$config{install_prefix}= "$ENV{'INSTALL_PREFIX'}"; $config{cross_compile_prefix}=""; $config{fipslibdir}="/usr/local/ssl/fips-2.0/lib/"; my $nofipscanistercheck=0; @@ -212,7 +226,7 @@ $config{sdirs} = [ "bn", "ec", "rsa", "dsa", "dh", "dso", "engine", "buffer", "bio", "stack", "lhash", "rand", "err", "evp", "asn1", "pem", "x509", "x509v3", "conf", "txt_db", "pkcs7", "pkcs12", "comp", "ocsp", "ui", - "cms", "ts", "jpake", "srp", "cmac", "ct", "async", "kdf" + "cms", "ts", "srp", "cmac", "ct", "async", "kdf" ]; # Known TLS and DTLS protocols @@ -238,6 +252,7 @@ my @disablables = ( "cms", "comp", "crypto-mdebug", + "crypto-mdebug-backtrace", "ct", "deprecated", "des", @@ -254,13 +269,13 @@ my @disablables = ( "ec_nistp_64_gcc_128", "egd", "engine", - "err", # Really??? + "err", + "filenames", "heartbeats", "hmac", "hw(-.+)?", "idea", - "jpake", - "locking", # Really??? + "locking", "md2", "md4", "md5", @@ -278,6 +293,7 @@ my @disablables = ( "rdrand", "rfc3779", "rijndael", # Old AES name + "ripemd", "rmd160", "rsa", "scrypt", @@ -296,6 +312,8 @@ my @disablables = ( "stdio", "threads", "tls", + "ts", + "ui", "unit-test", "whirlpool", "zlib", @@ -309,10 +327,9 @@ foreach my $proto ((@tls, @dtls)) # All of the following is disabled by default (RC5 was enabled before 0.9.8): -my %disabled = ( # "what" => "comment" [or special keyword "experimental"] +my %disabled = ( # "what" => "comment" "ec_nistp_64_gcc_128" => "default", "egd" => "default", - "jpake" => "experimental", "md2" => "default", "rc5" => "default", "sctp" => "default", @@ -321,8 +338,8 @@ my %disabled = ( # "what" => "comment" [or special keyword "experimental "unit-test" => "default", "zlib" => "default", "crypto-mdebug" => "default", + "heartbeats" => "default", ); -my @experimental = (); # Note: => pair form used for aesthetics, not to truly make a hash table my @disable_cascades = ( @@ -335,7 +352,6 @@ my @disable_cascades = ( "rijndael" => [ "aes" ], "des" => [ "mdc2" ], "ec" => [ "ecdsa", "ecdh" ], - "psk" => [ "jpake" ], "dgram" => [ "dtls" ], "dtls" => [ @dtls ], @@ -362,6 +378,8 @@ my @disable_cascades = ( # SRP and HEARTBEATS require TLSEXT "tlsext" => [ "srp", "heartbeats" ], + + "crypto-mdebug" => [ "crypto-mdebug-backtrace" ], ); # Avoid protocol support holes. Also disable all versions below N, if version @@ -391,12 +409,17 @@ my @default_depdefines = sort keys %disabled; # Explicit "no-..." options will be collected in %disabled along with the defaults. -# To remove something from %disabled, use "enable-foo" (unless it's experimental). +# To remove something from %disabled, use "enable-foo". # For symmetry, "disable-foo" is a synonym for "no-foo". -# For features called "experimental" here, a more explicit "experimental-foo" is needed to enable. -# We will collect such requests in @experimental. -# To avoid accidental use of experimental features, applications will have to use -DOPENSSL_EXPERIMENTAL_FOO. +my @generated_headers = ( + "include/openssl/opensslconf.h", + "crypto/include/internal/bn_conf.h" + ); + +my @generated_by_make_headers = ( + "crypto/buildinf.h" + ); my $no_sse2=0; @@ -407,7 +430,6 @@ my $user_cflags=""; my @user_defines=(); my $unified = 0; $config{depdefines}=[]; -$config{openssl_experimental_defines}=[]; $config{openssl_api_defines}=[]; $config{openssl_algorithm_defines}=[]; $config{openssl_thread_defines}=[]; @@ -416,7 +438,6 @@ $config{openssl_other_defines}=[]; my $libs=""; my $target=""; $config{options}=""; -my $make_depend=0; my %withargs=(); my $build_prefix = "release_"; @@ -450,7 +471,7 @@ if (grep /^reconf(igure)?$/, @argvcopy) { # centered information gathering the reading configdata.pm # while () { - chomp; + s|\R$||; if (/^CONFIGURE_ARGS=\s*(.*)\s*/) { # Older form, we split the string and hope for the best @argvcopy = split /\s+/, $_; @@ -475,6 +496,13 @@ $config{perlargv} = [ @argvcopy ]; my %unsupported_options = (); foreach (@argvcopy) { + # VMS is a case insensitive environment, and depending on settings + # out of our control, we may receive options uppercased. Let's + # downcase at least the part before any equal sign. + if ($^O eq "VMS") + { + s/^([^=]*)/lc($1)/e; + } s /^-no-/no-/; # some people just can't read the instructions # rewrite some options in "enable-..." form @@ -484,7 +512,7 @@ foreach (@argvcopy) s /^zlib$/enable-zlib/; s /^zlib-dynamic$/enable-zlib-dynamic/; - if (/^(no|disable|enable|experimental)-(.+)$/) + if (/^(no|disable|enable)-(.+)$/) { my $word = $2; if (!grep { $word =~ /^${_}$/ } @disablables) @@ -495,52 +523,43 @@ foreach (@argvcopy) } if (/^no-(.+)$/ || /^disable-(.+)$/) { - if (!($disabled{$1} eq "experimental")) - { - foreach my $proto ((@tls, @dtls)) - { - if ($1 eq "$proto-method") - { - $disabled{"$proto"} = "option($proto-method)"; - last; - } - } - if ($1 eq "dtls") - { - foreach my $proto (@dtls) - { - $disabled{$proto} = "option(dtls)"; - } - } - elsif ($1 eq "ssl") - { - # Last one of its kind - $disabled{"ssl3"} = "option(ssl)"; - } - elsif ($1 eq "tls") - { - # XXX: Tests will fail if all SSL/TLS - # protocols are disabled. - foreach my $proto (@tls) - { - $disabled{$proto} = "option(tls)"; - } - } - else - { - $disabled{$1} = "option"; - } - } + foreach my $proto ((@tls, @dtls)) + { + if ($1 eq "$proto-method") + { + $disabled{"$proto"} = "option($proto-method)"; + last; + } + } + if ($1 eq "dtls") + { + foreach my $proto (@dtls) + { + $disabled{$proto} = "option(dtls)"; + } + } + elsif ($1 eq "ssl") + { + # Last one of its kind + $disabled{"ssl3"} = "option(ssl)"; + } + elsif ($1 eq "tls") + { + # XXX: Tests will fail if all SSL/TLS + # protocols are disabled. + foreach my $proto (@tls) + { + $disabled{$proto} = "option(tls)"; + } + } + else + { + $disabled{$1} = "option"; + } } - elsif (/^enable-(.+)$/ || /^experimental-(.+)$/) + elsif (/^enable-(.+)$/) { my $algo = $1; - if ($disabled{$algo} eq "experimental") - { - die "You are requesting an experimental feature; please say 'experimental-$algo' if you are sure\n" - unless (/^experimental-/); - push @experimental, $algo; - } delete $disabled{$algo}; $threads = 1 if ($algo eq "threads"); @@ -598,10 +617,6 @@ foreach (@argvcopy) { $config{openssldir}=$1; } - elsif (/^--install.prefix=(.*)$/) - { - $config{install_prefix}=$1; - } elsif (/^--with-zlib-lib=(.*)$/) { $withargs{zlib_lib}=$1; @@ -637,7 +652,7 @@ foreach (@argvcopy) else # common if (/^[-+]/), just pass down... { $_ =~ s/%([0-9a-f]{1,2})/chr(hex($1))/gei; - $user_cflags.=$_." "; + $user_cflags.=" ".$_; } } elsif ($_ =~ /^([^:]+):(.+)$/) @@ -746,13 +761,17 @@ foreach (sort (keys %disabled)) elsif (/^sse2$/) { $no_sse2 = 1; } elsif (/^engine$/) - { @{$config{dirs}} = grep !/^engine$/, @{$config{dirs}}; } + { + @{$config{dirs}} = grep !/^engines$/, @{$config{dirs}}; + @{$config{sdirs}} = grep !/^engine$/, @{$config{sdirs}}; + push @{$config{openssl_other_defines}}, "OPENSSL_NO_ENGINE"; + } else { my ($ALGO, $algo); ($ALGO = $algo = $_) =~ tr/[\-a-z]/[_A-Z]/; - if (/^asm$/ || /^err$/ || /^hw$/ || /^hw-/ || /^async$/ + if (/^asm$/ || /^err$/ || /^hw$/ || /^hw-/ || /^autoalginit/ || /^autoerrinit/) { push @{$config{openssl_other_defines}}, "OPENSSL_NO_$ALGO"; @@ -781,15 +800,6 @@ foreach (sort (keys %disabled)) print "\n"; } -foreach (sort @experimental) - { - my $ALGO; - ($ALGO = $_) =~ tr/[a-z]/[A-Z]/; - - # opensslconf.h will set OPENSSL_NO_... unless OPENSSL_EXPERIMENTAL_... is defined - push @{$config{openssl_experimental_defines}}, "OPENSSL_NO_$ALGO"; - } - print "Configuring for $target\n"; # Support for legacy targets having a name starting with 'debug-' @@ -852,23 +862,20 @@ $target{build_scheme} = [ $target{build_scheme} ] ###### TO BE REMOVED BEFORE FINAL RELEASE ###### ###### If the user has chosen --unified, we give it to them. +###### The same happens if we detect that they try to build out-of-source. if ($target{build_file} eq "Makefile" && $target{build_scheme}->[0] eq "unixmake" - && $unified) { + && ($unified || $srcdir ne $blddir)) { $target{build_scheme} = [ "unified", "unix" ]; } my ($builder, $builder_platform, @builder_opts) = @{$target{build_scheme}}; -push @{$config{defines}}, - map { (my $x = $_) =~ s/^OPENSSL_NO_/OPENSSL_EXPERIMENTAL_/; $x } - @{$config{openssl_experimental_defines}}; - -if ($target =~ /^mingw/ && `$target{cc} --target-help 2>&1` !~ m/-mno-cygwin/m) +if ($target =~ /^mingw/ && `$target{cc} --target-help 2>&1` =~ m/-mno-cygwin/m) { - $config{cflags} =~ s/-mno-cygwin\s*//; - $target{shared_ldflag} =~ s/-mno-cygwin\s*//; + $config{cflags} .= " -mno-cygwin"; + $target{shared_ldflag} .= " -mno-cygwin"; } if ($target =~ /linux.*-mips/ && !$no_asm && $user_cflags !~ /-m(ips|arch=)/) { @@ -881,11 +888,6 @@ my $no_shared_warn=0; my $no_user_cflags=0; my $no_user_defines=0; -if ($user_cflags ne "") { $config{cflags}="$user_cflags$config{cflags}"; } -else { $no_user_cflags=1; } -if (@user_defines) { $config{defines}=[ @user_defines, @{$config{defines}} ]; } -else { $no_user_defines=1; } - # The DSO code currently always implements all functions so that no # applications will have to worry about that from a compilation point # of view. However, the "method"s may return zero unless that platform @@ -1021,7 +1023,9 @@ if ($target{ranlib} eq "") if (!$no_asm) { $target{cpuid_asm_src}=$table{BASE}->{cpuid_asm_src} if ($config{processor} eq "386"); - $target{cpuid_asm_src}.=" uplink.c uplink-x86.s" if (grep { $_ eq "OPENSSL_USE_APPLINK"} @{$config{defines}}); + $target{cpuid_asm_src}.=" uplink.c uplink-x86.s" + if (grep { $_ eq "OPENSSL_USE_APPLINK"} @{$config{defines}} + or $config{cflags} =~ /(?:^|\s)-DOPENSSL_USE_APPLINK(?:\s|$)/); $target{bn_asm_src} =~ s/\w+-gf2m.c// if (defined($disabled{ec2m})); @@ -1078,18 +1082,20 @@ if (!$no_asm) { } } -# Is the compiler gcc or clang? $ecc is used below to see if error-checking -# can be turned on. my $ecc = $target{cc}; -my $ccpcc = "$config{cross_compile_prefix}$target{cc}"; -$config{makedepprog} = 'makedepend'; -open(PIPE, "$ccpcc --version 2>&1 | head -2 |"); -while ( ) { - $config{makedepprog} = $ccpcc if /clang|gcc/; - $ecc = "clang" if /clang/; - $ecc = "gcc" if /gcc/; +if ($^O ne "VMS") { + # Is the compiler gcc or clang? $ecc is used below to see if + # error-checking can be turned on. + my $ccpcc = "$config{cross_compile_prefix}$target{cc}"; + $config{makedepprog} = 'makedepend'; + open(PIPE, "$ccpcc --version 2>&1 | head -2 |"); + while ( ) { + $config{makedepprog} = $ccpcc if /clang|gcc/; + $ecc = "clang" if /clang/; + $ecc = "gcc" if /gcc/; + } + close(PIPE); } -close(PIPE); $config{depflags} =~ s/^\s*//; @@ -1139,28 +1145,36 @@ if ($strict_warnings) unless $ecc eq 'gcc' || $ecc eq 'clang'; foreach $wopt (split /\s+/, $gcc_devteam_warn) { - $config{cflags} .= " $wopt" unless ($config{cflags} =~ /(^|\s)$wopt(\s|$)/) + $config{cflags} .= " $wopt" unless ($config{cflags} =~ /(?:^|\s)$wopt(?:\s|$)/) } if ($ecc eq "clang") { foreach $wopt (split /\s+/, $clang_devteam_warn) { - $config{cflags} .= " $wopt" unless ($config{cflags} =~ /(^|\s)$wopt(\s|$)/) + $config{cflags} .= " $wopt" unless ($config{cflags} =~ /(?:^|\s)$wopt(?:\s|$)/) } } - if ($target !~ /^mingw/) + } + +unless ($disabled{"crypto-mdebug-backtrace"}) + { + foreach my $wopt (split /\s+/, $memleak_devteam_backtrace) { - foreach $wopt (split /\s+/, $memleak_devteam_backtrace) - { - $config{cflags} .= " $wopt" unless ($config{cflags} =~ /(^|\s)$wopt(\s|$)/) - } - if ($target =~ /^BSD-/) - { - $config{ex_libs} .= " -lexecinfo"; - } + $config{cflags} .= " $wopt" unless ($config{cflags} =~ /(?:^|\s)$wopt(?:\s|$)/) + } + if ($target =~ /^BSD-/) + { + $config{ex_libs} .= " -lexecinfo"; } } +if ($user_cflags ne "") { $config{cflags}="$config{cflags}$user_cflags"; } +else { $no_user_cflags=1; } +if (@user_defines) { $config{defines}=[ @{$config{defines}}, @user_defines ]; } +else { $no_user_defines=1; } + +# ALL MODIFICATIONS TO %config and %target MUST BE DONE FROM HERE ON + # If we use the unified build, collect information from build.info files my %unified_info = (); @@ -1327,7 +1341,7 @@ if ($builder eq "unified") { my $lineiterator = shift; my $target_kind = $1; while (defined $lineiterator->()) { - chomp; + s|\R$||; if (/^\s*ENDRAW\[((?:\\.|[^\\\]])+)\]\s*$/) { die "ENDRAW doesn't match BEGINRAW" if $1 ne $target_kind; @@ -1485,9 +1499,15 @@ EOF foreach (@{$depends{$dest}}) { my $d = cleanfile($sourced, $_, $blddir); - # If it isn't found in the source, let's assume it's generated - # and that the Makefile template has the lines - if (! -f $d) { + # If we know it's generated, or assume it is because we can't + # find it in the source tree, we set file we depend on to be + # in the build tree rather than the source tree, and assume + # and that there are lines to build it in a BEGINRAW..ENDRAW + # section or in the Makefile template. + if (! -f $d + || !(grep { $d eq $_ } + map { cleanfile($srcdir, $_, $blddir) } + (@generated_headers, @generated_by_make_headers))) { $d = cleanfile($buildd, $_, $blddir); } # Take note if the file to depend on is being renamed @@ -1658,13 +1678,6 @@ EOF print OUT "1;\n"; close(OUT); -die <<"EOF" if $builder ne "unified" && $srcdir ne $blddir; - -***** Trying building anywhere else than in the source tree will not -***** work for target $config{target}. To make it possible, it needs -***** to use the "unified" build scheme. - -EOF print "IsMK1MF =", ($builder eq "mk1mf" ? "yes" : "no"), "\n"; print "CC =$target{cc}\n"; @@ -1701,14 +1714,10 @@ print "THIRTY_TWO_BIT mode\n" if $config{b32}; print "BN_LLONG mode\n" if $config{bn_ll}; print "RC4 uses $config{rc4_int}\n" if $config{rc4_int} != $def_int; -mkpath(catdir($blddir, "include/openssl")); -run_dofile(catfile($blddir, "include/openssl/opensslconf.h"), - catfile($srcdir, "include/openssl/opensslconf.h.in")); - -mkpath(catdir($blddir, "crypto/include/internal")); -foreach my $alg ( 'bn' ) { - run_dofile(catfile($blddir, "crypto/include/internal/${alg}_conf.h"), - catfile($srcdir, "crypto/include/internal/${alg}_conf.h.in")); +for (@generated_headers) { + mkpath(catdir($blddir, dirname($_))); + run_dofile(catfile($blddir, $_), + catfile($srcdir, $_.".in")); } ### @@ -1751,42 +1760,12 @@ my %builders = ( run_dofile(catfile($blddir, $target{build_file}), $config{build_file_template}, catfile($srcdir, "Configurations", "common.tmpl")); - - my $make_command = "$make PERL=\'$config{perl}\'"; - my $make_targets = ""; - my $need_make_depend = - join(" ", @{$config{depdefines}}) ne join(" ", @default_depdefines); - $make_targets .= " depend" - if $need_make_depend && $make_depend; - - (system $make_command.$make_targets) == 0 - or die "make $make_targets failed" - if $make_targets ne ""; - - if ($need_make_depend && !$make_depend) { - $warn_make_depend++; - } }, unixmake => sub { build_Makefile(); run_dofile("util/domd", "util/domd.in"); chmod 0755, "util/domd"; - - my $make_command = "$make PERL=\'$config{perl}\'"; - my $make_targets = ""; - my $need_make_depend = - join(" ", @{$config{depdefines}}) ne join(" ", @default_depdefines); - $make_targets .= " depend" - if $need_make_depend && $make_depend; - - (system $make_command.$make_targets) == 0 - or die "make $make_targets failed" - if $make_targets ne ""; - - if ($need_make_depend && !$make_depend) { - $warn_make_depend++; - } }, mk1mf => sub { my $platform = shift; @@ -1879,14 +1858,6 @@ shared libraries, please let us know (but please first make sure you have tried with a current version of OpenSSL). EOF -print <<"EOF" if ($warn_make_depend); - -*** Because of configuration changes, you MUST do the following before -*** building: - - make depend -EOF - ###### TO BE REMOVED BEFORE FINAL RELEASE ###### ###### If the user hasn't chosen --unified, try to nudge them. @@ -2211,6 +2182,7 @@ sub print_table_entry "shared_target", "shared_cflag", "shared_ldflag", + "shared_rcflag", "shared_extension", "obj_extension", "exe_extension", @@ -2321,7 +2293,7 @@ sub collect_from_file { my $saved_line = ""; $_ = ""; while (<$fh>) { - chomp; + s|\R$||; if (defined $line_concat) { $_ = $line_concat->($saved_line, $_); $saved_line = ""; @@ -2352,7 +2324,7 @@ sub collect_from_array { my $saved_line = ""; $_ = ""; while (defined($_ = shift @array)) { - chomp; + s|\R$||; if (defined $line_concat) { $_ = $line_concat->($saved_line, $_); $saved_line = ""; @@ -2377,7 +2349,7 @@ sub collect_information { my %collectors = @_; while(defined($_ = $lineiterator->())) { - chomp; + s|\R$||; my $found = 0; foreach my $re (keys %collectors) { if ($re ne "OTHERWISE" && /$re/) {