[Glibc-bsd-commits] r4702 - trunk/kfreebsd-kernel-headers/debian

Robert Millan rmh at alioth.debian.org
Tue Jul 9 19:12:02 UTC 2013


Author: rmh
Date: 2013-07-09 19:12:02 +0000 (Tue, 09 Jul 2013)
New Revision: 4702

Added:
   trunk/kfreebsd-kernel-headers/debian/generate-asm.sh
Log:
Forgot to add this one back to version control

Added: trunk/kfreebsd-kernel-headers/debian/generate-asm.sh
===================================================================
--- trunk/kfreebsd-kernel-headers/debian/generate-asm.sh	                        (rev 0)
+++ trunk/kfreebsd-kernel-headers/debian/generate-asm.sh	2013-07-09 19:12:02 UTC (rev 4702)
@@ -0,0 +1,182 @@
+#!/bin/sh -e
+
+# Idea borrowed from RedHat's kernel package
+
+arch="$1"
+dir_in="$2"
+dir_out="$3"
+
+if [ ! -d "$dir_in" ] ; then
+	echo "$dir_in" does not exist, or is not a directory
+	exit 1
+fi
+
+case "$arch" in
+	amd64)
+		define_biarch="#ifdef __i386__"
+		arch="amd64"
+		biarch="i386"
+		;;
+	i386)
+		define_biarch="#ifdef __x86_64__"
+		arch="i386"
+		biarch="amd64"
+		;;
+	*)
+		echo Invalid architecture >&2
+		exit 1
+esac
+
+machine_dir="$arch/include"
+machine_dir_biarch="$biarch/include"
+
+# The directory to create in /usr/include. 
+machine_dir_out="machine-$arch"
+machine_dir_out_biarch="machine-$biarch"
+
+if [ ! -d "$dir_in/$machine_dir" ] || [ ! -d "$dir_in/$machine_dir_biarch" ] ; then
+	echo E: $machine_dir and $machine_dir_biarch must exist, or you will have problems
+	exit 1
+fi
+
+mkdir -p $dir_out/machine
+cp -a $dir_in/$machine_dir $dir_out/$machine_dir_out
+cp -a $dir_in/$machine_dir_biarch $dir_out/$machine_dir_out_biarch
+
+dirs=$( (( cd "$dir_in/$machine_dir"; find . -type d ); ( cd "$dir_in/$machine_dir_biarch"; find . -type d )) | sort -u )
+files=$( (( cd "$dir_in/$machine_dir"; find . -name "*.h" -type f ); ( cd "$dir_in/$machine_dir_biarch"; find . -name "*.h" -type f )) | sed 's/^.\///g' | sort -u )
+
+for h in $dirs; do
+	mkdir -p "$dir_out/machine/$h"
+done
+
+for h in $files; do
+	name=$(echo $h | tr a-z. A-Z_)
+	file_out="$dir_out/machine/$h"
+	# common header
+	cat > $file_out << EOF
+/* All machine/ files are generated and point to the corresponding
+ * file in $machine_dir_out or $machine_dir_out_biarch.
+ */
+
+EOF
+
+	if [ -f $dir_in/$machine_dir/$h ] && [ -f $dir_in/$machine_dir_biarch/$h ]; then
+		cat >> $file_out <<EOF
+$define_biarch
+# include <$machine_dir_out_biarch/$h>
+#else
+# include <$machine_dir_out/$h>
+#endif
+EOF
+
+	elif [ -f $dir_in/$machine_dir/$h ]; then
+		cat >> $file_out <<EOF
+$define_biarch
+# error This header is not available for $biarch
+#else
+# include <$machine_dir_out/$h>
+#endif
+EOF
+	else
+		cat >> $file_out <<EOF
+$define_biarch
+# include <$machine_dir_out_biarch/$h>
+#else
+# error This header is not available for $arch
+#endif
+EOF
+	fi
+
+done
+#!/bin/sh -e
+
+# Idea borrowed from RedHat's kernel package
+
+arch="$1"
+dir_in="$2"
+dir_out="$3"
+
+if [ ! -d "$dir_in" ] ; then
+	echo "$dir_in" does not exist, or is not a directory
+	exit 1
+fi
+
+case "$arch" in
+	amd64)
+		define_biarch="#ifdef __i386__"
+		arch="amd64"
+		biarch="i386"
+		;;
+	i386)
+		define_biarch="#ifdef __x86_64__"
+		arch="i386"
+		biarch="amd64"
+		;;
+	*)
+		echo Invalid architecture >&2
+		exit 1
+esac
+
+machine_dir="$arch/include"
+machine_dir_biarch="$biarch/include"
+
+# The directory to create in /usr/include. 
+machine_dir_out="machine-$arch"
+machine_dir_out_biarch="machine-$biarch"
+
+if [ ! -d "$dir_in/$machine_dir" ] || [ ! -d "$dir_in/$machine_dir_biarch" ] ; then
+	echo E: $machine_dir and $machine_dir_biarch must exist, or you will have problems
+	exit 1
+fi
+
+mkdir -p $dir_out/machine
+cp -a $dir_in/$machine_dir $dir_out/$machine_dir_out
+cp -a $dir_in/$machine_dir_biarch $dir_out/$machine_dir_out_biarch
+
+dirs=$( (( cd "$dir_in/$machine_dir"; find . -type d ); ( cd "$dir_in/$machine_dir_biarch"; find . -type d )) | sort -u )
+files=$( (( cd "$dir_in/$machine_dir"; find . -name "*.h" -type f ); ( cd "$dir_in/$machine_dir_biarch"; find . -name "*.h" -type f )) | sed 's/^.\///g' | sort -u )
+
+for h in $dirs; do
+	mkdir -p "$dir_out/machine/$h"
+done
+
+for h in $files; do
+	name=$(echo $h | tr a-z. A-Z_)
+	file_out="$dir_out/machine/$h"
+	# common header
+	cat > $file_out << EOF
+/* All machine/ files are generated and point to the corresponding
+ * file in $machine_dir_out or $machine_dir_out_biarch.
+ */
+
+EOF
+
+	if [ -f $dir_in/$machine_dir/$h ] && [ -f $dir_in/$machine_dir_biarch/$h ]; then
+		cat >> $file_out <<EOF
+$define_biarch
+# include <$machine_dir_out_biarch/$h>
+#else
+# include <$machine_dir_out/$h>
+#endif
+EOF
+
+	elif [ -f $dir_in/$machine_dir/$h ]; then
+		cat >> $file_out <<EOF
+$define_biarch
+# error This header is not available for $biarch
+#else
+# include <$machine_dir_out/$h>
+#endif
+EOF
+	else
+		cat >> $file_out <<EOF
+$define_biarch
+# include <$machine_dir_out_biarch/$h>
+#else
+# error This header is not available for $arch
+#endif
+EOF
+	fi
+
+done




More information about the Glibc-bsd-commits mailing list