2015-12-09 07:34:39 +08:00
|
|
|
#***************************************************************************
|
|
|
|
# _ _ ____ _
|
|
|
|
# Project ___| | | | _ \| |
|
|
|
|
# / __| | | | |_) | |
|
|
|
|
# | (__| |_| | _ <| |___
|
|
|
|
# \___|\___/|_| \_\_____|
|
|
|
|
#
|
2023-01-02 20:51:48 +08:00
|
|
|
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
2015-12-09 07:34:39 +08:00
|
|
|
#
|
|
|
|
# This software is licensed as described in the file COPYING, which
|
|
|
|
# you should have received as part of this distribution. The terms
|
2020-11-04 21:02:01 +08:00
|
|
|
# are also available at https://curl.se/docs/copyright.html.
|
2015-12-09 07:34:39 +08:00
|
|
|
#
|
|
|
|
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
|
|
|
# copies of the Software, and permit persons to whom the Software is
|
|
|
|
# furnished to do so, under the terms of the COPYING file.
|
|
|
|
#
|
|
|
|
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
|
|
|
# KIND, either express or implied.
|
|
|
|
#
|
|
|
|
# SPDX-License-Identifier: curl
|
2022-05-17 17:16:50 +08:00
|
|
|
#
|
2015-12-09 07:34:39 +08:00
|
|
|
###########################################################################
|
2022-03-23 22:26:09 +08:00
|
|
|
|
2024-01-17 18:32:44 +08:00
|
|
|
EXTRA_DIST = coverage.sh completion.pl firefox-db2pem.sh checksrc.pl \
|
autotools: add support for 'unity' builds, enable in CI
Implement the "unity" builds as known from CMake, but for autotools.
It's limited to `lib` and `src` (CMake also supports it in `tests`).
Enable with: `--enable-unity` (disabled by default)
Unity builds speed up builds significantly. Cygwin and Windows builds in
particular, but the effect is noticeable on most systems. It also allows
discovering unity issues with autotools, benefitting also CMake when
building the same combination. In CI it makes turnaround times quicker.
This closes build performance with CMake. autotools still lags behind
because it builds shared and static libcurl in two, separate passes.
CMake does it in one. Manpage compilation isn't batched, it is in CMake.
After unity and test bundle support the slowest parts of the build are
the configuration phase (which is effectively a tedious, non-parallel,
compilation and/or linking of 300+ tiny programs. The next bottleneck
is compiling individual examples and finally test servers (only slow
with autotools).
The autotools implementation is slightly less efficient than CMake,
because 3 sources are permanently excluded while in CMake this isn't
necessary and solved more efficiently while building libtests. There is
also no 'unity' support for tests, making them a less efficient also.
Enable it in CI for most `configure` jobs. Except in GHA/dist (though
it works fine there too), to use the default config there. Also skip for
the Linux AWC-LC job where it made builds time a few seconds longer
(reason undiscovered.)
Autotools test suite builds compared between master -> `--enable-unity`:
- GHA/Linux: 32s -> 12s
https://github.com/curl/curl/actions/runs/10705668823/job/29681617374
https://github.com/curl/curl/actions/runs/10742978889/job/29796766297
- GHA/macOS: 37s -> 10s
https://github.com/curl/curl/actions/runs/10705668813/job/29681632885
https://github.com/curl/curl/actions/runs/10742978699/job/29796768875
- GHA/FreeBSD: 15m25 -> 10m58 (full workflow time, ~qemu)
https://github.com/curl/curl/actions/runs/10705668811/job/29681607915
https://github.com/curl/curl/actions/runs/10742978937/job/29796766115
- GHA/Cygwin: 3m32 -> 1m21
https://github.com/curl/curl/actions/runs/10705668809/job/29681609965
https://github.com/curl/curl/actions/runs/10742978645/job/29796756933
- GHA/MSYS2: 2m42 -> 50s
https://github.com/curl/curl/actions/runs/10705668808/job/29681621166
https://github.com/curl/curl/actions/runs/10742978662/job/29799739289
- GHA/mingw-w64: 5m32 -> 1m23
https://github.com/curl/curl/actions/runs/10705668808/job/29681628787
https://github.com/curl/curl/actions/runs/10742978662/job/29799741568
Closes #14815
2024-09-06 16:26:06 +08:00
|
|
|
mk-ca-bundle.pl mk-unity.pl schemetable.c cd2nroff nroff2cd cdall cd2cd managen \
|
2024-09-05 22:31:38 +08:00
|
|
|
dmaketgz maketgz release-tools.sh verify-release cmakelint.sh
|
2022-03-23 22:26:09 +08:00
|
|
|
|
2015-11-20 12:56:10 +08:00
|
|
|
ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@
|
2019-02-11 05:06:42 +08:00
|
|
|
FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
|
2015-11-20 12:56:10 +08:00
|
|
|
PERL = @PERL@
|
|
|
|
|
2024-03-02 10:27:35 +08:00
|
|
|
if USE_ZSH_COMPLETION
|
2015-11-20 12:56:10 +08:00
|
|
|
ZSH_COMPLETION_FUNCTION_FILENAME = _curl
|
2024-03-02 10:27:35 +08:00
|
|
|
endif
|
|
|
|
if USE_FISH_COMPLETION
|
2019-02-11 05:06:42 +08:00
|
|
|
FISH_COMPLETION_FUNCTION_FILENAME = curl.fish
|
2024-03-02 10:27:35 +08:00
|
|
|
endif
|
2015-11-20 12:56:10 +08:00
|
|
|
|
2019-02-11 05:06:42 +08:00
|
|
|
CLEANFILES = $(ZSH_COMPLETION_FUNCTION_FILENAME) $(FISH_COMPLETION_FUNCTION_FILENAME)
|
2018-07-07 20:08:57 +08:00
|
|
|
|
2019-02-11 05:06:42 +08:00
|
|
|
all-local: $(ZSH_COMPLETION_FUNCTION_FILENAME) $(FISH_COMPLETION_FUNCTION_FILENAME)
|
2015-11-20 12:56:10 +08:00
|
|
|
|
2024-03-02 10:27:35 +08:00
|
|
|
if USE_ZSH_COMPLETION
|
2019-02-11 05:06:42 +08:00
|
|
|
$(ZSH_COMPLETION_FUNCTION_FILENAME): completion.pl
|
2016-01-12 06:22:25 +08:00
|
|
|
if CROSSCOMPILING
|
|
|
|
@echo "NOTICE: we can't generate zsh completion when cross-compiling!"
|
|
|
|
else # if not cross-compiling:
|
2024-03-01 15:38:22 +08:00
|
|
|
if test -z "$(PERL)"; then echo "No perl: can't install completion script"; else \
|
|
|
|
$(PERL) $(srcdir)/completion.pl --curl $(top_builddir)/src/curl$(EXEEXT) --shell zsh > $@ ; fi
|
2019-02-11 05:06:42 +08:00
|
|
|
endif
|
2024-03-02 10:27:35 +08:00
|
|
|
endif
|
2019-02-11 05:06:42 +08:00
|
|
|
|
2024-03-02 10:27:35 +08:00
|
|
|
if USE_FISH_COMPLETION
|
2019-02-11 05:06:42 +08:00
|
|
|
$(FISH_COMPLETION_FUNCTION_FILENAME): completion.pl
|
|
|
|
if CROSSCOMPILING
|
|
|
|
@echo "NOTICE: we can't generate fish completion when cross-compiling!"
|
|
|
|
else # if not cross-compiling:
|
2024-03-01 15:38:22 +08:00
|
|
|
if test -z "$(PERL)"; then echo "No perl: can't install completion script"; else \
|
|
|
|
$(PERL) $(srcdir)/completion.pl --curl $(top_builddir)/src/curl$(EXEEXT) --shell fish > $@ ; fi
|
2016-01-12 06:22:25 +08:00
|
|
|
endif
|
2024-03-02 10:27:35 +08:00
|
|
|
endif
|
2015-11-20 12:56:10 +08:00
|
|
|
|
|
|
|
install-data-local:
|
2016-01-12 06:22:25 +08:00
|
|
|
if CROSSCOMPILING
|
2024-02-09 03:34:34 +08:00
|
|
|
@echo "NOTICE: we can't install completion scripts when cross-compiling!"
|
2016-01-12 06:22:25 +08:00
|
|
|
else # if not cross-compiling:
|
2024-02-09 03:34:34 +08:00
|
|
|
if USE_ZSH_COMPLETION
|
2024-03-01 15:38:22 +08:00
|
|
|
if test -n "$(PERL)"; then \
|
|
|
|
$(MKDIR_P) $(DESTDIR)$(ZSH_FUNCTIONS_DIR); \
|
|
|
|
$(INSTALL_DATA) $(ZSH_COMPLETION_FUNCTION_FILENAME) $(DESTDIR)$(ZSH_FUNCTIONS_DIR)/$(ZSH_COMPLETION_FUNCTION_FILENAME) ; \
|
2024-08-26 19:32:18 +08:00
|
|
|
fi
|
2024-02-09 03:34:34 +08:00
|
|
|
endif
|
|
|
|
if USE_FISH_COMPLETION
|
2024-03-01 15:38:22 +08:00
|
|
|
if test -n "$(PERL)"; then \
|
|
|
|
$(MKDIR_P) $(DESTDIR)$(FISH_FUNCTIONS_DIR); \
|
|
|
|
$(INSTALL_DATA) $(FISH_COMPLETION_FUNCTION_FILENAME) $(DESTDIR)$(FISH_FUNCTIONS_DIR)/$(FISH_COMPLETION_FUNCTION_FILENAME) ; \
|
2024-08-26 19:32:18 +08:00
|
|
|
fi
|
2016-01-12 06:22:25 +08:00
|
|
|
endif
|
2024-02-09 03:34:34 +08:00
|
|
|
endif
|
2024-03-05 00:22:17 +08:00
|
|
|
|
|
|
|
distclean:
|
|
|
|
rm -f $(CLEANFILES)
|