[PATCH rtems-lwip] lwip.py: Allow lwIP to build against stale install

Kinsey Moore kinsey.moore at oarcorp.com
Sat Sep 10 02:07:19 UTC 2022


This removes the default BSP include path from environment variables so
that rtems-lwip can build even when there's a stale version with
outdated headers installed in the BSP.
---
 lwip.py | 22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/lwip.py b/lwip.py
index 84eef2c..3d9cb29 100644
--- a/lwip.py
+++ b/lwip.py
@@ -99,6 +99,9 @@ def build(bld):
     drv_incl = []
     arch_lib_path = rtems.arch_bsp_lib_path(bld.env.RTEMS_VERSION,
                                             bld.env.RTEMS_ARCH_BSP)
+    bsp_incl = os.path.relpath(
+        os.path.join(bld.env.PREFIX, arch_lib_path, 'include')
+    )
     with open('file-import.json', 'r') as cf:
         files = json.load(cf)
         for f in files['files-to-import']:
@@ -155,6 +158,7 @@ def build(bld):
     lwip_obj_incl.extend(drv_incl)
     lwip_obj_incl.extend(bsd_compat_incl)
     lwip_obj_incl.extend(common_includes)
+    lwip_obj_incl.append(bsp_incl)
 
     bld(features='c',
         target='lwip_obj',
@@ -166,9 +170,7 @@ def build(bld):
     drv_obj_incl = []
     drv_obj_incl.extend(drv_incl)
     drv_obj_incl.extend(common_includes)
-    drv_obj_incl.append(os.path.relpath(
-        os.path.join(bld.env.PREFIX, arch_lib_path, 'include')
-    ))
+    drv_obj_incl.append(bsp_incl)
 
     bld(features='c',
         target='driver_obj',
@@ -203,9 +205,7 @@ def build(bld):
     test_app_incl.extend(drv_incl)
     test_app_incl.extend(common_includes)
     test_app_incl.append('rtemslwip/test/')
-    test_app_incl.append(
-        os.path.relpath(os.path.join(arch_lib_path, 'include'))
-    )
+    test_app_incl.append(bsp_incl)
     bld.program(features='c',
                 target='networking01.exe',
                 source='rtemslwip/test/networking01/sample_app.c',
@@ -235,8 +235,18 @@ def add_flags(flags, new_flags):
             flags.append(flag)
 
 
+def strip_bsp_include(bsp_include_path, current_flags):
+    # this does not handle quted strings; maybe needed
+    for bsp_path in bsp_include_path:
+        current_flags = [flag for flag in current_flags if flag != bsp_path]
+    return current_flags
+
+
 def bsp_configure(conf, arch_bsp):
     conf.env.LIB += ['m']
     section_flags = ["-fdata-sections", "-ffunction-sections"]
     add_flags(conf.env.CFLAGS, section_flags)
     add_flags(conf.env.CXXFLAGS, section_flags)
+    conf.env.CFLAGS = strip_bsp_include(conf.env.IFLAGS, conf.env.CFLAGS)
+    conf.env.CXXFLAGS = strip_bsp_include(conf.env.IFLAGS, conf.env.CXXFLAGS)
+    conf.env.LINKFLAGS = strip_bsp_include(conf.env.IFLAGS, conf.env.LINKFLAGS)
-- 
2.30.2



More information about the devel mailing list