Commit graph

86 commits

Author SHA1 Message Date
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
Jo-Philipp Wich
5faad30d5d build: properly pass CPP and CXX flags in HOST_MAKE_VARS
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2017-01-17 09:30:13 +01:00
Alexandru Ardelean
e9d20f1f87 build: introduce default HOST_MAKE_VARS for host-builds
Inspired/adapted from `package-defaults.mk` MAKE_VARS.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2017-01-17 09:18:45 +01:00
Jo-Philipp Wich
83b6bfc235 build: fix HOST_CONFIGURE_VARS placement
Instead of passing HOST_CONFIGURE_VARS as arguments to the configure script,
pass it as environment variables which brings the logic in line with the
behaviour of package-defaults.mk.

The change is needed since passing environment variables as configure
parameters only works with GNU autoconf which evaluates command line arguments
looking like variable assignments. Doing the same with non-autoconf configure
scripts is not guaranteed to work since such scripts might terminate due to
unknown argument errors.

One example case is the cmake configure script which bails out when called
as "./configure LDFLAGS=..." but not when called as "LDFLAGS=... ./configure".

Also change the SHELL override to CONFIG_SHELL in the default
HOST_CONFIGURE_VARS as the former is not properly propagated through the
various GNU configure invocations since it gets lost when configure re-
executes itself.

A prior attempt to change the variable placement had to be reverted due to
the missing SHELL -> CONFIG_SHELL change, leading to misgenerated libtool
executables in various packages.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2017-01-10 12:28:32 +01:00
Felix Fietkau
1e1d735e52 build: remove obsolete parallel build related options
Always use the main make jobserver, which has been the default for ages

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2017-01-10 12:10:20 +01:00
Jo-Philipp Wich
267b05f273 Revert "build: fix HOST_CONFIGURE_VARS placement"
This reverts commit 8395b63aac616f72fd835c59240fc2a4a6b28106.

Various host builds currently rely on the broken behaviour of
HOST_CONFIGURE_VARS so roll back to the previous state.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2017-01-05 14:34:11 +01:00
Jo-Philipp Wich
28f9df62f5 build: fix HOST_CONFIGURE_VARS placement
Ensure that HOST_CONFIGURE_VARS are set before the actual configure command
instead of passing them as configure command arguments.

This change brings host-build.mk in line with package-defaults.mk and makes
host configure environment variables work as expected.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2017-01-05 14:21:27 +01:00
Felix Fietkau
bdaa138c0d host-build: remove openssl include path from host cflags
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
Felix Fietkau
881c5b47ec build: remove duplicate Download/default definition from include/host-build.mk
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2016-12-16 15:35:21 +01:00
Jo-Philipp Wich
b7f7e9fe42 include/host-build.mk: use STAGING_DIR_HOSTPKG
Instead of hardcoding $(STAGING_DIR)/host, use the new $(STAGING_DIR_HOSTPKG)
variable to refer to the directory.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2016-11-01 12:11:14 +01:00
Alexandru Ardelean
7c8c3226dc build: copy contents of 'src' folder to build dirs (if present)
The normal Prepare step for a build is unpack, apply patches.
But for certain packages, patches contain whole files, which
would be nice to have separately and copied over as a last step
in the Prepare phase.

We need it for some other packages + patches, but I think
the 'hostapd' package can be used as a test for this.

