Idee: CFLAGS/CXXFLAGS beruecksichtigen

Installationsprobleme, Anwendungsfragen und sonstige Schwierigkeiten

Moderator: Frustikus

Quix0r
Posts: 59
Joined: Sat Dec 15, 2007 10:05 am
Location: Krefeld, Germany
Contact:

Idee: CFLAGS/CXXFLAGS beruecksichtigen

Postby Quix0r » Thu May 26, 2011 7:42 pm

configure.ac ist derzeit so geschrieben, dass sie einfach "blind" die Umgebungsvariablen CFLAGS/CXXFLAGS einbindet, egal was in ihnen gespeichert ist. Bei mir z.B. sehen diese wie folgt aus:

Code: Select all

quix0r@quix0r:~$ export | grep FLAGS
declare -x CFLAGS="-g -O0 -fPIC"
declare -x CXXFLAGS="-g -O0 -fPIC"
quix0r@quix0r:~$

Wenn z.B. --enable-release=yes an configure uebergeben wird, so ueberschneiden sich hier -O0 aus den Umgebungsvariablen und -O3 aus dem configure Script.

Meine Idee waere hier, geziehlter auf CFLAGS/CXXFLAGS Ruecksicht zu nehmen, anstelle sie einfach einzubauen. Derzeit experimentiere ich hier mit einer kleinen Aenderung in configure.ac (welche von autogen.sh genommen wird, um configure zu erzeugen), welche den Umgebungsvariablen "ultimativ vertraut". Dies heisst im Klartext, dass falls in beiden Werte vorhanden sind, werden diese nur um -fopenmp erweitert, ist eines von beiden oder gar beide nicht gesetzt, werden Standard-Werte angenommen.

Hier nun mein Patch:

Code: Select all

Index: configure.ac
===================================================================
--- configure.ac   (revision 9796)
+++ configure.ac   (working copy)
@@ -25,6 +25,13 @@
 
 AM_MAINTAINER_MODE
 
+#Probe for CFLAGS/CXXFLAGS
+if test "x$CFLAGS" != "x" && test "$CXXFLAGS" != "x";
+    USE_CFLAGS=yes
+else
+    USE_CFLAGS=no
+then
+
 #kludge to keep autoconf from adding -g -O2
 CFLAGS=" $CFLAGS"
 CXXFLAGS=" $CXXFLAGS"
@@ -116,14 +123,26 @@
 dnl Build with NDEBUG?
 AC_ARG_ENABLE(debug,
     [  --enable-debug         Take out debug symbols, Asserts, Int3, etc ],,)
-if test x$enable_debug != xyes; then
+if test "x$enable_debug" != "xyes"; then
     AC_DEFINE(NDEBUG,,[Define to disable asserts, int3, etc.])
-    CFLAGS="-O3 $CFLAGS -fopenmp"
-    CXXFLAGS="-O3 $CXXFLAGS -fopenmp"
+    if test "x$USE_CFLAGS" != "xno"; then
+        # Trust the CFLAGS ultimately
+        CFLAGS="$CFLAGS -fopenmp"
+        CXXFLAGS="$CXXFLAGS -fopenmp"
+    else
+        CFLAGS="-O3 $CFLAGS -fopenmp"
+        CXXFLAGS="-O3 $CXXFLAGS -fopenmp"
+    fi
 #    AC_DEFINE(OPENMP,,[Define to enable openmp code])
    else
-    CFLAGS="-g $CFLAGS -fopenmp"
-    CXXFLAGS="-g $CXXFLAGS -fopenmp"
+    if test "x$USE_CFLAGS" != "xno"; then
+        # Trust the CFLAGS ultimately
+        CFLAGS="$CFLAGS -fopenmp"
+        CXXFLAGS="$CXXFLAGS -fopenmp"
+       else
+        CFLAGS="-g $CFLAGS -fopenmp"
+        CXXFLAGS="-g $CXXFLAGS -fopenmp"
+    fi
     AC_DEFINE(_DEBUG,,[Define to enable asserts, int3, etc.])
     D2X_FEATURES="debug ${D2X_FEATURES}"
 fi

