You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
waf_old/docs/book/examples/cprog_propagation/wscript

51 lines
1.2 KiB
Python

#! /usr/bin/env python
"""
The program below will link against all other libraries (except the static one)
"""
def options(opt):
opt.load('compiler_c')
def configure(conf):
conf.load('compiler_c')
def build(bld):
bld.shlib(
source = 'a.c',
target = 'lib1')
bld.stlib(
source = 'b.c',
use = 'cshlib', # add the shared library flags
target = 'lib2')
bld.shlib(
source = 'c.c',
target = 'lib3',
use = 'lib1 lib2')
bld.program(
source = 'main.c',
target = 'app',
use = 'lib3')
"""
The static library from this example is completely useless, and will add the -fPIC
flags to the program which might be annoying. It will be much better
to get rid of those static libraries but if you cannot live without them, use the following:
"""
from waflib.TaskGen import feature, after_method
@feature('c', 'cxx')
@after_method('propagate_uselib_vars', 'process_use')
def skip_cshlib_or_cxxshlib(self):
self.uselib = self.to_list(getattr(self, 'uselib', []))
self.use = self.to_list(getattr(self, 'use', []))
for x in ('cshlib', 'cxxshlib', 'dshlib'):
while x in self.uselib:
self.uselib.remove(x)
while x in self.use:
self.use.remove(x)