Opened 3 years ago

Closed 3 years ago

#51216 closed defect (fixed)

Libemf @1.0.8 does not build on PPC Leopard (Mac OS X 10.5.8) because of missing #define

Reported by: ballapete (Peter Dyballa) Owned by: macports-tickets@…
Priority: Normal Milestone:
Component: ports Version: 2.3.4
Keywords: Cc: kurthindenburg (Kurt Hindenburg)
Port: libemf

Description

The failure is this:

Making all in libemf
make[1]: Entering directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_graphics_libemf/libemf/work/libemf-1.0.8/libemf'
/bin/sh ../libtool  --tag=CXX   --mode=compile /usr/bin/g++-4.2 -DHAVE_CONFIG_H -I. -I../config  -I../include -I/opt/local/include  -pipe -Os -arch ppc -D_REENTRANT -DPTHREADS -MT libemf.lo -MD -MP -MF .deps/libemf.Tpo -c -o libemf.lo libemf.cpp
libtool: compile:  /usr/bin/g++-4.2 -DHAVE_CONFIG_H -I. -I../config -I../include -I/opt/local/include -pipe -Os -arch ppc -D_REENTRANT -DPTHREADS -MT libemf.lo -MD -MP -MF .deps/libemf.Tpo -c libemf.cpp  -fno-common -DPIC -o .libs/libemf.o
In file included from ../include/libEMF/wine/windef.h:16,
                 from ../include/libEMF/emf.h:27,
                 from libemf.h:32,
                 from libemf.cpp:24:
../include/libEMF/wine/winnt.h:61:3: error: #error Unknown CPU architecture!
../include/libEMF/wine/winnt.h:1429:2: error: #error You need to define a CONTEXT for your CPU
In file included from ../include/libEMF/wine/windef.h:16,
                 from ../include/libEMF/emf.h:27,
                 from libemf.h:32,
                 from libemf.cpp:24:
../include/libEMF/wine/winnt.h:1432: error: expected initializer before ‘*’ token
../include/libEMF/wine/winnt.h:2699: error: ‘PCONTEXT’ does not name a type
../include/libEMF/wine/winnt.h:2712: error: ‘PCONTEXT’ has not been declared
In file included from ../include/libEMF/emf.h:28,
                 from libemf.h:32,
                 from libemf.cpp:24:
../include/libEMF/wine/winbase.h:120: error: ‘PCONTEXT’ does not name a type
../include/libEMF/wine/winbase.h:1243: error: ‘CONTEXT’ has not been declared
../include/libEMF/wine/winbase.h:1377: error: expected ‘,’ or ‘...’ before ‘*’ token
../include/libEMF/wine/winbase.h:1377: error: ISO C++ forbids declaration of ‘CONTEXT’ with no type
make[1]: *** [libemf.lo] Error 1
make[1]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_graphics_libemf/libemf/work/libemf-1.0.8/libemf'
make: *** [all-recursive] Error 1

The message comes from these lines in ../include/libEMF/wine/winnt.h:

   30	/* Architecture dependent settings. */
   31	/* These are hardcoded to avoid dependencies on config.h in Winelib apps. */
   32	#if defined(__i386__)
   33	# undef  WORDS_BIGENDIAN
   34	# undef  BITFIELDS_BIGENDIAN
   35	# define ALLOW_UNALIGNED_ACCESS
   36	#elif defined(__x86_64__)
   37	# undef  WORDS_BIGENDIAN
   38	# undef  BITFIELDS_BIGENDIAN
   39	# define ALLOW_UNALIGNED_ACCESS
   40	#elif defined(__alpha__)
   41	# undef  WORDS_BIGENDIAN
   42	# undef  BITFIELDS_BIGENDIAN
   43	# undef  ALLOW_UNALIGNED_ACCESS
   44	#elif defined(__arm__)
   45	# undef  WORDS_BIGENDIAN
   46	# undef  BITFIELDS_BIGENDIAN
   47	# undef  ALLOW_UNALIGNED_ACCESS
   48	#elif defined(__sparc__)
   49	# define WORDS_BIGENDIAN
   50	# define BITFIELDS_BIGENDIAN
   51	# undef  ALLOW_UNALIGNED_ACCESS
   52	#elif defined(__PPC__)
   53	# define WORDS_BIGENDIAN
   54	# define BITFIELDS_BIGENDIAN
   55	# undef  ALLOW_UNALIGNED_ACCESS
   56	#elif defined(__s390__)
   57	# define WORDS_BIGENDIAN
   58	# define BITFIELDS_BIGENDIAN
   59	# undef  ALLOW_UNALIGNED_ACCESS
   60	#elif !defined(RC_INVOKED)
   61	# error Unknown CPU architecture!
   62	#endif

All architectures are lower case, except PowerPC! And GCC 4.2 #defines:

#define _ARCH_PPC 1
#define _ARCH_PPCGR 1
define __ppc__ 1
#define __POWERPC__ 1

So we have an easy patch for this case! (Presumingly.)

Attachments (3)

main.log (23.1 KB) - added by ballapete (Peter Dyballa) 3 years ago.
PPC_ppc.diff (1.2 KB) - added by ballapete (Peter Dyballa) 3 years ago.
The *working* patch
Portfile.diff (233 bytes) - added by ballapete (Peter Dyballa) 3 years ago.
Patch for libEMF Portfile

Download all attachments as: .zip

Change History (6)

Changed 3 years ago by ballapete (Peter Dyballa)

Attachment: main.log added

comment:1 Changed 3 years ago by ballapete (Peter Dyballa)

Insufficient patch:

libtool: compile:  /usr/bin/g++-4.2 -DHAVE_CONFIG_H -I. -I../config -I../include -I/opt/local/include -pipe -Os -arch ppc -D_REENTRANT -DPTHREADS -MT libemf.lo -MD -MP -MF .deps/libemf.Tpo -c libemf.cpp  -fno-common -DPIC -o .libs/libemf.o
In file included from ../include/libEMF/wine/windef.h:16,
                 from ../include/libEMF/emf.h:27,
                 from libemf.h:32,
                 from libemf.cpp:24:
../include/libEMF/wine/winnt.h:1429:2: error: #error You need to define a CONTEXT for your CPU

Changed 3 years ago by ballapete (Peter Dyballa)

Attachment: PPC_ppc.diff added

The *working* patch

Changed 3 years ago by ballapete (Peter Dyballa)

Attachment: Portfile.diff added

Patch for libEMF Portfile

comment:2 Changed 3 years ago by kurthindenburg (Kurt Hindenburg)

Cc: khindenburg@… added

Cc Me!

comment:3 Changed 3 years ago by kurthindenburg (Kurt Hindenburg)

Resolution: fixed
Status: newclosed

done r147999

Note: See TracTickets for help on using tickets.