Commit Graph

66 Commits

Author SHA1 Message Date
Christophe de Dinechin 42a0bb0ac2 Make the COMPILE and LINK build steps more generic
By using names like COMPILE.c and LINK.lib, this will make it easier to
generate build rules more easily based on extensions

Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
2020-09-02 00:44:09 +02:00
Christophe de Dinechin ff92a7386f Replace OBJ_EXT with EXT.obj and similar for other extensions
This will allow to make the code dealing with extensions more generic in the
future.

Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
2020-09-01 22:04:53 +02:00
Christophe de Dinechin 7a3a86be7c Fix the -rpath opption on Linux
On Linux, -rpath must also be given on the executable
(On macOS where I first tested, it's sufficient to use it on the libraries)
2019-04-12 22:37:35 +02:00
Christophe de Dinechin 242dcddf9e Revert "Do not generate useless -rpath options"
This reverts commit 3d25a8dcdf.
2019-04-12 21:56:10 +02:00
Christophe de Dinechin e5e8eb4866 A better way to determine if LD is gcc or g++
Instead of using SOURCES, use MIQ_SOURCES to include variants
Instead of using if, use computed value to take dynamic updates
2019-03-24 23:08:28 +01:00
Christophe de Dinechin 5146122af7 Automatic copyright header adjustment 2019-03-22 16:43:14 +01:00
Christophe de Dinechin 8031dd771f Add support for DOC_INSTALL
Follow the pattern of %doc on Fedora
2019-03-18 11:10:18 +01:00
Christophe de Dinechin 14a2be96b0 Add support for man page generation and installation
Man pages are installed gzipped by default, and can be generated
from .pod files using pod2man.
2019-03-12 14:02:27 +01:00
Christophe de Dinechin 3d25a8dcdf Do not generate useless -rpath options 2019-03-11 08:43:01 +01:00
Christophe de Dinechin ec4c992ffe Install support files without execute permission
This is mostly to avoid getting warnings from fedpkg
2019-03-09 13:48:45 +01:00
Christophe de Dinechin 29a1312825 Split install directories from prefix directories
Earlier, $(PREFIX_LIB) would be the path for libraries,
but also for installation. That led makefiles to adjusting
the prefix in order to install in some subdirectory.

That does not work in a distro setup where PREFIX_BIN
and the like are provided by the build environment,
and represent the base of that build environment.
2019-03-09 13:48:45 +01:00
Christophe de Dinechin f0ebcbe77f Use $(MIQ_OBJDIR) in generated dependencies
This is to avoid a problem where MinGW GCC sometimes writes the
dependency as D:/path/to/obj.o, which confuses make.
2018-11-19 23:07:09 +01:00
Christophe de Dinechin e3ad6a1ebc Fix link order for Cygwin and MinGW
Similar to what was done in b2e1f20c8b
for DLLs.
2018-11-16 19:00:22 +01:00
Christophe de Dinechin ce6b35154a Fix NEWS generation in `make dist`
Avoid overwriting existing NEWS entries for the current tag
2018-11-09 18:48:23 +01:00
Christophe de Dinechin 96cad841f8 Reorder numbering for shared libraries with extensions
On systems that rely on extensions to identify a shared library
(macOS and cygwin), then move from "libfoo.dll.1" to "libfoo.1.dll"
2018-11-09 15:45:48 +01:00
Christophe de Dinechin b2e1f20c8b Adjustments based on recent observations made on MinGW
MinGW now seems to be able to cope with the -rpath option in ld.
However, it's necessary to place LDFLAGS after objects, as observed
with BUILDENV-specific LDFLAGS, i.e. LDFLAGS_BUILDENV_mingw=-lregex
2018-11-04 17:45:32 +01:00
Christophe de Dinechin 2455b1f1f7 Repair 'ar' command line case 2018-09-20 16:07:06 +02:00
Christophe de Dinechin 741ce2047c Simple implementation of the 'dist' rule
This is for better compatibility with automake-generated makefiles.
It generates a distribution tar file.
2018-09-20 15:49:53 +02:00
Christophe de Dinechin f6b87eda37 Implement the uninstall target
This is to improve compatibility with automake
2018-09-20 15:49:06 +02:00
Christophe de Dinechin f789c66fb7 Make sure that pkg-config output is available when testing libraries 2018-06-26 14:47:02 +02:00
Christophe de Dinechin a71249c34d Avoid passing full names when linking LIBRARIES
While it's OK to link a library by giving its .a name, it doesn't
work well when linking with a .so, since it encodes the full path
of the .so name in the result
2018-06-15 09:38:35 +02:00
Christophe de Dinechin 10c7dcd30d Add colorized output of configuration result 2018-06-14 17:39:09 +02:00
Christophe de Dinechin d6f3f3cd46 Add missing packages to configuration flags
This was apparently lost in one of the recent rebases. Ouch.
2018-06-14 17:39:09 +02:00
Christophe de Dinechin 0e8c83820b Add support for shared-library versioning 2018-06-14 17:39:09 +02:00
Christophe de Dinechin bb93d3fb7a Fix the passing of the -rpath option to the linker 2018-04-13 16:20:54 +02:00
Christophe de Dinechin 0ae490d5fd Add results from pkg-config to config.h 2018-04-12 12:39:36 +02:00
Christophe de Dinechin 87ba839cdd Simplify rules for the dependencies 2018-04-10 18:56:25 +02:00
Christophe de Dinechin e7c15a35ae Add better libtool support in config.gnu.mk
When LIBTOOL is set, then we use libtool all the way.
Otherwise, we manually perform the compile/link stages.
2018-04-10 18:40:00 +02:00
Christophe de Dinechin 2bcd0c9bcf Makefile rules refactoring - MIQ namespace + solidity
A number of changes in this commit:

1. Variable namespace cleanup:
   Rename non-configurable variables as MIQ_XYZ.

2. Internal target namespace cleanup
   Rename intermediate targets to begin with a dot (.)
   For example .build, .prebuild, etc.
   This impacts makefiles that hook for example to prebuild
   (now they need to hook to the .prebuild target)

3. Target, variant and build-environment variables names
   For example, dependencies on $(TARGET) moved from DEFINES_xyz
   to DEFINES_TARGET_xyz instead of DEFINES_xyz, and same thing
   for includes, sources, etc.

4. Protection of special user-level top-level targets
   A target like log-% no longer interferes with a file name such
   as log-file.c

5. Better support for multiple products
   When building foo.exe and bar.lib, there can be different
   sources for each project, i.e. $(SOURCES_foo) and $(SOURCES_bar).
2018-04-10 18:37:27 +02:00
Christophe de Dinechin 198ad6420d Change project name to 'Make-it-Quick', and make it installable
This simplifies the management of projects using make-it-quick by
putting the makefile include files in a shared location
(typically /usr/local/include/make-it-quick)
2018-04-04 10:32:09 +02:00
Christophe de Dinechin 4d77ac826f Copyright update for 2018 2018-04-04 10:31:11 +02:00
Christophe de Dinechin 5d385379e2 Avoid a warning with -fPIC on MinGW 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 c1cc66ade3 Add -Wl,-rpath option to standard GNU ld
(This differs from macOS where -rpath is a gcc driver option)
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 4d5957d73d Fix test environment TEST_ENV for `make test` 2018-04-04 10:21:04 +02:00
Christophe de Dinechin 00942dc77a Restrict variable names when transforming cfg.h into cfg.mk 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 49adc492f5 Do not add LDFLAGS when building static libraries 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 7f5780099c Add -fPIC to standard flags 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 6dd72b3adb For configuration compiles, delay evaluation of CFLAGS, add LDFLAGS 2018-04-04 10:21:04 +02:00
Christophe de Dinechin bcdde51bf5 Reorganize configuration management for readability 2018-04-04 10:21:04 +02:00
Christophe de Dinechin 40b5b90342 Fix typo in CFLAGS for configuration builds 2018-04-04 10:21:04 +02:00
Christophe de Dinechin 0f3b5d325a Expose configuration variables to makefile 2018-04-04 10:21:03 +02:00
Christophe de Dinechin 99de9424db Restore the passing of LDFLAGS when building libraries 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 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 391ecd8ff8 Link with ld if no C++ sources, closes GitHub #6 2018-04-04 10:21:03 +02:00