about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--.travis.yml8
-rw-r--r--Makefile14
-rw-r--r--example/example.gyp10
l---------example/options.gypi1
-rwxr-xr-xgyp_uv_link94
-rw-r--r--options.gypi5
-rw-r--r--package.json12
l---------test/options.gypi1
-rw-r--r--test/test.gyp10
-rw-r--r--uv_link_t.gyp16
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": [
       ".",
     ],