From 5e40676b8b687a896b5365f8f77ea7efc51ba165 Mon Sep 17 00:00:00 2001
From: Alexander Golubev <fatzer2@gmail.com>
Date: Sat, 26 Jul 2025 15:14:39 +0300
Subject: A more consistent compiler and flags config

For compiler:
* use the same one that was used to build python
* [if none] use the one from CXX env var
* [if none] fallback to c++

For CXXFLAGS:
* use python's recommended CFLAGS
* append our own -fno-strict-aliasing
* append user-provided CXXFLAGS

Signed-off-by: Alexander Golubev <fatzer2@gmail.com>
---
 setup.py | 43 +++++++++++++++++--------------------------
 1 file changed, 17 insertions(+), 26 deletions(-)

diff --git a/setup.py b/setup.py
index edd93c2..a2caa42 100755
--- a/setup.py
+++ b/setup.py
@@ -160,34 +160,25 @@ class BuildLibpythonize(Command):
         cmdlist.append("--mode=compile")
         cmdlist.append("--tag=CXX")
         
-        # Find the compiler flags and options
-        # CXX is empty on some Systems, let's do it 'the hard way'.
-        # FIXME :: get CXX from make.conf for Gentoo.
-        if len(sysconfig.get_config_var("CXX").split()) >= 2:
-            cmdlist.extend(sysconfig.get_config_var("CXX").split())
-        else:
-            cmdlist.extend(['g++', '-pthread'])
-        
+        # Find the compiler and flags
+        cxx = sysconfig.get_config_var("CXX") or os.environ.get("CXX") or "c++"
+        cxxflags = []
+        # Use python's CFLAGS
+        cflags = (sysconfig.get_config_var("CFLAGS"))
+        if cflags:
+            cxxflags.extend(cflags.split())
+        # Append our own flags
+        cxxflags.append ('-fno-strict-aliasing')
+        # Get user-provided flags
+        if os.environ.get("CXXFLAGS"):
+            cxxflags.extend(os.environ["CXXFLAGS"].split())
+
+        cmdlist.append(cxx)
         # cc_flags
         cmdlist.append("-c")
-        cmdlist.append("-g")
+
+        cmdlist.extend(cxxflags)
         
-        # The 4 is randomly chosen!
-        # FIXME :: get CFLAGS from make.conf for Gentoo.
-        if len(sysconfig.get_config_var("CFLAGS").split()) >=4:
-            cmdlist.extend(sysconfig.get_config_var("CFLAGS").split())
-        else:
-            # On Gentoo systems, CFLAGS are not in the environment.
-            raw = os.popen('emerge info 2> /dev/null|grep CFLAGS')
-            lines = raw.readlines()
-            if len(lines):
-                cflags = lines[0].split('"')[1].split()
-                print("Got CFLAGS from emerge info.")
-                cmdlist.extend(cflags)
-            else:
-                # Still no CFLAGS found, use these ...
-                cmdlist.extend(['-fno-strict-aliasing', '-DNDEBUG', '-g', '-O3', '-Wall', '-Wstrict-prototypes'])
-            
         # includes
         cmdlist.append("-I" + sysconfig.get_config_var("INCLUDEDIR"))
         cmdlist.append("-I" + sysconfig.get_config_var("INCLUDEPY"))
@@ -205,7 +196,7 @@ class BuildLibpythonize(Command):
         # Link the resulting object file to create a shared library.
         cmdlist = ['libtool']
         cmdlist.append("--mode=link")
-        cmdlist.append("--tag=LD")
+        cmdlist.append("--tag=CXX")
         
         # Grab the linker command name
         cmdlist.append(sysconfig.get_config_var("LDSHARED").split()[0])
-- 
cgit v1.2.3

