0.5.34: This is the last patch release in the 0.5.x series. As of this release, there are no known problems pertaining to slibtool's core functionality or compatibility with the historic libtool implementation. Outstanding features that are not covered by this release are the internal implementation of archive merging (as opposed to using ar(1) and MRI scripts), as well as the internal implementation, integration, and support of -dlpreopen. Included with this release is also m4/slibtool.m4, which by now has been tested against, and may be successfully used with legacy autoconf versions (such as 2.64), as well as more recent ones (2.69 or later). A new invocation mode, --mode=slibtoolize (or the slibtoolize symlink) is currently under development, and will be included with the next release. - driver: slbt_get_driver_ctx(): properly record the envp parameter. - driver api: slbt_get_flavor_settings(): initial implementation. - driver: added explicit --sysroot support. - link mode: set the -soname linker flag alongside the -avoid-version argument. - link mode: slbt_exec_link_create_executable(): enclose $DL_PATH in quotes. - link mode: slbt_exec_link_create_executable(): replace backtick with $(). - link mode: -module without -rpath is an executable, not a dynamic library. - link mode: legacy libtool compatibility: support linking against -module libs. - link mode: slbt_exec_link(): properly support non-default shared-object suffix. - link mode: slbt_exec_link_create_archive(): eliminate the libfoo.a symlink. - link mode: static-only libfoo.la: account for non-default shared-object suffix. - link mode: always create libfoo.so.def.{host|flavor} and related tags. - link mode: PE targets: -release: fix names used for and in import libraries. - link mode: slbt_exec_link_create_executable(): place .exe.wrapper under .libs/. - install mode: driver: added (referential) --sysroot support. - install mode: slbt_exec_install_entry: properly handle fussix flavors. - install mode: libfoo.la and ibfoo.so.def.host: properly handle -release. - install mode: slbt_exec_install_entry(): remove dead code. - install mode: libfoo.la installation: early detect static-only operation mode. - uninstall mode: driver: added (referential) --sysroot support. - heuristics: slbt_get_lconf_flags(): added missing 'else' in if-then block. - heuristics: slbt_get_lconf_flags(): enhanced the string-scanning logic. - library: replace all uses of open() with openat(). - library: replace all uses of chmod() with fchmodat(). - library: replace all uses of unlink() with unlinkat(). - library: replace all uses of rmdir() with unlinkat(). - library: replace all uses of rename() with renameat(). - library: replace all uses of symlink() with symlinkat(). - library: replace all uses of [slbt_]readlink() with [slbt_]readlinkat(). - library: replace all uses of stat() and lstat() with fstatat() counterparts. - library: replace all uses of getcwd() with slbt_realpath(). - library: eliminate use of the external environ variable. 0.5.33: This patch release provides several bug fixes and improvements, as well as added support for the NO_COLOR environment variable. - driver: always respect the NO_COLOR envvar & SLBT_DRIVER_ANNOTATE_NEVER flag. - driver: a heuristics-based -disable-shared now overrides --tag=disable-static. - driver: --tag=disable-shared now overrides a heuristics-based -disable-static. - link mode: always include deplib dirs in ldpathenv. - link mode: enclose vnames in wrapper script in braces. - link mode: always include explicit -L dirs in ldpathenv. - link mode: shared: use .deps of a static-only .la input argument as needed. - link mode: require dependency list to be present for all .la input arguments. - execute mode: fix NULL ptr deref with only one argument. - execute mode: handle relative -L pathnames & cwd-relative wrapper scripts. - install mode: slbt_exec_install(): added legacy shtool support. - install mode: account for a libfoo.a that was created with -disable-static. - install mode: always respect the SLBT_DRIVER_ANNOTATE_NEVER flag. - uninstall mode: always respect the SLBT_DRIVER_ANNOTATE_NEVER flag. - argv.h: tty colors: added argv_usage_plain(). 0.5.32: This patch release provides several bug fixes as well as the new (or proper) implementation of previously missing features. - driver: added -Xlinker support. - driver: support -static-libtool-libs (currently as a no-op). - driver: slbt_init_flavor_settings(): properly handle the -shrext argument. - driver: --version: update the git repository reference to the https variant. - link mode: check for and properly support -version-info with -release. - link mode: .def file name: added proper -release support. - link mode: slbt_exec_link(): record the -shrext argument for the install step. - install mode: support wrapping of /path/to/sh /path/to/install-sh. - install mode: slbt_exec_install_entry(): added -shrext support. - uninstall mode: remove hard-coded shell logic, revisit later as needed. - heuristics: support finding arbitrarily named scripts up the build tree. - heuristics: added (annotated) trace output. - heuristics: slbt_lconf_open(): added (annotated) trace_result(). - output: print out the recorded not-found path. - output: added slbt_output_fdcwd(). - internals: error tracing: record the not-found path upon ENOENT as needed. - library: compile & link modes: properly record the not-found path upon error. - helper api: added slbt_realpath(). - build system: ccenv_{tool|attr}_epilog(): properly handle long output strings. - project: added BUGS and a note on where to report bugs and issues. - project: config.project: update $mb_pkgrep to the https variant. 0.5.31: This patch release fixes a regression in the 0.5.29 release, specifically in the implementation of the -module semantics, as well as a latent bug in the algorithm for finding a build project's generated libtool script. - link mode: properly handle .la targets built with -module. - libtool finder: exit loop upon reaching the root directory. 0.5.30: This patch release fixes sed usage ('\s' vs '[[:space:]]') in slibtool's own build system. Release immediately in order to prevent build errors in strict build environments. - build system: ccenv_output_defs(): use conformant sed construct. 0.5.29: This patch release provides a few important additions and bug fixes, as well as several improvements in slibtool's own build system. In addition, it denotes the (semantic) transition from midipix.org to foss21.org. - driver: added F77 support. - driver: added -XCClinker support. - driver: added FC support. - driver: host flavors: added suffixed suffixes support. - driver: --heuristics: respect explicit --disable-shared and/or -static. - driver: resolve conflicting and/or incompatible command-line arguments. - driver, link mode: properly implement the -module semantics. - driver, compile & link mode: support arbitrary & known compiler wrappers. - link mode: host flavors: properly support suffixed suffixes. - install mode: host flavors: properly support suffixed suffixes. 0.5.28: This patch release allows the enhanced target-ar logic that was introduced in the previous patch release to properly work on legacy systems with a tricky posix_spawnp() implementation. - driver: enhanced target-ar logic: accommodate legacy systems. 0.5.27: This patch release provides an important enhancement with respect to the identification of the ar tool to be invoked in slibtool's link mode. More specifically, rather than relying on the presence of -ar, slibtool will now attempt to invoke, as needed, several alternate ar tools in the following order: -ar, --ar, and, in the case of the native target, also -ar and ar. - driver: slbt_init_host_params(): enhance the target-ar related logic. 0.5.26: This patch release follows significant improvements in, as well as additions to slibtool's functionality. Most notably, with the additions of --heuristics and the rlibtool convenience symlink, slibtool may now automagically operate in the exact same mode (static only, shared only, or both) as the generated libtool script for which it serves as a surrogate. - utility: --heuristics support: added the 'rlibtool' convenience symlink. - utility: convenience symlinks: added rclibtool, rdlibtool, and rdclibtool. - link mode: properly handle local archives. - link mode: remove placeholder arguments. - link mode: remove redundant -l arguments. - link mode: remove redundant -L arguments. - compile mode: remove placeholder arguments. - driver: added --heuristics support. - driver: slbt_get_driver_ctx(): support stack-based argv. - driver: output error vector upon post-argv-parsing failures. - driver: execution context: added slbt_reset_argvector(). - driver: properly normalize --library-path= arguments. - internals: slbt_mkdir() now uses the context's fdcwd. - internals: slbt_adjust_linker_argument() now uses the context's fdcwd. - internals: -shared/-static heuristics: added slbt_get_lconf_flags(). 0.5.25: This patch release follows several important enhancements in slibtool's functionality, including proper support of explicit .a and .so input arguments in link mode, and use of validly alternate (non-)pic objects. With respect to compiler and target flavors, slibtool now accommodates clang's debated approach towards the -fPIC switch in always-pic targets. Last but not least, and following much discussion and consideration of the various trade-offs, this release redefines _XOPEN_SOURCE to 700. With that said, slibtool could still be easily built on older systems for as long as they provide openat, faccessat, and (the soon-to-be-used) fexecve. - driver: added --tag=RC support. - driver: added --windres support. - driver: use a compiler --target argument also as a tool argument. - driver: if no --tag had been defined in compile mode, set --tag to CC. - link mode: properly handle explicit archive input arguments. - link mode: properly handle external archives and libraries. - link mode: process dependencies also for non-pic .la args. - link mode: support validly alternate (non-)pic objects. - target flavors: accommodate conceptually challenged, PICky targets. - target flavors: flavor detection: associate -windows- with mingw. - target flavors: further eliminate compiler -dumpmachine invocations. 0.5.24: This patch release explicitly requests definition of AT_FDCWD via definition of _POSIX_C_SOURCE in translation units that refer to it. 0.5.23: This patch releases fixes a couple of minor issues in slibtool's own build system. build system: all-shared front-end variant: fix ordering of -l$(PACKAGE). build system: all-shared binary: added missing build-dep on $(SHARED_SOLINK). 0.5.22: This patch release explicitly requests the openat() interface via definition of _POSIX_C_SOURCE in translation units that need it. 0.5.21: This patch release follows important enhancements in slibtool's library interfaces and API contract. In particular, slibtool now no longer uses streams, but rather pure file descriptors. In addition, i/o operations now robustly handle interruption by signals, and thus do not depend on the underlying system calls being restartable. Last but not least, slibtool now installs a pkgconfig configuration file when applicable. - argv.h: output usage and errors using [argv_]dprintf rather than fprint. - argv.h: argv_get(): be consistent between forward decl. and impl. - argv.h: move definition of struct argv_meta_impl to the implementation block. - internals: added slbt_mapped_readline(). - internals: added slbt_map_file(), slbt_unmap_file(). - internals: added slbt_dprintf(), a signal-resilient dprintf implementation. - driver: argv usage and error output: use the signal-resilient slbt_dprintf(). - driver: support alternate fd's for input/output/error/log. - driver: slbt_init_host_params(): propagate failure of -dumpmachine. - driver: slbt_init_host_params(): do not set fnative when !fdumpmachine. - driver: struct slbt_fd_ctx: added .fdcwd and .fddst. - library: invocations of openat() now use the context's fdcwd. - project: added initial pkgconfig support. 0.5.20: This patch release includes several important bug fixes pertaining to both the link and compile mode, as well as the addition of a compatible --features output. - driver: added slbt_output_features(), providing compatible --features output. - driver: compatibility: have -{shared|static} imply -disable-{static|shared}. - link mode: properly handle the combination of -release and -version-info. - link mode: slbt_exec_link_create_dep_file(): record top-level -L arguments. - link mode: --disable-{shared|static}: use differently-named placeholders. 0.5.19: This patch release includes several improvements in the driver logic, as well as one important fix to the compile mode logic. - driver: support -export-dynamic. - driver: allow flavor-based use of native tools (ar,ranlib,etc.) - driver: slbt_init_host_params(): improve native target detection logic. - driver: -shrext support: only use the extension portion of the extension. - compile mode: gnu libtool compatibility: do not add -c to compiler arguments. 0.5.18: This patch release includes several important fixes to the link mode and driver logic. In addition, it adds mdso support to midipix targets, as well as updates slibtool's own build system. - link mode: re-implemented slbt_exec_link_finalize_argument_vector(). - link mode: import library generation: added mdso support. - link mode: use -fpic objects with -disable-static. - driver: added --mdso and --implib support. - driver: added initial -dlpreopen support. - driver: support -thread-safe more elegantly. - driver: properly handle -thread-safe (no-op, compatibility). 0.5.17: This patch release fixes a subtle bug in the newly added support for packages that depend on the reordering of linker arguments. 0.5.16: This patch release fixes a subtle bug in slibtool-shared's generation of dependency lists when creating convenience library archives. Beginning with this release, the mesa package can be built with slibtool in its entirety. - slibtool-shared: properly handle .la arguments when creating an archive. - slbt_exec_link_create_dep_file(): properly initialize and track fdeps. 0.5.15: This patch release provides seamless support for the building of packages which rely on the ordering of linker arguments. With slibtool, reordering takes place only when deemed necessary. - link mode: support packages that rely on argument reordering. - error trace: remove and fix inadvertent calls to strerror(3). 0.5.14: This patch release provides several fixes at the driver level, as well as several improvements to slibtool's own internals. Addition of extended variable support to slibtool's ./configure now makes it fully compatible with (distro) build systems that pass those variable to ./configure by default. - link mode: fix fdepfile construction when determining dynlib dependency. - link mode: static archives: always have ar(1) act as ranlib(1). - driver: refine handling of --target. - build system: added extended dir variables. 0.5.13: This patch release ensures successful installation of a shared library with which no accompanying static archive was created. The release also includes two improvements in slibtool's own build system. - link mode: create an archive /dev/null symlink placeholder as needed. - PE soname support: added the designated LDFLAGS_SONAME variable. - build system: configure: pass --sysroot to the linker as a compiler argument. 0.5.12: This patch release includes a variety of fixes and improvements in slibtool's functionality, as well as several enhancements to slibtool's own build system. - driver: added support for -dlopen (currently a no-op). - error trace: improved and extended the initial interface. - error trace: added descriptive error strings for custom errors. - link mode: properly determine whether -L and -ldeplib are needed. - link mode: do not respect -disable-static without -rpath. - link mode: respect -disable-static. - link mode: properly handle indirect dependencies of .a archives. - link mode: confirm need for archive import; limit .a deps to external deps. - compile mode: respect -disable-static and -disable-shared. - install mode: respect -disable-static. - legacy wrappers: implemented compatible library and objects wrappers. - build system: added support for cygwin's, mingw's, and msys's semantics. 0.5.11: This patch release provides -portbld- support for systems that still need it, as well as an initial implementation of the --uninstall mode. In addition, this release includes a few important bug fixes, as well as adds --source-dir support to slibtool's own build system. - driver: accommodate hosts that occasionally use '-portbld-' in their triple. - link mode: properly handle -all-static when creating an executable image. - link mode: add -L.libs for current-directory .la input arguments. - uninstall mode: initial implementation. - build system: support setting an external folder as the source directory. 0.5.10: This patch release fixes the following subtle link-mode bugs: - link mode: archive creation: .la-associated objects are always under .libs/. - link mode: soname: properly handle -module when output begins with dso prefix. 0.5.9: This patch release enhances support of indirect dependencies, as well the handling of direct invocation of executables (as opposed to passing an executable to gdb or similar as an argument). - execute mode: properly handle direct program invocation. - link mode: account for directory depth when generating .deps for .la wrapper. - link mode: properly handle sub-directories in indirect .la wrapper dependency. - link mode: properly handle dependency information in current-dir .la wrappers. 0.5.8: This patch release follows several important bug-fixes, as well as the addition and integration of error trace support. - install mode: support the -f (force copy) command line argument. - link mode: properly use dependency information associated with .la wrappers. - link mode: ignore -rpath when deciding whether to create an executable. - utility: added error trace support, integration, and annotated output. - library: added public error trace interfaces. - argv.h: error message formatting: handle lonely long options. 0.5.7: This patch release contains one future-looking change in the project's design, as well as a few improvements in slibtool's own build system. - utility: added slbt_main() as a public interface, refactored accordingly. - utility: improved box integration, removed need for build-time macro. - build system: warn only upon failure to detect native size of pointer. - build system: add a test for legacy gcc versions. 0.5.6: This patch release contains a few important fixed to program logic, as well as one addition to slibtool's own build system. - driver: added --finish support. - link mode: properly handle empty dependency files. - link mode: properly handle absolute path when joining archives. - build system: support project-specific overrides of OS and toolchain defs. 0.5.5: This patch release contains a couple of important fixed to program logic, and a few minor improvements in slibtool's own build system. - link mode: support over-linking for an .la wrapper linker input argument. - execute mode: properly handle the current working directory. - build system: added support for [C|LD]FLAGS_LAST and [C|LD]FLAGS_ONCE. - build system: avoid side effects on the build system due to git-status. 0.5.4: This patch release includes a few fixes to the program logic and output, as well as several improvements in slibtool's own build system. - link mode: always create the .libs directory. - output: flush stdout upon return from output functions. - build system: remove generic dependency of object files on version.tag. - build system: moved core definition files to a designated folder. - build system: PE targets: handle subsystem setting in pe.mk. - build system: added --avoid-version support. 0.5.3: This patch release includes a few minor fixes and several improvements, all related to slibtool's own build system. - build system: app.tag: avoid unconditional step execution. - build system: configure: added --strict, --ccstrict, --ldstrict support. - build system: Makefile: added the .conf convenience target. - build system: Makefile: added the .display_cc convenience target. - build system: Makefile: added the -display_cflags convenience target. - build system: Makefile: added custom header installation support. 0.5.2: This patch release includes several fixes of bugs that were discovered while testing slibtool as the primary libtool in a pkgsrc comprehensive build. In addition, the release includes several improvements to slibtool's own build system. - link mode: legabits: generate a perfectly compatible wrapper. - install mode: legabits: install a perfectly compatible wrapper. - project: by default, slibtool is now an application-only package. - build system: added support of --disable-shared and --disable-static. - build system: added support of --all-shared and --all-static. - build system: properly handle user inclusion of -static in LDFLAGS. 0.5.1: This patch release includes several small fixes, as well as the addition of an optional (opt-in at runtime) yet important compatibility feature, namely the installation of .la wrappers. Changes in this release include: - driver: added --legabits support. - install mode: optional installation of .la wrappers. - project: added compatibility symlinks (clibtool, clibtool-[shared|static]) - build system: removed the endian.h test. - build system: proper use of any-os.mk. 0.5.0: This is the first tagged release of slibtool. It is the result of two months of intensive development, and follows rigorous testing on several systems. As of this initial release, slibtool is known to successfully build an entire Exherbo Linux system from source, build the midipix cross compilation toolchain from source, and likewise build many other packages. Support for the ELF/default host flavor is complete, and does not appear to have any errors. Support for the PE/midipix flavor is also complete, and includes not only static archives and shared libraries, but also import libraries with version support. Support for the Darwin host flavor already exists too, yet it is currently semantically incorrect, and so will be fixed in the next release.