mirror of
https://gitlab.com/ita1024/waf.git
synced 2024-11-19 00:17:12 +01:00
148 lines
3.1 KiB
Python
148 lines
3.1 KiB
Python
#!/usr/bin/env python
|
|
# encoding: utf-8
|
|
# Tom Wambold tom5760 gmail
|
|
# Thomas Nagy, 2010 (ita)
|
|
|
|
"""
|
|
if libgmp is present, try building with 'waf --exe'
|
|
"""
|
|
|
|
top = '.'
|
|
out = 'build'
|
|
|
|
def options(opt):
|
|
opt.add_option('--exe', action='store_true', default=False, help='Execute the program after it is compiled')
|
|
|
|
def configure(ctx):
|
|
ctx.load('go')
|
|
|
|
# the compiler keeps changing, think twice before trying it for a serious project
|
|
ctx.env.TRY_CGO = False
|
|
|
|
return
|
|
try:
|
|
ctx.load('gcc')
|
|
ctx.check_cc(fragment='#include <gmp.h>\nint main() {return 0;}\n', uselib_store='GMP', lib='gmp')
|
|
except ctx.errors.ConfigurationError:
|
|
ctx.env.TRY_CGO = False
|
|
else:
|
|
ctx.env.TRY_CGO = True
|
|
|
|
def build(ctx):
|
|
|
|
ctx(
|
|
features = 'go gopackage',
|
|
target = 'other',
|
|
source = [
|
|
'other/a.go',
|
|
'other/b.go', # gopack sux
|
|
],
|
|
)
|
|
|
|
ctx(
|
|
features = 'go goprogram',
|
|
target = 'test',
|
|
use = 'other',
|
|
source = 'main.go',
|
|
includes = '.',
|
|
)
|
|
|
|
# NOTE: if you use ant_glob, use it like this: bld.path.ant_glob('*.go', excl='*_test.go')
|
|
|
|
if ctx.env.TRY_CGO:
|
|
ctx.read_shlib('gmp')
|
|
ctx(
|
|
features = 'c cshlib',
|
|
source = 'my-c-lib/src/foo.c',
|
|
target = 'my-c-lib',
|
|
includes = 'my-c-lib/includes',
|
|
export_includes=['my-c-lib/includes'],
|
|
)
|
|
ctx(
|
|
features = 'cgopackage',
|
|
name = 'go-gmp',
|
|
target = 'gmp',
|
|
source = 'gmp.go gmp/impl.go',
|
|
use = 'gmp',
|
|
)
|
|
|
|
# testing multiple cgopackage targets...
|
|
ctx(
|
|
features = 'cgopackage',
|
|
name = 'go-stdio',
|
|
target = 'cgo/stdio',
|
|
source = 'stdio/file.go',
|
|
)
|
|
|
|
ctx(
|
|
features = 'cgopackage',
|
|
name = 'go-my-c-lib',
|
|
target = 'foo',
|
|
source = 'my-c-lib.go my-c-lib-2.go',
|
|
use = ['my-c-lib',],
|
|
)
|
|
|
|
#ctx.add_group()
|
|
ctx(features='go goprogram uselib',
|
|
source='pi.go',
|
|
target='pi',
|
|
use='go-gmp',
|
|
#gocflags=['-I.', '-I..'],
|
|
)
|
|
|
|
ctx(
|
|
features='go goprogram uselib',
|
|
source='stdio/hello.go',
|
|
target='go-stdio-hello',
|
|
use='go-stdio',
|
|
)
|
|
|
|
ctx(
|
|
features='go goprogram uselib',
|
|
source='stdio/fib.go',
|
|
target='go-stdio-fib',
|
|
use='go-stdio',
|
|
)
|
|
|
|
ctx(
|
|
features='go goprogram uselib',
|
|
source='stdio/chain.go',
|
|
target='go-stdio-chain',
|
|
use='go-stdio',
|
|
)
|
|
|
|
ctx(
|
|
features='go goprogram uselib',
|
|
source='my-cgo-test.go',
|
|
target='my-cgo-test',
|
|
use='go-my-c-lib',
|
|
)
|
|
|
|
from waflib import Options, Utils
|
|
if ctx.env.TRY_CGO and Options.options.exe:
|
|
def exe_pi(bld):
|
|
p = Utils.subprocess.Popen('LD_LIBRARY_PATH=build ./build/pi', shell=True)
|
|
p.wait()
|
|
ctx.add_post_fun(exe_pi)
|
|
|
|
def exe_hello(bld):
|
|
p = Utils.subprocess.Popen('LD_LIBRARY_PATH=build ./build/go-stdio-hello', shell=True)
|
|
p.wait()
|
|
ctx.add_post_fun(exe_hello)
|
|
|
|
def exe_fib(bld):
|
|
p = Utils.subprocess.Popen('LD_LIBRARY_PATH=build ./build/go-stdio-fib', shell=True)
|
|
p.wait()
|
|
ctx.add_post_fun(exe_fib)
|
|
|
|
def exe_chain(bld):
|
|
p = Utils.subprocess.Popen('LD_LIBRARY_PATH=build ./build/go-stdio-chain', shell=True)
|
|
p.wait()
|
|
ctx.add_post_fun(exe_chain)
|
|
|
|
def exe_mycgolib(bld):
|
|
p = Utils.subprocess.Popen('LD_LIBRARY_PATH=build ./build/my-cgo-test', shell=True)
|
|
p.wait()
|
|
ctx.add_post_fun(exe_mycgolib)
|
|
|