Christophe de Dinechin
0317d1ea97
Fix the colorize target
2018-04-04 10:21:04 +02:00
Christophe de Dinechin
37f7dc4f9d
Make sure that LDFLAGS are set when running configuration steps
...
This is necessary for example when specific flags are required to
find a library in a configuration rule, e.g. LDFLAGS=/some/path
2018-04-04 10:21:04 +02:00
Christophe de Dinechin
856fca299e
Correctly generate pkg-config.mk when CONFIG=libX but no PKGCONFIGS
2018-04-04 10:21:04 +02:00
Christophe de Dinechin
32982f98c6
When cleaning, also clean libraries
2018-04-04 10:21:04 +02:00
Christophe de Dinechin
172dbe84d6
Make the build for libraries more robust in case of mis-spelling
2018-04-04 10:21:04 +02:00
Christophe de Dinechin
502d12b9b6
Cleanup variants
2018-04-04 10:21:04 +02:00
Christophe de Dinechin
472c390157
Put the /dev/null in $(CAT)
...
Also do not build library checks with $(CFG_CFLAGS), because they are
neither needed nor available at that point.
2018-04-04 10:21:04 +02:00
Christophe de Dinechin
547bc93ad3
Fix passing of libraries during test
2018-04-04 10:21:04 +02:00
Christophe de Dinechin
3821686b85
Show variant information in [BEGIN] and [END] steps
2018-04-04 10:21:04 +02:00
Christophe de Dinechin
96d1e61a61
Better install process
2018-04-04 10:21:04 +02:00
Christophe de Dinechin
13ceb48407
Cleanup cleanup rules
2018-04-04 10:21:04 +02:00
Christophe de Dinechin
c15ff77bf4
Allow paralllel builds for configuration steps (defer after variants resolved)
2018-04-04 10:21:04 +02:00
Christophe de Dinechin
9da269b646
Disable configuration steps before actually building
...
This ensures that configuration steps are properly logged in make.log
2018-04-04 10:21:04 +02:00
Christophe de Dinechin
4eab5b04b5
Remove extra / in top level .mkdir
2018-04-04 10:21:04 +02:00
Christophe de Dinechin
4cba1dc07f
Avoid extra / after $(OUTPUT)
2018-04-04 10:21:04 +02:00
Christophe de Dinechin
dc429be3b2
Avoid adding / in $(OBJDIR)
2018-04-04 10:21:04 +02:00
Christophe de Dinechin
b6e7ccf05d
Change location for build outputs to something more practical for daily use
2018-04-04 10:21:04 +02:00
Christophe de Dinechin
8d0b734e70
Add TOP variable to indicate top-level directory
...
This makes the output file organization cleaner in case where the
'build' directory is not itself at the top-level.
2018-04-04 10:21:04 +02:00
Christophe de Dinechin
671883dbf1
pkg-config results must be in OBJDIR, not OBJROOT
2018-04-04 10:21:04 +02:00
Christophe de Dinechin
cb6b38ad72
Extract link libraries from CONFIG libX entries
2018-04-04 10:21:04 +02:00
Christophe de Dinechin
332be643c7
Put variants as part of configuration phase rather than libraries
2018-04-04 10:21:04 +02:00
Christophe de Dinechin
a4398bbd79
Clarify order of targets in parallel builds
2018-04-04 10:21:04 +02:00
Christophe de Dinechin
3d675e35fb
Add support for optional pkg-config entries
2018-04-04 10:21:04 +02:00
Christophe de Dinechin
24eff2112b
Workaround a bug in GNU make when reloading generated makefiles
...
The problem was discovered testing parallel builds.
The configuration rules depend on generated pkg-config.mk files.
However, experimentally, variables set in these files are not
correctly reloaded in rules declared in other variables.
Specifically, $(CFLAGS_PKGCONFIG) was not re-expanded after being
modified, which led to configuration builds to lack the required
flags, causing false configuration step failures.
The flags are now explicitly listed using $(shell cat...), which
is a little bit more expensive during the configuration step, but
ensures that the flags are correctly seen. Note that at that stage,
the dependency ensures that all the files were built correctly.
2018-04-04 10:21:04 +02:00
Christophe de Dinechin
cb38305bb6
Write targets for configuration steps in one stdout redirection, no append
2018-04-04 10:21:04 +02:00
Christophe de Dinechin
263725113e
Make sure configuration happens before pre-build
2018-04-04 10:21:04 +02:00
Christophe de Dinechin
798771a4dc
Make file names for configuration-generated files more consistent
2018-04-04 10:21:04 +02:00
Christophe de Dinechin
53216cc34e
Variants can't be built in parallel
2018-04-04 10:21:04 +02:00
Christophe de Dinechin
63decf96d7
Cannot configure until we have pre-built (including pkg-config)
2018-04-04 10:21:04 +02:00
Christophe de Dinechin
9df2d4fc2a
Whitespace adjustment for alignment
2018-04-04 10:21:04 +02:00
Christophe de Dinechin
0ab036c3db
Make it possible to have config-dependant SOURCES
2018-04-04 10:21:04 +02:00
Christophe de Dinechin
e8f7ccd2d4
Make configuration generation less verbose
2018-04-04 10:21:04 +02:00
Christophe de Dinechin
7f1c4e9abc
Make sure pkgconfig are analyzed before checking configuration
2018-04-04 10:21:04 +02:00
Christophe de Dinechin
85baa3471d
Reduce verbosity of configuration steps
2018-04-04 10:21:03 +02:00
Christophe de Dinechin
1099312c9f
Slight beautification of configuration steps
2018-04-04 10:21:03 +02:00
Christophe de Dinechin
0f3b5d325a
Expose configuration variables to makefile
2018-04-04 10:21:03 +02:00
Christophe de Dinechin
7de4f63cf9
Add makefile dependencies for configuration
2018-04-04 10:21:03 +02:00
Christophe de Dinechin
088ea30d1c
Allow configuration programs to be local in project
2018-04-04 10:21:03 +02:00
Christophe de Dinechin
80e6d1575d
Nicer to have PKGCONFIG dependencies on their own line
2018-04-04 10:21:03 +02:00
Christophe de Dinechin
1b11630993
Build variants when VARIANTS= is set
2018-04-04 10:21:03 +02:00
Christophe de Dinechin
cefab2c2e9
Remove useless BASENAME_DIR
2018-04-04 10:21:03 +02:00
Christophe de Dinechin
4ce7372146
Add OUTPUT and LOGS environment variables
...
They used to be called with annoying names that nobody would use
2018-04-04 10:21:03 +02:00
Christophe de Dinechin
7d24f430c1
Use faster built-in commands to build directory names
2018-04-04 10:21:03 +02:00
Christophe de Dinechin
e0e5b4a84c
Add some preliminary support for packages found with pkg-config
2018-04-04 10:21:03 +02:00
Christophe de Dinechin
981fe36296
Add support for installing header files
2018-04-04 10:21:03 +02:00
Christophe de Dinechin
cdc1a5ac32
Make sure target-dependent SOURCES are reflected in OBJECTS
2018-04-04 10:21:03 +02:00
Christophe de Dinechin
cb72543408
Minor cleanup of the install target
2018-04-04 10:21:03 +02:00
Christophe de Dinechin
5fc3828c61
Fix the output directory printout for install targets
2018-04-04 10:21:03 +02:00
Christophe de Dinechin
c033da2d47
Install libraries in addition to base product
2018-04-04 10:21:03 +02:00
Christophe de Dinechin
5105c6c97f
Install project DLL and libraries by default
2018-04-04 10:21:03 +02:00
Christophe de Dinechin
154ca40451
Fixups for ancient versions of mingw
...
Tested with mingw32-4.8.2 and make 3.79.1 running on Windows XP
2018-04-04 10:21:03 +02:00
Christophe de Dinechin
e209890343
Use -Lpath -llib for libraries
...
Avoid referencing libraries by absolute path, which is not very portable
2018-04-04 10:21:03 +02:00
Christophe de Dinechin
5daca154c9
Add support for the `make V=1` convention
2018-04-04 10:21:03 +02:00
Christophe de Dinechin
6a9ad13412
Make it simpler to mix static and shared libraries
...
Also avoid using libtool -shared, not available by default on many platforms
2018-04-04 10:21:03 +02:00
Christophe de Dinechin
cedb887262
Accept empty PRODUCTS list, closes #10
2018-04-04 10:21:03 +02:00
Christophe de Dinechin
e0f6492b0f
Better way to compute dependencies on makefiles
2018-04-04 10:21:03 +02:00
Christophe de Dinechin
131463c503
Add arm-linux-gnu cross-compiler support
...
(No support for selecting include and library path yet)
2018-04-04 10:21:03 +02:00
Christophe de Dinechin
4cabbde4b4
Change the way standard conformance is specified
2018-04-04 10:20:57 +02:00
Christophe de Dinechin
1a1856c3af
Remove the need to say 'HAVE_' in 'CONFIG'
2018-04-04 10:20:15 +02:00
Christophe de Dinechin
93d13f8ecd
File name mangling when building configuration steps
...
This is to avoid problems on Windows, where a file name cannot
contain < or > and as a result, tests for HAVE_<unistd.h> failed.
2018-04-04 10:20:15 +02:00
Christophe de Dinechin
2b627dd62b
Replace .runtest with .test, I get it wrong each time I try to use it manually
2018-04-04 10:20:15 +02:00
Christophe de Dinechin
11393dc8af
Make sure we find configuration checks in build directory
2018-04-04 10:20:15 +02:00
Christophe de Dinechin
26dedc59e1
Check for library presence
2018-04-04 10:20:15 +02:00
Christophe de Dinechin
3293ab17f8
Link and execute the test program for completeness
2018-04-04 10:20:15 +02:00
Christophe de Dinechin
0a88f02d71
Add check for functions using a configuration file check
2018-04-04 10:20:15 +02:00
Christophe de Dinechin
a1f04b6cf4
Separate configuration generation rules in config.arch.mk
2018-04-04 10:19:40 +02:00
Christophe de Dinechin
62b064bd2f
Add config.h to list of things to clean
2018-04-04 10:19:40 +02:00
Christophe de Dinechin
01f21a78fb
Further effort to make definitions compatible with autoconf output
2018-04-04 10:19:40 +02:00
Christophe de Dinechin
aa38d293f3
Improve compatibility with autoconf by using config.h and similar #define names
2018-04-04 10:19:40 +02:00
Christophe de Dinechin
6fe7280a78
Add ability to check specific headers like autoconf
2018-04-04 10:19:40 +02:00
Christophe de Dinechin
cbae7427e8
Remove stray 1 in rules.mk
2018-04-04 10:19:40 +02:00
Christophe de Dinechin
28c8dda7c6
Single-pass dependency generation
2018-04-04 10:19:40 +02:00
Christophe de Dinechin
4dad7dfda9
Fix for MinGW, time does not work in subshells
2018-04-04 10:19:40 +02:00
Christophe de Dinechin
350cba41a8
Attempt to avoid complaints in MinGW that 'fmt' does not exist during depends
2018-04-04 10:19:40 +02:00
Christophe de Dinechin
8fe4ce84e2
Fix name of tests being run for .c or .cpp TESTS on MinGW
2018-04-04 10:19:39 +02:00
Christophe de Dinechin
dcfb55cedc
Add special rules for MinGW
...
Some (all?) variants of MinGW do not have a working 'fmt'.
This is not indispensable to the rule working, it makes it just look good.
The sed -e 's/\\\\...' rule appears necessary when executing the
command within 'make'. This is definitely a bug. If I execute the
command within the Windows CMD, I need the extra \\. If I execute the
command within bash or sh, I do not.
2018-04-04 10:19:39 +02:00
Christophe de Dinechin
4efdc5c604
Remove dependency on 'fmt' tool, missing from some MinGW variants
2018-04-04 10:19:39 +02:00
Christophe de Dinechin
8fa690245d
Show the full paths during copies
2018-04-04 10:19:39 +02:00
Christophe de Dinechin
621e311ff0
Make message for copies look better
2018-04-04 10:19:39 +02:00
Christophe de Dinechin
99868b4ab4
Make sure we build the target before testing
2018-04-04 10:19:39 +02:00
Christophe de Dinechin
a6089c4090
Add ability to add per-test test arguments (TEST_ARGS) and command (TEST_CMD)
2018-04-04 10:19:39 +02:00
Christophe de Dinechin
0dc453c3ac
Make test rules more useful, detect error on PRODUCTS extension
2018-04-04 10:19:39 +02:00
Christophe de Dinechin
c2edd48a05
Add rules for executing C / C++ tests directly
2018-04-04 10:19:39 +02:00
Christophe de Dinechin
5afb8df97e
Remove parallel info
2018-04-04 10:19:39 +02:00
Christophe de Dinechin
1f376affa9
Make sure we create the installation directories
2018-04-04 10:19:39 +02:00
Christophe de Dinechin
1c3c0e606c
Initial state
2018-04-04 10:19:24 +02:00