Skip to content
  • Behdad Esfahbod's avatar
    Work around Sun CPP · 32c1d32c
    Behdad Esfahbod authored
    According to Raimund Steger:
    
    > [...]
    > diff --git a/src/Makefile.am b/src/Makefile.am
    > index dc082b7..57c34a2 100644
    > [...]
    > +fcobjshash.gperf: fcobjshash.gperf.h fcobjs.h
    > +    $(AM_V_GEN) $(CPP) -I$(top_srcdir) $< | $(GREP) '^[^#]' | awk ' \
    > +    /CUT_OUT_BEGIN/ { no_write=1; next; }; \
    > +    /CUT_OUT_END/ { no_write=0; next; }; \
    > +    { if (!no_write) print; next; }; \
    > +    ' - > $@.tmp && \
    > +    mv -f $@.tmp $@
    
    Sun Studio CPP seems to insert whitespace in a different way than GCC's CPP.
    
    GCC generates in src/fcobjshash.gperf:
    
    [...]
    "family", FC_FAMILY_OBJECT
    "familylang", FC_FAMILYLANG_OBJECT
    [...]
    
    Sun Studio generates:
    
    [...]
     "family" , FC_FAMILY_OBJECT
     "familylang" , FC_FAMILYLANG_OBJECT
    [...]
    
    leading to:
    
    [...]
    Making all in src
    gmake[2]: Entering directory `/home/rs/src/fontconfig-git/fontconfig/src'
      GEN    fcobjshash.gperf
      GEN    fcobjshash.h
    Key link: " " = " ", with key set "".
    1 input keys have identical hash values,
    use option -D.
    gmake[2]: *** [fcobjshash.h] Error 1
    gmake[2]: Leaving directory `/home/rs/src/fontconfig-git/fontconfig/src'
    gmake[1]: *** [all-recursive] Error 1
    gmake[1]: Leaving directory `/home/rs/src/fontconfig-git/fontconfig'
    gmake: *** [all] Error 2
    
    ...maybe we could tuck in an additional sed to remove the whitespace, like:
    
    [...]
    fcobjshash.gperf: fcobjshash.gperf.h fcobjs.h
        $(AM_V_GEN) $(CPP) -I$(top_srcdir) $< | \
        $(SED) 's/^\s*//;s/\s*,\s*/,/;' | \
        $(GREP) '^[^#]' | \
        $(AWK) '/CUT_OUT_BEGIN/,/CUT_OUT_END/ { next; }; { print; };' \
        > $@.tmp && \
        mv -f $@.tmp $@
    [...]
    
    though I'm not sure what kind of guarantee CPP can give us/what easier option I might have missed...
    32c1d32c