[bug #48348] gnustep-config output is unusable

Stef <[email protected]>
Newsgroups gmane.comp.lib.gnustep.bugs
Message-ID <[email protected]>
URL:
  <http://savannah.gnu.org/bugs/?48348>

                 Summary: gnustep-config output is unusable
                 Project: GNUstep
            Submitted by: stefanbidi
            Submitted on: Wed 29 Jun 2016 11:49:36 PM GMT
                Category: None
                Severity: 3 - Normal
              Item Group: Bug
                  Status: None
                 Privacy: Public
             Assigned to: None
             Open/Closed: Open
         Discussion Lock: Any

    _______________________________________________________

Details:

I was trying to use gnustep-config to link a program of mine (instead of using
GNUstep-make) and ran into a major bug: gnustep-config makes a few assumptions
that aren't true.

My understand of how *-config programs work is flags/cflags go to the compiler
and libs go to the linker. However, gnustep-config not only exposes private
flags/libs but also --objc-libs and --base-libs includes options that are not
accepted by the ld linker (I guess it assumes you're using $(CC) as a
linker).

Example 1, output:
$ gnustep-config --objc-flags
-MMD -MP -DGNUSTEP -DGNUSTEP_BASE_LIBRARY=1 -DGNU_RUNTIME=1
-DGNUSTEP_BASE_LIBRARY=1 -fno-strict-aliasing -pthread -fPIC -Wall -DGSWARN
-DGSDIAGNOSE -Wno-import -g -O2 -fgnu-runtime
-fconstant-string-class=NSConstantString -I.
-I/home/user/GNUstep/Library/Headers -I/usr/include

In this example, the following should not be part of the output: (1) -MMD and
-MP; (2) -fPIC (private-use-only, I decide if this flag applies to my
application); (3) -Wall (private-use-only, I should decide what warnings I
want to see); (4) -pthread (not application to CFLAGS, -lpthread should be
passed to linker instead); (5) -g -O2 (private-use-only, I decide the
optimization level and if I want debug symbols); (6) -I. (I don't understand
why this is even here).

Expected output: -DGNUSTEP -DGNUSTEP_BASE_LIBRARY=1 -DGNU_RUNTIME=1 -DGSWARN
-DGSDIAGNOSE -fno-strict-aliasing -fgnu-runtime
-fconstant-string-class=NSConstantString -I/usr/include

Example 2, output:
$ gnustep-config --objc-libs
-rdynamic -shared-libgcc -pthread -fgnu-runtime
-L/home/user/GNUstep/Library/Libraries -L/usr/lib -lobjc -lm

Expected output: -L/usr/lib -lobjc

In this example, the following should not be part of the output:
(1) -rdynamic (private-use-only and not recognized by the linker, ld); (2)
-shared-libgcc (private-use-only and also not recognized by ld); (3) -pthread
(private-use-only, and ld doesn't recognize); (4) -fgnu-runtime (ld does not
recognize); (5) -lm (private-use-only, my application might not need this.




    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/bugs/?48348>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.gnu.org/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.