diff options
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | .travis.yml | 8 | ||||
-rw-r--r-- | Makefile | 14 | ||||
-rw-r--r-- | example/example.gyp | 10 | ||||
l--------- | example/options.gypi | 1 | ||||
-rwxr-xr-x | gyp_uv_link | 94 | ||||
-rw-r--r-- | options.gypi | 5 | ||||
-rw-r--r-- | package.json | 12 | ||||
l--------- | test/options.gypi | 1 | ||||
-rw-r--r-- | test/test.gyp | 10 | ||||
-rw-r--r-- | uv_link_t.gyp | 16 |
11 files changed, 59 insertions, 114 deletions
diff --git a/.gitignore b/.gitignore index e5fe69e..acd72e3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ test/deps/libuv tools/gyp out/ +gypkg_deps/ +node_modules/ diff --git a/.travis.yml b/.travis.yml index e9daf2b..f55d29f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,9 +1,7 @@ -language: c +language: node_js sudo: false -before_install: - - git clone https://chromium.googlesource.com/external/gyp.git tools/gyp - - git clone git://github.com/libuv/libuv.git test/deps/libuv +node_js: + - "6.1" branches: only: - master -script: make test diff --git a/Makefile b/Makefile index 2de7a20..41424bc 100644 --- a/Makefile +++ b/Makefile @@ -1,15 +1,15 @@ test: - ./gyp_uv_link test -Duv_dir=./test/deps/libuv - make -C out/ -j8 - ./out/Release/uv_link_t-test + gypkg gen test/test.gyp + make -C test/out/ -j8 + ./test/out/Release/uv_link_t-test example: - ./gyp_uv_link example -Duv_dir=./test/deps/libuv - make -C out/ -j8 - ./out/Release/uv_link_t-example + gypkg gen example/example.gyp + make -C example/out/ -j8 + ./example/out/Release/uv_link_t-example dist: - ./gyp_uv_link -Duv_dir=./test/deps/libuv + gypkg gen uv_link_t.gyp make -C out/ -j8 .PHONY: test example dist diff --git a/example/example.gyp b/example/example.gyp index a3dc597..bb1bbd0 100644 --- a/example/example.gyp +++ b/example/example.gyp @@ -7,9 +7,15 @@ "src" ], + "variables": { + "gypkg_deps": [ + "git://github.com/libuv/libuv.git#v1.9.1:uv.gyp:libuv", + ], + }, + "dependencies": [ - "../test/deps/libuv/uv.gyp:libuv", - "../uv_link_t.gyp:uv_link_t" + "<!@(gypkg deps <(gypkg_deps))", + "../uv_link_t.gyp:uv_link_t", ], "sources": [ diff --git a/example/options.gypi b/example/options.gypi new file mode 120000 index 0000000..9b18bce --- /dev/null +++ b/example/options.gypi @@ -0,0 +1 @@ +../options.gypi \ No newline at end of file diff --git a/gyp_uv_link b/gyp_uv_link deleted file mode 100755 index 35ae446..0000000 --- a/gyp_uv_link +++ /dev/null @@ -1,94 +0,0 @@ -#!/usr/bin/env python - -import glob -import platform -import os -import subprocess -import sys - -CC = os.environ.get('CC', 'cc') -script_dir = os.path.dirname(__file__) -root = os.path.normpath(script_dir) -output_dir = os.path.join(os.path.abspath(root), 'out') - -sys.path.insert(0, os.path.join(root, 'tools', 'gyp', 'pylib')) -try: - import gyp -except ImportError: - print('You need to install gyp in tools/gyp first, run:') - print(' svn co http://gyp.googlecode.com/svn/trunk tools/gyp'); - print('or') - print(' git clone https://chromium.googlesource.com/external/gyp.git ' + - 'tools/gyp') - sys.exit(42) - - -def host_arch(): - machine = platform.machine() - if machine == 'i386': return 'ia32' - if machine == 'x86_64': return 'x64' - if machine.startswith('arm'): return 'arm' - if machine.startswith('mips'): return 'mips' - return machine # Return as-is and hope for the best. - - -def compiler_version(): - proc = subprocess.Popen(CC.split() + ['--version'], stdout=subprocess.PIPE) - is_clang = 'clang' in proc.communicate()[0].split('\n')[0] - proc = subprocess.Popen(CC.split() + ['-dumpversion'], stdout=subprocess.PIPE) - version = proc.communicate()[0].split('.') - version = map(int, version[:2]) - version = tuple(version) - return (version, is_clang) - - -def run_gyp(args): - rc = gyp.main(args) - if rc != 0: - print 'Error running GYP' - sys.exit(rc) - - -if __name__ == '__main__': - args = sys.argv[1:] - - if 'test' in args: - args.append(os.path.join(os.path.abspath(root), 'test/test.gyp')) - args = filter(lambda arg: arg != 'test', args) - elif 'example' in args: - args.append(os.path.join(os.path.abspath(root), 'example/example.gyp')) - args = filter(lambda arg: arg != 'example', args) - else: - args.append(os.path.join(os.path.abspath(root), 'uv_link_t.gyp')) - - common_fn = os.path.join(os.path.abspath(root), 'common.gypi') - options_fn = os.path.join(os.path.abspath(root), 'options.gypi') - - if os.path.exists(common_fn): - args.extend(['-I', common_fn]) - - if os.path.exists(options_fn): - args.extend(['-I', options_fn]) - - args.append('--depth=' + root) - - # There's a bug with windows which doesn't allow this feature. - if sys.platform != 'win32': - if '-f' not in args: - args.extend('-f make'.split()) - if 'ninja' not in args: - args.extend(['-Goutput_dir=' + output_dir]) - args.extend(['--generator-output', output_dir]) - (major, minor), is_clang = compiler_version() - args.append('-Dgcc_version=%d' % (10 * major + minor)) - args.append('-Dclang=%d' % int(is_clang)) - - if not any(a.startswith('-Dhost_arch=') for a in args): - args.append('-Dhost_arch=%s' % host_arch()) - - if not any(a.startswith('-Dtarget_arch=') for a in args): - args.append('-Dtarget_arch=%s' % host_arch()) - - gyp_args = list(args) - print gyp_args - run_gyp(gyp_args) diff --git a/options.gypi b/options.gypi new file mode 100644 index 0000000..c4c936e --- /dev/null +++ b/options.gypi @@ -0,0 +1,5 @@ +{ + "variables": { + "uv_library": "static_library", + }, +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..5454848 --- /dev/null +++ b/package.json @@ -0,0 +1,12 @@ +{ + "name": "uv_link_t", + "version": "1.0.0", + "private": true, + "keywords": [], + "scripts": { "test": "make test" }, + "author": "Fedor Indutny <fedor@indutny.com>", + "license": "MIT", + "dependencies": { + "gypkg": "^1.0.1" + } +} diff --git a/test/options.gypi b/test/options.gypi new file mode 120000 index 0000000..9b18bce --- /dev/null +++ b/test/options.gypi @@ -0,0 +1 @@ +../options.gypi \ No newline at end of file diff --git a/test/test.gyp b/test/test.gyp index 131b93a..ffedd02 100644 --- a/test/test.gyp +++ b/test/test.gyp @@ -7,9 +7,15 @@ "src" ], + "variables": { + "gypkg_deps": [ + "git://github.com/libuv/libuv.git#v1.9.1:uv.gyp:libuv", + ], + }, + "dependencies": [ - "deps/libuv/uv.gyp:libuv", - "../uv_link_t.gyp:uv_link_t" + "<!@(gypkg deps <(gypkg_deps))", + "../uv_link_t.gyp:uv_link_t", ], "sources": [ diff --git a/uv_link_t.gyp b/uv_link_t.gyp index 16f4205..6732537 100644 --- a/uv_link_t.gyp +++ b/uv_link_t.gyp @@ -1,15 +1,23 @@ { "targets": [{ "target_name": "uv_link_t", - "type": "<(library)", + "type": "<!(gypkg type)", "direct_dependent_settings": { "include_dirs": [ "include" ], }, - "include_dirs": [ - # libuv - "<(uv_dir)/include", + "variables": { + "gypkg_deps": [ + "git://github.com/libuv/libuv.git#v1.9.1:uv.gyp:libuv", + ], + }, + + "dependencies": [ + "<!@(gypkg deps <(gypkg_deps))" + ], + + "include_dirs": [ ".", ], |