Commit Graph

136 Commits

Author SHA1 Message Date
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