mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-18 21:28:02 +00:00
tools/ninja: use existing ninja to build ninja
Add methods to skip the building and execution of Ninja by python in order to allow Make to execute Ninja after the configure script. This allows the user to build Ninja only once if they already have an older version of Ninja built. It also allows the user to test the jobserver functionality by having Ninja built twice (clean then compile). Signed-off-by: Michael Pratt <mcpratt@pm.me> Link: https://github.com/openwrt/openwrt/pull/16693 Signed-off-by: Robert Marko <robimarko@gmail.com>
This commit is contained in:
parent
3efedda1da
commit
df303c7ef4
@ -11,15 +11,18 @@ PKG_HASH:=31747ae633213f1eda3842686f83c2aa1412e0f5691d1c14dbbcc67fe7400cea
|
||||
include $(INCLUDE_DIR)/host-build.mk
|
||||
|
||||
define Host/Configure
|
||||
endef
|
||||
|
||||
define Host/Compile
|
||||
cd $(HOST_BUILD_DIR) && \
|
||||
$(HOST_MAKE_VARS) \
|
||||
CXX="$(HOSTCXX_NOCACHE)" \
|
||||
$(STAGING_DIR_HOST)/bin/$(PYTHON) configure.py \
|
||||
--bootstrap \
|
||||
$(if $(shell $(STAGING_DIR_HOST)/bin/ninja --version),,--bootstrap) \
|
||||
--no-rebuild \
|
||||
--verbose
|
||||
-$(Host/Install)
|
||||
endef
|
||||
|
||||
define Host/Compile
|
||||
+$(NINJA) -C $(HOST_BUILD_DIR)
|
||||
endef
|
||||
|
||||
define Host/Install
|
||||
|
24
tools/ninja/patches/010-bootstrap-configure-only.patch
Normal file
24
tools/ninja/patches/010-bootstrap-configure-only.patch
Normal file
@ -0,0 +1,24 @@
|
||||
--- a/configure.py
|
||||
+++ b/configure.py
|
||||
@@ -201,6 +201,8 @@ parser = OptionParser()
|
||||
profilers = ['gmon', 'pprof']
|
||||
parser.add_option('--bootstrap', action='store_true',
|
||||
help='bootstrap a ninja binary from nothing')
|
||||
+parser.add_option('--no-rebuild', action='store_true',
|
||||
+ help='let user execute ninja after build.ninja generation')
|
||||
parser.add_option('--verbose', action='store_true',
|
||||
help='enable verbose build')
|
||||
parser.add_option('--platform',
|
||||
@@ -693,7 +695,11 @@ n.build('all', 'phony', all_targets)
|
||||
n.close()
|
||||
print('wrote %s.' % BUILD_FILENAME)
|
||||
|
||||
-if options.bootstrap:
|
||||
+if options.bootstrap and options.no_rebuild:
|
||||
+ print('bootstrap complete. execute ninja in this directory...')
|
||||
+ print(os.getcwd())
|
||||
+
|
||||
+elif options.bootstrap:
|
||||
print('bootstrap complete. rebuilding...')
|
||||
|
||||
rebuild_args = []
|
@ -33,7 +33,7 @@ Fixes https://github.com/ninja-build/ninja/issues/1139
|
||||
|
||||
--- a/configure.py
|
||||
+++ b/configure.py
|
||||
@@ -517,11 +517,13 @@ for name in ['build',
|
||||
@@ -519,11 +519,13 @@ for name in ['build',
|
||||
'state',
|
||||
'status',
|
||||
'string_piece_util',
|
||||
@ -47,7 +47,7 @@ Fixes https://github.com/ninja-build/ninja/issues/1139
|
||||
'includes_normalize-win32',
|
||||
'msvc_helper-win32',
|
||||
'msvc_helper_main-win32']:
|
||||
@@ -530,7 +532,9 @@ if platform.is_windows():
|
||||
@@ -532,7 +534,9 @@ if platform.is_windows():
|
||||
objs += cxx('minidump-win32', variables=cxxvariables)
|
||||
objs += cc('getopt')
|
||||
else:
|
||||
@ -58,7 +58,7 @@ Fixes https://github.com/ninja-build/ninja/issues/1139
|
||||
if platform.is_aix():
|
||||
objs += cc('getopt')
|
||||
if platform.is_msvc():
|
||||
@@ -588,6 +592,7 @@ for name in ['build_log_test',
|
||||
@@ -590,6 +594,7 @@ for name in ['build_log_test',
|
||||
'string_piece_util_test',
|
||||
'subprocess_test',
|
||||
'test',
|
||||
|
Loading…
Reference in New Issue
Block a user