diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 1df44c4f0094b4..feb28b62c8e441 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -183,3 +183,67 @@ jobs: # Disable testing for now. TBD: Need local cygwin installation to debug . # - name: Run openssl tests # run: bash -c "cd openssl && make V=1 test" + mingw: + # Run a job for each of the specified target architectures: + # copied and modified from shared. Instead of installing nasm we + # install mingw and cygwin. + # + strategy: + matrix: + os: + - windows-2022 + platform: + - arch: win64 + config: enable-tests no-fips enable-dos2unix + runs-on: ${{ github.server_url == 'https://github.com' && matrix.os || format('{0}-self-hosted', matrix.os) }} + steps: + - uses: actions/checkout@v4 + - uses: cygwin/cygwin-install-action@master + with: + packages: perl git make gcc-core gcc dos2unix + - name: Check repo + run: cygcheck -V + - name: Full cygcheck status + run: cygcheck -s -v -r -h + - name: Install MinGW + uses: egor-tensin/setup-mingw@v2 + with: + platform: x64 + cygwin: 1 + - name: prepare the build directory + run: mkdir _build + - name: config + working-directory: _build + run: | + bash -c "gcc --version && perl ../Configure ${{ matrix.platform.config }}" + bash -c "perl configdata.pm --dump" + - name: build + working-directory: _build + run: | + bash -c "make -j 4" + - name: save artifacts + uses: actions/upload-artifact@v3 + with: + name: "ci@-${{ matrix.os }}" + path: *.s + if-no-files-found: ignore + retention-days: 2 + - name: download coreinfo + uses: suisei-cn/actions-download-file@v1.6.0 + with: + url: "https://download.sysinternals.com/files/Coreinfo.zip" + target: _build/coreinfo/ + - name: get cpu info + working-directory: _build + continue-on-error: true + run: | + 7z.exe x coreinfo/Coreinfo.zip + ./Coreinfo64.exe -accepteula -f + ./apps/openssl.exe version -c + - name: Check platform symbol usage + working-directory: _build + run: perl ../util/checkplatformsyms.pl ../util/platform_symbols/windows-symbols.txt libcrypto-3-x64.dll ./libssl-3-x64.dll + - name: test + working-directory: _build + run: | + bash -c "make test VERBOSE_FAILURE=yes HARNESS_JOBS=4" diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl index 4c24cae7ab62ee..d7557d286e8b9f 100644 --- a/Configurations/unix-Makefile.tmpl +++ b/Configurations/unix-Makefile.tmpl @@ -2011,13 +2011,17 @@ EOF my $dofile = abs2rel(rel2abs(catfile($config{sourcedir}, "util", "dofile.pl")), rel2abs($config{builddir})); - return <<"EOF"; -$script: $sources configdata.pm - \$(RM) "$script" - \$(PERL) "-I\$(BLDDIR)" -Mconfigdata "$dofile" \\ - "-o$target{build_file}" $sources > "$script" - chmod a+x $script -EOF + my $rv; + $rv .= "$script: $sources configdata.pm\n"; + $rv .= "\t\$(RM) \"$script\"\n"; + $rv .= "\t\$(PERL) \"-I\$(BLDDIR)\" -Mconfigdata \"$dofile\" \\\n"; + $rv .= "\t \"-o$target{build_file}\" $sources > \"$script\"\n"; + if ($config{dos2unix} == 1 && $script =~ /.+\.sh$/) { + $rv .= "\tdos2unix $script $script.tmp\n"; + $rv .= "\tmv $script.tmp $script\n"; + } + $rv .= "\tchmod a+x $script\n"; + return $rv; } sub generatedir { my %args = @_; diff --git a/Configure b/Configure index cef9e8c3e6662e..ce642eb2856cd7 100755 --- a/Configure +++ b/Configure @@ -455,6 +455,7 @@ my @disablables = ( "dgram", "dh", "docs", + "dos2unix", "dsa", "dso", "dtls", @@ -865,6 +866,10 @@ while (@argvcopy) $unsupported_options{$_} = 1; next; } + elsif ($word =~ /dos2unix/) + { + $config{dos2unix} = 1; # .sh scripts on cygwin windows needs to be converted to unix form + } } if (/^no-(.+)$/ || /^disable-(.+)$/) {