From b73264d9b3321208b591e257ab997b5532271c9d Mon Sep 17 00:00:00 2001 From: Ryan Date: Thu, 27 Aug 2009 02:15:11 +0200 Subject: [PATCH] Add command line arguments for accessing build flags. node --cflags node --libs At the expense of some WAF nastiness. --- src/node.cc | 22 ++++++++++++++++++++++ src/node.h | 3 +-- src/node_version.h.in | 3 +++ wscript | 26 ++++++++++++++++---------- 4 files changed, 42 insertions(+), 12 deletions(-) create mode 100644 src/node_version.h.in diff --git a/src/node.cc b/src/node.cc index c96dbaa763..e399f3db89 100644 --- a/src/node.cc +++ b/src/node.cc @@ -300,11 +300,18 @@ PrintHelp ( ) static void ParseArgs (int *argc, char **argv) { + bool cflags = false, libs = false; for (int i = 1; i < *argc; i++) { const char *arg = argv[i]; if (strcmp(arg, "--version") == 0 || strcmp(arg, "-v") == 0) { printf("%s\n", NODE_VERSION); exit(0); + } else if (strcmp(arg, "--cflags") == 0) { + cflags = true; + continue; + } else if (strcmp(arg, "--libs") == 0) { + libs = true; + continue; } else if (strcmp(arg, "--help") == 0 || strcmp(arg, "-h") == 0) { PrintHelp(); exit(0); @@ -312,6 +319,21 @@ ParseArgs (int *argc, char **argv) argv[i] = (char*)"--help"; } } + + /* XXX Wow this is terrible code. */ + bool should_exit = false; + if (cflags) { + should_exit = true; + printf("%s ", NODE_CFLAGS); + } + if (libs) { + should_exit = true; + printf("%s ", NODE_LIBFLAGS); + } + if (should_exit) { + printf("\n"); + exit(0); + } } int diff --git a/src/node.h b/src/node.h index 1dc473d5dc..6701fa6f4e 100644 --- a/src/node.h +++ b/src/node.h @@ -7,11 +7,10 @@ #include #include "object_wrap.h" +#include "node_version.h" namespace node { -#define NODE_VERSION "0.1.7" - #define NODE_DEFINE_CONSTANT(target, constant) \ (target)->Set(v8::String::NewSymbol(#constant), \ v8::Integer::New(constant)) diff --git a/src/node_version.h.in b/src/node_version.h.in new file mode 100644 index 0000000000..48753d27e1 --- /dev/null +++ b/src/node_version.h.in @@ -0,0 +1,3 @@ +#define NODE_VERSION "@VERSION@" +#define NODE_CFLAGS "@CCFLAGS@ @CPPFLAGS@ -I@PREFIX@/include" +#define NODE_LIBFLAGS "@LIBFLAGS@ -L@PREFIX@/lib -lnode@DEBUG_EXT@" diff --git a/wscript b/wscript index 3ec24501a1..c7e2704c19 100644 --- a/wscript +++ b/wscript @@ -4,7 +4,7 @@ import sys, os, shutil from os.path import join, dirname, abspath from logging import fatal -VERSION="0.1.6" +VERSION="0.1.7" APPNAME="node.js" import js2c @@ -260,7 +260,7 @@ def build(bld): libnode.uselib_local = "evcom ev eio http_parser coupling" libnode.uselib = "UDNS V8 EXECINFO PROFILER EFENCE DL" libnode.install_path = '${PREFIX}/lib' - bld.install_files('${PREFIX}/include/node/', 'config.h src/node.h src/object_wrap.h'); + bld.install_files('${PREFIX}/include/node/', 'config.h src/node.h src/node_version.h src/object_wrap.h'); ### node node = bld.new_task_gen("cxx", "program") @@ -274,14 +274,13 @@ def build(bld): def subflags(program): debug_ext = "" - if bld.env["USE_DEBUG"]: - debug_ext = "_g" - x = { 'CCFLAGS': " ".join(program.env["CCFLAGS"]) - , 'CPPFLAGS': " ".join(program.env["CPPFLAGS"]) - , 'LIBFLAGS': " ".join(program.env["LIBFLAGS"]) - , 'VERSION': VERSION - , 'PREFIX': program.env["PREFIX"] - , 'DEBUG_EXT': debug_ext + if program.target == "node_g": debug_ext = "_g" + x = { 'CCFLAGS' : " ".join(program.env["CCFLAGS"]) + , 'CPPFLAGS' : " ".join(program.env["CPPFLAGS"]) + , 'LIBFLAGS' : " ".join(program.env["LIBFLAGS"]) + , 'VERSION' : VERSION + , 'PREFIX' : program.env["PREFIX"] + , 'DEBUG_EXT' : debug_ext } return x; @@ -293,6 +292,11 @@ def build(bld): pkgconfig.install_path = '${PREFIX}/lib/pkgconfig' pkgconfig.dict = subflags(node) + # process file.pc.in -> file.pc + node_version = bld.new_task_gen('subst', before="cxx") + node_version.source = 'src/node_version.h.in' + node_version.target = 'src/node_version.h' + node_version.dict = subflags(node) if bld.env["USE_DEBUG"]: node_g = node.clone("debug") @@ -305,4 +309,6 @@ def build(bld): pkgconfig_g.dict = subflags(node_g) pkgconfig_g.target = 'node_g.pc' + node_version_g = node_version.clone("debug") + node_version_g.dict = subflags(node_g)