-# The MIT License (MIT)
+# SPDX-License-Identifier: MIT
#
-# Copyright (C) 2017 - Francis Deslauriers <francis.deslauriers@efficios.com>
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
+# Copyright (C) 2017 Francis Deslauriers <francis.deslauriers@efficios.com>
+# Copyright (C) 2020 Jérémie Galarneau <jeremie.galarneau@efficios.com>
import sys
+import os
+import distutils.sysconfig
from distutils.core import setup, Extension
--------------------------------------------------------------------------------
"""
+original_get_config_vars = distutils.sysconfig.get_config_vars
+
+
+def get_cflags():
+ cflags = os.environ.get('CFLAGS')
+
+ if cflags is None:
+ [cflags] = original_get_config_vars('CFLAGS')
+
+ return cflags
+
+
+# distutils performs a similar transformation step on LDSHARED on
+# darwin to use the overriden CC as the default command for LDSHARED
+# (see distutils' customize_compiler() step in the sysconfig module).
+#
+# This takes it a step further by using our own LDFLAGS (when available)
+# along with the overriden compiler and ensure that flags that are unsupported
+# by either the Python interprter's CC or the overriden CC don't cause a
+# build failure.
+def get_ldshared():
+ cc = os.environ.get('CC')
+ ldflags = os.environ.get('LDFLAGS')
+ [py_cc] = original_get_config_vars('CC')
+ [py_ldshared] = original_get_config_vars('LDSHARED')
+
+ if not py_ldshared.startswith(py_cc):
+ return py_ldshared
+
+ if cc and ldflags:
+ return '{} -shared {}'.format(cc, ldflags)
+ elif cc:
+ return cc + py_ldshared[len(py_cc) :]
+ elif ldflags:
+ return py_cc + py_ldshared[len(py_cc) :]
+ else:
+ return py_ldshared
+
+
+def our_get_config_vars(*args):
+ overridden_config_vars = {
+ 'CFLAGS': get_cflags(),
+ 'LDSHARED': get_ldshared(),
+ }
+
+ if len(args) == 0:
+ all_config_vars = original_get_config_vars()
+ for name in overridden_config_vars:
+ all_config_vars[name] = overridden_config_vars[name]
+ return all_config_vars
+
+ subset_config_vars = []
+ for name in args:
+ if name not in overridden_config_vars:
+ [var] = original_get_config_vars(name)
+ subset_config_vars.append(var)
+ continue
+
+ subset_config_vars.append(overridden_config_vars[name])
+
+ return subset_config_vars
+
+
+distutils.sysconfig.get_config_vars = our_get_config_vars
+
def main():
babeltrace_ext = Extension(
sources=['bt2/native_bt.c', '@srcdir@/bt2/logging.c'],
libraries=['babeltrace2', 'glib-2.0'],
extra_objects=[
+ '@top_builddir@/src/autodisc/.libs/libbabeltrace2-autodisc.a',
'@top_builddir@/src/logging/.libs/libbabeltrace2-logging.a',
'@top_builddir@/src/common/.libs/libbabeltrace2-common.a',
'@top_builddir@/src/py-common/.libs/libbabeltrace2-py-common.a',
+ '@top_builddir@/src/string-format/.libs/libbabeltrace2-string-format.a',
],
)
'build': {'build_base': 'build', 'build_lib': 'build/build_lib'},
'build_ext': {'build_lib': 'build/build_lib'},
},
- url='http://diamon.org/babeltrace',
+ url='https://babeltrace.org/',
ext_modules=[babeltrace_ext],
license='MIT',
classifiers=[