summaryrefslogtreecommitdiffhomepage
path: root/NEWS
blob: 503ed8f07731a8a24e104ed61c188012aab6eb36 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
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 <target>-ar, slibtool
will now attempt to invoke, as needed, several alternate ar tools in the
following order: <target>-ar, <target>-<compiler>-ar, and, in the case
of the native target, also <compiler>-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=<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 <compiler> -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.