Skip to content

FlexDLL 0.44

Latest
Compare
Choose a tag to compare
@dra27 dra27 released this 06 May 16:01

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 .drectve section
  • #136, @dra27, @jmid, @MisterDA: Fix parallel access crashes and misbehavior
  • #29, #141, @jonahbeckford: Support relocation kind 0003 (IMAGE_REL_AMD64_ADDR32NB) and IMAGE_REL_I386_DIR32NB. Extend relative types to IMAGE_REL_AMD64_REL32_5
  • #148, @toots: Pass-through -pthread to 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 flexlink support 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.