mirror of
https://github.com/nodejs/node.git
synced 2024-11-24 20:29:23 +01:00
build: reduce chance of unneeded rebuild
Run `node_js2c` and `mkssldef` as actions and not as targets makes sure they are run only once, just before processing the rest of `node_lib`. This helps `make` based dependency change detection be more accurate. Add comments with tagrget names for readability. Use `process_outputs_as_sources` for automatic inclution of outputs. PR-URL: https://github.com/nodejs/node/pull/23156 Reviewed-By: Richard Lau <riclau@uk.ibm.com> Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
This commit is contained in:
parent
1a1fe53e3d
commit
6dd4a077c0
4
Makefile
4
Makefile
@ -74,9 +74,9 @@ available-node = \
|
||||
# BUILDTYPE=Debug builds both release and debug builds. If you want to compile
|
||||
# just the debug build, run `make -C out BUILDTYPE=Debug` instead.
|
||||
ifeq ($(BUILDTYPE),Release)
|
||||
all: out/Makefile $(NODE_EXE) ## Default target, builds node in out/Release/node.
|
||||
all: $(NODE_EXE) ## Default target, builds node in out/Release/node.
|
||||
else
|
||||
all: out/Makefile $(NODE_EXE) $(NODE_G_EXE)
|
||||
all: $(NODE_EXE) $(NODE_G_EXE)
|
||||
endif
|
||||
|
||||
.PHONY: help
|
||||
|
@ -22,6 +22,8 @@
|
||||
'node_tag%': '',
|
||||
'uv_library%': 'static_library',
|
||||
|
||||
'clang%': 0,
|
||||
|
||||
'openssl_fips%': '',
|
||||
|
||||
# Default to -O0 for debug builds.
|
||||
@ -91,8 +93,6 @@
|
||||
}],
|
||||
['OS=="mac"', {
|
||||
'clang%': 1,
|
||||
}, {
|
||||
'clang%': 0,
|
||||
}],
|
||||
],
|
||||
},
|
||||
|
105
node.gyp
105
node.gyp
@ -288,7 +288,7 @@
|
||||
'sources': [
|
||||
'tools/msvs/genfiles/node_etw_provider.rc'
|
||||
],
|
||||
}]
|
||||
}],
|
||||
],
|
||||
}],
|
||||
],
|
||||
@ -305,16 +305,11 @@
|
||||
'product_name': '<(node_core_target_name)-win',
|
||||
}],
|
||||
],
|
||||
},
|
||||
}, # node_core_target_name
|
||||
{
|
||||
'target_name': '<(node_lib_target_name)',
|
||||
'type': '<(node_intermediate_lib_type)',
|
||||
'product_name': '<(node_core_target_name)',
|
||||
|
||||
'dependencies': [
|
||||
'node_js2c#host',
|
||||
],
|
||||
|
||||
'includes': [
|
||||
'node.gypi'
|
||||
],
|
||||
@ -460,7 +455,6 @@
|
||||
'<@(library_files)',
|
||||
# node.gyp is added to the project by default.
|
||||
'common.gypi',
|
||||
'<(SHARED_INTERMEDIATE_DIR)/node_javascript.cc',
|
||||
],
|
||||
|
||||
'variables': {
|
||||
@ -618,15 +612,9 @@
|
||||
'src/tls_wrap.h'
|
||||
],
|
||||
}],
|
||||
],
|
||||
},
|
||||
{
|
||||
'target_name': 'mkssldef',
|
||||
'type': 'none',
|
||||
# TODO(bnoordhuis) Make all platforms export the same list of symbols.
|
||||
# Teach mkssldef.py to generate linker maps that UNIX linkers understand.
|
||||
'conditions': [
|
||||
[ 'use_openssl_def==1', {
|
||||
# TODO(bnoordhuis) Make all platforms export the same list of symbols.
|
||||
# Teach mkssldef.py to generate linker maps that UNIX linkers understand.
|
||||
'variables': {
|
||||
'mkssldef_flags': [
|
||||
# Categories to export.
|
||||
@ -656,6 +644,7 @@
|
||||
'deps/openssl/openssl/util/libssl.num',
|
||||
],
|
||||
'outputs': ['<(SHARED_INTERMEDIATE_DIR)/openssl.def'],
|
||||
'process_outputs_as_sources': 1,
|
||||
'action': [
|
||||
'python',
|
||||
'tools/mkssldef.py',
|
||||
@ -668,9 +657,38 @@
|
||||
],
|
||||
}],
|
||||
],
|
||||
},
|
||||
# generate ETW header and resource files
|
||||
'actions': [
|
||||
{
|
||||
'action_name': 'node_js2c',
|
||||
'process_outputs_as_sources': 1,
|
||||
'inputs': [
|
||||
'<@(library_files)',
|
||||
'tools/check_macros.py'
|
||||
],
|
||||
'outputs': [
|
||||
'<(SHARED_INTERMEDIATE_DIR)/node_javascript.cc',
|
||||
],
|
||||
'conditions': [
|
||||
[ 'node_use_dtrace=="false" and node_use_etw=="false"', {
|
||||
'inputs': [ 'src/notrace_macros.py' ]
|
||||
}],
|
||||
[ 'node_debug_lib=="false"', {
|
||||
'inputs': [ 'tools/nodcheck_macros.py' ]
|
||||
}],
|
||||
[ 'node_debug_lib=="true"', {
|
||||
'inputs': [ 'tools/dcheck_macros.py' ]
|
||||
}]
|
||||
],
|
||||
'action': [
|
||||
'python', 'tools/js2c.py',
|
||||
'<@(_outputs)',
|
||||
'<@(_inputs)', 'config.gypi',
|
||||
],
|
||||
},
|
||||
],
|
||||
}, # node_lib_target_name
|
||||
{
|
||||
# generate ETW header and resource files
|
||||
'target_name': 'node_etw',
|
||||
'type': 'none',
|
||||
'conditions': [
|
||||
@ -689,43 +707,7 @@
|
||||
]
|
||||
} ]
|
||||
]
|
||||
},
|
||||
{
|
||||
'target_name': 'node_js2c',
|
||||
'type': 'none',
|
||||
'toolsets': ['host'],
|
||||
'actions': [
|
||||
{
|
||||
'action_name': 'node_js2c',
|
||||
'process_outputs_as_sources': 1,
|
||||
'inputs': [
|
||||
'<@(library_files)',
|
||||
'./config.gypi',
|
||||
'tools/check_macros.py'
|
||||
],
|
||||
'outputs': [
|
||||
'<(SHARED_INTERMEDIATE_DIR)/node_javascript.cc',
|
||||
],
|
||||
'conditions': [
|
||||
[ 'node_use_dtrace=="false" and node_use_etw=="false"', {
|
||||
'inputs': [ 'src/notrace_macros.py' ]
|
||||
}],
|
||||
[ 'node_debug_lib=="false"', {
|
||||
'inputs': [ 'tools/nodcheck_macros.py' ]
|
||||
}],
|
||||
[ 'node_debug_lib=="true"', {
|
||||
'inputs': [ 'tools/dcheck_macros.py' ]
|
||||
}]
|
||||
],
|
||||
'action': [
|
||||
'python',
|
||||
'tools/js2c.py',
|
||||
'<@(_outputs)',
|
||||
'<@(_inputs)',
|
||||
],
|
||||
},
|
||||
],
|
||||
}, # end node_js2c
|
||||
}, # node_etw
|
||||
{
|
||||
'target_name': 'node_dtrace_header',
|
||||
'type': 'none',
|
||||
@ -753,7 +735,7 @@
|
||||
]
|
||||
} ],
|
||||
]
|
||||
},
|
||||
}, # node_dtrace_header
|
||||
{
|
||||
'target_name': 'node_dtrace_provider',
|
||||
'type': 'none',
|
||||
@ -788,7 +770,7 @@
|
||||
],
|
||||
}],
|
||||
]
|
||||
},
|
||||
}, # node_dtrace_provider
|
||||
{
|
||||
'target_name': 'node_dtrace_ustack',
|
||||
'type': 'none',
|
||||
@ -836,7 +818,7 @@
|
||||
]
|
||||
} ],
|
||||
]
|
||||
},
|
||||
}, # node_dtrace_ustack
|
||||
{
|
||||
'target_name': 'specialize_node_d',
|
||||
'type': 'none',
|
||||
@ -862,7 +844,7 @@
|
||||
],
|
||||
} ],
|
||||
]
|
||||
},
|
||||
}, # specialize_node_d
|
||||
{
|
||||
# When using shared lib to build executable in Windows, in order to avoid
|
||||
# filename collision, the executable name is node-win.exe. Need to rename
|
||||
@ -890,7 +872,7 @@
|
||||
],
|
||||
} ],
|
||||
]
|
||||
},
|
||||
}, # rename_node_bin_win
|
||||
{
|
||||
'target_name': 'cctest',
|
||||
'type': 'executable',
|
||||
@ -899,7 +881,6 @@
|
||||
'<(node_lib_target_name)',
|
||||
'rename_node_bin_win',
|
||||
'deps/gtest/gtest.gyp:gtest',
|
||||
'node_js2c#host',
|
||||
'node_dtrace_header',
|
||||
'node_dtrace_ustack',
|
||||
'node_dtrace_provider',
|
||||
@ -957,7 +938,7 @@
|
||||
'type': 'none',
|
||||
}],
|
||||
],
|
||||
}
|
||||
}, # cctest
|
||||
], # end targets
|
||||
|
||||
'conditions': [
|
||||
|
10
node.gypi
10
node.gypi
@ -24,6 +24,16 @@
|
||||
},
|
||||
'force_load%': '<(force_load)',
|
||||
},
|
||||
# Putting these explicitly here so not to be dependant on common.gypi.
|
||||
'cflags': [ '-Wall', '-Wextra', '-Wno-unused-parameter', ],
|
||||
'xcode_settings': {
|
||||
'WARNING_CFLAGS': [
|
||||
'-Wall',
|
||||
'-Wendif-labels',
|
||||
'-W',
|
||||
'-Wno-unused-parameter',
|
||||
],
|
||||
},
|
||||
'conditions': [
|
||||
[ 'node_shared=="false"', {
|
||||
'msvs_settings': {
|
||||
|
Loading…
Reference in New Issue
Block a user