Commit Graph

216 Commits (b2255f36213547e5a8c7d4728635763a75f6f2ce)

Author SHA1 Message Date
Matthias Schiffer 5ef0854b11
rules.mk: make PKG_CONFIG_DEPENDS properly track string values
The confvar macro is adjusted to not only consider if a variable has a
value or not, but also the value itself. Instead of creating a string of
'y' and 'n' characters, all variable names and values are concatenated
and hashed.

Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
2017-02-27 23:46:53 +01:00
Michal Sojka 202ae4cc6a build: Pass -iremap gcc option as a single argument
Passing -iremap argument separately causes problems with projects that
use scons and its ParseFlags function. Consider this SConscript
example:

    env = Environment()
    d = env.ParseFlags("-iremap one:two")

ParseFlags will interpret one:two as a file name and the returned dict
d will contain only "-iremap". When the -iremap is passed to the
compiler without an argument, compilation obviously fails.

Signed-off-by: Michal Sojka <sojkam1@fel.cvut.cz>
2017-02-09 14:49:34 +01:00
Felix Fietkau d826af2cbb build: make <subdir>/install opt-in, use it for target/ only
Fixes buildbot errors on running make target/install or
toolchain/install

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2017-02-09 13:51:35 +01:00
Felix Fietkau f55c29e4c7 build: remove libc version suffix from build/staging directories
Our supported libcs are ABI compatible across version upgrades

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2017-02-07 17:18:15 +01:00
Florian Fainelli 57657a7237 build: Suffix build directory with _$(LIBC) for external toolchains
For external toolchain, we also know the type of C library used, and the
toolchain triplet may not always be reflective of that, therefore make
$(TARGET_DIR_NAME) suffixed with _$(LIBC).

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
2017-01-29 11:51:02 -08:00
Jo-Philipp Wich 7d57db4d9b build: introduce STAGING_DIR_IMAGE
Introduce a new location STAGING_DIR_IMAGE which is intended to be used by
bootloader iamges and similar image-related artifacts.

This directory is guaranteed to be persistent across kernel upgrades which
might involve a removal of KERNEL_BUILD_DIR and is guranteed to be bundled
with the image builder.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2017-01-27 16:53:31 +01:00
Matthias Schiffer 40d3401f3b
rules.mk: export STAGING_DIR_HOSTPKG
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
2017-01-19 00:05:10 +01:00
Felix Fietkau 9228d1c066 build: introduce extra targets that contain only proper dependencies
This can be used to check if targets like prepare or compile are up to date

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2017-01-18 23:57:08 +01:00
Felix Fietkau 6cf067d084 build: define common subdir targets in rules.mk
Reduce build system clutter and enable further rework

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2017-01-18 23:57:07 +01:00
Matthias Schiffer 3d71786154
build: move STAGING_DIR_HOSTPKG and BUILD_DIR_HOST back to a common directory for all targets
Using a single host package staging dir (and build dir) significantly speeds up
builds when multiple targets are built in succession, especially for large host
packages like NodeJS.

$(STAGING_DIR)/host is kept in addition to $(STAGING_DIR_HOSTPKG) in most
places; it is still used as destination for host files in Build/InstallDev.

Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
2017-01-18 19:47:36 +01:00
Felix Fietkau 84bd74057f build: use mkhash to replace various quirky md5sum/openssl calls
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2017-01-05 11:09:12 +01:00
Felix Fietkau ffb0181a87 build: add defaults for PKG_SOURCE, PKG_SOURCE_SUBDIR, PKG_VERSION
This makes it easier to unify versioning of git based package downloads.
PKG_SOURCE_DATE along with an 8-character abbreviation of the git hash
is used as PKG_VERSION, PKG_RELEASE should be used like normal packages.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2016-12-22 16:42:20 +01:00
Felix Fietkau 7a315b0b5d build: implement make check and make package/X/check
This is intended to be used for a wide array of package sanity checks.

The first check that is implemented is for the hash of downloaded files.
It checks:
  - Missing hash
  - Use of SHA256 instead of MD5
  - dl/<file> hash not matching hash in makefile
  - deprecated MD5SUM variable

The deprecated MD5SUM variable check is skipped for feeds/ until OpenWrt
is updated as well

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2016-12-17 10:36:25 +01:00
Jo-Philipp Wich d7bec5609c rules.mk: add STAGING_DIR_HOSTPKG variable
Add a STAGING_DIR_HOSTPKG variable which refers to $(STAGING_DIR)/host in order
to prepare support for relocating that directory in the future.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2016-11-01 12:11:14 +01:00
Jo-Philipp Wich 27854a0a84 build: add checksum target
Add a new "checksum" make target which generates an sha256sums file over the
image files produced in bin/targets/ and automatically call it during make
world after the package index generation.

