Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update bootstrap to use FlexDLL 0.43 from ocaml/flexdll #5579

Merged
merged 1 commit into from Jul 11, 2023

Conversation

MisterDA
Copy link
Contributor

@MisterDA MisterDA commented Jun 19, 2023

Summary

This release fixes support for parallel usage of Dynlink in OCaml 5.x, several issues with parsing archives correctly, and introduces support for MSYS2's mingw-w64 compilers. Cygwin32 support has been completely removed, following the retirement of the Cygwin32 distribution.

  • GPR#108: Add -lgcc_s to Cygwin's link libraries, upstreaming a patch from the
    Cygwin flexdll package (David Allsopp)
  • GPR#112: Put error global variables into thread-local storage (Samuel Hym, Nicolás Ojeda Bär)
  • GPR#114: Support for /alternatename directive. Fixes GPR#113 (Jonah Beckford)
  • GPR#116: Remove Cygwin32 (David Allsopp)
  • GPR#117: Fix handling of object names of length > 16 in archive files. Fixes GPR#110 (Nicolás Ojeda Bär)
  • GPR#118: Defer the detection of cygpath to the first time it's actually
    required, reducing the overall number of calls. Further, detect whether
    mingw-w64 gcc's library path requires cygpath, which further reduces the
    calls when using Cygwin's build of mingw-w64 as the search path is then
    converted only once. In passing, this trivially adds support for MSYS2's
    mingw-w64 compilers, fixing GPR#97. (David Allsopp)

Notes

The binary release includes flexlink.exe compiled with 32-bit mingw-w64 and MSVC objects compiled using the Windows SDK version 7.0 (Windows 7 + .NET 3.5). If you are using large COFF objects you may need to recompile flexlink with a 64-bit compiler. If you are using Visual Studio 2015 or later, the pre-compiled C object files will need to be rebuilt (make CHAINS=msvs support or make CHAINS=msvc64 support). We (still) hope to address both of these issues properly in the next release.

OCaml has supported bootstrap of FlexDLL since 4.03. When compiling from a Git clone, simply run git submodule update --init flexdll or, when compiling from a tarball, unzip the FlexDLL sources into flexdll/. OCaml 4.13 and later will then automatically build FlexDLL as part of the main build.

For OCaml 4.03-4.12, you must explictly run make [-j] flexdll before running make [-j] world[.opt] followed, optionally, by make flexlink.opt. This mode guarantees C objects built with the same C compiler as OCaml and also builds flexlink with the compiler you just built.

@MisterDA
Copy link
Contributor Author

Rebased the PR on the current master.

Copy link
Collaborator

@rjbou rjbou left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@rjbou rjbou added this to PR in progress in Opam 2.2.0 via automation Jul 11, 2023
@rjbou rjbou added this to the 2.2.0~alpha2 milestone Jul 11, 2023
@rjbou rjbou moved this from PR in progress to PR finalised (merge with CI) in Opam 2.2.0 Jul 11, 2023
@rjbou rjbou merged commit 2c097c9 into ocaml:master Jul 11, 2023
27 checks passed
Opam 2.2.0 automation moved this from PR finalised (merge with CI) to Done Jul 11, 2023
@MisterDA MisterDA deleted the flexdll-0.43 branch July 12, 2023 07:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Opam 2.2.0
  
Done
Development

Successfully merging this pull request may close these issues.

None yet

2 participants