2021-06-14 18:30:08 +08:00
|
|
|
# SPDX-License-Identifier: GPL-2.0-only
|
2017-09-06 19:19:45 +08:00
|
|
|
#
|
|
|
|
# Copyright (C) 2006-2010 OpenWrt.org
|
|
|
|
# Copyright (C) 2016 LEDE Project
|
|
|
|
|
|
|
|
ifneq ($(__rules_inc),1)
|
|
|
|
__rules_inc=1
|
|
|
|
|
|
|
|
ifeq ($(DUMP),)
|
|
|
|
-include $(TOPDIR)/.config
|
|
|
|
endif
|
|
|
|
include $(TOPDIR)/include/debug.mk
|
|
|
|
include $(TOPDIR)/include/verbose.mk
|
|
|
|
|
|
|
|
ifneq ($(filter check,$(MAKECMDGOALS)),)
|
|
|
|
CHECK:=1
|
|
|
|
DUMP:=1
|
|
|
|
endif
|
|
|
|
|
|
|
|
export TMP_DIR:=$(TOPDIR)/tmp
|
2018-01-09 14:38:15 +08:00
|
|
|
export TMPDIR:=$(TMP_DIR)
|
2017-09-06 19:19:45 +08:00
|
|
|
|
2024-12-02 18:53:09 +08:00
|
|
|
##@
|
|
|
|
# @brief Strip quotes `"` and pounds `#` from string.
|
|
|
|
#
|
|
|
|
# @param 1: String.
|
|
|
|
##
|
2017-09-06 19:19:45 +08:00
|
|
|
qstrip=$(strip $(subst ",,$(1)))
|
|
|
|
#"))
|
|
|
|
|
|
|
|
empty:=
|
|
|
|
space:= $(empty) $(empty)
|
|
|
|
comma:=,
|
2024-12-02 18:53:09 +08:00
|
|
|
pound:=\#
|
|
|
|
##@
|
|
|
|
# @brief Merge strings by removing spaces.
|
|
|
|
#
|
|
|
|
# @param 1: String.
|
|
|
|
##
|
2017-09-06 19:19:45 +08:00
|
|
|
merge=$(subst $(space),,$(1))
|
2024-12-02 18:53:09 +08:00
|
|
|
##@
|
|
|
|
# @brief Get hash sum of variable list.
|
|
|
|
#
|
|
|
|
# @param 1: List of variable names.
|
|
|
|
##
|
2021-06-14 18:30:08 +08:00
|
|
|
confvar=$(shell echo '$(foreach v,$(1),$(v)=$(subst ','\'',$($(v))))' | $(MKHASH) md5)
|
2024-12-02 18:53:09 +08:00
|
|
|
##@
|
|
|
|
# @brief Strip last extension from file name.
|
|
|
|
#
|
|
|
|
# @param 1: File name.
|
|
|
|
##
|
2017-09-06 19:19:45 +08:00
|
|
|
strip_last=$(patsubst %.$(lastword $(subst .,$(space),$(1))),%,$(1))
|
|
|
|
|
|
|
|
paren_left = (
|
|
|
|
paren_right = )
|
|
|
|
chars_lower = a b c d e f g h i j k l m n o p q r s t u v w x y z
|
|
|
|
chars_upper = A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
|
|
|
|
|
|
|
|
define sep
|
|
|
|
|
|
|
|
endef
|
|
|
|
|
|
|
|
define newline
|
|
|
|
|
|
|
|
|
|
|
|
endef
|
|
|
|
|
|
|
|
__tr_list = $(join $(join $(1),$(foreach char,$(1),$(comma))),$(2))
|
|
|
|
__tr_head_stripped = $(subst $(space),,$(foreach cv,$(call __tr_list,$(1),$(2)),$$$(paren_left)subst$(cv)$(comma)))
|
|
|
|
__tr_head = $(subst $(paren_left)subst,$(paren_left)subst$(space),$(__tr_head_stripped))
|
|
|
|
__tr_tail = $(subst $(space),,$(foreach cv,$(1),$(paren_right)))
|
|
|
|
__tr_template = $(__tr_head)$$(1)$(__tr_tail)
|
|
|
|
|
2024-12-02 18:53:09 +08:00
|
|
|
##@
|
|
|
|
# @brief Convert string characters to upper.
|
|
|
|
##
|
2017-09-06 19:19:45 +08:00
|
|
|
$(eval toupper = $(call __tr_template,$(chars_lower),$(chars_upper)))
|
2024-12-02 18:53:09 +08:00
|
|
|
##@
|
|
|
|
# @brief Convert string characters to lower.
|
|
|
|
##
|
2017-09-06 19:19:45 +08:00
|
|
|
$(eval tolower = $(call __tr_template,$(chars_upper),$(chars_lower)))
|
|
|
|
|
2024-12-02 18:53:09 +08:00
|
|
|
##@
|
|
|
|
# @brief Abbreviate version. Truncate to 8 characters.
|
|
|
|
##
|
2017-09-06 19:19:45 +08:00
|
|
|
version_abbrev = $(if $(if $(CHECK),,$(DUMP)),$(1),$(shell printf '%.8s' $(1)))
|
|
|
|
|
|
|
|
_SINGLE=export MAKEFLAGS=$(space);
|
|
|
|
CFLAGS:=
|
|
|
|
ARCH:=$(subst i486,i386,$(subst i586,i386,$(subst i686,i386,$(call qstrip,$(CONFIG_ARCH)))))
|
|
|
|
ARCH_PACKAGES:=$(call qstrip,$(CONFIG_TARGET_ARCH_PACKAGES))
|
|
|
|
BOARD:=$(call qstrip,$(CONFIG_TARGET_BOARD))
|
|
|
|
SUBTARGET:=$(call qstrip,$(CONFIG_TARGET_SUBTARGET))
|
|
|
|
TARGET_OPTIMIZATION:=$(call qstrip,$(CONFIG_TARGET_OPTIMIZATION))
|
|
|
|
TARGET_SUFFIX=$(call qstrip,$(CONFIG_TARGET_SUFFIX))
|
|
|
|
BUILD_SUFFIX:=$(call qstrip,$(CONFIG_BUILD_SUFFIX))
|
|
|
|
SUBDIR:=$(patsubst $(TOPDIR)/%,%,${CURDIR})
|
|
|
|
BUILD_SUBDIR:=$(patsubst $(TOPDIR)/%,%,${CURDIR})
|
2020-07-02 23:30:56 +08:00
|
|
|
NPROC:=$(shell sysctl -n hw.ncpu 2>/dev/null || nproc)
|
2017-09-06 19:19:45 +08:00
|
|
|
export SHELL:=/usr/bin/env bash
|
|
|
|
|
|
|
|
IS_PACKAGE_BUILD := $(if $(filter package/%,$(BUILD_SUBDIR)),1)
|
|
|
|
|
|
|
|
OPTIMIZE_FOR_CPU=$(subst i386,i486,$(ARCH))
|
|
|
|
|
2021-06-14 18:30:08 +08:00
|
|
|
ifneq (,$(findstring $(ARCH) , aarch64 aarch64_be powerpc ))
|
|
|
|
FPIC:=-DPIC -fPIC
|
2017-09-06 19:19:45 +08:00
|
|
|
else
|
2021-06-14 18:30:08 +08:00
|
|
|
FPIC:=-DPIC -fpic
|
2017-09-06 19:19:45 +08:00
|
|
|
endif
|
|
|
|
|
2021-06-14 18:30:08 +08:00
|
|
|
HOST_FPIC:=-DPIC -fPIC
|
2017-09-06 19:19:45 +08:00
|
|
|
|
|
|
|
ARCH_SUFFIX:=$(call qstrip,$(CONFIG_CPU_TYPE))
|
|
|
|
GCC_ARCH:=
|
|
|
|
|
|
|
|
ifneq ($(ARCH_SUFFIX),)
|
|
|
|
ARCH_SUFFIX:=_$(ARCH_SUFFIX)
|
|
|
|
endif
|
|
|
|
ifneq ($(filter -march=armv%,$(TARGET_OPTIMIZATION)),)
|
|
|
|
GCC_ARCH:=$(patsubst -march=%,%,$(filter -march=armv%,$(TARGET_OPTIMIZATION)))
|
|
|
|
endif
|
|
|
|
ifdef CONFIG_HAS_SPE_FPU
|
|
|
|
TARGET_SUFFIX:=$(TARGET_SUFFIX)spe
|
|
|
|
endif
|
|
|
|
ifdef CONFIG_MIPS64_ABI
|
|
|
|
ifneq ($(CONFIG_MIPS64_ABI_O32),y)
|
|
|
|
ARCH_SUFFIX:=$(ARCH_SUFFIX)_$(call qstrip,$(CONFIG_MIPS64_ABI))
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
DEFAULT_SUBDIR_TARGETS:=clean download prepare compile update refresh prereq dist distcheck configure check check-depends
|
|
|
|
|
2024-12-02 18:53:09 +08:00
|
|
|
##@
|
|
|
|
# @brief Create default targets.
|
|
|
|
#
|
|
|
|
# Targets are created from @DEFAULT_SUBDIR_TARGETS and input argument lists.
|
|
|
|
#
|
|
|
|
# @param 1: Additional targets list.
|
|
|
|
##
|
2017-09-06 19:19:45 +08:00
|
|
|
define DefaultTargets
|
|
|
|
$(foreach t,$(DEFAULT_SUBDIR_TARGETS) $(1),
|
|
|
|
.$(t):
|
|
|
|
$(t): .$(t)
|
|
|
|
.PHONY: $(t) .$(t)
|
|
|
|
)
|
|
|
|
endef
|
|
|
|
|
2022-10-19 20:39:19 +08:00
|
|
|
DL_DIR=$(if $(call qstrip,$(CONFIG_DOWNLOAD_FOLDER)),$(call qstrip,$(CONFIG_DOWNLOAD_FOLDER)),$(TOPDIR)/dl)$(if $(DL_SUBDIR),/$(DL_SUBDIR))
|
2017-09-06 19:19:45 +08:00
|
|
|
OUTPUT_DIR:=$(if $(call qstrip,$(CONFIG_BINARY_FOLDER)),$(call qstrip,$(CONFIG_BINARY_FOLDER)),$(TOPDIR)/bin)
|
|
|
|
BIN_DIR:=$(OUTPUT_DIR)/targets/$(BOARD)/$(SUBTARGET)
|
|
|
|
INCLUDE_DIR:=$(TOPDIR)/include
|
|
|
|
SCRIPT_DIR:=$(TOPDIR)/scripts
|
|
|
|
BUILD_DIR_BASE:=$(TOPDIR)/build_dir
|
|
|
|
ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
|
|
|
|
GCCV:=$(call qstrip,$(CONFIG_GCC_VERSION))
|
|
|
|
LIBC:=$(call qstrip,$(CONFIG_LIBC))
|
|
|
|
REAL_GNU_TARGET_NAME=$(OPTIMIZE_FOR_CPU)-openwrt-linux$(if $(TARGET_SUFFIX),-$(TARGET_SUFFIX))
|
|
|
|
GNU_TARGET_NAME=$(OPTIMIZE_FOR_CPU)-openwrt-linux
|
|
|
|
DIR_SUFFIX:=_$(LIBC)$(if $(CONFIG_arm),_eabi)
|
|
|
|
BIN_DIR:=$(BIN_DIR)$(if $(CONFIG_USE_MUSL),,-$(LIBC))
|
|
|
|
TARGET_DIR_NAME = target-$(ARCH)$(ARCH_SUFFIX)$(DIR_SUFFIX)$(if $(BUILD_SUFFIX),_$(BUILD_SUFFIX))
|
|
|
|
TOOLCHAIN_DIR_NAME = toolchain-$(ARCH)$(ARCH_SUFFIX)_gcc-$(GCCV)$(DIR_SUFFIX)
|
|
|
|
else
|
|
|
|
ifeq ($(CONFIG_NATIVE_TOOLCHAIN),)
|
|
|
|
GNU_TARGET_NAME=$(call qstrip,$(CONFIG_TARGET_NAME))
|
|
|
|
else
|
|
|
|
GNU_TARGET_NAME=$(shell gcc -dumpmachine)
|
|
|
|
endif
|
|
|
|
REAL_GNU_TARGET_NAME=$(GNU_TARGET_NAME)
|
|
|
|
LIBC:=$(call qstrip,$(CONFIG_LIBC))
|
|
|
|
TARGET_DIR_NAME:=target-$(GNU_TARGET_NAME)_$(LIBC)$(if $(BUILD_SUFFIX),_$(BUILD_SUFFIX))
|
|
|
|
TOOLCHAIN_DIR_NAME:=toolchain-$(GNU_TARGET_NAME)
|
|
|
|
endif
|
|
|
|
|
2020-07-02 23:30:56 +08:00
|
|
|
ifeq ($(or $(CONFIG_EXTERNAL_TOOLCHAIN),$(CONFIG_TARGET_uml)),)
|
2022-10-19 20:39:19 +08:00
|
|
|
iremap = -f$(if $(CONFIG_REPRODUCIBLE_DEBUG_INFO),file,macro)-prefix-map=$(1)=$(2)
|
2017-09-06 19:19:45 +08:00
|
|
|
endif
|
|
|
|
|
2024-12-02 18:53:09 +08:00
|
|
|
PACKAGE_DIR?=$(BIN_DIR)/packages
|
|
|
|
PACKAGE_DIR_ALL?=$(TOPDIR)/staging_dir/packages/$(BOARD)
|
2017-09-06 19:19:45 +08:00
|
|
|
BUILD_DIR:=$(BUILD_DIR_BASE)/$(TARGET_DIR_NAME)
|
|
|
|
STAGING_DIR:=$(TOPDIR)/staging_dir/$(TARGET_DIR_NAME)
|
|
|
|
BUILD_DIR_TOOLCHAIN:=$(BUILD_DIR_BASE)/$(TOOLCHAIN_DIR_NAME)
|
|
|
|
TOOLCHAIN_DIR:=$(TOPDIR)/staging_dir/$(TOOLCHAIN_DIR_NAME)
|
|
|
|
STAMP_DIR:=$(BUILD_DIR)/stamp
|
|
|
|
STAMP_DIR_HOST=$(BUILD_DIR_HOST)/stamp
|
|
|
|
TARGET_ROOTFS_DIR?=$(if $(call qstrip,$(CONFIG_TARGET_ROOTFS_DIR)),$(call qstrip,$(CONFIG_TARGET_ROOTFS_DIR)),$(BUILD_DIR))
|
|
|
|
TARGET_DIR:=$(TARGET_ROOTFS_DIR)/root-$(BOARD)
|
|
|
|
STAGING_DIR_ROOT:=$(STAGING_DIR)/root-$(BOARD)
|
|
|
|
STAGING_DIR_IMAGE:=$(STAGING_DIR)/image
|
2021-06-15 17:58:07 +08:00
|
|
|
BUILD_LOG_DIR:=$(if $(call qstrip,$(CONFIG_BUILD_LOG_DIR)),$(call qstrip,$(CONFIG_BUILD_LOG_DIR)),$(TOPDIR)/logs)
|
2017-09-06 19:19:45 +08:00
|
|
|
PKG_INFO_DIR := $(STAGING_DIR)/pkginfo
|
|
|
|
|
|
|
|
BUILD_DIR_HOST:=$(if $(IS_PACKAGE_BUILD),$(BUILD_DIR_BASE)/hostpkg,$(BUILD_DIR_BASE)/host)
|
treewide: sync with upstream (#10750)
* build: fix incomplete initramfs compression options
Requires: tools/lz4, tools/lzop
complete the wiring so that these options work:
* `CONFIG_KERNEL_INITRAMFS_COMPRESSION_LZO`
* `CONFIG_KERNEL_INITRAMFS_COMPRESSION_LZ4`
Signed-off-by: Tony Butler <spudz76@gmail.com>
[remove blocking dependencies for separate ramdisk, fix lzop options]
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* include: sync with upstream
* toolchain/binutils: add support for version 2.40
Release notes:
https://sourceware.org/pipermail/binutils/2023-January/125671.html
Signed-off-by: Linhui Liu <liulinhui36@gmail.com>
* toolchain/gcc: switch to version 12 by default
Also fix build error with gcc 12.
* toolchain/nasm: update to 2.16.01
ChangeLog:
Version 2.16.01
_This is a documentation update release only._
(*) Fix the creation of the table of contents in the HTML version of
the documentation.
Version 2.16
(*) Support for the `rdf' format has been discontinued and all the
RDOFF utilities has been removed.
(*) The `--reproducible' option now leaves the filename field in the
COFF object format blank. This was always rather useless since
it is only 18 characters long; as such debug formats have to
carry their own filename information anyway.
(*) Fix handling of MASM-syntax reserved memory (e.g. `dw ?') when
used in structure definitions.
(*) The preprocessor now supports functions, which can be less
verbose and more convenient than the equivalent code implemented
using directives. See section 4.4.
(*) Fix the handling of `%00' in the preprocessor.
(*) Fix incorrect handling of path names affecting error messages,
dependency generation, and debug format output.
(*) Support for the RDOFF output format and the RDOFF tools have
been removed. The RDOFF tools had already been broken since at
least NASM 2.14. For flat code the ELF output format
recommended; for segmented code the `obj' (OMF) output format.
(*) New facility: preprocessor functions. Preprocessor functions,
which are expanded similarly to single-line macros, can greatly
simplify code that in the past would have required a lengthy
list of directives and intermediate macros. See section 4.4.
(*) Single-line macros can now declare parameters (using a `&&'
prefix) that creates a quoted string, but does _not_ requote an
already quoted string. See section 4.2.1.
(*) Instruction table updated per public information available as of
November 2022.
(*) All warnings in the preprocessor have now been assigned warning
classes. See appendix A.
(*) Fix the invalid use of `RELA'-type relocations instead of `REL'-
type relocations when generating DWARF debug information for the
`elf32' output format.
(*) Fix the handling `at' in `istruc' when the structure contains
local labels. See section 5.9.2.
(*) When assembling with `--reproducible', don't encode the filename
in the COFF header for the `coff', `win32' or `win64' output
formats. The COFF header only has space for an 18-character
filename, which makes this field rather useless in the first
place. Debug output data, if enabled, is not affected.
(*) Fix incorrect size calculation when using MASM syntax for non-
byte reservations (e.g. `dw ?'.)
(*) Allow forcing an instruction in 64-bit mode to have a (possibly
redundant) REX prefix, using the syntax `{rex}' as a prefix.
(*) Add a `{vex}' prefix to enforce VEX (AVX) encoding of an
instruction, either using the 2- or 3-byte VEX prefixes.
(*) The `CPU' directive has been augmented to allow control of
generation of VEX (AVX) versus EVEX (AVX-512) instruction
formats, see section 7.11.
(*) Some recent instructions that previously have been only
available using EVEX encodings are now also encodable using VEX
(AVX) encodings. For backwards compatibility these encodings are
not enabled by default, but can be generated either via an
explicit `{vex}' prefix or by specifying either `CPU LATEVEX' or
`CPU NOEVEX'; see section 7.11.
(*) Document the already existing `%unimacro' directive. See section
4.5.12.
(*) Fix a code range generation bug in the DWARF debug format
(incorrect information in the `DW_AT_high_pc' field) for the ELF
output formats. This bug happened to cancel out with a bug in
older versions of the GNU binutils linker, but breaks with other
linkers and updated or other linkers that expect the spec to be
followed.
(*) Fix segment symbols with addends, e.g. `jmp _TEXT+10h:0' in
output formats that support segment relocations, e.g. the `obj'
format.
(*) Fix various crashes and hangs on invalid input.
Signed-off-by: Linhui Liu <liulinhui36@gmail.com>
* toolchain: musl: Fix symbol loading in gdb
Fix DT_DEBUG handling on MIPS in musl libc.
With this change gdb will load the symbol files for shared libraries on MIPS too.
This patch was taken from this thread: https://www.openwall.com/lists/musl/2022/01/09/4
Signed-off-by: Hauke Mehrtens <hmehrtens@maxlinear.com>
* tools: sync with upstream
* build: fix issues with targets installed via feeds
- fix including modules.mk when a target is being replaced
- fix calling make targets from target/linux
Signed-off-by: Felix Fietkau <nbd@nbd.name>
* package: sync with upstream
Signed-off-by: Tony Butler <spudz76@gmail.com>
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Signed-off-by: Linhui Liu <liulinhui36@gmail.com>
Signed-off-by: Hauke Mehrtens <hmehrtens@maxlinear.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Co-authored-by: Tony Butler <spudz76@gmail.com>
Co-authored-by: Hauke Mehrtens <hmehrtens@maxlinear.com>
Co-authored-by: Felix Fietkau <nbd@nbd.name>
2023-01-25 15:30:35 +08:00
|
|
|
STAGING_DIR_HOST:=$(abspath $(STAGING_DIR)/../host)
|
|
|
|
STAGING_DIR_HOSTPKG:=$(abspath $(STAGING_DIR)/../hostpkg)
|
2017-09-06 19:19:45 +08:00
|
|
|
|
|
|
|
TARGET_PATH:=$(subst $(space),:,$(filter-out .,$(filter-out ./,$(subst :,$(space),$(PATH)))))
|
|
|
|
TARGET_INIT_PATH:=$(call qstrip,$(CONFIG_TARGET_INIT_PATH))
|
|
|
|
TARGET_INIT_PATH:=$(if $(TARGET_INIT_PATH),$(TARGET_INIT_PATH),/usr/sbin:/sbin:/usr/bin:/bin)
|
|
|
|
TARGET_CFLAGS:=$(TARGET_OPTIMIZATION)$(if $(CONFIG_DEBUG), -g3) $(call qstrip,$(CONFIG_EXTRA_OPTIMIZATION))
|
|
|
|
TARGET_CXXFLAGS = $(TARGET_CFLAGS)
|
|
|
|
TARGET_ASFLAGS_DEFAULT = $(TARGET_CFLAGS)
|
|
|
|
TARGET_ASFLAGS = $(TARGET_ASFLAGS_DEFAULT)
|
|
|
|
ifneq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
|
|
|
|
LIBGCC_S_PATH=$(realpath $(wildcard $(call qstrip,$(CONFIG_LIBGCC_ROOT_DIR))/$(call qstrip,$(CONFIG_LIBGCC_FILE_SPEC))))
|
|
|
|
LIBGCC_S=$(if $(LIBGCC_S_PATH),-L$(dir $(LIBGCC_S_PATH)) -lgcc_s)
|
|
|
|
LIBGCC_A=$(realpath $(lastword $(wildcard $(dir $(LIBGCC_S_PATH))/gcc/*/*/libgcc.a)))
|
|
|
|
else
|
|
|
|
LIBGCC_A=$(lastword $(wildcard $(TOOLCHAIN_DIR)/lib/gcc/*/*/libgcc.a))
|
|
|
|
LIBGCC_S=$(if $(wildcard $(TOOLCHAIN_DIR)/lib/libgcc_s.so),-L$(TOOLCHAIN_DIR)/lib -lgcc_s,$(LIBGCC_A))
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(CONFIG_ARCH_64BIT),y)
|
|
|
|
LIB_SUFFIX:=64
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifndef DUMP
|
|
|
|
ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
|
|
|
|
-include $(TOOLCHAIN_DIR)/info.mk
|
|
|
|
export GCC_HONOUR_COPTS:=0
|
|
|
|
TARGET_CROSS:=$(if $(TARGET_CROSS),$(TARGET_CROSS),$(OPTIMIZE_FOR_CPU)-openwrt-linux$(if $(TARGET_SUFFIX),-$(TARGET_SUFFIX))-)
|
2024-12-02 18:53:09 +08:00
|
|
|
TOOLCHAIN_ROOT_DIR:=$(TOPDIR)/staging_dir/$(TOOLCHAIN_DIR_NAME)
|
|
|
|
TOOLCHAIN_BIN_DIRS:=$(TOOLCHAIN_ROOT_DIR)/bin
|
|
|
|
TOOLCHAIN_INC_DIRS:=$(TOOLCHAIN_ROOT_DIR)/usr/include $(TOOLCHAIN_ROOT_DIR)/include
|
|
|
|
TOOLCHAIN_LIB_DIRS:=$(TOOLCHAIN_ROOT_DIR)/usr/lib $(TOOLCHAIN_ROOT_DIR)/lib
|
treewide: sync with upstream (#10720)
* mpc85xx: add support for cpu type 8548
8540 cpu type corresponds to e500v1 core while
8548 cpu type corresponds to e500v2 core
See https://www.nxp.com/products/processors-and-microcontrollers/legacy-mpu-mcus/powerquicc-processors:POWERQUICC_HOME#powerquicc-iii-mpc85xx
and https://www.nxp.com/docs/en/application-note/AN2807.pdf .
Co-authored-by: Josef Schlehofer <josef.schlehofer@nic.cz>
Co-authored-by: Pali Rohár <pali@kernel.org>
Signed-off-by: Šimon Bořek <simon.borek@nic.cz>
* tree-wide: Do not use package librt and libpthread
The libraries libpthread, libdl, libutil, libanl have been integrated
into the libc library in version 2.34. it is not needed to explicitly
link them any more.
Most of the functions have been moved from the librt.so into libc.so
some time ago already.
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* toolchain/binutils: backport stable patches
Add the patches with real changes from the binutils 2.39 stable branch.
I am not aware that we ran into any of these problems, but I think it is
better to take the existing stable patches.
They were exported like this:
git format-patch binutils-2_39...origin/binutils-2_39-branch
I removed the patches changing the version numbers only.
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* toolchain/binutils: switch to version 2.39 by default
This was build tested with all core packages on all targets
successfully.
This was run tested on the following systems:
* lantiq/xrx200 musl
* sunxi/cortex53 musl
* x86/64 musl
* x86/64 glibc
Some trusted firmware arm builds needed some fixes to build with
binutils 2.39, this was merged before.
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* tools: Improve diffability/maintainability
There's no purpose to squish multiple tools into a single line (and
spread those out over multiple lines). It might look 'nice' in certain
conditions, but it's annoying to maintain.
For example, but not limited to:
* adding/removing tools, causes hard to read diffs
* Duplicates are harder to spot
* Sorting can not be (easily?) automated
With this proposed change, the above annoyances go away. Inserting a new
tool can be done with a single line-change-diff, sorting can be done by
any editor (in vi, select, :sort for example) and dupes are much easier
to spot.
Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
* rules: drop -Wno-error additional flags from default TARGET_CFLAGS
We currently enable -Wno-error=unused-but-set-variable and
-Wno-error=unused-result by default on every compile package.
While this is (relatively) unharmful, we should follow other project
direction and starts enforcing good code quality. For example the linux
kernel recently started to enforce Wall by default and clean code is
mandatory for inclusion.
Drop for good these flags and and make it mandatory to correctly handle
return values at least with a warning log if they are not strictly error
condition.
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
* bridger: update to the latest version
def7755c459d add missing copyright headers
f68307fd96d7 add hairpin mode support
9ee8f433ba4e nl: do not pass NDA_VLAN with vid=0
978c1f9eed07 add support for the bridge port isolated flag
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Signed-off-by: Šimon Bořek <simon.borek@nic.cz>
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Co-authored-by: Šimon Bořek <simon.borek@nic.cz>
Co-authored-by: Josef Schlehofer <josef.schlehofer@nic.cz>
Co-authored-by: Pali Rohár <pali@kernel.org>
Co-authored-by: Hauke Mehrtens <hauke@hauke-m.de>
Co-authored-by: Olliver Schinagl <oliver@schinagl.nl>
Co-authored-by: Christian Marangi <ansuelsmth@gmail.com>
Co-authored-by: Felix Fietkau <nbd@nbd.name>
2023-01-04 15:41:15 +08:00
|
|
|
TARGET_CFLAGS+= -fhonour-copts
|
2017-09-06 19:19:45 +08:00
|
|
|
ifeq ($(CONFIG_USE_MUSL),y)
|
2024-12-02 18:53:09 +08:00
|
|
|
TOOLCHAIN_INC_DIRS+= $(TOOLCHAIN_DIR)/include/fortify
|
2017-09-06 19:19:45 +08:00
|
|
|
endif
|
|
|
|
else
|
|
|
|
ifeq ($(CONFIG_NATIVE_TOOLCHAIN),)
|
2024-12-02 18:53:09 +08:00
|
|
|
-include $(TOOLCHAIN_DIR)/info.mk
|
2017-09-06 19:19:45 +08:00
|
|
|
TARGET_CROSS:=$(call qstrip,$(CONFIG_TOOLCHAIN_PREFIX))
|
|
|
|
TOOLCHAIN_ROOT_DIR:=$(call qstrip,$(CONFIG_TOOLCHAIN_ROOT))
|
|
|
|
TOOLCHAIN_BIN_DIRS:=$(patsubst ./%,$(TOOLCHAIN_ROOT_DIR)/%,$(call qstrip,$(CONFIG_TOOLCHAIN_BIN_PATH)))
|
|
|
|
TOOLCHAIN_INC_DIRS:=$(patsubst ./%,$(TOOLCHAIN_ROOT_DIR)/%,$(call qstrip,$(CONFIG_TOOLCHAIN_INC_PATH)))
|
|
|
|
TOOLCHAIN_LIB_DIRS:=$(patsubst ./%,$(TOOLCHAIN_ROOT_DIR)/%,$(call qstrip,$(CONFIG_TOOLCHAIN_LIB_PATH)))
|
|
|
|
endif
|
|
|
|
endif
|
2024-12-02 18:53:09 +08:00
|
|
|
ifneq ($(TOOLCHAIN_BIN_DIRS),)
|
|
|
|
TARGET_PATH:=$(subst $(space),:,$(TOOLCHAIN_BIN_DIRS)):$(TARGET_PATH)
|
|
|
|
endif
|
|
|
|
ifneq ($(TOOLCHAIN_INC_DIRS),)
|
|
|
|
TARGET_CPPFLAGS+= $(patsubst %,-I%,$(TOOLCHAIN_INC_DIRS))
|
|
|
|
endif
|
|
|
|
ifneq ($(TOOLCHAIN_LIB_DIRS),)
|
|
|
|
TARGET_LDFLAGS+= $(patsubst %,-L%,$(TOOLCHAIN_LIB_DIRS))
|
|
|
|
endif
|
2017-09-06 19:19:45 +08:00
|
|
|
endif
|
2024-12-02 18:53:09 +08:00
|
|
|
|
|
|
|
TARGET_LINKER?=bfd
|
|
|
|
TARGET_LDFLAGS+= -fuse-ld=$(TARGET_LINKER)
|
|
|
|
|
2017-09-06 19:19:45 +08:00
|
|
|
TARGET_PATH_PKG:=$(STAGING_DIR)/host/bin:$(STAGING_DIR_HOSTPKG)/bin:$(TARGET_PATH)
|
|
|
|
|
|
|
|
ifeq ($(CONFIG_SOFT_FLOAT),y)
|
|
|
|
SOFT_FLOAT_CONFIG_OPTION:=--with-float=soft
|
|
|
|
ifeq ($(CONFIG_arm),y)
|
|
|
|
TARGET_CFLAGS+= -mfloat-abi=soft
|
|
|
|
else
|
|
|
|
TARGET_CFLAGS+= -msoft-float
|
|
|
|
endif
|
|
|
|
else
|
|
|
|
SOFT_FLOAT_CONFIG_OPTION:=
|
|
|
|
ifeq ($(CONFIG_arm),y)
|
|
|
|
TARGET_CFLAGS+= -mfloat-abi=hard
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
2024-12-02 18:53:09 +08:00
|
|
|
export ORIG_PATH:=$(if $(ORIG_PATH),$(ORIG_PATH),$(PATH))
|
2017-09-06 19:19:45 +08:00
|
|
|
export PATH:=$(TARGET_PATH)
|
|
|
|
export STAGING_DIR STAGING_DIR_HOST STAGING_DIR_HOSTPKG
|
|
|
|
export SH_FUNC:=. $(INCLUDE_DIR)/shell.sh;
|
|
|
|
|
|
|
|
PKG_CONFIG:=$(STAGING_DIR_HOST)/bin/pkg-config
|
|
|
|
|
|
|
|
export PKG_CONFIG
|
|
|
|
|
2024-12-02 18:53:09 +08:00
|
|
|
HOSTCC:=$(STAGING_DIR_HOST)/bin/gcc
|
|
|
|
HOSTCXX:=$(STAGING_DIR_HOST)/bin/g++
|
2018-04-23 18:50:49 +08:00
|
|
|
HOST_CPPFLAGS:=-I$(STAGING_DIR_HOST)/include $(if $(IS_PACKAGE_BUILD),-I$(STAGING_DIR_HOSTPKG)/include -I$(STAGING_DIR)/host/include)
|
2017-09-06 19:19:45 +08:00
|
|
|
HOST_CFLAGS:=-O2 $(HOST_CPPFLAGS)
|
2024-12-02 18:53:09 +08:00
|
|
|
HOST_CXXFLAGS:=$(HOST_CFLAGS)
|
2018-04-23 18:50:49 +08:00
|
|
|
HOST_LDFLAGS:=-L$(STAGING_DIR_HOST)/lib $(if $(IS_PACKAGE_BUILD),-L$(STAGING_DIR_HOSTPKG)/lib -L$(STAGING_DIR)/host/lib)
|
2017-09-06 19:19:45 +08:00
|
|
|
|
|
|
|
BUILD_KEY=$(TOPDIR)/key-build
|
2024-12-02 18:53:09 +08:00
|
|
|
BUILD_KEY_APK_SEC=$(TOPDIR)/private-key.pem
|
|
|
|
BUILD_KEY_APK_PUB=$(TOPDIR)/public-key.pem
|
2017-09-06 19:19:45 +08:00
|
|
|
|
2021-06-14 18:30:08 +08:00
|
|
|
FAKEROOT:=$(STAGING_DIR_HOST)/bin/fakeroot
|
|
|
|
|
2022-10-19 20:39:19 +08:00
|
|
|
TARGET_AR:=$(TARGET_CROSS)gcc-ar
|
|
|
|
TARGET_RANLIB:=$(TARGET_CROSS)gcc-ranlib
|
|
|
|
TARGET_NM:=$(TARGET_CROSS)gcc-nm
|
2017-09-06 19:19:45 +08:00
|
|
|
TARGET_CC:=$(TARGET_CROSS)gcc
|
|
|
|
TARGET_CXX:=$(TARGET_CROSS)g++
|
2024-12-02 18:53:09 +08:00
|
|
|
TARGET_LD:=$(TARGET_CROSS)ld.$(TARGET_LINKER)
|
2017-09-06 19:19:45 +08:00
|
|
|
KPATCH:=$(SCRIPT_DIR)/patch-kernel.sh
|
2024-12-02 18:53:09 +08:00
|
|
|
FILECMD:=$(STAGING_DIR_HOST)/bin/file
|
2017-09-06 19:19:45 +08:00
|
|
|
SED:=$(STAGING_DIR_HOST)/bin/sed -i -e
|
2019-01-03 19:29:28 +08:00
|
|
|
ESED:=$(STAGING_DIR_HOST)/bin/sed -E -i -e
|
2021-06-14 18:30:08 +08:00
|
|
|
MKHASH:=$(STAGING_DIR_HOST)/bin/mkhash
|
|
|
|
# MKHASH is used in /scripts, so we export it here.
|
|
|
|
export MKHASH
|
2017-09-06 19:19:45 +08:00
|
|
|
CP:=cp -fpR
|
|
|
|
LN:=ln -sf
|
|
|
|
XARGS:=xargs -r
|
|
|
|
|
|
|
|
BASH:=bash
|
|
|
|
TAR:=tar
|
|
|
|
FIND:=find
|
|
|
|
PATCH:=patch
|
2022-01-24 18:22:31 +08:00
|
|
|
PYTHON:=python3
|
2017-09-06 19:19:45 +08:00
|
|
|
|
2024-12-02 18:53:09 +08:00
|
|
|
ifeq ($(HOST_OS),Darwin)
|
|
|
|
TRUE:=/usr/bin/env gtrue
|
|
|
|
FALSE:=/usr/bin/env gfalse
|
|
|
|
else
|
|
|
|
TRUE:=/usr/bin/env true
|
|
|
|
FALSE:=/usr/bin/env false
|
|
|
|
endif
|
|
|
|
|
2017-09-06 19:19:45 +08:00
|
|
|
INSTALL_BIN:=install -m0755
|
2019-01-03 19:29:28 +08:00
|
|
|
INSTALL_SUID:=install -m4755
|
2017-09-06 19:19:45 +08:00
|
|
|
INSTALL_DIR:=install -d -m0755
|
|
|
|
INSTALL_DATA:=install -m0644
|
|
|
|
INSTALL_CONF:=install -m0600
|
|
|
|
|
|
|
|
TARGET_CC_NOCACHE:=$(TARGET_CC)
|
|
|
|
TARGET_CXX_NOCACHE:=$(TARGET_CXX)
|
|
|
|
HOSTCC_NOCACHE:=$(HOSTCC)
|
|
|
|
HOSTCXX_NOCACHE:=$(HOSTCXX)
|
|
|
|
export TARGET_CC_NOCACHE
|
|
|
|
export TARGET_CXX_NOCACHE
|
|
|
|
export HOSTCC_NOCACHE
|
2021-06-14 18:30:08 +08:00
|
|
|
export HOSTCXX_NOCACHE
|
2017-09-06 19:19:45 +08:00
|
|
|
|
|
|
|
ifneq ($(CONFIG_CCACHE),)
|
2024-12-02 18:53:09 +08:00
|
|
|
TARGET_CC:= ccache $(TARGET_CC)
|
|
|
|
TARGET_CXX:= ccache $(TARGET_CXX)
|
2017-09-06 19:19:45 +08:00
|
|
|
HOSTCC:= ccache $(HOSTCC)
|
|
|
|
HOSTCXX:= ccache $(HOSTCXX)
|
2021-06-14 18:30:08 +08:00
|
|
|
export CCACHE_BASEDIR:=$(TOPDIR)
|
|
|
|
export CCACHE_DIR:=$(if $(call qstrip,$(CONFIG_CCACHE_DIR)),$(call qstrip,$(CONFIG_CCACHE_DIR)),$(TOPDIR)/.ccache)
|
|
|
|
export CCACHE_COMPILERCHECK:=%compiler% -dumpmachine; %compiler% -dumpversion
|
2017-09-06 19:19:45 +08:00
|
|
|
endif
|
|
|
|
|
|
|
|
TARGET_CONFIGURE_OPTS = \
|
|
|
|
AR="$(TARGET_AR)" \
|
|
|
|
AS="$(TARGET_CC) -c $(TARGET_ASFLAGS)" \
|
2024-12-02 18:53:09 +08:00
|
|
|
LD="$(TARGET_LD)" \
|
2017-09-06 19:19:45 +08:00
|
|
|
NM="$(TARGET_NM)" \
|
|
|
|
CC="$(TARGET_CC)" \
|
|
|
|
GCC="$(TARGET_CC)" \
|
|
|
|
CXX="$(TARGET_CXX)" \
|
|
|
|
RANLIB="$(TARGET_RANLIB)" \
|
|
|
|
STRIP=$(TARGET_CROSS)strip \
|
|
|
|
OBJCOPY=$(TARGET_CROSS)objcopy \
|
|
|
|
OBJDUMP=$(TARGET_CROSS)objdump \
|
|
|
|
SIZE=$(TARGET_CROSS)size
|
|
|
|
|
|
|
|
# strip an entire directory
|
|
|
|
ifneq ($(CONFIG_NO_STRIP),)
|
|
|
|
RSTRIP:=:
|
|
|
|
STRIP:=:
|
|
|
|
else
|
|
|
|
ifneq ($(CONFIG_USE_STRIP),)
|
|
|
|
STRIP:=$(TARGET_CROSS)strip $(call qstrip,$(CONFIG_STRIP_ARGS))
|
|
|
|
else
|
|
|
|
ifneq ($(CONFIG_USE_SSTRIP),)
|
2024-12-02 18:53:09 +08:00
|
|
|
STRIP:=$(STAGING_DIR_HOST)/bin/sstrip $(if $(CONFIG_SSTRIP_DISCARD_TRAILING_ZEROES),-z)
|
2017-09-06 19:19:45 +08:00
|
|
|
endif
|
|
|
|
endif
|
|
|
|
RSTRIP= \
|
|
|
|
export CROSS="$(TARGET_CROSS)" \
|
|
|
|
$(if $(PKG_BUILD_ID),KEEP_BUILD_ID=1) \
|
|
|
|
$(if $(CONFIG_KERNEL_KALLSYMS),NO_RENAME=1) \
|
|
|
|
$(if $(CONFIG_KERNEL_PROFILING),KEEP_SYMBOLS=1); \
|
|
|
|
NM="$(TARGET_CROSS)nm" \
|
|
|
|
STRIP="$(STRIP)" \
|
|
|
|
STRIP_KMOD="$(SCRIPT_DIR)/strip-kmod.sh" \
|
|
|
|
PATCHELF="$(STAGING_DIR_HOST)/bin/patchelf" \
|
|
|
|
$(SCRIPT_DIR)/rstrip.sh
|
|
|
|
endif
|
|
|
|
|
2021-06-15 17:58:07 +08:00
|
|
|
NINJA = \
|
|
|
|
MAKEFLAGS="$(MAKE_JOBSERVER)" \
|
|
|
|
$(STAGING_DIR_HOST)/bin/ninja \
|
|
|
|
$(if $(findstring c,$(OPENWRT_VERBOSE)),-v) \
|
|
|
|
$(if $(MAKE_JOBSERVER),,-j1)
|
|
|
|
|
2017-09-06 19:19:45 +08:00
|
|
|
ifeq ($(CONFIG_IPV6),y)
|
|
|
|
DISABLE_IPV6:=
|
|
|
|
else
|
|
|
|
DISABLE_IPV6:=--disable-ipv6
|
|
|
|
endif
|
|
|
|
|
|
|
|
TAR_OPTIONS:=-xf -
|
|
|
|
|
|
|
|
ifeq ($(CONFIG_BUILD_LOG),y)
|
|
|
|
BUILD_LOG:=1
|
|
|
|
endif
|
|
|
|
|
|
|
|
export BISON_PKGDATADIR:=$(STAGING_DIR_HOST)/share/bison
|
2023-03-23 06:29:24 +08:00
|
|
|
export HOST_GNULIB_SRCDIR:=$(STAGING_DIR_HOST)/share/gnulib
|
2017-09-06 19:19:45 +08:00
|
|
|
export M4:=$(STAGING_DIR_HOST)/bin/m4
|
|
|
|
|
2024-12-02 18:53:09 +08:00
|
|
|
##@
|
|
|
|
# @brief Slugify variable name and prepend suffix.
|
|
|
|
##
|
2017-09-06 19:19:45 +08:00
|
|
|
define shvar
|
|
|
|
V_$(subst .,_,$(subst -,_,$(subst /,_,$(1))))
|
|
|
|
endef
|
|
|
|
|
2024-12-02 18:53:09 +08:00
|
|
|
##@
|
|
|
|
# @brief Create and export variable, set to function result.
|
|
|
|
#
|
|
|
|
# @param 1: Function name. Used as variable name, prepended with `V_`.
|
|
|
|
##
|
2017-09-06 19:19:45 +08:00
|
|
|
define shexport
|
|
|
|
export $(call shvar,$(1))=$$(call $(1))
|
|
|
|
endef
|
|
|
|
|
2024-12-02 18:53:09 +08:00
|
|
|
##@
|
|
|
|
# @brief Support 64 bit tine in C code.
|
|
|
|
#
|
|
|
|
# Test support for 64-bit time with C code from largefile.m4 provided by GNU Gnulib
|
|
|
|
# the value is `y` when successful and `` otherwise
|
|
|
|
##
|
|
|
|
define YEAR_2038
|
|
|
|
$(shell \
|
|
|
|
mkdir -p $(TMP_DIR); \
|
|
|
|
echo '$(pound) include <time.h>' > $(TMP_DIR)/year2038.c; \
|
|
|
|
echo '$(pound) define LARGE_TIME_T ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30)))' >> $(TMP_DIR)/year2038.c; \
|
|
|
|
echo 'int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 && LARGE_TIME_T % 65537 == 0) ? 1 : -1];' >> $(TMP_DIR)/year2038.c; \
|
|
|
|
echo 'int main (void) {return 0;}' >> $(TMP_DIR)/year2038.c; \
|
|
|
|
$(HOSTCC) $(TMP_DIR)/year2038.c -o /dev/null 2>/dev/null && echo y && rm -f $(TMP_DIR)/year2038.c || rm -f $(TMP_DIR)/year2038.c; \
|
|
|
|
)
|
|
|
|
endef
|
|
|
|
|
|
|
|
##@
|
|
|
|
# @brief Execute commands under flock
|
|
|
|
#
|
|
|
|
# @param 1: The shell expression.
|
|
|
|
# @param 2: The lock name. If not given, the global lock will be used.
|
|
|
|
##
|
2017-09-06 19:19:45 +08:00
|
|
|
ifneq ($(wildcard $(STAGING_DIR_HOST)/bin/flock),)
|
|
|
|
define locked
|
|
|
|
SHELL= \
|
|
|
|
flock \
|
|
|
|
$(TMP_DIR)/.$(if $(2),$(strip $(2)),global).flock \
|
|
|
|
-c '$(subst ','\'',$(1))'
|
|
|
|
endef
|
|
|
|
else
|
|
|
|
locked=$(1)
|
|
|
|
endif
|
|
|
|
|
2024-12-02 18:53:09 +08:00
|
|
|
|
|
|
|
##@
|
|
|
|
# @brief Recursively copy paths into another directory, purge dangling
|
2017-09-06 19:19:45 +08:00
|
|
|
# symlinks before.
|
2024-12-02 18:53:09 +08:00
|
|
|
#
|
|
|
|
# @param 1: File glob expression.
|
|
|
|
# @param 1: Destination directory.
|
|
|
|
##
|
2017-09-06 19:19:45 +08:00
|
|
|
define file_copy
|
|
|
|
for src_dir in $(sort $(foreach d,$(wildcard $(1)),$(dir $(d)))); do \
|
|
|
|
( cd $$src_dir; find -type f -or -type d ) | \
|
|
|
|
( cd $(2); while :; do \
|
|
|
|
read FILE; \
|
|
|
|
[ -z "$$FILE" ] && break; \
|
|
|
|
[ -L "$$FILE" ] || continue; \
|
|
|
|
echo "Removing symlink $(2)/$$FILE"; \
|
|
|
|
rm -f "$$FILE"; \
|
|
|
|
done; ); \
|
|
|
|
done; \
|
|
|
|
$(CP) $(1) $(2)
|
|
|
|
endef
|
|
|
|
|
2024-12-02 18:53:09 +08:00
|
|
|
##@
|
|
|
|
# @brief Calculate sha256sum of any plain file within a given directory.
|
|
|
|
#
|
|
|
|
# @param 1: Input directory.
|
|
|
|
# @param 2: If set, recurse into subdirectories.
|
|
|
|
##
|
2017-09-06 19:19:45 +08:00
|
|
|
define sha256sums
|
2018-09-07 13:43:55 +08:00
|
|
|
(cd $(1); find . $(if $(2),,-maxdepth 1) -type f -not -name 'sha256sums' -printf "%P\n" | sort | \
|
2021-06-14 18:30:08 +08:00
|
|
|
xargs -r $(MKHASH) -n sha256 | sed -ne 's!^\(.*\) \(.*\)$$!\1 *\2!p' > sha256sums)
|
2017-09-06 19:19:45 +08:00
|
|
|
endef
|
|
|
|
|
2024-12-02 18:53:09 +08:00
|
|
|
##@
|
|
|
|
# @brief Retrieve file extension.
|
|
|
|
#
|
|
|
|
# @param 1: File name.
|
|
|
|
##
|
2017-09-06 19:19:45 +08:00
|
|
|
ext=$(word $(words $(subst ., ,$(1))),$(subst ., ,$(1)))
|
|
|
|
|
2024-12-02 18:53:09 +08:00
|
|
|
##@
|
|
|
|
# @brief Count Git commits of a package.
|
|
|
|
#
|
|
|
|
# @param 1: if non-empty: count commits since last ": [uU]pdate to "
|
|
|
|
# or ": [bB]ump to " in commit message.
|
|
|
|
##
|
2021-06-14 18:30:08 +08:00
|
|
|
define commitcount
|
|
|
|
$(shell \
|
|
|
|
if git log -1 >/dev/null 2>/dev/null; then \
|
|
|
|
if [ -n "$(1)" ]; then \
|
|
|
|
last_bump="$$(git log --pretty=format:'%h %s' . | \
|
treewide: sync with upstream (#10658)
* rules: fix broken commitcount on alpine system
To generate commitcount we use grep --max-count. This is not present on
alpine grep and cause wrong generation. Use -m as it's just the short
version of --max-count and more portable.
Fixes: #11200
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
* image-commands.mk: Be consistent in command invocation
Most/all other tools use the staging dir prefix, gzip should as well.
Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
Acked-by: Christian Marangi <ansuelsmth@gmail.com>
* image: fix device profile specific COMPILE targets
Commit a01d23e75 ("image: always rebuild kernel loaders")
is a step in the right direction, but exposed some issues
and regressions in the makefile.
Some of the files made by device specific COMPILE targets
start with an "append" command (i.e. >> instead of > redirection)
and if the file already exists, the target file is the
input to itself before the first recipe-specified input.
Fixes: a01d23e75 ("image: always rebuild kernel loaders")
Fixes: a7fb589e8 ("image: always rebuild kernel loaders")
Signed-off-by: Michael Pratt <mcpratt@pm.me>
* trusted-firmware-a.mk: use correct CPE ID
There are 2 different CPE IDs on the NVD website:
cpe:/a:arm:trusted_firmware-a
cpe:/o:arm:arm_trusted_firmware
The ID as currently used in trusted-firmware-a.mk does not exist. The
CPE ID using the arm_trusted_firmware product name only lists a few
records for versions 2.2 and 2.3 on the NVD site. The CPE ID using the
trusted_firmware-a product name lists many more records, and actually
has a CVE linked to it. Therefore, use the CPE ID using the
trusted_firmware-a product name.
Fixes: 104d60fe94ce ("trusted-firmware-a.mk: add PKG_CPE_ID")
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
* fritz-tools: fritz_tffs_nand: exclude oob code when disabled
Skip unnecessary stuff if checking the oob data is disabled.
Signed-off-by: Andre Heider <a.heider@gmail.com>
* fritz-tools: fritz_tffs_nand: get rid of struct tffs_sectors
This doesn't help and "[0]" gets in the way of bounds checks.
Signed-off-by: Andre Heider <a.heider@gmail.com>
* fritz-tools: fritz_tffs_nand: cache already read sector ids
This speeds up the tool significantly, especially when using the "-a"
argument.
Signed-off-by: Andre Heider <a.heider@gmail.com>
* iproute2: add missing libbpf dependency
This patch adds libbpf to the dependencies of tc-mod-iptables.
The package tc-mod-iptables is missing libbpf as a dependency,
which leads to the build failure described in bug #9491
LIBBPF_FORCE=on set, but couldn't find a usable libbpf
The build dependency is already automatically added because some other
packages from iproute2 depend on libbpf, but bpftools has multiple build
variants. With multiple build variants none gets build by default and
the build system will not build bpftools before iproute2.
Fixes: #9491
Signed-off-by: Kien Truong <duckientruong@gmail.com>
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* iproute2: update to 6.0.0
Release Notes:
https://lore.kernel.org/netdev/20221004082610.56b04719@hermes.local/t/
Remove upstreamed patch:
- 010-ipstats-Add-param.h-for-musl.patch
Refreshed:
- 140-keep_libmnl_optional.patch
- 145-keep_libelf_optional.patch
- 150-keep_libcap_optional.patch
- 155-keep_tirpc_optional.patch
- 170-ip_tiny.patch
- 190-fix-nls-rpath-link.patch
- 200-drop_libbsd_dependency.patch
- 300-selinux-configurable.patch
Signed-off-by: Nick Hainke <vincent@systemli.org>
* iproute2: update to 6.1.0
Announcement:
https://lore.kernel.org/netdev/20221214094130.7b11ec2e@hermes.local/T/#t
Refresh patch:
- 170-ip_tiny.patch
Signed-off-by: Nick Hainke <vincent@systemli.org>
* tools/xz: update to 5.2.10
Update to latest version.
Signed-off-by: Nick Hainke <vincent@systemli.org>
* Revert "Revert "tools/upx: remove (#10622)""
This reverts commit d3e16f203a8d238ebcf8d40e7453e8b375248e08.
* kernel: Make use of KERNEL_MAKE
Make use of KERNEL_MAKE in kernel packages were easily possible.
This moves some more code to common places and reduces the number of
lines.
It is defined like this:
KERNEL_MAKE = $(MAKE) $(KERNEL_MAKEOPTS)
KERNEL_MAKEOPTS = -C $(LINUX_DIR) $(KERNEL_MAKE_FLAGS)
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* toolchain: gcc: backport patches to fix build with glibc 2.36
glibc 2.36 changed the definition of enum fsconfig_command, it now
collides with the same definition from sys/mount.h. Remove the include
of linux/fs.h This still compiled with musl too.
This backports a patch which is already in the stable branch of GCC 11
and GCC 12.
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* toolchain: glibc: Update to glibc 2.36
This updates to glibc to version 2.36.
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* tools/llvm: update to 15.0.6
Release Notes:
https://discourse.llvm.org/t/llvm-15-0-0-release/65099
https://discourse.llvm.org/t/llvm-15-0-1-released/65380
https://discourse.llvm.org/t/llvm-15-0-2-released/65695
https://discourse.llvm.org/t/llvm-15-0-3-released/66036
https://discourse.llvm.org/t/llvm-15-0-4-released/66337
https://discourse.llvm.org/t/llvm-15-0-5-release/66616
https://discourse.llvm.org/t/llvm-15-0-6-released/66899
Remove HOST_BUILD_PARALLEL as it's default now.
Signed-off-by: Linhui Liu <liulinhui36@gmail.com>
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
Signed-off-by: Michael Pratt <mcpratt@pm.me>
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
Signed-off-by: Andre Heider <a.heider@gmail.com>
Signed-off-by: Kien Truong <duckientruong@gmail.com>
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: Nick Hainke <vincent@systemli.org>
Signed-off-by: Linhui Liu <liulinhui36@gmail.com>
Co-authored-by: Christian Marangi <ansuelsmth@gmail.com>
Co-authored-by: Olliver Schinagl <oliver@schinagl.nl>
Co-authored-by: Michael Pratt <mcpratt@pm.me>
Co-authored-by: Stijn Tintel <stijn@linux-ipv6.be>
Co-authored-by: Andre Heider <a.heider@gmail.com>
Co-authored-by: Kien Truong <duckientruong@gmail.com>
Co-authored-by: Nick Hainke <vincent@systemli.org>
Co-authored-by: Hauke Mehrtens <hauke@hauke-m.de>
2022-12-23 02:09:34 +08:00
|
|
|
grep -m 1 -e ': [uU]pdate to ' -e ': [bB]ump to ' | \
|
2021-06-14 18:30:08 +08:00
|
|
|
cut -f 1 -d ' ')"; \
|
|
|
|
fi; \
|
|
|
|
if [ -n "$$last_bump" ]; then \
|
|
|
|
echo -n $$(($$(git rev-list --count "$$last_bump..HEAD" .) + 1)); \
|
|
|
|
else \
|
|
|
|
git rev-list --count HEAD .; \
|
|
|
|
fi; \
|
|
|
|
else \
|
|
|
|
secs="$$(($(SOURCE_DATE_EPOCH) % 86400))"; \
|
|
|
|
date="$$(date --utc --date="@$(SOURCE_DATE_EPOCH)" "+%y%m%d")"; \
|
|
|
|
printf '%s.%05d' "$$date" "$$secs"; \
|
|
|
|
fi; \
|
|
|
|
)
|
|
|
|
endef
|
|
|
|
|
2024-12-02 18:53:09 +08:00
|
|
|
##@
|
|
|
|
# @brief Get ABI version string, stripping `-`, `_` and `.`.
|
|
|
|
#
|
|
|
|
# @param 1: Version string.
|
|
|
|
##
|
2021-06-14 18:30:08 +08:00
|
|
|
abi_version_str = $(subst -,,$(subst _,,$(subst .,,$(1))))
|
|
|
|
|
|
|
|
COMMITCOUNT = $(if $(DUMP),0,$(call commitcount))
|
|
|
|
AUTORELEASE = $(if $(DUMP),0,$(call commitcount,1))
|
|
|
|
|
2017-09-06 19:19:45 +08:00
|
|
|
all:
|
|
|
|
FORCE: ;
|
|
|
|
.PHONY: FORCE
|
|
|
|
|
|
|
|
check: FORCE
|
|
|
|
@true
|
|
|
|
|
|
|
|
val.%:
|
|
|
|
@$(if $(filter undefined,$(origin $*)),\
|
|
|
|
echo "$* undefined" >&2, \
|
|
|
|
echo '$(subst ','"'"',$($*))' \
|
|
|
|
)
|
|
|
|
|
|
|
|
var.%:
|
|
|
|
@$(if $(filter undefined,$(origin $*)),\
|
|
|
|
echo "$* undefined" >&2, \
|
|
|
|
echo "$*='"'$(subst ','"'\"'\"'"',$($*))'"'" \
|
|
|
|
)
|
|
|
|
|
|
|
|
endif #__rules_inc
|