Browse Source

gyp: implement LD/LDXX for ninja and FIPS

The ability to set the link rule is used for FIPS, and needs to set
both the `ld =` and `ldxx =` variables in the ninja build file to link
c++ (node) and c (openssl-cli, etc.) executables.

URL: https://github.com/nodejs/node/pull/14227
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: James M Snell <jasnell@gmail.com>
v6
Sam Roberts 8 years ago
parent
commit
a6cec04aaa
  1. 3
      configure
  2. 5
      tools/gyp/pylib/gyp/generator/ninja.py

3
configure

@ -985,8 +985,11 @@ def configure_openssl(o):
o['variables']['openssl_fips'] = options.openssl_fips o['variables']['openssl_fips'] = options.openssl_fips
fips_dir = os.path.join(root_dir, 'deps', 'openssl', 'fips') fips_dir = os.path.join(root_dir, 'deps', 'openssl', 'fips')
fips_ld = os.path.abspath(os.path.join(fips_dir, 'fipsld')) fips_ld = os.path.abspath(os.path.join(fips_dir, 'fipsld'))
# LINK is for Makefiles, LD/LDXX is for ninja
o['make_fips_settings'] = [ o['make_fips_settings'] = [
['LINK', fips_ld + ' <(openssl_fips)/bin/fipsld'], ['LINK', fips_ld + ' <(openssl_fips)/bin/fipsld'],
['LD', fips_ld + ' <(openssl_fips)/bin/fipsld'],
['LDXX', fips_ld + ' <(openssl_fips)/bin/fipsld'],
] ]
else: else:
o['variables']['openssl_fips'] = '' o['variables']['openssl_fips'] = ''

5
tools/gyp/pylib/gyp/generator/ninja.py

@ -1931,6 +1931,10 @@ def GenerateOutputForConfig(target_list, target_dicts, data, params,
ld = os.path.join(build_to_root, value) ld = os.path.join(build_to_root, value)
if key == 'LD.host': if key == 'LD.host':
ld_host = os.path.join(build_to_root, value) ld_host = os.path.join(build_to_root, value)
if key == 'LDXX':
ldxx = os.path.join(build_to_root, value)
if key == 'LDXX.host':
ldxx_host = os.path.join(build_to_root, value)
if key == 'NM': if key == 'NM':
nm = os.path.join(build_to_root, value) nm = os.path.join(build_to_root, value)
if key == 'NM.host': if key == 'NM.host':
@ -2024,6 +2028,7 @@ def GenerateOutputForConfig(target_list, target_dicts, data, params,
CommandWithWrapper('CXX.host', wrappers, cxx_host)) CommandWithWrapper('CXX.host', wrappers, cxx_host))
if flavor == 'win': if flavor == 'win':
master_ninja.variable('ld_host', ld_host) master_ninja.variable('ld_host', ld_host)
master_ninja.variable('ldxx_host', ldxx_host)
else: else:
master_ninja.variable('ld_host', CommandWithWrapper( master_ninja.variable('ld_host', CommandWithWrapper(
'LINK', wrappers, ld_host)) 'LINK', wrappers, ld_host))

Loading…
Cancel
Save