summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthieu Patou <mat@matws.net>2010-12-10 23:16:28 +0300
committerMatthieu Patou <mat@matws.net>2010-12-10 23:22:28 +0300
commit6875a611a71bf6d1623fc62361fc8b145b1f6559 (patch)
treef89ff636489f5b1cadafa2a2a30f509398cb3c1b
parent26a37284b9caffa1e2aebad27d683b15632e7240 (diff)
downloadsamba-6875a611a71bf6d1623fc62361fc8b145b1f6559.tar.gz
samba-6875a611a71bf6d1623fc62361fc8b145b1f6559.tar.bz2
samba-6875a611a71bf6d1623fc62361fc8b145b1f6559.zip
build: add a function to test if -lc is needed
This is needed on openbsd as some linking flags makes mandatory to specify the libc for the linking
-rw-r--r--buildtools/wafsamba/samba_conftests.py45
-rw-r--r--source4/wscript2
2 files changed, 47 insertions, 0 deletions
diff --git a/buildtools/wafsamba/samba_conftests.py b/buildtools/wafsamba/samba_conftests.py
index 2246ac3fa5..c7e596d27a 100644
--- a/buildtools/wafsamba/samba_conftests.py
+++ b/buildtools/wafsamba/samba_conftests.py
@@ -108,6 +108,51 @@ int foo(int v) {
return conf.check(features='cc cshlib',vnum="1",fragment=snip,msg=msg)
@conf
+def CHECK_NEED_LC(conf, msg):
+ '''check if we need -lc'''
+
+ dir = find_config_dir(conf)
+
+ env = conf.env
+
+ bdir = os.path.join(dir, 'testbuild2')
+ if not os.path.exists(bdir):
+ os.makedirs(bdir)
+
+
+ subdir = os.path.join(dir, "liblctest")
+
+ os.makedirs(subdir)
+
+ dest = open(os.path.join(subdir, 'liblc1.c'), 'w')
+ dest.write('#include <stdio.h>\nint lib_func(void) { FILE *f = fopen("foo", "r");}\n')
+ dest.close()
+
+ bld = Build.BuildContext()
+ bld.log = conf.log
+ bld.all_envs.update(conf.all_envs)
+ bld.all_envs['default'] = env
+ bld.lst_variants = bld.all_envs.keys()
+ bld.load_dirs(dir, bdir)
+
+ bld.rescan(bld.srcnode)
+
+ bld(features='cc cshlib',
+ source='liblctest/liblc1.c',
+ ldflags=conf.env['EXTRA_LDFLAGS'],
+ target='liblc',
+ name='liblc')
+
+ try:
+ bld.compile()
+ conf.check_message(msg, '', True)
+ return True
+ except:
+ conf.check_message(msg, '', False)
+ return False
+
+
+@conf
def CHECK_SHLIB_W_PYTHON(conf, msg):
'''check if we need -undefined dynamic_lookup'''
diff --git a/source4/wscript b/source4/wscript
index 3213e7c4e4..93391dacd1 100644
--- a/source4/wscript
+++ b/source4/wscript
@@ -113,6 +113,8 @@ def configure(conf):
# allows us to find problems on our development hosts faster.
# It also results in faster load time.
conf.ADD_LDFLAGS('-Wl,--as-needed', testflags=True)
+ if not conf.CHECK_NEED_LC("-lc not needed"):
+ conf.ADD_LDFLAGS('-lc', testflags=False)
# we don't want PYTHONDIR in config.h, as otherwise changing
# --prefix causes a complete rebuild