gio: Convert data-to-c.c to perl
authorKalev Lember <kalevlember@gmail.com>
Wed, 1 Feb 2012 16:44:15 +0000 (18:44 +0200)
committerAlexander Larsson <alexl@redhat.com>
Thu, 2 Feb 2012 15:22:42 +0000 (16:22 +0100)
Helper scripts in C can be problematic for cross compiling: the compiler
produces executables for the target platform, which the host is usually
unable to run.

https://bugzilla.gnome.org/show_bug.cgi?id=669224

gio/Makefile.am
gio/data-to-c.c [deleted file]
gio/data-to-c.pl [new file with mode: 0755]

index d9227b9..67eeae6 100644 (file)
@@ -8,11 +8,6 @@ if OS_UNIX
 SUBDIRS += xdgmime
 endif
 
-noinst_PROGRAMS = data-to-c
-
-data_to_c_SOURCES = data-to-c.c
-data_to_c_LDADD = $(top_builddir)/glib/libglib-2.0.la
-
 if OS_WIN32_AND_DLL_COMPILATION
 if MS_LIB_AVAILABLE
 noinst_DATA = gio-2.0.lib
@@ -612,6 +607,7 @@ BUILT_SOURCES =             \
        $(NULL)
 
 EXTRA_DIST +=                  \
+       data-to-c.pl            \
        gio.symbols             \
        gioenumtypes.h.template \
        gioenumtypes.c.template \
@@ -666,8 +662,8 @@ gio_querymodules_LDADD       = \
        libgio-2.0.la                                   \
        $(NULL)
 
-gconstructor_as_data.h: $(top_srcdir)/glib/gconstructor.h data-to-c$(EXEEXT)
-       $(AM_V_GEN) $(builddir)/data-to-c $(top_srcdir)/glib/gconstructor.h gconstructor_code > $@
+gconstructor_as_data.h: $(top_srcdir)/glib/gconstructor.h data-to-c.pl
+       $(AM_V_GEN) $(srcdir)/data-to-c.pl $(top_srcdir)/glib/gconstructor.h gconstructor_code > $@.tmp && mv $@.tmp $@
 
 glib_compile_schemas_LDADD = $(top_builddir)/glib/libglib-2.0.la
 glib_compile_schemas_SOURCES = \
diff --git a/gio/data-to-c.c b/gio/data-to-c.c
deleted file mode 100644 (file)
index 9dcf286..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright © 2011 Red Hat, Inc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the licence, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Alexander Larsson <alexl@redhat.com>
- */
-
- #include <glib.h>
-
-int
-main (int argc, char **argv)
-{
-  char *content;
-  int i;
-  GError *error = NULL;
-
-  if (argc != 3)
-    {
-      g_printerr ("Usage: data-to-c <filename> <variable>");
-      return 1;
-    }
-
-  if (!g_file_get_contents (argv[1], &content, NULL, &error))
-    {
-      g_printerr ("%s", error->message);
-      return 1;
-    }
-
-  g_print ("const char %s[] = \"", argv[2]);
-  
-  for (i = 0; content[i] != 0; i++) {
-    g_print ("\\x%02x", (int)content[i]);
-  }
-  
-  g_print ("\";\n");
-  return 0;
-}
diff --git a/gio/data-to-c.pl b/gio/data-to-c.pl
new file mode 100755 (executable)
index 0000000..20ba2fb
--- /dev/null
@@ -0,0 +1,39 @@
+#!/usr/bin/perl
+
+# Copyright © 2011 Red Hat, Inc
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the licence, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the
+# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+#
+# Author: Kalev Lember <kalevlember@gmail.com>
+
+
+if (@ARGV != 2) {
+    die "Usage: data-to-c.pl <filename> <variable>\n";
+}
+
+$file = $ARGV[0];
+
+open (FILE, $file) || die "Cannot open $file: $!\n";
+
+printf ("const char %s[] = \"", $ARGV[1]);
+while (my $line = <FILE>) {
+    foreach my $c (split //, $line) {
+        printf ("\\x%02x", ord ($c));
+    }
+}
+print "\";\n";
+
+close (FILE);