Subject: Re: Strange xsrc compiler flags
To: None <martin@duskware.de>
From: Izumi Tsutsui <tsutsui@ceres.dti.ne.jp>
List: tech-x11
Date: 04/04/2005 00:00:20
In article <20050403143336.GD20095@drowsy.duskware.de>
martin@duskware.de wrote:

> Anyone got an idea why xsrc compiles with -fno-merge-constants?
> Our src/x11 reachover stuff does not.

With a quick glance, xsrc/xfree/xc/config/cf/xf86.tmpl has:
---
#if HasGccMergeConstants && DoLoadableServer && !MakeDllModules
MODULE_GCC_FLAGS2 = -fno-merge-constants
#endif

MODULE_GCC_FLAGS = $(MODULE_GCC_FLAGS1) $(MODULE_GCC_FLAGS2)

 :

MODULE_CFLAGS = $(MODULE_PIC_FLAGS) $(MODULE_GCC_FLAGS)
---

HasGccMergeConstants seems defined by imake since
config/imake/Imakefile has:
---
GCC_COMMAND = $(CC) -fmerge-constants -xc /dev/null -S -o /dev/null 2> /dev/null 1> /dev/null
GCC_DEFINES = -DHAS_MERGE_CONSTANTS=`if $(GCC_COMMAND); then echo 1; else echo 0; fi`
---
and config/imake/imake.c has:
---
#if defined(HAS_MERGE_CONSTANTS)
    fprintf (inFile, "#define HasGccMergeConstants %d\n", HAS_MERGE_CONSTANTS);
#endif
---

Imake.tmpl uses MODULE_CFLAGS for all CFLAGS:
---
           CFLAGS = $(CDEBUGFLAGS) $(CCOPTIONS) $(THREADS_CFLAGS) $(MODULE_CFLAGS) $(ALLDEFINES)
---

I don't know which source files actually require the option, though.
---
Izumi Tsutsui
tsutsui@ceres.dti.ne.jp