Sophie

Sophie

distrib > * > 2008.0 > x86_64 > by-pkgid > 98bdb96e6d9f8dc6c123f37e7a3994f0 > files > 2

pkgconfig-0.21-1mdv2008.0.src.rpm

--- pkg-config-0.21/main.c.biarch	2006-08-16 19:54:56.000000000 +0200
+++ pkg-config-0.21/main.c	2006-10-18 13:13:22.000000000 +0200
@@ -29,6 +29,11 @@
 #include <string.h>
 #include <ctype.h>
 #include <stdio.h>
+#if defined(__linux__)
+#include <sys/stat.h>
+#include <sys/syscall.h>
+#include <sys/personality.h>
+#endif
 
 #ifdef G_OS_WIN32
 #define STRICT
@@ -169,6 +174,17 @@
   return FALSE;
 }
 
+#if defined(__linux__)
+static int
+is_dir(const char *path)
+{
+  struct stat st;
+  if (stat(path, &st) < 0)
+    return 0;
+  return S_ISDIR(st.st_mode);
+}
+#endif
+
 int
 main (int argc, char **argv)
 {
@@ -201,6 +217,9 @@
   char **search_dirs;
   char **iter;
   gboolean need_newline;
+#if defined(__linux__)
+  long personality;
+#endif
 
   const char *pkgname;
   Package *pkg;
@@ -292,6 +311,12 @@
     }
   else
     {
+#if defined(__linux__)
+	personality = syscall(SYS_personality, 0xffffffff);
+	if ((personality & PER_MASK) == PER_LINUX32 && is_dir(LIBDIR_PATH32))
+		add_search_dirs(PKG_CONFIG_PC_PATH32, G_SEARCHPATH_SEPARATOR_S);
+	else 
+#endif
       add_search_dirs(PKG_CONFIG_PC_PATH, G_SEARCHPATH_SEPARATOR_S);
     }
 
--- pkg-config-0.21/configure.in.biarch	2006-08-16 21:09:30.000000000 +0200
+++ pkg-config-0.21/configure.in	2006-10-18 13:08:41.000000000 +0200
@@ -18,6 +18,10 @@
    AC_MSG_RESULT([$pc_path])],
  [pc_path="$libdir/pkgconfig:$datadir/pkgconfig"])
  AC_SUBST([pc_path])
+ libdir_path32="$libdir/pkgconfig/32"
+ AC_DEFINE_UNQUOTED(LIBDIR_PATH32, ["$libdir_path32"], [libdir pkgconfig path for 32 personality])
+ pc_path32="$libdir/pkgconfig/32:$datadir/pkgconfig"
+ AC_DEFINE_UNQUOTED(PKG_CONFIG_PC_PATH32, ["$pc_path32"], [path for 32 personality])
 dnl AC_DEFINE_UNQUOTED(PKG_CONFIG_PC_PATH,["$pc_path"],[Default search path for .pc files])
 
 ])