| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
all is the default target and must be the first one in the file.
The lib-shared component type violated this requirement by
declaring __postshared first. Move the __postshared target down
and declare it unconditionally (as it's safe to do so, and these
Makefiles are complex enough already).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The PRE_TARGETS and POST_TARGETS are supposed to be built before and
after $(OBJECTS), respectively -- at least according to the comments
in Makefile.top:
# List of targets to run before building $(OBJECT)
PRE_TARGETS :=
# List of targets to run after building $(OBJECT)
POST_TARGETS :=
The default target however builds them at the same time as $(OUTPUT),
# Default target
all: $(PRE_TARGETS) $(OUTPUT) $(POST_TARGETS)
where $(OUTPUT) basically just builds $(OBJECTS):
$(OUTPUT): $(BUILDDIR)/stamp $(OBJECTS)
...
As a result, there is a race condition when $(OBJECTS) truly requires
$(PRE_TARGETS), because they may be built at the same time. The same
problem arises the other way around with $(POST_TARGETS). As a
demonstration, one can try to build the libsvgtiny shared library
directly (note: the details are platform-dependent),
$ BD=build-x86_64-pc-linux-gnu-x86_64-pc-linux-gnu-release-lib-shared
$ make COMPONENT_TYPE=lib-shared "${BD}/libsvgtiny.so.0.1.7"
COMPILE: src/svgtiny.c
...
src/svgtiny.c:24:10: fatal error: autogenerated_colors.c: No such file or directory
24 | #include "autogenerated_colors.c"
| ^~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
This is because $(PRE_TARGETS) is not satisfied. In practice, this
condition seems hard to hit unintentionally, but it can happen if you
are building in parallel and extemely unlucky. A user discovered it in
Gentoo bug 711200.
The fix simply adds the stated dependencies on $(OBJECTS) and
$(POST_TARGETS) to guarantee the correct order.
|
|
|
|
|
|
|
|
|
| |
On Darwin (macOS), the flags needed to create a shared
library are different. Moreover, the extension is .dylib
and the version portion of the soname is inserted between
the library name and the libext, e.g. lifoo.1.2.3.dylib.
Signed-off-by: Caleb Xu <calebcenter@live.com>
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
The recent buildsystem improvements now use BUILD and HOST to set the
ABI of the system doing the building and the ABI being
targeted. Unfortunately we got these the wrong way round, this fixes
that confusion.
|
|
|
|
|
|
|
|
| |
This adds REQUIRED_LIBS variable which is a space separated list of
libraries that will be macro expanded into LIBRARIES in pkg-config
install target. This is typically used in the "Libs:" stanza for
additional (possibly conditional) libraries necessary to link the
final program.
|
| |
|
|
|
|
|
|
|
|
| |
Linux distributions typically put 64-bit libraries into /usr/lib64 to
allow coexistence of 32-bit and 64-bit libraries on one system. The
build system should make allowance for this.
Signed-off-by: John-Mark Bell <jmb@netsurf-browser.org>
|
| |
|
|
|
|
| |
recent git tag
|
| |
|
| |
|
|
|
|
| |
svn path=/trunk/tools/buildsystem/; revision=12012
|
|
|
|
|
|
| |
confused
svn path=/trunk/tools/buildsystem/; revision=11483
|
|
|
|
|
|
| |
the .a don't hang around to confuse me later
svn path=/trunk/tools/buildsystem/; revision=11409
|
|
|
|
| |
svn path=/trunk/tools/buildsystem/; revision=10991
|
|
|
|
| |
svn path=/trunk/tools/buildsystem/; revision=10971
|
|
|
|
| |
svn path=/trunk/tools/buildsystem/; revision=9788
|
|
|
|
| |
svn path=/trunk/tools/buildsystem/; revision=9461
|
|
|
|
| |
svn path=/trunk/tools/buildsystem/; revision=8846
|
|
|
|
| |
svn path=/trunk/tools/buildsystem/; revision=8493
|
|
|
|
|
|
|
|
| |
simultaneous compilation and dependency generation.
Add canned rules for compilers that cannot calculate dependency information.
svn path=/trunk/tools/buildsystem/; revision=7890
|
|
|
|
| |
svn path=/trunk/tools/buildsystem/; revision=7654
|
|
|
|
| |
svn path=/trunk/tools/buildsystem/; revision=7652
|
|
|
|
| |
svn path=/trunk/tools/buildsystem/; revision=7651
|
|
|
|
| |
svn path=/trunk/tools/buildsystem/; revision=7648
|
|
|
|
| |
svn path=/trunk/tools/buildsystem/; revision=7307
|
|
|
|
| |
svn path=/trunk/tools/buildsystem/; revision=7218
|
|
|
|
| |
svn path=/trunk/tools/buildsystem/; revision=7205
|
|
|
|
| |
svn path=/trunk/tools/buildsystem/; revision=7203
|
|
|
|
| |
svn path=/trunk/tools/buildsystem/; revision=7038
|
|
|
|
| |
svn path=/trunk/tools/buildsystem/; revision=7029
|
|
|
|
| |
svn path=/trunk/tools/buildsystem/; revision=7014
|
|
|
|
| |
svn path=/trunk/tools/buildsystem/; revision=6901
|
|
|
|
| |
svn path=/trunk/tools/buildsystem/; revision=6899
|
|
|
|
| |
svn path=/trunk/tools/buildsystem/; revision=6886
|
|
|
|
| |
svn path=/trunk/tools/buildsystem/; revision=6879
|
|
|
|
| |
svn path=/trunk/tools/buildsystem/; revision=6876
|
|
|
|
|
|
| |
Also in installation rule regeneration.
svn path=/trunk/tools/buildsystem/; revision=6869
|
|
|
|
|
|
|
|
| |
DIR_INSTALL_ITEMS.
Make test definitions take the same form as install items. Now you can have more than one source file per test binary.
svn path=/trunk/tools/buildsystem/; revision=6867
|
|
|
|
| |
svn path=/trunk/tools/buildsystem/; revision=6852
|
|
|
|
| |
svn path=/trunk/tools/buildsystem/; revision=6843
|
|
|
|
|
|
| |
Use CC to link, not LD, cos that's stupid.
svn path=/trunk/tools/buildsystem/; revision=6841
|
|
|
|
|
|
|
| |
Fix canned command sequences to ensure that $(CFLAGS)/$(TESTCFLAGS) is evaluated when the command is run, rather than at parse time.
Reorder setting up of TEST(CFLAGS|LDFLAGS) to ensure that any dependent libraries appear after our component. Also ensure these variables are reevaluated when used.
svn path=/trunk/tools/buildsystem/; revision=6839
|
|
svn path=/trunk/tools/buildsystem/; revision=6831
|