Auch empfiehlt es sich bei Debug-Releases -O0 zu verwenden, es hat jedoch Auswirkungen auf die Performance (was bei Release-Builds dann ja wichtig ist, von daher macht auch -O3 bei Release-Builds Sinn), da die Werte nicht mehr optimiert werden, sondern z.B. in Backtraces (gdb bt full) im Klartext gespeichert sind, was zum Debuggen sehr nuetzlich ist (unabdingbar schon fast).

Ich habe mir nun zweimal d2x-xl konfiguiert, einmal mit --enable-release=yes --enable-debug=no (zum Spielen) und einmal --enable-release=no --enable-debug=yes, dies hat bei oben vorgestelltem Patch keine Auswirkungen auf die CFLAGS/CXXFLAGS, sondern bindet nur D2X-XL-eigenen Debug-Code (Assertions) ein.

Wenn aber die Einstellungen aus CLFAGS/CXXFLAGS ignoriert werden sollen, so muessen diese temporaer (z.B. in einem kleinen Script, um ewiges Wiedereingeben sich zu ersparen) temporaer auf "leer" gesetzt werden:

Code: Select all

#!/bin/sh

export CFLAGS=""
export CXXFLAGS=""
../../d2x-xl/configure --prefix=/opt --with-sharepath=/opt/games/d2x-xl/ --enable-release=yes --enable-debug=no

Nach Verlassen des Scriptes (weil es geforkt und nicht "gesourcet" wird) sind dann die Umgebungsvariablen wieder hergestellt.

Edit: Hab das Patch nochmals ueberarbeiten muessen, nun sollte es wieder klappen. :)
Last edited by Quix0r on Thu May 26, 2011 8:49 pm, edited 4 times in total.
OS: Debian Unstable AMD64, Kernel: 2.6.38.4
X: X.Org X Server 1.10.1
CPU: Intel Quad-Core 2.5 GHz
GPU: MSI GeForce 9500 GT, 512 MB
OpenGL: 3.3.0 NVIDIA 270.41.06
RAM: 8 GB (Markenspeicher, kein OEM)
Soundcard: Onboard Intel HD
SDL: 1.2.14
User avatar
karx11erx
D2X-XL Master
D2X-XL Master
Posts: 8112
Joined: Mon Sep 24, 2007 8:48 pm
Location: Wilferdingen, Germany
Contact:

Re: Idee: CFLAGS/CXXFLAGS beruecksichtigen

Postby karx11erx » Thu May 26, 2011 7:56 pm

Es heisst "Standard", nicht "Standart" (wie Standarte ~ Wimpel oder kleine Fahne). ;)

Ansonsten interessant.
Quix0r
Posts: 59
Joined: Sat Dec 15, 2007 10:05 am
Location: Krefeld, Germany
Contact:

Re: Idee: CFLAGS/CXXFLAGS beruecksichtigen

Postby Quix0r » Thu May 26, 2011 8:12 pm

Falls du das Patch vewendet haben solltest, ich habe es ueberarbeiten muessen. Sorry fuer das leichte Durcheinander. :)

Und ich mag die deutsche Rechtschreibung nicht. :mrgreen:
OS: Debian Unstable AMD64, Kernel: 2.6.38.4
X: X.Org X Server 1.10.1
CPU: Intel Quad-Core 2.5 GHz
GPU: MSI GeForce 9500 GT, 512 MB
OpenGL: 3.3.0 NVIDIA 270.41.06
RAM: 8 GB (Markenspeicher, kein OEM)
Soundcard: Onboard Intel HD
SDL: 1.2.14
User avatar
karx11erx
D2X-XL Master
D2X-XL Master
Posts: 8112
Joined: Mon Sep 24, 2007 8:48 pm
Location: Wilferdingen, Germany
Contact:

Re: Idee: CFLAGS/CXXFLAGS beruecksichtigen

Postby karx11erx » Thu May 26, 2011 9:49 pm

