blob: ffc22e2616b4dbda8a21c7fee9e05d37201974ea [file] [log] [blame]
# Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.
{
'variables': {
# We place most generated source files in LIB_DIR (rather than, say
# SHARED_INTERMEDIATE_DIR) because it is toolset specific. This avoids
# two problems. First, if a generated source file has architecture specific
# code, we'll get two different files in two different directories. Second,
# if a generated source file is needed to build a target with multiple
# toolsets, we avoid having duplicate Makefile targets.
'gen_source_dir': '<(LIB_DIR)',
'io_cc_file': '<(gen_source_dir)/io_gen.cc',
'io_patch_cc_file': '<(gen_source_dir)/io_patch_gen.cc',
'builtin_in_cc_file': 'builtin_in.cc',
'builtin_cc_file': '<(gen_source_dir)/builtin_gen.cc',
'snapshot_in_cc_file': 'snapshot_in.cc',
'snapshot_bin_file': '<(gen_source_dir)/snapshot_gen.bin',
'resources_cc_file': '<(gen_source_dir)/resources_gen.cc',
# The program that creates snapshot_gen.cc is only built and run on the
# host, but it must be available when dart is built for the target. Thus,
# we keep it in a shared location.
'snapshot_cc_file': '<(SHARED_INTERMEDIATE_DIR)/snapshot_gen.cc',
},
'targets': [
{
'target_name': 'generate_builtin_cc_file',
'type': 'none',
'toolsets':['target','host'],
'includes': [
'builtin_sources.gypi',
],
'actions': [
{
'action_name': 'generate_builtin_cc',
'inputs': [
'../tools/create_string_literal.py',
'<(builtin_in_cc_file)',
'<@(_sources)',
],
'outputs': [
'<(builtin_cc_file)',
],
'action': [
'python',
'tools/create_string_literal.py',
'--output', '<(builtin_cc_file)',
'--input_cc', '<(builtin_in_cc_file)',
'--include', 'bin/builtin.h',
'--var_name', 'dart::bin::Builtin::builtin_source_',
'<@(_sources)',
],
'message': 'Generating ''<(builtin_cc_file)'' file.'
},
]
},
{
'target_name': 'generate_io_cc_file',
'type': 'none',
'toolsets':['target','host'],
'variables': {
'io_dart': '<(gen_source_dir)/io_gen.dart',
},
'sources': [
'io.dart',
],
'includes': [
'../../sdk/lib/io/iolib_sources.gypi',
],
'actions': [
{
'action_name': 'generate_io_dart',
'inputs': [
'../tools/concat_library.py',
'<@(_sources)',
],
'outputs': [
'<(io_dart)',
],
'action': [
'python',
'<@(_inputs)',
'--output', '<(io_dart)',
],
'message': 'Generating ''<(io_dart)'' file.',
},
{
'action_name': 'generate_io_cc',
'inputs': [
'../tools/create_string_literal.py',
'<(builtin_in_cc_file)',
'<(io_dart)',
],
'outputs': [
'<(io_cc_file)',
],
'action': [
'python',
'tools/create_string_literal.py',
'--output', '<(io_cc_file)',
'--input_cc', '<(builtin_in_cc_file)',
'--include', 'bin/builtin.h',
'--var_name', 'dart::bin::Builtin::io_source_',
'<(io_dart)',
],
'message': 'Generating ''<(io_cc_file)'' file.'
},
]
},
{
'target_name': 'generate_io_patch_cc_file',
'type': 'none',
'toolsets':['target','host'],
'includes': [
'io_sources.gypi',
],
'actions': [
{
'action_name': 'generate_io_patch_cc',
'inputs': [
'../tools/create_string_literal.py',
'<(builtin_in_cc_file)',
'<@(_sources)',
],
'outputs': [
'<(io_patch_cc_file)',
],
'action': [
'python',
'tools/create_string_literal.py',
'--output', '<(io_patch_cc_file)',
'--input_cc', '<(builtin_in_cc_file)',
'--include', 'bin/builtin.h',
'--var_name', 'dart::bin::Builtin::io_patch_',
'<@(_sources)',
],
'message': 'Generating ''<(io_patch_cc_file)'' file.'
},
]
},
{
'target_name': 'libdart_builtin',
'type': 'static_library',
'toolsets':['target','host'],
'dependencies': [
'generate_builtin_cc_file',
'generate_io_cc_file',
'generate_io_patch_cc_file',
],
'include_dirs': [
'..',
],
'sources': [
'builtin_natives.cc',
'builtin.h',
'io_natives.h',
'log_android.cc',
'log_linux.cc',
'log_macos.cc',
'log_win.cc',
],
'includes': [
'builtin_impl_sources.gypi',
'../platform/platform_sources.gypi',
],
'sources/': [
['exclude', '_test\\.(cc|h)$'],
],
'conditions': [
['OS=="win"', {
'sources/' : [
['exclude', 'fdutils.h'],
],
# TODO(antonm): fix the implementation.
# Current implementation accepts char* strings
# and therefore fails to compile once _UNICODE is
# enabled. That should be addressed using -A
# versions of functions and adding necessary conversions.
'configurations': {
'Common_Base': {
'msvs_configuration_attributes': {
'CharacterSet': '0',
},
},
},
}],
['OS=="linux"', {
'link_settings': {
'libraries': [
'-ldl',
],
},
}],
],
},
{
'target_name': 'libdart_io',
'type': 'static_library',
'include_dirs': [
'..',
],
'sources': [
'io_natives.h',
'io_natives.cc',
],
'includes': [
'io_impl_sources.gypi',
],
'conditions': [
[ 'dart_io_support==1', {
'dependencies': [
'bin/net/ssl.gyp:libssl_dart',
],
}],
['OS=="win"', {
# TODO(antonm): fix the implementation.
# Current implementation accepts char* strings
# and therefore fails to compile once _UNICODE is
# enabled. That should be addressed using -A
# versions of functions and adding necessary conversions.
'configurations': {
'Common_Base': {
'msvs_configuration_attributes': {
'CharacterSet': '0',
},
},
},
}],
],
},
{
'target_name': 'libdart_withcore',
'type': 'static_library',
'toolsets':['target','host'],
'dependencies': [
'libdart_lib_withcore',
'libdart_vm',
'libjscre',
'libdouble_conversion',
'generate_version_cc_file',
],
'include_dirs': [
'..',
],
'sources': [
'../include/dart_api.h',
'../include/dart_debugger_api.h',
'../vm/dart_api_impl.cc',
'../vm/debugger_api_impl.cc',
'<(version_cc_file)',
],
'defines': [
'DART_SHARED_LIB',
],
},
{
# Completely statically linked binary for generating snapshots.
'target_name': 'gen_snapshot',
'type': 'executable',
'toolsets':['host'],
'dependencies': [
'libdart_withcore',
'libdart_builtin',
],
'include_dirs': [
'..',
],
'sources': [
'gen_snapshot.cc',
# Only looks up native functions in libdart_builtin, not libdart_io.
'builtin_gen_snapshot.cc',
# Include generated source files.
'<(builtin_cc_file)',
'<(io_cc_file)',
'<(io_patch_cc_file)',
],
'conditions': [
['OS=="win"', {
'link_settings': {
'libraries': [ '-lws2_32.lib', '-lRpcrt4.lib' ],
},
}],
['OS=="android"', {
'link_settings': {
'libraries': [ '-llog' ],
},
}]
],
},
{
# Generate snapshot bin file.
'target_name': 'generate_snapshot_bin',
'type': 'none',
'toolsets':['host'],
'dependencies': [
'gen_snapshot#host',
],
'actions': [
{
'action_name': 'generate_snapshot_bin',
'inputs': [
'../tools/create_snapshot_bin.py',
'<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)gen_snapshot<(EXECUTABLE_SUFFIX)',
],
'outputs': [
'<(snapshot_bin_file)',
],
'action': [
'python',
'tools/create_snapshot_bin.py',
'--executable',
'<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)gen_snapshot<(EXECUTABLE_SUFFIX)',
'--output_bin', '<(snapshot_bin_file)',
'--target_os', '<(OS)'
],
'message': 'Generating ''<(snapshot_bin_file)'' file.'
},
],
},
{
# Generate snapshot file.
'target_name': 'generate_snapshot_file',
'type': 'none',
'toolsets':['host'],
'dependencies': [
'generate_snapshot_bin#host',
],
'actions': [
{
'action_name': 'generate_snapshot_file',
'inputs': [
'../tools/create_snapshot_file.py',
'<(snapshot_in_cc_file)',
'<(snapshot_bin_file)'
],
'outputs': [
'<(snapshot_cc_file)',
],
'action': [
'python',
'tools/create_snapshot_file.py',
'--input_bin', '<(snapshot_bin_file)',
'--input_cc', '<(snapshot_in_cc_file)',
'--output', '<(snapshot_cc_file)',
],
'message': 'Generating ''<(snapshot_cc_file)'' file.'
},
]
},
{
'target_name': 'generate_resources_cc_file',
'type': 'none',
'includes': [
'vmstats_sources.gypi',
],
'actions': [
{
'action_name': 'generate_resources_cc',
'inputs': [
'../tools/create_resources.py',
'<@(_sources)',
],
'outputs': [
'<(resources_cc_file)',
],
'action': [
'python',
'tools/create_resources.py',
'--output', '<(resources_cc_file)',
'--root_prefix', 'bin/vmstats/',
'<@(_sources)',
],
'message': 'Generating ''<(resources_cc_file)'' file.'
},
]
},
{
# dart binary with a snapshot of corelibs built in.
'target_name': 'dart',
'type': 'executable',
'dependencies': [
'libdart',
'libdart_builtin',
'libdart_io',
'generate_snapshot_file#host',
'generate_resources_cc_file',
],
'include_dirs': [
'..',
],
'sources': [
'main.cc',
'builtin_nolib.cc',
'resources.h',
'vmstats.h',
'vmstats_impl.cc',
'vmstats_impl.h',
'vmstats_impl_android.cc',
'vmstats_impl_linux.cc',
'vmstats_impl_macos.cc',
'vmstats_impl_win.cc',
'<(snapshot_cc_file)',
'<(resources_cc_file)',
],
'conditions': [
['OS=="win"', {
'link_settings': {
'libraries': [ '-lws2_32.lib', '-lRpcrt4.lib', '-lwinmm.lib' ],
},
# Generate an import library on Windows, by exporting a function.
# Extensions use this import library to link to the API in dart.exe.
'msvs_settings': {
'VCLinkerTool': {
'AdditionalOptions': [ '/EXPORT:Dart_True' ],
},
},
}],
['OS=="linux"', {
# Have the linker add all symbols to the dynamic symbol table
# so that extensions can look them up dynamically in the binary.
'ldflags': [
'-rdynamic',
],
}],
],
},
{
# dart binary without any snapshot built in.
'target_name': 'dart_no_snapshot',
'type': 'executable',
'dependencies': [
'libdart_withcore',
'libdart_builtin',
'libdart_io',
'generate_resources_cc_file',
],
'include_dirs': [
'..',
],
'sources': [
'main.cc',
'builtin.cc',
'resources.h',
'vmstats.h',
'vmstats_impl.cc',
'vmstats_impl.h',
'vmstats_impl_android.cc',
'vmstats_impl_linux.cc',
'vmstats_impl_macos.cc',
'vmstats_impl_win.cc',
# Include generated source files.
'<(builtin_cc_file)',
'<(io_cc_file)',
'<(io_patch_cc_file)',
'<(resources_cc_file)',
'snapshot_empty.cc',
],
'conditions': [
['OS=="win"', {
'link_settings': {
'libraries': [ '-lws2_32.lib', '-lRpcrt4.lib', '-lwinmm.lib' ],
},
# Generate an import library on Windows, by exporting a function.
# Extensions use this import library to link to the API in dart.exe.
'msvs_settings': {
'VCLinkerTool': {
'AdditionalOptions': [ '/EXPORT:Dart_True' ],
},
},
}],
['OS=="linux"', {
# Have the linker add all symbols to the dynamic symbol table
# so that extensions can look them up dynamically in the binary.
'ldflags': [
'-rdynamic',
],
}],
],
},
{
'target_name': 'process_test',
'type': 'executable',
'sources': [
'process_test.cc',
]
},
{
'target_name': 'run_vm_tests',
'type': 'executable',
'dependencies': [
'libdart_withcore',
'libdart_builtin',
'libdart_io',
'generate_snapshot_test_dat_file',
],
'include_dirs': [
'..',
'<(gen_source_dir)',
],
'sources': [
'run_vm_tests.cc',
'builtin.cc',
# Include generated source files.
'<(builtin_cc_file)',
'<(io_cc_file)',
'<(io_patch_cc_file)',
],
'includes': [
'builtin_impl_sources.gypi',
'../platform/platform_sources.gypi',
'../vm/vm_sources.gypi',
],
'defines': [
'TESTING',
],
# Only include _test.[cc|h] files.
'sources/': [
['exclude', '\\.(cc|h)$'],
['include', 'run_vm_tests.cc'],
['include', 'builtin.cc'],
['include', '_gen\\.cc$'],
['include', '_test\\.(cc|h)$'],
],
'conditions': [
['OS=="win"', {
'link_settings': {
'libraries': [ '-lws2_32.lib', '-lRpcrt4.lib', '-lwinmm.lib' ],
},
}],
],
},
{
'target_name': 'test_extension',
'type': 'shared_library',
'dependencies': [
'dart',
],
'include_dirs': [
'..',
],
'sources': [
'test_extension.cc',
'test_extension_dllmain_win.cc',
],
'defines': [
# The only effect of DART_SHARED_LIB is to export the Dart API entries.
'DART_SHARED_LIB',
],
'conditions': [
['OS=="win"', {
'msvs_settings': {
'VCLinkerTool': {
'AdditionalDependencies': [ 'dart.lib' ],
'AdditionalLibraryDirectories': [ '<(PRODUCT_DIR)' ],
},
},
}],
['OS=="mac"', {
'xcode_settings': {
'OTHER_LDFLAGS': [ '-undefined', 'dynamic_lookup' ],
},
}],
['OS=="linux"', {
'cflags': [
'-fPIC',
],
}],
],
},
],
}