Commit Graph

73 Commits

Author SHA1 Message Date
Christophe de Dinechin 4df3ed83bd Fix NEWS target
A closing parenthese in variable for NEWS target was missing.

Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
2021-09-24 21:04:56 +02:00
Christophe de Dinechin e5fd9fe039 install: Fix creation of shared library symbolic links
When installing a shared library, make sure we actually create the symbolic
links for major and minor versions.

Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
2021-03-04 09:41:48 +01:00
Christophe de Dinechin a044564d3a Set rpath for testing purpose with opt and debug targets
Since DYLD_LIBRARY_PATH does not work on Big Sur, it is necessary to use a
heavier hammer. So for development targets, we set the rpath to include testing
paths, which make it "work". A bit ugly.

Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
2021-02-14 00:47:01 +01:00
Christophe de Dinechin 085a0856ee Refactor installation
- Avoid installing files that are already installed
- Use the .ext conventions for the variables names
- Only create install targets for things to install
- Create a new `INSTALLABLE` variable

Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
2021-02-12 12:10:41 +01:00
Christophe de Dinechin 16ab4de4f8 colorization: Put colorization of config in COLORIZE
Also standardize the size of the output of the various steps.

Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
2021-02-10 23:11:48 +01:00
Christophe de Dinechin df4c924ff6 More renaming using the .ext convention
Changed more variables with the convention to use .ext rather than _EXT.
For example, replace PREFIX_DLL with PREFIX.dll.

Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
2020-12-18 20:51:12 +01:00
Christophe de Dinechin c1b26009db Rename MIQ_COMPILE to COMPILE-lt (for libtool)
This is part of the ongoing effort to clarify the variable names.
These variables could be modifed by the environment.

Signed-off-by: Christophe de Dinechin <christophe@dinechin.org>
2020-09-03 21:53:53 +02:00
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