On Thu, 2020-05-14 at 14:33 +0800, Xi Ruoyao via lfs-dev wrote:
> On 2020-05-13 23:46 -0500, Bruce Dubbs via lfs-dev wrote:
> > On 5/13/20 11:33 PM, Ken Moffat via lfs-dev wrote:
> > > I notice that in some places people have overridden any existing
> > > CFLAGS when adding -fcommon.  In most places, for those of us who
> > > care the fix is obvious (CFLAGS="$CFLAGS -fcommon").  One or two
> > > packages will turn out to be more painful.
> > > 
> > > The first I've found is freeglut, where the book uses
> > >        -DCMAKE_C_FLAGS=-fcommon
> > > 
> > > For people without any existing CFLAGS, that does the right thing
> > > and respects the -O3 etc from specifying a Release build (seen by
> > > using 'make VERBOSE=1') but for people who have extra flags such
> > > as
> > > "-march=native -D_FORTIFY_SOURCE=2" those just get thrown away.
> > > 
> > > I'd assumed I could add
> > >       -DCMAKE_CFLAGS="$CFLAGS -fcommon"
> > > 
> > > but if I do that, cmake tells me that CFLAGS was not referenced.
> > > 
> > > In this case, I am getting the right results (testing on a gcc-9
> > > system) with:
> > > 
> > > CFLAGS="${CFLAGS} -fcommon" \
> > > cmake -DCMAKE_INSTALL_PREFIX=/usr      \
> > >        -DCMAKE_BUILD_TYPE=Release       \
> > >        -DFREEGLUT_BUILD_DEMOS=OFF       \
> > >        -DFREEGLUT_BUILD_STATIC_LIBS=OFF \
> > >        -Wno-dev ..
> > > 
> > > Can I ask people to at least *consider* not trashing a user's
> > > specified CFLAGS ?
> > 
> > Yes, we can do that, but right now we are trying to just get
> > everything 
> > to build with gcc10.  When that is done, we can probably review and
> > do 
> > 'grep -r CFLAGS; in the book's xml top and do the right thing where
> > we 
> > have had to make changes.
> > 
> > Also as new package releases address gcc10, we can probably remove
> > a lot 
> > of the CFLAGS entries that we've been making.
> 
> I don't like -fcommon.  It's actually changing C semantics.  The
> correct thing
> to do is to fix the code (like what we do for gdbm in LFS).
> 
> Though we can simply add this workaround for now...

Bruce: rather "grep -- -fcommon ..."
Xi Ruoyao: you are right that C semantics is to have "extern" in header
files, which may be included in several .c files, and that variables
should be defined once and only once in some .c file. But...

-fcommon was the default until gcc 9 included. So the packages which do
not compile with -fno-common have been tested against -fcommon
(silently, with former versions of gcc), while the patches have been
less tested.

Furthermore, adding patches for all the packages which fail to compile
is much more work than just a CFLAGS addition. Since this work will be
obsoleted as soon as next release or so, it is tempting not to spend
too much time on it...

I agree, I'm lazy!

Pierre

-- 
http://lists.linuxfromscratch.org/listinfo/lfs-dev
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page

Reply via email to