As a quick note:
the reason the condition is being evaluated as
`[ ! -d ./src/ ] || $(CP) ./src/* $(HOST_BUILD_DIR)`
and not with
`[ -d ./src/ ] && $(CP) ./src/* $(HOST_BUILD_DIR)`
is that the latter would translate in a build failure if the `src`
folder is not present (the exit code would be 1).
The first one, succeeds for both cases (if `src` present or not).

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
2016-10-15 11:36:51 +02:00
Matthias Schiffer
cb718eb34b
include/host-build.mk: set Host/Exports for Host/Install step
Having a different PATH in Host/Install than in other steps like Host/Build
is confusing and easily leads to mistakes. Setting all of Host/Exports
makes host builds match target builds (Build/Install is part of
$(STAMP_BUILT), which has Build/Exports set).

Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
2016-10-06 00:51:34 +02:00
Matthias Schiffer
4ada2fd276
include/host-build.mk: fix ACLOCAL_INCLUDE
It seems the intention was to add both $(STAGING_DIR_HOST)/... and
$(STAGING_DIR)/host/... instead of passing $(STAGING_DIR_HOST) twice. This
makes the definition match HOST_CPPFLAGS and HOST_LDFLAGS.

Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
2016-10-06 00:19:18 +02:00
Matthias Schiffer
7064a849ce
include/host-build.mk: pass HOST_BUILD_PREFIX to Host/install
Using HOST_BUILD_PREFIX instead of STAGING_DIR_HOST will make the argument
work as expected from packages.

Nothing changes for tools, for which HOST_BUILD_PREFIX and STAGING_DIR_HOST
are equivalent.

Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
2016-10-06 00:19:18 +02:00
Felix Fietkau
4170267f5a build: pass $(STAGING_DIR_HOST) to Host/Install
makes it more consistent with package builds

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2016-08-23 11:56:13 +02:00
Matthias Schiffer
6fb212f293
build: don't add -j for parallel builds with Make 4.2+
Make usually passes -j and jobserver arguments as part of MAKEFLAGS. LEDE
removes MAKEFLAGS to have better control of the build, and re-adds the
jobserver arguments with -j to the Make commandline where desired.

Make 4.2+ behave differently with these arguments passed on the commandline
than in MAKEFLAGS: -j will override the jobserver argument and the job
count will be unlimited.

Moving the flags to MAKEFLAGS will need many packages to be changed and
tested; therefore, we opt for a less invasive change for now and just
remove -j for Make 4.2+, as the jobserver argument alone is enough to
enable parallel builds for these Make versions.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
2016-06-15 19:26:17 +02: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
48374a3a9c build: include homebrew include/library directory in cflags/ldflags on mac os x
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 47139
2015-10-05 14:11:30 +00:00
Felix Fietkau
c99c9f875e build: set CCACHE_DIR for host builds
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 45427
2015-04-14 00:00:55 +00:00
Jo-Philipp Wich
60eef7aefd include: use SHELL, not BASH for HOST_CONFIGURE_VARS
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>

SVN-Revision: 44295
2015-02-06 13:14:29 +00:00
Jo-Philipp Wich
971ec0283c include: remove static tool linking support
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>

SVN-Revision: 44286
2015-02-06 00:00:47 +00:00
Felix Fietkau
f6f0984c43 build: prevent spurious host-build re-builds by touching .built after the install command before touching .installed
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 43721
2014-12-15 20:14:27 +00:00
Felix Fietkau
1f77bfff96 build: BSD compile fixes
following patch allows to build images for Qemu ARM on
OpenBSD 5.2 amd64 and FreeBSD 9.1 amd64.

Mostly small pieces of code changes to get things right on the
specific platform.

Updated the README to describe better, which tools on the host
are required. Added some kind of prepare scripts to install needed
tools on BSD via packages.

Signed-off-by: Waldemar Brodkorb <mail@waldemar-brodkorb.de>

