1# LTO Support 2# 3# This file enforces Link Time Optimization for ports. 4# In order to use it, add WITH_LTO=yes to your /etc/make.conf. 5 6.if !defined(_LTO_MK_INCLUDED) 7_LTO_MK_INCLUDED= yes 8LTO_Include_MAINTAINER= ports@MidnightBSD.org 9 10. if !defined(LTO_UNSAFE) || defined(LTO_DISABLE_CHECK) 11. if "${ARCH}" == "riscv64" && !defined(LTO_DISABLE_CHECK) 12 DEV_WARNING+= "LTO is currently broken on riscv64, to override set LTO_DISABLE_CHECK=yes" 13. elif defined(_INCLUDE_USES_CARGO_MK) 14 CARGO_ENV+= CARGO_PROFILE_RELEASE_LTO="true" \ 15 CARGO_PROFILE_RELEASE_PANIC="abort" \ 16 CARGO_PROFILE_RELEASE_CODEGEN_UNITS=1 17. elif defined(_INCLUDE_USES_MESON_MK) 18 MESON_ARGS+= -Db_lto=true 19. elif defined(_INCLUDE_USES_CABAL_MK) 20 CABAL_LTO_ARGS= --ghc-options=-split-sections \ 21 --gcc-options="-fdata-sections -ffunction-sections" \ 22 --ld-options=-Wl,--gc-sections,--build-id,--icf=all 23. else 24# Overridable as a user may want to use -flto 25 LTO_FLAGS?= -flto=thin 26 CFLAGS+= ${LTO_FLAGS} 27 CXXFLAGS+= ${LTO_FLAGS} 28 LDFLAGS+= ${LTO_FLAGS} 29. endif 30. else 31. if defined(_INCLUDE_USES_CARGO_MK) 32 RUSTFLAGS+= -C lto=no 33. endif 34. endif 35.endif 36