| From af63fe89228172e5a395f7e6491fae3bfa9da4b1 Mon Sep 17 00:00:00 2001 |
| From: Jack Lloyd <jack@randombit.net> |
| Date: Mon, 15 Feb 2021 15:01:38 -0500 |
| Subject: [PATCH] Add --extra-libs option and group -l flags from LDFLAGS to |
| the end |
| |
| Ref #2622 |
| |
| [Retrieved from: |
| https://github.com/randombit/botan/commit/af63fe89228172e5a395f7e6491fae3bfa9da4b1] |
| Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> |
| --- |
| configure.py | 14 ++++++++++++++ |
| src/build-data/makefile.in | 2 +- |
| 2 files changed, 15 insertions(+), 1 deletion(-) |
| |
| diff --git a/configure.py b/configure.py |
| index 73fc0271e9..865a6c8e62 100755 |
| --- a/configure.py |
| +++ b/configure.py |
| @@ -333,6 +333,9 @@ def process_command_line(args): # pylint: disable=too-many-locals,too-many-state |
| target_group.add_option('--ldflags', metavar='FLAGS', |
| help='set linker flags', default=None) |
| |
| + target_group.add_option('--extra-libs', metavar='LIBS', |
| + help='specify extra libraries to link against', default='') |
| + |
| target_group.add_option('--ar-command', dest='ar_command', metavar='AR', default=None, |
| help='set path to static archive creator') |
| |
| @@ -2020,6 +2023,12 @@ def choose_cxx_exe(): |
| else: |
| return '%s %s' % (options.compiler_cache, cxx) |
| |
| + def extra_libs(libs, cc): |
| + if libs is None: |
| + return '' |
| + |
| + return ' '.join([(cc.add_lib_option % lib) for lib in libs.split(',')]) |
| + |
| variables = { |
| 'version_major': Version.major(), |
| 'version_minor': Version.minor(), |
| @@ -2149,6 +2158,7 @@ def choose_cxx_exe(): |
| 'cc_sysroot': sysroot_option(), |
| 'cc_compile_flags': options.cxxflags or cc.cc_compile_flags(options), |
| 'ldflags': options.ldflags or '', |
| + 'extra_libs': extra_libs(options.extra_libs, cc), |
| 'cc_warning_flags': cc.cc_warning_flags(options), |
| 'output_to_exe': cc.output_to_exe, |
| 'cc_macro': cc.macro_name, |
| @@ -3029,6 +3039,10 @@ def canonicalize_build_targets(options): |
| if options.build_fuzzers == 'libfuzzer' and options.fuzzer_lib is None: |
| options.fuzzer_lib = 'Fuzzer' |
| |
| + if options.ldflags is not None: |
| + libs = [m.group(1) for m in re.finditer(r'-l([a-z0-9]+)', options.ldflags)] |
| + options.extra_libs += ','.join(libs) |
| + |
| # Checks user options for consistency |
| # This method DOES NOT change options on behalf of the user but explains |
| # why the given configuration does not work. |
| diff --git a/src/build-data/makefile.in b/src/build-data/makefile.in |
| index 4692d00f71..82f6576650 100644 |
| --- a/src/build-data/makefile.in |
| +++ b/src/build-data/makefile.in |
| @@ -20,7 +20,7 @@ LDFLAGS = %{ldflags} |
| EXE_LINK_CMD = %{exe_link_cmd} |
| |
| LIB_LINKS_TO = %{external_link_cmd} %{link_to} |
| -EXE_LINKS_TO = %{link_to_botan} $(LIB_LINKS_TO) |
| +EXE_LINKS_TO = %{link_to_botan} $(LIB_LINKS_TO) %{extra_libs} |
| |
| BUILD_FLAGS = $(ABI_FLAGS) $(LANG_FLAGS) $(CXXFLAGS) $(WARN_FLAGS) |
| |