[MPlayer-dev-eng] [PATCH] detect PIC and set -DPIC in YASMFLAGS

Reimar Döffinger Reimar.Doeffinger at gmx.de
Sun Nov 8 09:17:31 CET 2009


On Sun, Nov 08, 2009 at 09:02:27AM +0100, Reimar Döffinger wrote:
> On Sun, Nov 08, 2009 at 05:03:02AM +0100, Diego Biurrun wrote:
> > On Sun, Nov 08, 2009 at 12:47:36AM +0100, Reimar Döffinger wrote:
> > > this is necessary to compile with YASM enabled on amd64 systems that
> > > have PIC/PIE enabled by default, e.g. hardened Gentoo.
> > > --- configure   (revision 29850)
> > > +++ configure   (working copy)
> > > @@ -2580,6 +2580,20 @@
> > >  
> > > +echocheck "PIC"
> > > +pic=no
> > > +cat > $TMPC << EOF
> > > +int main(void) {
> > > +#if defined(__PIC__) || defined(__pic__) || defined(PIC)
> > > +    return 0;
> > > +#else
> > > +    error please!
> > 
> > ?
> 
> I thought it was obvious that it was supposed to make the compiler
> error out.
> Yes, for gcc #error works, but I think it is not part of the standard.

A variant more in line with other code (e.g. the kernel header version
check):
Index: configure
===================================================================
--- configure   (revision 29850)
+++ configure   (working copy)
@@ -2580,6 +2580,21 @@
 cc_check && ebx_available=yes && def_ebx_available='#define HAVE_EBX_AVAILABLE 1'
 echores $ebx_available
 
+echocheck "PIC"
+pic=no
+cat > $TMPC << EOF
+int main(void) {
+#if defined(__PIC__) || defined(__pic__) || defined(PIC)
+    return 0;
+#else
+#error PIC not enabled
+    not_pic_code();
+#endif
+}
+EOF
+cc_check && pic=yes
+echores $pic
+
 echocheck "yasm"
 if test -z "$YASMFLAGS" ; then
   if darwin ; then
@@ -2592,6 +2607,7 @@
   # currently tested for Linux x86, x86_64
   YASMFLAGS="-f $objformat"
   x86_64 && YASMFLAGS="$YASMFLAGS -DARCH_X86_64 -m amd64"
+  test "$pic" = "yes" && YASMFLAGS="$YASMFLAGS -DPIC"
   case "$objformat" in
     elf) test $_debug && YASMFLAGS="$YASMFLAGS -g dwarf2" ;;
     macho64)             YASMFLAGS="$YASMFLAGS -DPIC -DPREFIX" ;;




More information about the MPlayer-dev-eng mailing list