220 lines
5.8 KiB
Plaintext
220 lines
5.8 KiB
Plaintext
|
# This file is used with the GYP meta build system.
|
||
|
# http://code.google.com/p/gyp
|
||
|
# To build try this:
|
||
|
# svn co http://gyp.googlecode.com/svn/trunk gyp
|
||
|
# ./gyp/gyp -f make --depth=`pwd` libffi.gyp
|
||
|
# make
|
||
|
# ./out/Debug/test
|
||
|
|
||
|
{
|
||
|
'variables': {
|
||
|
'target_arch%': 'ia32', # built for a 32-bit CPU by default
|
||
|
},
|
||
|
'target_defaults': {
|
||
|
'default_configuration': 'Debug',
|
||
|
'configurations': {
|
||
|
# TODO: hoist these out and put them somewhere common, because
|
||
|
# RuntimeLibrary MUST MATCH across the entire project
|
||
|
'Debug': {
|
||
|
'defines': [ 'DEBUG', '_DEBUG' ],
|
||
|
'msvs_settings': {
|
||
|
'VCCLCompilerTool': {
|
||
|
'RuntimeLibrary': 1, # static debug
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
'Release': {
|
||
|
'defines': [ 'NDEBUG' ],
|
||
|
'msvs_settings': {
|
||
|
'VCCLCompilerTool': {
|
||
|
'RuntimeLibrary': 0, # static release
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
},
|
||
|
'msvs_settings': {
|
||
|
'VCCLCompilerTool': {
|
||
|
},
|
||
|
'VCLibrarianTool': {
|
||
|
},
|
||
|
'VCLinkerTool': {
|
||
|
'GenerateDebugInformation': 'true',
|
||
|
},
|
||
|
},
|
||
|
'conditions': [
|
||
|
['OS == "win"', {
|
||
|
'defines': [
|
||
|
'WIN32'
|
||
|
],
|
||
|
}]
|
||
|
],
|
||
|
},
|
||
|
|
||
|
# Compile .S files on Windows
|
||
|
'conditions': [
|
||
|
['OS=="win"', {
|
||
|
'target_defaults': {
|
||
|
'conditions': [
|
||
|
['target_arch=="ia32"', {
|
||
|
'variables': { 'ml': ['ml', '/c', '/nologo', '/safeseh' ] }
|
||
|
}, 'target_arch=="arm64"', {
|
||
|
'variables': { 'ml': ['armasm64', '/nologo' ] }
|
||
|
}, {
|
||
|
'variables': { 'ml': ['ml64', '/c', '/nologo' ] }
|
||
|
}]
|
||
|
],
|
||
|
'rules': [
|
||
|
{
|
||
|
'rule_name': 'preprocess_asm',
|
||
|
'msvs_cygwin_shell': 0,
|
||
|
'extension': 'preasm',
|
||
|
'inputs': [
|
||
|
],
|
||
|
'outputs': [
|
||
|
'<(INTERMEDIATE_DIR)/<(RULE_INPUT_ROOT).asm',
|
||
|
],
|
||
|
'action': [
|
||
|
'call',
|
||
|
'preprocess_asm.cmd',
|
||
|
'include',
|
||
|
'config/<(OS)/<(target_arch)',
|
||
|
'<(RULE_INPUT_PATH)',
|
||
|
'<(INTERMEDIATE_DIR)/<(RULE_INPUT_ROOT).asm',
|
||
|
],
|
||
|
'message': 'Preprocessing assembly file <(RULE_INPUT_PATH)',
|
||
|
'process_outputs_as_sources': 1,
|
||
|
},
|
||
|
{
|
||
|
'rule_name': 'build_asm',
|
||
|
'msvs_cygwin_shell': 0,
|
||
|
'extension': 'asm',
|
||
|
'inputs': [
|
||
|
],
|
||
|
'outputs': [
|
||
|
'<(INTERMEDIATE_DIR)/<(RULE_INPUT_ROOT).obj',
|
||
|
],
|
||
|
'action': [
|
||
|
'<@(ml)', '/Fo<(INTERMEDIATE_DIR)/<(RULE_INPUT_ROOT).obj',
|
||
|
'<(INTERMEDIATE_DIR)/<(RULE_INPUT_ROOT).asm',
|
||
|
],
|
||
|
'message': 'Building assembly file <(RULE_INPUT_PATH)',
|
||
|
'process_outputs_as_sources': 1,
|
||
|
},
|
||
|
],
|
||
|
},
|
||
|
}],
|
||
|
],
|
||
|
|
||
|
'targets': [
|
||
|
{
|
||
|
'target_name': 'ffi',
|
||
|
'product_prefix': 'lib',
|
||
|
'type': 'static_library',
|
||
|
|
||
|
# for CentOS 5 support: https://github.com/rbranson/node-ffi/issues/110
|
||
|
'standalone_static_library': 1,
|
||
|
|
||
|
'sources': [
|
||
|
'src/prep_cif.c',
|
||
|
'src/types.c',
|
||
|
'src/raw_api.c',
|
||
|
'src/java_raw_api.c',
|
||
|
'src/closures.c',
|
||
|
],
|
||
|
'defines': [
|
||
|
'PIC',
|
||
|
'FFI_BUILDING',
|
||
|
'HAVE_CONFIG_H'
|
||
|
],
|
||
|
'include_dirs': [
|
||
|
'include',
|
||
|
# platform and arch-specific headers
|
||
|
'config/<(OS)/<(target_arch)'
|
||
|
],
|
||
|
'direct_dependent_settings': {
|
||
|
'include_dirs': [
|
||
|
'include',
|
||
|
# platform and arch-specific headers
|
||
|
'config/<(OS)/<(target_arch)'
|
||
|
],
|
||
|
},
|
||
|
'conditions': [
|
||
|
['target_arch=="arm"', {
|
||
|
'sources': [ 'src/arm/ffi.c' ],
|
||
|
'conditions': [
|
||
|
['OS=="linux"', {
|
||
|
'sources': [ 'src/arm/sysv.S' ]
|
||
|
}]
|
||
|
]
|
||
|
},'target_arch=="arm64"', {
|
||
|
'sources': [ 'src/aarch64/ffi.c' ],
|
||
|
'conditions': [
|
||
|
['OS=="linux" or OS=="mac"', {
|
||
|
'sources': [ 'src/aarch64/sysv.S' ]
|
||
|
}],
|
||
|
['OS=="win"', {
|
||
|
'sources': [ 'src/aarch64/win64_armasm.preasm' ]
|
||
|
}],
|
||
|
]
|
||
|
}, { # ia32 or x64
|
||
|
'conditions': [
|
||
|
['target_arch=="ia32"', {
|
||
|
'sources': [ 'src/x86/ffi.c' ],
|
||
|
'conditions': [
|
||
|
['OS=="win"', {
|
||
|
'sources': [ 'src/x86/sysv_intel.preasm' ],
|
||
|
}, {
|
||
|
'sources': [ 'src/x86/sysv.S' ],
|
||
|
}],
|
||
|
],
|
||
|
}],
|
||
|
['target_arch=="x64"', {
|
||
|
'sources': [
|
||
|
'src/x86/ffiw64.c',
|
||
|
],
|
||
|
'conditions': [
|
||
|
['OS=="win"', {
|
||
|
'sources': [
|
||
|
'src/x86/win64_intel.preasm',
|
||
|
],
|
||
|
}, {
|
||
|
'sources': [
|
||
|
'src/x86/ffi64.c',
|
||
|
'src/x86/unix64.S',
|
||
|
'src/x86/win64.S',
|
||
|
],
|
||
|
}]
|
||
|
],
|
||
|
}],
|
||
|
['target_arch=="s390x"', {
|
||
|
'sources': [
|
||
|
'src/s390/ffi.c',
|
||
|
'src/s390/sysv.S',
|
||
|
],
|
||
|
}],
|
||
|
['OS=="win"', {
|
||
|
# the libffi dlmalloc.c file has a bunch of implicit conversion
|
||
|
# warnings, and the main ffi.c file contains one, so silence them
|
||
|
'msvs_disabled_warnings': [ 4267 ],
|
||
|
}],
|
||
|
]
|
||
|
}],
|
||
|
]
|
||
|
},
|
||
|
|
||
|
{
|
||
|
'target_name': 'test',
|
||
|
'type': 'executable',
|
||
|
'dependencies': [ 'ffi' ],
|
||
|
'sources': [ 'test.c' ]
|
||
|
},
|
||
|
|
||
|
{
|
||
|
'target_name': 'closure-test',
|
||
|
'type': 'executable',
|
||
|
'dependencies': [ 'ffi' ],
|
||
|
'sources': [ 'closure.c' ]
|
||
|
}
|
||
|
]
|
||
|
}
|