[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [PROPOSAL] changing policy on compiling with -g .. a better way



Hi,
>>"Anthony" == Anthony Towns <aj@azure.humbug.org.au> writes:

 Anthony> Isn't strip still necessary/desirable?

        I guess. Well, here is the version with your suggestions
 incorporated. 

        The minimal change:
======================================================================
          CC = gcc
          CFLAGS = -O2 -g -Wall # sane warning options vary between programs
          LDFLAGS = # none
          install -s # (or use strip on the files in debian/tmp)
...

          The `-g' flag is useful on compilation so that you have available a
          full set of debugging symbols in your built source tree, in case
          anyone should file a bug report involving (for example) a core dump.
+         Alternately, you could use an environment variable
+         BUILD_OPTIONS, which, if set to `debug', would cause
+         compilation to be done with -g. (Remember not to call
+         ``install -s'' or strip on the binaries afterwards for this
+         case). The resulting binaries in your built package will then
+         contain the full set of debugging symbols (remember not to call 
+         ``install -s'' or ``strip'' on the binaries afterwards). 
+
+          This would let us later add other options in a fairly clean way.
+
+         Additionally, (and optionally) you may also provide a target
+         `build-debug' in debian/rules which has the same effect as
+         setting BUILD_OPTIONS to `debug'. This can be done quite simply,
+         with the folowing lines:
+ build-debug: BUILD_OPTIONS=debug
+ build-debug: build
+        Note: You still have to ensure that BUILD_OPTIONS is honoured.
======================================================================

        The second way: we don't just offer an alternative, we
 deprecate the old method, but let it be still legal.
======================================================================
          CC = gcc
-         CFLAGS = -O2 -g -Wall # sane warning options vary between programs
+         # sane warning options vary between programs
+         CFLAGS = -O2 -Wall
+         ifneq (,$(findstring $(BUILD_OPTIONS),DEBUG Debug debug))
+         CFLAGS += -g 
+         INSTALL_FLAGS= -s
+         endif
          LDFLAGS = # none
-         install -s # (or use strip on the files in debian/tmp)
+         install $(INSTALL_FLAGS) # 
...

          
          The `-g' flag is useful on compilation so that you have available a
          full set of debugging symbols in your built source tree, in case
          anyone should file a bug report involving (for example) a core dump.
+         It is acceptable, but deprecated, to always have -g in
+         ``CFLAGS'', and ``use install -s'' to install binaries or use
+         ``strip'' on the binaries in debian/tmp, but that make it
+         hard to create a debuggable debian package, and increase
+         build time for all builds, since debugging information is
+         created and then stripped away. The preferred method is to
+         use an environment variable BUILD_OPTIONS, which, if set to
+         `debug', would cause compilation to be done with -g. The
+         resulting binaries in your package will then contain the full
+         set of debugging symbols (remember not to call ``install -s''
+         or ``strip'' on the binaries afterwards). 
+
+          This would let us later add other options in a fairly clean way.
+
+         Additionally, (and optionally) you may also provide a target
+         `build-debug' in debian/rules which has the same effect as
+         setting BUILD_OPTIONS to `debug'. This can be done quite simply,
+         with the folowing lines:
+ build-debug: BUILD_OPTIONS=debug
+ build-debug: build
======================================================================

        manoj
-- 
 "The History of every major Galactic Civilization tends to pass
 through three distinct and recognizable phases, those of Survival,
 Inquiry and Sophistication, otherwise known as the How, Why and Where
 phases. "For instance, the first phase is characterized by the
 question 'How can we eat?' the second by the question 'Why do we
 eat?' and the third by the question 'Where shall we have lunch?'"
 Hitchhiker's Guide to the Galaxy
Manoj Srivastava   <srivasta@debian.org>  <http://www.debian.org/%7Esrivasta/>
Key C7261095 fingerprint = CB D9 F4 12 68 07 E4 05  CC 2D 27 12 1D F5 E8 6E


Reply to: