From f1afba94b1a3ed923cf1f4ba0428f33d302cb3a7 Mon Sep 17 00:00:00 2001 From: Mike Gevaert Date: Mon, 17 Jan 2022 16:00:43 +0100 Subject: [PATCH] Prefer building Release mode for python wheels * can control with SONATA_BUILD_TYPE environment variable * fixes #175 --- CHANGELOG.md | 7 +++++++ setup.py | 19 +++++++++++++------ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3368be55..1f9da176 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## v0.1.11: + +### Added: + +### Fixed: + - Prefer building Release mode for python wheels, can control with SONATA_BUILD_TYPE (#174) + ## v0.1.10: ### Added: diff --git a/setup.py b/setup.py index 33ba9a94..2e381073 100644 --- a/setup.py +++ b/setup.py @@ -83,24 +83,28 @@ def run(self): def build_extension(self, ext): extdir = os.path.abspath(os.path.dirname(self.get_ext_fullpath(ext.name))) + + build_type = os.environ.get("SONATA_BUILD_TYPE", "Release") + if self.debug: + build_type = "Debug" + cmake_args = [ "-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=" + extdir, "-DSONATA_TESTS={}".format(os.environ.get("SONATA_TESTS", "OFF")), "-DEXTLIB_FROM_SUBMODULES=ON", "-DSONATA_PYTHON=ON", "-DSONATA_VERSION=" + self.distribution.get_version(), - "-DCMAKE_BUILD_TYPE=", + "-DCMAKE_BUILD_TYPE={}".format(build_type), "-DSONATA_CXX_WARNINGS=OFF", '-DPYTHON_EXECUTABLE=' + sys.executable ] - optimize = "OFF" if self.debug else "ON" - build_args = ["--config", optimize, "--target", self.target] + build_args = ["--config", build_type, "--target", self.target] if platform.system() == "Windows": cmake_args += [ "-DCMAKE_LIBRARY_OUTPUT_DIRECTORY_{}={}".format( - optimize.upper(), extdir + build_type.upper(), extdir ) ] if sys.maxsize > 2 ** 32: @@ -109,15 +113,18 @@ def build_extension(self, ext): else: build_args += ["--", "-j{}".format(max(MIN_CPU_CORES, get_cpu_count()))] + if not os.path.exists(self.build_temp): + os.makedirs(self.build_temp) + env = os.environ.copy() env["CXXFLAGS"] = '{} -DVERSION_INFO=\\"{}\\"'.format( env.get("CXXFLAGS", ""), self.distribution.get_version() ) - if not os.path.exists(self.build_temp): - os.makedirs(self.build_temp) + subprocess.check_call( ["cmake", ext.sourcedir] + cmake_args, cwd=self.build_temp, env=env ) + subprocess.check_call( ["cmake", "--build", "."] + build_args, cwd=self.build_temp )