SVN-Revision: 35900
2013-03-07 17:32:29 +00:00
Felix Fietkau
6d1884c583 build: fix host build stampfile usage, fixes spurious errors with missing opkg host binary after deleting the staging dir
SVN-Revision: 33776
2012-10-15 13:19:41 +00:00
Felix Fietkau
ed2bf29be5 build: add the + token to any commands that can pass through the jobserver, fixes parallel build on some systems
SVN-Revision: 33523
2012-09-23 09:50:01 +00:00
Felix Fietkau
1c108d3318 host-build: add HOST_MAKE_FLAGS similar to package MAKE_FLAGS
SVN-Revision: 33509
2012-09-22 20:10:28 +00:00
Felix Fietkau
b086475e1e build: ensure that package/host-build build system code does not run in parallel, fixes rare spurious parallel build failures
SVN-Revision: 33445
2012-09-17 11:17:26 +00:00
Felix Fietkau
f19dbfff91 build: add jobserver support for host builds
SVN-Revision: 33423
2012-09-15 12:34:48 +00:00
Jo-Philipp Wich
8726a422cd do not pass optimization flags in HOST_CPPFLAGS (#12153)
SVN-Revision: 33351
2012-09-09 21:35:42 +00:00
Jo-Philipp Wich
29b91ef01a introduce a menuconfig option to turn off static linking of host utilities
SVN-Revision: 33154
2012-08-13 00:26:34 +00:00
Jo-Philipp Wich
94a96244f6 host-build.mk: define a variable HOST_STATIC_LINKING which is set to "-static" on non-Darwin systems
SVN-Revision: 33138
2012-08-12 12:34:25 +00:00
Felix Fietkau
b50cfbb179 build: add PKG_MIRROR_MD5SUM support for host builds
SVN-Revision: 32082
2012-06-06 14:08:47 +00:00
John Crispin
ccb6b0a063 tools: clean up Makefiles / make ccache work
SVN-Revision: 29754
2012-01-15 11:43:13 +00:00
Felix Fietkau
d288f855e3 add a missing wrapper for the refresh target for host builds
SVN-Revision: 25193
2011-01-28 12:13:58 +00:00
Jo-Philipp Wich
dbf8d9c516 - implement hooks for hostbuilds - use host build hooks to implement fixups for host build - move separator declaration to rules.mk
SVN-Revision: 24551
2010-12-13 19:04:33 +00:00
Felix Fietkau
380ea005e1 use PREFIX/bin instead of PREFIX/sbin for all host builds (fixes e2fsprogs path)
SVN-Revision: 24103
2010-11-22 18:49:18 +00:00
Michael Büsch
050902efd7 deptest: Install of host tools has to be forced for every test, because the host staging dir is cleaned prior a test.
SVN-Revision: 23825
2010-11-03 14:58:32 +00:00
Michael Büsch
dc7a68165d Fix typo
SVN-Revision: 23482
2010-10-16 18:46:22 +00:00
Michael Büsch
d4807cf557 Support force-disabling per-package parallel build with {PKG,HOST}_BUILD_PARALLEL:=0
SVN-Revision: 23480
2010-10-16 18:42:58 +00:00
Michael Büsch
fde498904f Add an option to default the default build rule to parallel build.
SVN-Revision: 22737
2010-08-20 14:48:59 +00:00
Michael Büsch
f4daa84832 Also support parallel build for host-packages
SVN-Revision: 22698
2010-08-18 14:23:06 +00:00
Travis Kemen
cf7199f48b this patch fixes toolchain parallel build, which reduces build time.
In order to enable parallel build, change line 21 of
include/host-build.mk from:

override MAKEFLAGS=

to:

override MAKEFLAGS=$(MAKE_JOBS)

-Raphael

SVN-Revision: 19995
2010-03-05 20:15:12 +00:00
Lars-Peter Clausen
144fd07cd8 Prevent unnecessary host package rebuilds.
Sometimes `make install` touches a file inside the build directory, so it is
betterr to create the build stamp after calling `make install` otherwise the
package is going to be rebuild even though nothing really changed.

SVN-Revision: 19021
2010-01-03 18:00:28 +00:00
Andy Boyett
1141aecd2a use $(HOST_CFLAGS) when not cross-compiling. Thanks Daniel Gimpelevich
SVN-Revision: 18232
2009-10-30 22:52:27 +00:00
Felix Fietkau
7de1e0f116 host build: do not hide the configure command
SVN-Revision: 17716
2009-09-25 09:28:14 +00:00
Felix Fietkau
e3fc6c9b88 fix a typo that prevented host build specific variable exports from working
SVN-Revision: 15512
2009-04-30 14:15:45 +00:00