waf: support extra C and C++ flags on a per library basis

This commit is contained in:
Andrew Tridgell 2023-03-22 16:04:28 +11:00
parent 6f3c1dcd2b
commit 5c3d464754

View File

@ -239,6 +239,25 @@ class ap_library_check_headers(Task.Task):
def keyword(self):
return 'Checking included headers'
def custom_flags_check(tgen):
'''
check for tasks marked as having custom cpp or c flags
a library can do this by setting AP_LIB_EXTRA_CXXFLAGS and AP_LIB_EXTRA_CFLAGS
For example add this is the configure section of the library, using AP_DDS as an example:
cfg.env.AP_LIB_EXTRA_CXXFLAGS['AP_DDS'] = ['-DSOME_CXX_FLAG']
cfg.env.AP_LIB_EXTRA_CFLAGS['AP_DDS'] = ['-DSOME_C_FLAG']
'''
if not tgen.name.startswith("objs/"):
return
libname = tgen.name[5:]
if libname in tgen.env.AP_LIB_EXTRA_CXXFLAGS:
tgen.env.CXXFLAGS.extend(tgen.env.AP_LIB_EXTRA_CXXFLAGS[libname])
if libname in tgen.env.AP_LIB_EXTRA_CFLAGS:
tgen.env.CFLAGS.extend(tgen.env.AP_LIB_EXTRA_CFLAGS[libname])
def double_precision_check(tasks):
'''check for tasks marked as double precision'''
@ -284,6 +303,7 @@ def ap_library_register_for_check(self):
if not hasattr(self, 'compiled_tasks'):
return
custom_flags_check(self)
double_precision_check(self.compiled_tasks)
if self.env.ENABLE_ONVIF:
gsoap_library_check(self.bld, self.compiled_tasks)
@ -298,4 +318,6 @@ def ap_library_register_for_check(self):
def configure(cfg):
cfg.env.AP_LIBRARIES_OBJECTS_KW = dict()
cfg.env.AP_LIB_EXTRA_SOURCES = dict()
cfg.env.AP_LIB_EXTRA_CXXFLAGS = dict()
cfg.env.AP_LIB_EXTRA_CFLAGS = dict()
cfg.env.DOUBLE_PRECISION_SOURCES = dict()