2024-03-04 06:12:19 +01:00
|
|
|
include mk/build-dir.mk
|
|
|
|
|
|
|
|
-include $(buildprefix)Makefile.config
|
|
|
|
clean-files += $(buildprefix)Makefile.config
|
2024-03-04 04:01:54 +01:00
|
|
|
|
|
|
|
ifeq ($(ENABLE_BUILD), yes)
|
2014-02-01 12:23:14 +01:00
|
|
|
makefiles = \
|
2019-11-07 12:18:37 +01:00
|
|
|
mk/precompiled-headers.mk \
|
2014-02-01 14:28:31 +01:00
|
|
|
local.mk \
|
2014-01-30 12:11:06 +01:00
|
|
|
src/libutil/local.mk \
|
|
|
|
src/libstore/local.mk \
|
2020-03-30 14:03:28 +02:00
|
|
|
src/libfetchers/local.mk \
|
2014-01-30 12:11:06 +01:00
|
|
|
src/libmain/local.mk \
|
|
|
|
src/libexpr/local.mk \
|
2021-01-26 12:22:24 +01:00
|
|
|
src/libcmd/local.mk \
|
2016-02-09 21:28:29 +01:00
|
|
|
src/nix/local.mk \
|
2016-08-13 20:36:22 +02:00
|
|
|
src/resolve-system-dependencies/local.mk \
|
2014-01-30 12:11:06 +01:00
|
|
|
scripts/local.mk \
|
2020-05-10 20:32:21 +02:00
|
|
|
misc/bash/local.mk \
|
2021-06-02 00:45:03 +02:00
|
|
|
misc/fish/local.mk \
|
2021-06-01 18:44:03 +02:00
|
|
|
misc/zsh/local.mk \
|
2014-04-07 11:18:54 +02:00
|
|
|
misc/systemd/local.mk \
|
2024-03-19 00:11:12 +01:00
|
|
|
misc/launchd/local.mk
|
2024-03-04 04:01:54 +01:00
|
|
|
endif
|
2013-11-25 16:25:13 +01:00
|
|
|
|
2024-03-04 04:01:54 +01:00
|
|
|
ifeq ($(ENABLE_BUILD)_$(ENABLE_TESTS), yes_yes)
|
2024-03-04 03:46:48 +01:00
|
|
|
UNIT_TEST_ENV = _NIX_TEST_UNIT_DATA=unit-test-data
|
2023-02-20 20:27:50 +01:00
|
|
|
makefiles += \
|
2023-08-25 16:20:28 +02:00
|
|
|
tests/unit/libutil/local.mk \
|
|
|
|
tests/unit/libutil-support/local.mk \
|
2024-03-04 04:01:54 +01:00
|
|
|
tests/unit/libstore/local.mk
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(ENABLE_TESTS), yes)
|
|
|
|
makefiles += \
|
2023-08-25 16:20:28 +02:00
|
|
|
tests/unit/libstore-support/local.mk \
|
|
|
|
tests/unit/libexpr/local.mk \
|
|
|
|
tests/unit/libexpr-support/local.mk \
|
2023-10-05 18:12:18 +02:00
|
|
|
tests/functional/local.mk \
|
|
|
|
tests/functional/ca/local.mk \
|
|
|
|
tests/functional/dyn-drv/local.mk \
|
|
|
|
tests/functional/test-libstoreconsumer/local.mk \
|
2024-03-10 08:59:50 +01:00
|
|
|
tests/functional/repl_characterization/local.mk \
|
2023-10-05 18:12:18 +02:00
|
|
|
tests/functional/plugins/local.mk
|
2023-02-20 20:27:50 +01:00
|
|
|
else
|
|
|
|
makefiles += \
|
|
|
|
mk/disable-tests.mk
|
|
|
|
endif
|
|
|
|
|
2024-03-05 21:54:40 +01:00
|
|
|
# Some makefiles require access to built programs and must be included late.
|
|
|
|
makefiles-late =
|
|
|
|
|
|
|
|
ifeq ($(ENABLE_BUILD), yes)
|
|
|
|
makefiles-late += doc/manual/local.mk
|
|
|
|
makefiles-late += doc/internal-api/local.mk
|
|
|
|
endif
|
|
|
|
|
|
|
|
# Miscellaneous global Flags
|
|
|
|
|
2019-11-06 16:55:37 +01:00
|
|
|
OPTIMIZE = 1
|
|
|
|
|
|
|
|
ifeq ($(OPTIMIZE), 1)
|
out with the -O3, in with the -O2
-O3 does not measurably improve performance of the resulting binaries,
neither with lto enabled nor with lto disabled. what it does to however
is cause gcc warning spew in libstdc++ that we can't do anything
about (and that upon inspection of libstdc++ source looks like a gcc
bug).
with lto, -O3:
Benchmark 1: GC_INITIAL_HEAP_SIZE=10g nix eval --raw --impure --expr 'with import <nixpkgs/nixos> {}; system'
Time (mean ± σ): 4.608 s ± 0.027 s [User: 3.866 s, System: 0.522 s]
Range (min … max): 4.579 s … 4.640 s 10 runs
Benchmark 2: nix eval -f <nixpkgs/pkgs/development/haskell-modules/hackage-packages.nix>
Time (mean ± σ): 408.1 ms ± 25.5 ms [User: 360.0 ms, System: 28.1 ms]
Range (min … max): 387.6 ms … 439.0 ms 10 runs
with lto, -O2:
Benchmark 1: GC_INITIAL_HEAP_SIZE=10g nix eval --raw --impure --expr 'with import <nixpkgs/nixos> {}; system'
Time (mean ± σ): 4.632 s ± 0.044 s [User: 3.874 s, System: 0.544 s]
Range (min … max): 4.563 s … 4.673 s 10 runs
Benchmark 2: nix eval -f <nixpkgs/pkgs/development/haskell-modules/hackage-packages.nix>
Time (mean ± σ): 394.0 ms ± 23.9 ms [User: 351.2 ms, System: 27.6 ms]
Range (min … max): 377.8 ms … 429.3 ms 10 runs
without lto, -O3:
Benchmark 1: GC_INITIAL_HEAP_SIZE=10g nix eval --raw --impure --expr 'with import <nixpkgs/nixos> {}; system'
Time (mean ± σ): 4.700 s ± 0.024 s [User: 3.906 s, System: 0.559 s]
Range (min … max): 4.663 s … 4.717 s 10 runs
Benchmark 2: nix eval -f <nixpkgs/pkgs/development/haskell-modules/hackage-packages.nix>
Time (mean ± σ): 400.4 ms ± 25.6 ms [User: 353.7 ms, System: 26.8 ms]
Range (min … max): 379.8 ms … 430.6 ms 10 runs
without lto, -O2:
Benchmark 1: GC_INITIAL_HEAP_SIZE=10g nix eval --raw --impure --expr 'with import <nixpkgs/nixos> {}; system'
Time (mean ± σ): 4.724 s ± 0.030 s [User: 3.924 s, System: 0.570 s]
Range (min … max): 4.687 s … 4.749 s 10 runs
Benchmark 2: nix eval -f <nixpkgs/pkgs/development/haskell-modules/hackage-packages.nix>
Time (mean ± σ): 392.4 ms ± 24.3 ms [User: 350.9 ms, System: 26.4 ms]
Range (min … max): 376.9 ms … 428.0 ms 10 runs
fixes #46
Change-Id: Ib8afad8a07c278f57f2e3317d00cce4f9ec0f338
2024-03-15 21:50:47 +01:00
|
|
|
GLOBAL_CXXFLAGS += -O2 $(CXXLTO)
|
2021-12-21 19:34:40 +01:00
|
|
|
GLOBAL_LDFLAGS += $(CXXLTO)
|
2019-11-06 16:55:37 +01:00
|
|
|
else
|
2020-09-22 10:04:25 +02:00
|
|
|
GLOBAL_CXXFLAGS += -O0 -U_FORTIFY_SOURCE
|
2019-11-06 16:55:37 +01:00
|
|
|
endif
|
|
|
|
|
2013-11-25 16:25:13 +01:00
|
|
|
include mk/lib.mk
|
2019-11-06 16:54:18 +01:00
|
|
|
|
2024-03-07 07:12:20 +01:00
|
|
|
GLOBAL_CXXFLAGS += -g -Wall -Wimplicit-fallthrough -include $(buildprefix)config.h -std=c++2a -I src
|