[XeTeX] compiling svn on Mac with icc
Jonathan Kew
jonathan_kew at sil.org
Sun Mar 18 15:38:39 CET 2007
On 18 Mar 2007, at 12:29 pm, Michael Zedler wrote:
> Hello,
>
> I tried compiling the current SVN version on 10.4.9 with icc 9.1.035.
> Executing
> export CC=icc
> export CXX=icpc
> ./build-xetex
>
> two problems occur:
> 1) Work/texk/xdv2pdf has
> CXX = c++
> instead of
> CXX = icpc
> and thus the linking stage fails
Ah, that's currently hard-coded in Makefile.in, which it shouldn't
be. Maybe someone who knows about autoconf and make and all that
stuff could do some tidying up....
Should be trivial to fix this by hand in your Makefile, as a
temporary workaround.
>
> 2) Compiling Work/texk/web2c/xetexini.c balks with
> icc -DHAVE_CONFIG_H -I. -I../../../texk/web2c -I..
> -I../../../texk/web2c/.. -Wall
> -I../../../texk/web2c/../../libs/teckit/source/Public-headers
> -DHAVE_CONFIG_H -I.
> -I../../../texk/web2c -I.. -I../../../texk/web2c/.. -Wall -
> DXETEX_MAC
> -c xetexini.c -o xetexini.o
> xetexcoerce.h(1131): remark #310: old-style parameter list
> (anachronism)
> extern strnumber makefullnamestring();
> ^
That should be harmless, but you could try patching as follows:
Index: texk/web2c/web2c/coerce.h
===================================================================
--- texk/web2c/web2c/coerce.h (revision 445)
+++ texk/web2c/web2c/coerce.h (working copy)
@@ -43,7 +43,7 @@
#ifdef TeX
/* Prototypes for source-specials functions... */
-extern strnumber makefullnamestring();
+extern strnumber makefullnamestring(void);
extern boolean isnewsource P2H(strnumber, int);
extern poolpointer makesrcspecial P2H(strnumber, int);
extern void remembersourceinfo P2H(strnumber, int);
The real problem is going to be this:
>
> /opt/intel/cc/9.1.035/include/mmintrin.h(113): error: expected a ")"
> char b3, char b2, char b1, char b0);
> ^
>
> /opt/intel/cc/9.1.035/include/mmintrin.h(120): error: expected a ")"
> char b3, char b2, char b1, char b0);
> ^
>
> /opt/intel/cc/9.1.035/include/emmintrin.h(342): error: expected a ")"
> char b3, char b2, char b1, char b0);
> ^
>
> /opt/intel/cc/9.1.035/include/emmintrin.h(354): error: expected a ")"
> char b3, char b2, char b1, char b0);
> ^
>
> Is this a compiler bug?
I think it's a name clash between the parameter names (b0 .. b3)
being used in internal icc headers, and preprocessor macros used in
web2c; you'll find that texmfmem.h includes the lines
#define b0 u.B0
#define b1 u.B1
#define b2 u.B2
#define b3 u.B3
as part of the code used to access the memory_word union from C.
It should be possible to work around this by ensuring that the web2c
definitions are not in effect at the time the icc headers are read,
but I'm not going to attempt an actual patch without hands-on access
to a compiler where I can try things out.
JK
More information about the XeTeX
mailing list