Author: brane
Date: Thu Jul  3 10:31:21 2025
New Revision: 1926936

URL: http://svn.apache.org/viewvc?rev=1926936&view=rev
Log:
Follow up to r1926930: use a better way to filter CFLAGS.

* SConstruct:
  (filter_cflags): New; replaces readconfig as a filter for env.ParseCondig().
  (unsubstable): Reanamed from unsubst.

Modified:
    serf/trunk/SConstruct

Modified: serf/trunk/SConstruct
URL: 
http://svn.apache.org/viewvc/serf/trunk/SConstruct?rev=1926936&r1=1926935&r2=1926936&view=diff
==============================================================================
--- serf/trunk/SConstruct (original)
+++ serf/trunk/SConstruct Thu Jul  3 10:31:21 2025
@@ -96,6 +96,15 @@ def createPathIsDirCreateWithTarget(targ
       return PathVariable.PathAccept(key, val, env)
   return my_validator
 
+def filter_cflags(env, cmd, unique=0):
+  '''Filter all debugging, optimization and warning flags from 'cmd'.'''
+  cmd = re.sub(r'(^|\s)-[gOW]\S*', '', cmd)
+  return env.MergeFlags(cmd, unique)
+
+def unsubstable(string):
+  '''There are things that SCons just shouldn't Subst.'''
+  return string.replace('$', '$$')
+
 # default directories
 if sys.platform == 'win32':
   default_incdir='..'
@@ -539,25 +548,18 @@ else:
     ### dependency upon gcc. probably ParseConfig doesn't know what to do with
     ### the apr-1-config output
 
-    def readconfig(cmdline):
-      '''Run the given command, read its output and filter out all
-      debugging, optimization and warning flags.'''
-      output = os.popen(env.subst(cmdline)).read().strip()
-      return re.sub(r'(^| )-[gOW][^ ]*', '', output)
-
-    flags = readconfig('$APR --cflags --cppflags --includes'
-                       ' --ldflags --link-ld --libs')
+    env.ParseConfig('$APR --cflags --cppflags --includes'
+                    ' --ldflags --link-ld --libs',
+                    filter_cflags)
     if apr_major < 2:
-      flags += ' ' + readconfig('$APU --includes --ldflags --link-ld --libs')
-
-    # Now, finally, read this into the environment. It's a pity that
-    env.ParseConfig('echo "%s"' % flags, unique=0)
+      env.ParseConfig('$APU --includes --ldflags --link-ld --libs',
+                      filter_cflags)
 
     ### there is probably a better way to run/capture output.
     ### env.ParseConfig() may be handy for getting this stuff into the build
-    apr_libs = readconfig('$APR --link-libtool --libs')
+    apr_libs = os.popen(env.subst('$APR --link-libtool --libs')).read().strip()
     if apr_major < 2:
-      apu_libs = readconfig('$APU --link-libtool --libs')
+      apu_libs = os.popen(env.subst('$APU --link-libtool 
--libs')).read().strip()
     else:
       apu_libs = ''
   else:
@@ -673,18 +675,14 @@ for d in env['LIBPATH']:
   env.Append(RPATH=[':'+d])
 
 # Set up the construction of serf-*.pc
-def unsubst(string):
-  '''There are things that SCons just shouldn't Subst.'''
-  return string.replace('$', '$$')
-
 pkgprefix = os.path.relpath(env.subst('$PREFIX'), 
env.subst('$LIBDIR/pkgconfig'))
 pkglibdir = os.path.relpath(env.subst('$LIBDIR'), env.subst('$PREFIX'))
 pkgconfig = env.Textfile('serf-%d.pc' % (MAJOR,),
                          env.File('build/serf.pc.in'),
                          SUBST_DICT = {
                            '@MAJOR@': str(MAJOR),
-                           '@PREFIX@': unsubst('${pcfiledir}/' + pkgprefix),
-                           '@LIBDIR@': unsubst('${prefix}/' + pkglibdir),
+                           '@PREFIX@': unsubstable('${pcfiledir}/' + 
pkgprefix),
+                           '@LIBDIR@': unsubstable('${prefix}/' + pkglibdir),
                            '@INCLUDE_SUBDIR@': 'serf-%d' % (MAJOR,),
                            '@VERSION@': '%d.%d.%d' % (MAJOR, MINOR, PATCH),
                            '@LIBS@': '%s %s %s %s -lz' % (apu_libs, apr_libs,


Reply via email to