From f220524b5a383a7945a1d834a3600bd07f7b2edc Mon Sep 17 00:00:00 2001 From: Joe Rozner Date: Wed, 20 Nov 2013 13:04:07 -0800 Subject: [PATCH] Generate pkg-config for Hammer Create a pkg-config file and install it to $prefix/lib/pkgconfig --- SConstruct | 6 ++++-- libhammer.pc.in | 10 ++++++++++ src/SConscript | 1 + tools/scanreplace.py | 15 +++++++++++++++ tools/scanreplace.pyc | Bin 0 -> 1263 bytes 5 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 libhammer.pc.in create mode 100644 tools/scanreplace.py create mode 100644 tools/scanreplace.pyc diff --git a/SConstruct b/SConstruct index 78090c3..422efe6 100644 --- a/SConstruct +++ b/SConstruct @@ -8,7 +8,7 @@ vars = Variables(None, ARGUMENTS) vars.Add(PathVariable('DESTDIR', "Root directory to install in (useful for packaging scripts)", None, PathVariable.PathIsDirCreate)) vars.Add(PathVariable('prefix', "Where to install in the FHS", "/usr/local", PathVariable.PathAccept)) -env = Environment(ENV = {'PATH' : os.environ['PATH']}, variables = vars) +env = Environment(ENV = {'PATH' : os.environ['PATH']}, variables = vars, tools=['default', 'scanreplace'], toolpath=['tools']) def calcInstallPath(*elements): path = os.path.abspath(os.path.join(*map(env.subst, elements))) @@ -28,7 +28,8 @@ if 'DESTDIR' in env: env['libpath'] = calcInstallPath("$prefix", "lib") env['incpath'] = calcInstallPath("$prefix", "include", "hammer") -# TODO: Add pkgconfig +env['pkgconfigpath'] = calcInstallPath("$prefix", "lib", "pkgconfig") +env.ScanReplace('libhammer.pc.in') env.MergeFlags("-std=gnu99 -Wall -Wextra -Werror -Wno-unused-parameter -Wno-attributes") @@ -89,3 +90,4 @@ env.Command('test', 'build/$VARIANT/src/test_suite', 'env LD_LIBRARY_PATH=build/ env.Alias("install", "$libpath") env.Alias("install", "$incpath") +env.Alias("install", "$pkgconfigpath") diff --git a/libhammer.pc.in b/libhammer.pc.in new file mode 100644 index 0000000..97ded13 --- /dev/null +++ b/libhammer.pc.in @@ -0,0 +1,10 @@ +prefix=/usr +exec_prefix=${prefix} +includedir=${prefix}/include +libdir=${exec_prefix}/lib + +Name: libhammer +Description: The Hammer parsing library +Version: 0.9.0 +Cflags: -I${includedir}/hammer +Libs: -L${libdir} -lhammer diff --git a/src/SConscript b/src/SConscript index 03308dd..a06244b 100644 --- a/src/SConscript +++ b/src/SConscript @@ -64,6 +64,7 @@ libhammer_static = env.StaticLibrary('hammer', parsers + backends + misc_hammer_ env.Install("$libpath", [libhammer_static, libhammer_shared]) env.Install("$incpath", dist_headers) +env.Install("$pkgconfigpath", "../../../libhammer.pc") testenv = env.Clone() testenv.ParseConfig('pkg-config --cflags --libs glib-2.0') diff --git a/tools/scanreplace.py b/tools/scanreplace.py new file mode 100644 index 0000000..5321e48 --- /dev/null +++ b/tools/scanreplace.py @@ -0,0 +1,15 @@ +from string import Template + +def replace_action(target, source, env): + open(str(target[0]), 'w').write(Template(open(str(source[0]), 'r').read()).safe_substitute(env)) + return 0 + +def replace_string(target, source, env): + return "building '%s' from '%s'" % (str(target[0]), str(source[0])) + +def generate(env, **kw): + action = env.Action(replace_action, replace_string) + env['BUILDERS']['ScanReplace'] = env.Builder(action=action, src_suffix='.in', single_source=True) + +def exists(env): + return 1 diff --git a/tools/scanreplace.pyc b/tools/scanreplace.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c37386cee5c446284c300e734bcd48d69842fc26 GIT binary patch literal 1263 zcmZSn%*(Y>tT!l`0ScHH7#JKF7#NBz7#J8*7#LC*8FCmHav2$-7#SE-m>60Z7^0XM zQkcOEW`-0NFoT65g%!+TWk_LT2-aX{U|`7n|NsAg4MqkAh7t}228NK-+=86MlGJ2o z1_lNYW@BJra0c1r15(1kP{PPi1GZ1HnUNudiJ_T^A&ZHjgqfiPBF6}F3s{aBEXTso z%)rph$dJX#P{RabG=p5o$Plc-!oa}bmkIJv3CQ|#Fj=GlvakdsmtT;YR|0ZEaY<1L zD+2>Vc~NFbY7kfhNWLgFF{Okb8T}PW^sOL zQF1ESxYWEd4Ui#VqS%Omfk8jCIJKx)KPx{~zqlw_KO-?WH?>GNt0=!JFSSU&BtJi= zSid+qF|R1KASW?7Rj;73gpYxN0m_X}OfJdH&jZ<7400C(qX#2A_(1Lk2cHrsq8LG; z1PVST22c={Ffi1B0};eYV`2~s2D{y_Se$`@A*nPoCnYm4T|r&7SY08lC_fj>0tXm4 zzJfrOfi(nyVlIf2fq@~2i-Caw>@hGw4c`@)6lLb6gOW-yDAh4ACWB%N)S|?aRItB5@y5U?1PMq`V1h6>k$_}UKzRe?0KZI-IM`}Pe1kMYxS-@qu5&;c zBef#4xTF}AhM{rl2g!CIIY@kivl$}5g2X_H3zRGo4gj;rbpc<^ik# literal 0 HcmV?d00001