The advantage of this new target is that it is guaranteed to run after the
images, the SDK and the ImageBuilder archives have been generated to ensure
that they all end up in the checksum file. Fixes FS#51.

Uses sed to postprocess the OpenSSL digest output into an sha256sum command
compatible format.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2016-08-01 18:11:21 +02:00
Jo-Philipp Wich 54fbe8afdd rules.mk: introduce new variable OUTPUT_DIR
Introduce a new variable OUTPUT_DIR which refers to the parent bin/ directory
without the architecture specific component.

Also construct the BIN_DIR variable based on OUTPUT_DIR now and add both target
and subtarget components to it to prevent different subtargets from
overwriting each others files in bin/.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2016-04-06 21:49:15 +02:00
Felix Fietkau c8cbe7aba2 build: disable the use of -iremap for UML (#21851)
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 48718
2016-02-13 22:23:32 +00:00
Jo-Philipp Wich 064761d1db rules.mk: add TARGET_INIT_PATH toplevel variables
Add a new variable TARGET_INIT_PATH which holds the default $PATH variable
value configured in menuconfig.

Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>

SVN-Revision: 48676
2016-02-08 14:28:35 +00:00
Felix Fietkau c5d74630c5 build: filter out -fno-plt for the kernel build, fixes #21712
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 48515
2016-01-28 00:26:38 +00:00
Felix Fietkau b737686b2c build: use -iremap feature to replace __FILE__ absolute path names in packages with ones relative to $(BUILD_DIR)
improves reproducible builds

Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 48489
2016-01-25 15:49:31 +00:00
Felix Fietkau 579e9620c6 rules.mk: make the locked template available even if flock has not been built yet (fall back to unlocked shell command)
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 48414
2016-01-20 21:31:38 +00:00
Felix Fietkau c7308bc9f1 build: use a separate variable checking the subdir path (for host packages)
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 48410
2016-01-20 20:13:40 +00:00
Felix Fietkau 03bc8d94f0 host-build.mk: change default installation prefix of package/* host builds to staging_dir/target-*/host
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 48401
2016-01-20 19:12:13 +00:00
Felix Fietkau 36502c5a6f build: move host build directories of package/* to build_dir/target-*/host/
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 48400
2016-01-20 19:12:06 +00:00
Felix Fietkau 0628630664 build: add pure make tolower/toupper funtions that do not require shell calls
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 48105
2016-01-03 20:57:53 +00:00
Felix Fietkau f7939f5e74 gcc: remove version 4.6, it is no longer needed
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 47443
2015-11-10 21:10:53 +00:00
Felix Fietkau 940bc81bc2 build: add -Wno-error=unused-result to target cflags
Many glibc functions have __warn_unused_result__ in so many different
core functions, and failing the build for all of those simply does not
make any sense

Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 47440
2015-11-10 12:04:09 +00:00
Felix Fietkau 279c8bee8d rules.mk: export STAGING_DIR_HOST to sub-makefiles and shells
Certains host packages (like quilt) need to know the previously used
install location at run-time. They currently use $STAGING_DIR, which
causes issues on cleaned environment, where $STAGING_DIR doesn't exist
yet.

Signed-off-by: Mathieu Olivari <mathieu@codeaurora.org>

SVN-Revision: 47409
2015-11-07 12:52:07 +00:00
Felix Fietkau 3bbb927728 build: Allow kernel modules to set build ID debug symbol
This change adds support for specifying a build ID for kernel modules.
This is done by setting PKG_BUILD_ID to a hexadecimal string, which will
then be passed to the kernel linker. In addition, when this flag is set,
the build ID debug symbol (.note.gnu.build-id) will not be stripped from
the kernel module. This symbol is exported in sysfs by the kernel (if
the kernel is compiled with CONFIG_KALLSYMS) and so can be used to
uniquely identify a version of a kernel module in a running kernel. This
is useful for keeping track of different versions of a module when doing
experiments and development.

Modules that specify the build ID will be ~100 bytes larger (depending
on the length of the build ID specified). There is no size difference
for kernel modules that do not set this variable.

Signed-off-by: Toke Høiland-Jørgensen <toke@toke.dk>

SVN-Revision: 47290
2015-10-30 15:20:12 +00:00
Felix Fietkau 59bffdaa64 rules.mk: remove GCC 4.4 and GCC 4.5 conditional
gcc 4.4 was removed in r44957 gcc: remove 4.4.7 (only used by avr32)
gcc 4.5 was removed in r36149

Signed-off-by: Dirk Neukirchen <dirkneukirchen@web.de>

SVN-Revision: 46722
2015-08-25 07:45:42 +00:00
Steven Barth 55fe8b2988 toolchain: only use fortify-headers for musl
Signed-off-by: Steven Barth <steven@midlink.org>

SVN-Revision: 46138
2015-06-29 06:47:49 +00:00
Steven Barth 2738526a16 toolchain: add fortify-headers, enable FORTIFY_SOURCE by default
Signed-off-by: Steven Barth <steven@midlink.org>

SVN-Revision: 46117
2015-06-23 14:38:03 +00:00
Felix Fietkau a778060392 toolchain: switch to musl by default, except for mips64
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 45995
2015-06-15 23:05:08 +00:00
Felix Fietkau beca028bd6 build: add integration for managing opkg package feed keys
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 45286
2015-04-06 19:39:51 +00:00
John Crispin 6c434d5f06 rules.mk: add newline definition
To be used for stuff like $(subst $(space),$(newline),$(SOME_VAR))

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>

SVN-Revision: 44796
2015-03-15 19:47:46 +00:00
Jo-Philipp Wich 24f49b170e rules.mk: don't add staging_dir/host/bin/ path again
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>

SVN-Revision: 44379
2015-02-10 15:49:36 +00:00
Jo-Philipp Wich 2efe776ab0 scripts: extend rstrip.sh to remove bad rpaths
Remove all rpath entries which do not point to a location below /lib or
/usr/lib and which do not begin with '$ORIGIN'.

Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>

SVN-Revision: 44377
2015-02-10 15:48:48 +00:00
Jo-Philipp Wich 1162d6b721 rules.mk: use relative paths for BASH, TAR, FIND, PATCH, PYTHON
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>

SVN-Revision: 44294
2015-02-06 12:35:36 +00:00
Jo-Philipp Wich 78f476ed02 include: declare variables formerly set in tmp/.host.mk
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>

SVN-Revision: 44272
2015-02-05 16:57:18 +00:00
Felix Fietkau 60629e1695 build: do not assume that gcc-{ar,ranlib,nm} is usable with an external toolchain
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 43911
2015-01-10 16:14:25 +00:00
Felix Fietkau 9a46799804 build: use gcc-provided ar, nm and ranlib where appropriate
Since GCC 4.7, GCC provides its own wrappers around ar, nm and ranlib, which
should be used for builds with link-time optimization. Since GCC 4.9, using them
actually necessary for LTO builds using convenience libraries to succeed.

There are some packages which try to automatically detect if gcc-{ar,nm,ranlib}
exist (one example is my package "fastd" in the package repository, which tries
to use LTO). This breaks because the OpenWrt build system explicitly sets the
binutils versions of these tools.

As it doesn't cause any issues to use gcc-{ar,nm,ranlib} instead of
{ar,nm,ranlib} even without LTO, this patch just makes OpenWrt use the
GCC-provided versions by default, which fixes the build of such packages with
GCC 4.9.

(I know that builds fail though when clang is used with -flto and
gcc-{ar,nm,ranlib}, but as all OpenWrt toolchains are based on GCC, this isn't
a real issue.)

Completely cleaning the tree (or at least `make clean toolchain/clean`) is
necessary to get a consistent state after the binutils plugins support patch and
this one (as trying to use gcc-{ar,nm,ranlib} with a binutils built without
plugin support will definitely lead to a build failure).

Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>

SVN-Revision: 43784
2014-12-27 12:59:59 +00:00
Felix Fietkau 20a3814a9c rules.mk: reduce shexport to one line to allow it to be put in a target context
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 43018
2014-10-22 08:57:20 +00:00
Felix Fietkau d081edf7eb build: clean up and optimize ipkg control generator code
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 43017
2014-10-22 08:57:16 +00:00
John Crispin 7557afa9a5 build: add $(STAGING_DIR_HOST)/usr/{include, lib} to build search path.
Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>

SVN-Revision: 42987
2014-10-20 06:29:21 +00:00
Felix Fietkau c541b31e40 build: override hardcoded paths to bison and m4 to make the SDK more relocatable
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 42300
2014-08-26 12:15:50 +00:00
Felix Fietkau 627e974c99 partially revert "build: remove check for nonexistant CONFIG_TAR_VERBOSITY variable and move TAR_OPTIONS to unpack.mk"
This complicates the evaluation order for some packages

SVN-Revision: 40006
2014-03-22 19:52:48 +00:00
Felix Fietkau e71ec4cb55 build: remove GREP_OPTIONS export from rules.mk, defining it in the top-level Makefile is enough
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 39982
2014-03-21 15:54:14 +00:00
Felix Fietkau 51ae801ee3 build: remove check to nonexistant CONFIG_ENABLE_LOCALE variable and move DISABLE_NLS to package-defaults.mk
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 39980
2014-03-21 15:54:07 +00:00
Felix Fietkau 00bcebeb4c build: remove check for nonexistant CONFIG_TAR_VERBOSITY variable and move TAR_OPTIONS to unpack.mk
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 39979
2014-03-21 15:54:03 +00:00
Felix Fietkau 318052e03c build: add a variable for the name of the {build,staging}_dir/{target,toolchain}-* directories
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 39857
2014-03-10 11:12:32 +00:00