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

Support linking unified (static) executables on POSIX platforms #1416

Merged
merged 3 commits into from
Jan 29, 2022

Conversation

housel
Copy link
Member

@housel housel commented Jan 28, 2022

No description provided.

This change makes it possible to combine Dylan libraries and all of
their dependencies into a single unified executable using the -UNIFY
build option. The unified executable will be stored in the
sbin (static executables binary) directory of the personal-root
target.

* sources/jamfiles/posix-build.jam
  (SBINDIR): New global representing the destination directory for
   static executables.
  (UNIFYLINK): New global representing the command used to link
   the unified executable.
  (rule DylanLibrary): Create a unified executable target and a
   unified static library archive for each library. Rename the
   global _lib_$(_i) to _lflag_$(_i).
  (rule DylanLibraryFiles): Add library objects to the unified static
   library archives.
  (rule DylanLibraryLinkerOptions): Add linker options to the unified
   executable target, and store them so they can be added to some
   final executable that depends on the current library.
  (rule DylanLibraryCObjects): Add C objects to the unified static
   library archives.
  (rule DylanLibraryCSources): Add C compiled objects to the unified static
   library archives.
  (rule DylanLibraryUses): Collect library dependencies and linker
   options of used libraries and add them to the unified executable.
  (rule DylanLibraryClosure): Rename the global _lib_$(_i) to _lflag_$(_i).
  (rule UnifyArchive, actions UnifyArchive): Create static library
   archives.
  (rule UnifyEXE, actions UnifyEXE): Create static executbles.
  (rule FLIBName): Rule for naming static archives.
  (rule FULIBName): Rule for naming static archives built to contain
   all executables of a library.

* sources/jamfiles/*-linux-build.jam
  (rtclibs): Add -ldl since the spy interface code in the dylan
   library references dlopen().

* sources/jamfiles/shared-darwin-build.jam
  (actions UnifyEXE): Add an override for macOS support.
* configure.ac: Update AC_INIT to 2022.1pre

* sources/lib/release-info/common-info.dylan
  ($release-version): Update to 2022.1pre.

* documentation/release-notes/source/2021.1.rst: Rename from
  2022.1.rst.
@housel housel merged commit 6ca4e26 into dylan-lang:master Jan 29, 2022
@housel housel deleted the unify-the-world branch January 29, 2022 04:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants