mirror of
https://github.com/electron/electron.git
synced 2026-01-10 07:58:08 -05:00
refactor: GN builds on linux (#12957)
This commit is contained in:
@@ -9,13 +9,27 @@ action("gyp_node") {
|
||||
outputs = [
|
||||
"$target_out_dir/Release/build.ninja",
|
||||
]
|
||||
|
||||
# TODO(jeremy): should shlib_suffix be set inside node.gypi?
|
||||
if (is_mac) {
|
||||
shlib_suffix = "dylib"
|
||||
} else if (is_linux) {
|
||||
shlib_suffix = "so"
|
||||
}
|
||||
args = [
|
||||
"-I", rebase_path("toolchain.gypi", root_build_dir),
|
||||
"-I", rebase_path("node.gypi", root_build_dir),
|
||||
"-I", rebase_path("//third_party/electron_node/common.gypi", root_build_dir),
|
||||
# TODO(jeremy): make these paths relative instead of absolute, to help
|
||||
# caches.
|
||||
"-D", "chromium_root_out_dir=" + rebase_path(root_out_dir),
|
||||
"-D", "chromium_src_dir=" + rebase_path("//"),
|
||||
"-D", "component=shared_library",
|
||||
"-D", "buildtype=Custom",
|
||||
"-D", "target_arch=x64",
|
||||
"-D", "host_arch=x64",
|
||||
"-D", "shlib_suffix=$shlib_suffix",
|
||||
"-D", "is_component_build=$is_component_build",
|
||||
"-Goutput_dir=./$target_out_dir", # bizarrely, gyp generates from the build root instead of from cwd
|
||||
"-fninja",
|
||||
rebase_path("//third_party/electron_node/node.gyp", root_build_dir),
|
||||
@@ -35,14 +49,19 @@ action("build_node") {
|
||||
"-C", rebase_path(target_out_dir, root_build_dir) + "/Release",
|
||||
"node_lib"
|
||||
]
|
||||
outputs = [
|
||||
"$target_out_dir/Release/libnode.dylib"
|
||||
]
|
||||
if (is_mac) {
|
||||
outputs = [ "$target_out_dir/Release/libnode.dylib" ]
|
||||
}
|
||||
if (is_linux) {
|
||||
outputs = [ "$target_out_dir/Release/lib/libnode.so" ]
|
||||
}
|
||||
}
|
||||
|
||||
node_libs = get_target_outputs(":build_node")
|
||||
|
||||
copy("copy_node") {
|
||||
deps = [ ":build_node" ]
|
||||
sources = [ "$target_out_dir/Release/libnode.dylib" ]
|
||||
sources = node_libs
|
||||
outputs = [ "$root_out_dir/{{source_file_part}}" ]
|
||||
}
|
||||
|
||||
@@ -52,9 +71,7 @@ config("node_config") {
|
||||
"//third_party/electron_node/deps/uv/include",
|
||||
"//third_party/electron_node/deps/cares/include",
|
||||
]
|
||||
libs = [
|
||||
"$target_out_dir/Release/libnode.dylib"
|
||||
]
|
||||
libs = node_libs
|
||||
cflags_cc = [
|
||||
"-Wno-deprecated-declarations",
|
||||
]
|
||||
|
||||
@@ -40,7 +40,6 @@
|
||||
'debug_nghttp2': 0,
|
||||
|
||||
'node_module_version': '0',
|
||||
'shlib_suffix': 'dylib',
|
||||
},
|
||||
# Settings to compile node under Windows.
|
||||
'target_defaults': {
|
||||
@@ -136,10 +135,10 @@
|
||||
}],
|
||||
['_target_name=="node_lib"', {
|
||||
'include_dirs': [
|
||||
'../../../v8',
|
||||
'../../../v8/include',
|
||||
'../../../third_party/icu/source/common',
|
||||
'../../../third_party/icu/source/i18n',
|
||||
'<(chromium_src_dir)/v8',
|
||||
'<(chromium_src_dir)/v8/include',
|
||||
'<(chromium_src_dir)/third_party/icu/source/common',
|
||||
'<(chromium_src_dir)/third_party/icu/source/i18n',
|
||||
],
|
||||
'defines': [
|
||||
# Export V8 symbols from node.dll / libnode.so
|
||||
@@ -159,10 +158,10 @@
|
||||
'OTHER_CFLAGS': ['-fno-rtti'],
|
||||
},
|
||||
'libraries': [
|
||||
'../../../../../../libv8.dylib',
|
||||
'../../../../../../libv8_libbase.dylib',
|
||||
'../../../../../../libv8_libplatform.dylib',
|
||||
'../../../../../../libicuuc.dylib',
|
||||
'<(chromium_root_out_dir)/libv8<(SHARED_LIB_SUFFIX)',
|
||||
'<(chromium_root_out_dir)/libv8_libbase<(SHARED_LIB_SUFFIX)',
|
||||
'<(chromium_root_out_dir)/libv8_libplatform<(SHARED_LIB_SUFFIX)',
|
||||
'<(chromium_root_out_dir)/libicuuc<(SHARED_LIB_SUFFIX)',
|
||||
],
|
||||
'conditions': [
|
||||
#['OS=="mac" and libchromiumcontent_component==0', {
|
||||
@@ -242,21 +241,21 @@
|
||||
}],
|
||||
['OS=="linux" and _toolset=="target" and _target_name in ["dump_syms", "node_lib"]', {
|
||||
'conditions': [
|
||||
#['libchromiumcontent_component==0', {
|
||||
#'libraries': [
|
||||
#'<(libchromiumcontent_dir)/libc++.a',
|
||||
#],
|
||||
#'ldflags': [
|
||||
#'-lpthread',
|
||||
##],
|
||||
#}, {
|
||||
#'libraries': [
|
||||
#'<(libchromiumcontent_dir)/libc++.so',
|
||||
#],
|
||||
#'ldflags': [
|
||||
#'-Wl,-rpath=\$$ORIGIN',
|
||||
#],
|
||||
#}],
|
||||
['is_component_build==0', {
|
||||
'libraries': [
|
||||
'<(chromium_root_out_dir)/libc++.a',
|
||||
],
|
||||
'ldflags': [
|
||||
'-lpthread',
|
||||
],
|
||||
}, {
|
||||
'libraries': [
|
||||
'<(chromium_root_out_dir)/libc++.so',
|
||||
],
|
||||
'ldflags': [
|
||||
'-Wl,-rpath=\$$ORIGIN',
|
||||
],
|
||||
}],
|
||||
],
|
||||
}]
|
||||
],
|
||||
@@ -280,26 +279,4 @@
|
||||
4996, # (atlapp.h) 'GetVersionExW': was declared deprecated
|
||||
],
|
||||
},
|
||||
'conditions': [
|
||||
# The breakdpad on Windows assumes Debug_x64 and Release_x64 configurations.
|
||||
['OS=="win"', {
|
||||
'target_defaults': {
|
||||
'configurations': {
|
||||
'Debug_x64': {
|
||||
},
|
||||
'Release_x64': {
|
||||
},
|
||||
},
|
||||
},
|
||||
}], # OS=="win"
|
||||
# The breakdpad on Mac assumes Release_Base configuration.
|
||||
['OS=="mac"', {
|
||||
'target_defaults': {
|
||||
'configurations': {
|
||||
'Release_Base': {
|
||||
},
|
||||
},
|
||||
},
|
||||
}], # OS=="mac"
|
||||
],
|
||||
}
|
||||
|
||||
35
build/node/toolchain.gypi
Normal file
35
build/node/toolchain.gypi
Normal file
@@ -0,0 +1,35 @@
|
||||
{
|
||||
'variables': {
|
||||
'llvm_dir': '<(chromium_src_dir)/third_party/llvm-build/Release+Asserts',
|
||||
},
|
||||
'conditions': [
|
||||
['clang==1', {
|
||||
'make_global_settings': [
|
||||
['CC', '<(llvm_dir)/bin/clang'],
|
||||
['CXX', '<(llvm_dir)/bin/clang++'],
|
||||
['CC.host', '$(CC)'],
|
||||
['CXX.host', '$(CXX)'],
|
||||
],
|
||||
'target_defaults': {
|
||||
'target_conditions': [
|
||||
['OS=="linux" and _toolset=="target"', {
|
||||
'cflags_cc': [
|
||||
'-std=gnu++14',
|
||||
'-nostdinc++',
|
||||
'-isystem<(chromium_src_dir)/buildtools/third_party/libc++/trunk/include',
|
||||
'-isystem<(chromium_src_dir)/buildtools/third_party/libc++abi/trunk/include',
|
||||
],
|
||||
'ldflags': [
|
||||
'-nostdlib++',
|
||||
],
|
||||
}],
|
||||
['OS=="linux" and _toolset=="host"', {
|
||||
'cflags_cc': [
|
||||
'-std=gnu++14',
|
||||
],
|
||||
}],
|
||||
],
|
||||
},
|
||||
}], # clang==1
|
||||
],
|
||||
}
|
||||
Reference in New Issue
Block a user