Kann es sein, dass Du gar keine Rechtschreibung magst? :P
Quix0r
Posts: 59
Joined: Sat Dec 15, 2007 10:05 am
Location: Krefeld, Germany
Contact:

Re: Idee: CFLAGS/CXXFLAGS beruecksichtigen

Postby Quix0r » Thu May 26, 2011 11:29 pm

Kann sein, vielleicht auch nur die neue nicht. :mrgreen:

Aber okay, vielleicht kannst du das von mir mal aufnehmen, dann kann ich mir ein Release-Build bauen, das immer noch mit -g -O0 kompiliert ist.
OS: Debian Unstable AMD64, Kernel: 2.6.38.4
X: X.Org X Server 1.10.1
CPU: Intel Quad-Core 2.5 GHz
GPU: MSI GeForce 9500 GT, 512 MB
OpenGL: 3.3.0 NVIDIA 270.41.06
RAM: 8 GB (Markenspeicher, kein OEM)
Soundcard: Onboard Intel HD
SDL: 1.2.14
User avatar
karx11erx
D2X-XL Master
D2X-XL Master
Posts: 8112
Joined: Mon Sep 24, 2007 8:48 pm
Location: Wilferdingen, Germany
Contact:

Re: Idee: CFLAGS/CXXFLAGS beruecksichtigen

Postby karx11erx » Thu May 26, 2011 11:35 pm

Wieso willst Du das?
Quix0r
Posts: 59
Joined: Sat Dec 15, 2007 10:05 am
Location: Krefeld, Germany
Contact:

Re: Idee: CFLAGS/CXXFLAGS beruecksichtigen

Postby Quix0r » Fri May 27, 2011 12:02 am

Debug-Symbole (und nicht optimierter Code) sind trennbar von D2X-XL's internen debug-dingen (macht manchmal Sinn, z.B. keine asserts zu haben, aber denoch Debug-Symbole und brauchbare Backtraces zu haben).
OS: Debian Unstable AMD64, Kernel: 2.6.38.4
X: X.Org X Server 1.10.1
CPU: Intel Quad-Core 2.5 GHz
GPU: MSI GeForce 9500 GT, 512 MB
OpenGL: 3.3.0 NVIDIA 270.41.06
RAM: 8 GB (Markenspeicher, kein OEM)
Soundcard: Onboard Intel HD
SDL: 1.2.14
User avatar
karx11erx
D2X-XL Master
D2X-XL Master
Posts: 8112
Joined: Mon Sep 24, 2007 8:48 pm
Location: Wilferdingen, Germany
Contact:

Re: Idee: CFLAGS/CXXFLAGS beruecksichtigen

Postby karx11erx » Fri May 27, 2011 12:16 am

Fast aller Debug-Code von D2X-XL wird mit einem Makro DBG gesteuert:

#define DBG 0 // kein Debug-Code
#define DBG 1 //Debug-Code aktivieren
Quix0r
Posts: 59
Joined: Sat Dec 15, 2007 10:05 am
Location: Krefeld, Germany
Contact:

Re: Idee: CFLAGS/CXXFLAGS beruecksichtigen

Postby Quix0r » Fri May 27, 2011 12:41 am

Das habe ich auch schon soweit isolieren koennen. Schoen waere es aber dennoch, dass z.B. -O3 aus configure und -O0 aus der Umgebungsvariable sich nicht miteinander vermischen. Ich glaube, die hoehere Nummer "gewinnt" dann.
OS: Debian Unstable AMD64, Kernel: 2.6.38.4
X: X.Org X Server 1.10.1
CPU: Intel Quad-Core 2.5 GHz
GPU: MSI GeForce 9500 GT, 512 MB
OpenGL: 3.3.0 NVIDIA 270.41.06
RAM: 8 GB (Markenspeicher, kein OEM)
Soundcard: Onboard Intel HD
SDL: 1.2.14

Return to “D2X-XL Hilfe”

Who is online

Users browsing this forum: No registered users and 1 guest