Releases: ocaml/flexdll
FlexDLL 0.44
Summary
This release addresses various issues with using alternate toolchains and for cross-compilation, in addition to a few bug fixes.
Changes
- #126, #127, @rzabarazesh: Recognise hyphens in option names in the COFF
.drectvesection - #136, @dra27, @jmid, @MisterDA: Fix parallel access crashes and misbehavior
- #29, #141, @jonahbeckford: Support relocation kind 0003 (
IMAGE_REL_AMD64_ADDR32NB) andIMAGE_REL_I386_DIR32NB. Extend relative types toIMAGE_REL_AMD64_REL32_5 - #148, @toots: Pass-through
-pthreadto the linker - #150, @MisterDA: Fix stack reserve incorrectly reading from the start of the PE executable instead of the COFF file header. Fix reading the file address of new exe header
- #153, @MisterDA: Allow the names of the compiler binaries to be overridden without losing the flags which go with them to assist use of alternate compilers and for cross-compilation. Fix FlexDLL cross-build on macOS and BSD
- #151, @punchagan: Use response files with all toolchains
- #152, @punchagan: Use a response file to pass arguments to
cygpath - #156, @MisterDA: Allow choosing an alternative linker and manifest tool at runtime with
-use-linker=<cmd>and-use-mt=<cmd> - #133, #147, @dra27: Allow default libraries to be marked as optional
- #157, @MisterDA: Improve
flexlinksupport on running on Unix (for cross-compiling) - #158, @MisterDA: Reuse the compilers used during the build for later operations, such as querying the compilers for their library search paths. Support parsing clang output
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 future, although now that FlexDLL is mostly used via opam, this hopefully doesn't cause too many issues.
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.
FlexDLL 0.43
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.
Changes
- #118, @dra27: Support MSYS2's mingw-w64 compilers as part of reducing the number of calls made to
cygpathbyflexlink. For MSYS2, this actually meanscygpathis never called, and the performance offlexlinkwhen using Cygwin's mingw-w64 compilers is considerably improved - #116, @dra27: Remove Cygwin32 support completely. The options have been removed, rather than raising errors, given that distribution has been archived
- #112, @shym: Fix parallel use of flexdll from OCaml 5 by putting error handling variables in thread-local storage
- #101, #117, @nojb: Fix handling of object names longer than 16 characters with non-Microsoft archivers
- #113, #114, @jonahbeckford: Interpret the
/alternatenamelinker directive - #110, @dra27: A full hexadecade after its creation, it felt time to have
flexlink -vnumandflexlink -versionreport version information, asocamlcandocamloptdo! - #108, @dra27: Add
-lgcc_sto Cygwin's link libraries (upstreams an old patch carried in Cygwin's flexdll package)
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.
FlexDLL 0.42
Summary
This release primarily adds support for GCC's -l: syntax, to allow specific libraries to be linked statically.
Changes
- #106, @dra27: Support
-l:syntax, to allow static linking of specific libraries - #102, #103, @dra27: Delete objects from C files compiled by flexlink (report by @xavierleroy)
- #72, #85, @dra27: Split multiple arguments passed with a single
-Wl; completes the support for-Wl,added in #73 in 0.38
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 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.
FlexDLL 0.41
Summary
This release fixes the build system to support semantic versioning numbers returned by ocamlopt -version (5.0.0 vs 5.00.0).
Changes
- #98, @dra27: Eliminate Warning 6 compiling
coff.ml. - #99, @dra27: Harden version number parsing from
ocamlopt -version.
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 hope to address both of these issues properly in the next release.
OCaml has supported bootstrap of FlexDLL since 4.03 - if compiling from a Git clone, simply run git submodule update --init flexdll or if compiling from a tarball, unzip the FlexDLL sources into flexdll/ and 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.
FlexDLL 0.40
Summary
This release adds support for recent Visual Studio and Windows SDK releases along with a couple of bug fixes and new support for Extended COFF.
Changes
- #65, @db4: Add Extended COFF support permitting MSVC objects compiled with
/bigobj. - #80, @dra27: Silence cl's filename display for long commands as well as short ones.
- #88, @yakobowski: Correctly handle relative search paths coming from
gcc -print-search-dirs. - #94, @dra27: Fix parsing of COFF archives to ignore
<XFGHASH>headers, allowing the Windows 11 SDK to be used. - #96, @dra27: Suppress volatile metadata on versions of MSVC which support it.
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 hope to address both of these issues properly in the next release.
OCaml has supported bootstrap of FlexDLL since 4.03 - if compiling from a Git clone, simply run git submodule update --init flexdll or if compiling from a tarball, unzip the FlexDLL sources into flexdll/ and 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.
FlexDLL 0.39
Summary
When used with OCaml 4.12.0, restores full support to Cygwin64 for dynamic loaded stub libraries and native dynlink.
Changes
- #89, @dra27: Stop passing
--image-baseon Cygwin64. Cygwin64 DLLs should load at0x4:00000000-0x6:00000000if not rebased or0x2:00000000-0x4:00000000if rebased. - #90, @dra27: Fix passing
NULLtoflexdll_dlopenon non-Cygwin builds.
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 hope to address both of these issues properly in the next release.
OCaml has supported bootstrap of FlexDLL since 4.03 - if compiling from a Git clone, simply run git submodule update --init flexdll or if compiling from a tarball, unzip the FlexDLL sources into flexdll/ and 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.
FlexDLL 0.38
Summary
This is largely a service release, as we haven't released an update to FlexDLL in nearly three years!
Changes
- #3, @fdopen: data symbols in import libraries are now recognised (libffi in ctypes.foreign now works)
- #48, @dra27: C++ object files can now be linked in the mingw ports (ocaml-mccs now works)
- #49, @kanigsson: the 64bit GNAT compiler is now supported
- #58, @db4:
-custom-crtnow works again (regression since 0.34) - #61, @db4: amd64 debug relocations are now ignored (i386 was already ignored)
- #64, @db4, @alainfrisch: fix problem with setting page permission during relocation of consecutive relocation addresses spanning multiple memory pages
- #68, @bryphe, @dra27: fix incorrect calculation of maximum command length supported by MSVC
- #73, @MSoegtropIMC: GCC-style linker options (
-Wl,-…) onto the linker - #78, @bschommer:
flexlinkcompiles without deprecation warnings on OCaml 4.08+ - #81, #84, @dra27: use
msvs-detect(from metastack/msvs-tools) for detecting Windows SDK or Visual Studio - #86, @dra27:
flexlinknow compiles with OCaml 3.11-4.02 again
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 hope to address both of these issues properly in the next release.
OCaml has supported bootstrap of FlexDLL since 4.03 - if compiling from a Git clone, simply run git submodule update --init flexdll or if compiling from a tarball, unzip the FlexDLL sources into flexdll/ and 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.
0.37
Prepare for releasing 0.37.
0.36
All releases can be downloaded from GitHub.
0.35
0.35