Index: common/libs/func_wrt_Makefile
===================================================================
--- common/libs/func_wrt_Makefile	(revision 9c9775f7c4ddcf151de34dc43d4404e9277da41c)
+++ common/libs/func_wrt_Makefile	(revision 9c9775f7c4ddcf151de34dc43d4404e9277da41c)
@@ -0,0 +1,386 @@
+#!/bin/bash
+
+# $Id$
+
+#=== MAKEFILE HEADER ===
+
+#----------------------------------#
+wrt_Makefile_header() {            #
+#----------------------------------#
+(
+    cat << EOF
+# This file is automatically generated by jhalfs
+# DO NOT EDIT THIS FILE MANUALLY
+#
+# Generated on `date "+%F %X %Z"`
+
+
+SHELL = /bin/bash
+
+SRC            = /sources
+MOUNT_PT       = $BUILDDIR
+PKG_LST        = $PKG_LST
+LUSER          = $LUSER
+LGROUP         = $LGROUP
+LHOME          = $LHOME
+SCRIPT_ROOT    = $SCRIPT_ROOT
+
+BASEDIR        = \$(MOUNT_PT)
+SRCSDIR        = \$(BASEDIR)/sources
+CMDSDIR        = \$(BASEDIR)/\$(SCRIPT_ROOT)/$PROGNAME-commands
+LOGDIR         = \$(BASEDIR)/\$(SCRIPT_ROOT)/$LOGDIRBASE
+TESTLOGDIR     = \$(BASEDIR)/\$(SCRIPT_ROOT)/$TESTLOGDIRBASE
+
+crCMDSDIR      = /\$(SCRIPT_ROOT)/$PROGNAME-commands
+crLOGDIR       = /\$(SCRIPT_ROOT)/$LOGDIRBASE
+crTESTLOGDIR   = /\$(SCRIPT_ROOT)/$TESTLOGDIRBASE
+crFILELOGDIR   = /\$(SCRIPT_ROOT)/$FILELOGDIRBASE
+
+SU_LUSER       = su - \$(LUSER) -c
+LUSER_HOME     = \$(LHOME)/\$(LUSER)
+PRT_DU         = echo -e "\nKB: \`du -skx --exclude=\$(SCRIPT_ROOT) --exclude=lost+found \$(MOUNT_PT) \`\n"
+PRT_DU_CR      = echo -e "\nKB: \`du -skx --exclude=\$(SCRIPT_ROOT) --exclude=lost+found / \`\n"
+
+ADD_REPORT       = $REPORT
+ADD_CUSTOM_TOOLS = $CUSTOM_TOOLS
+ADD_BLFS_TOOLS   = $BLFS_TOOL
+
+
+export PATH := \${PATH}:/usr/sbin
+
+include makefile-functions
+
+EOF
+) > $MKFILE
+}
+
+#=======================
+
+
+#==== PACKAGES NAMES ===
+
+#----------------------------------#
+get_package_tarball_name() {       #
+#----------------------------------#
+  local script_name=`echo ${1} | sed -e 's@[0-9]\{1\}-@@'`
+
+   # The use of 'head' is necessary to limit the return value to the FIRST match..
+   # hopefully this will not cause problems.
+   #
+   case $script_name in
+     tcl) echo $(grep "^tcl" $JHALFSDIR/pkg_tarball_list | head -n1 )
+         ;;
+     powerpc-utils) echo $(grep "^powerpc-utils" $JHALFSDIR/pkg_tarball_list | head -n1 )
+         ;;
+     uClibc)
+         if [[ "${PROGNAME}" = "clfs3" ]]; then
+           echo $(grep "^uClibc-" $JHALFSDIR/pkg_tarball_list | head -n1 )
+         else
+           echo $(grep "^$script_name-[[:digit:]]" $JHALFSDIR/pkg_tarball_list | head -n1 )
+         fi
+         ;;
+     linux-headers)
+         if [[ "${PROGNAME}" = "lfs" ]] || [[ "${PROGNAME}" = "hlfs" ]] ; then
+           # Uses kernel headers directly
+           echo $(grep "^linux-[[:digit:]]" $JHALFSDIR/pkg_tarball_list | head -n1 )
+         else
+           # CLFS{,2,3} use massaged headers package
+           echo $(grep "^linux-headers-[[:digit:]]" $JHALFSDIR/pkg_tarball_list | head -n1 )
+         fi
+         ;;
+     *)  echo $(grep "^$script_name-[[:digit:]]" $JHALFSDIR/pkg_tarball_list | head -n1 )
+         ;;
+   esac
+
+}
+
+#=======================
+
+
+#==== TARGET HEADER ====
+
+#----------------------------------#
+LUSER_wrt_target() {               # Create target and initialize log file
+#----------------------------------#
+  local i=$1
+  local PREV=$2
+(
+cat << EOF
+
+$i:  $PREV
+	@\$(call echo_message, Building)
+	@export BASHBIN=\$(SHELL) && \$(SHELL) progress_bar.sh \$@ \$\$PPID &
+	@echo "\$(nl_)\`date\`\$(nl_)" >logs/\$@
+	@\$(PRT_DU) >>logs/\$@
+EOF
+) >> $MKFILE.tmp
+}
+
+#----------------------------------#
+CHROOT_wrt_target() {              # Create target and initialize log file
+#----------------------------------#
+  local i=$1
+  local PREV=$2
+(
+cat << EOF
+
+$i:  $PREV
+	@\$(call echo_message, Building)
+	@export BASHBIN=\$(SHELL) && \$(SHELL) progress_bar.sh \$@ \$\$PPID &
+	@echo "\$(nl_)\`date\`\$(nl_)" >logs/\$@
+	@\$(PRT_DU_CR) >>logs/\$@
+EOF
+) >> $MKFILE.tmp
+}
+
+#=======================
+
+
+#======== UNPACK =======
+
+#----------------------------------#
+LUSER_wrt_unpack() {               # Unpack and set 'ROOT' var
+#----------------------------------#
+  local FILE=$1
+  local optSAVE_PREVIOUS=$2
+
+  if [[ "${optSAVE_PREVIOUS}" != "1" ]]; then
+(
+cat << EOF
+	@\$(call remove_existing_dirs,$FILE)
+EOF
+) >> $MKFILE.tmp
+  fi
+
+(
+cat << EOF
+	@\$(call unpack,$FILE)
+	@\$(call get_pkg_root_LUSER)
+EOF
+) >> $MKFILE.tmp
+}
+
+#----------------------------------#
+CHROOT_Unpack() {                  #
+#----------------------------------#
+  local FILE=$1
+  local optSAVE_PREVIOUS=$2
+
+  if [ "${optSAVE_PREVIOUS}" != "1" ]; then
+(
+cat << EOF
+	@\$(call remove_existing_dirs2,$FILE)
+EOF
+) >> $MKFILE.tmp
+  fi
+(
+cat  << EOF
+	@\$(call unpack2,$FILE)
+	@\$(call get_pkg_root2)
+EOF
+) >> $MKFILE.tmp
+}
+
+#=======================
+
+
+#===== TESTS LOGS ======
+
+#----------------------------------#
+LUSER_wrt_test_log() {             # Initialize testsuite log file
+#----------------------------------#
+  local TESTLOGFILE=$1
+(
+cat  << EOF
+	@echo "export  TEST_LOG=\$(TESTLOGDIR)/$TESTLOGFILE" >> envars && \\
+	echo "\$(nl_)\`date\`\$(nl_)" >\$(TESTLOGDIR)/\$@
+EOF
+) >> $MKFILE.tmp
+}
+
+#----------------------------------#
+CHROOT_wrt_test_log() {            #
+#----------------------------------#
+  local TESTLOGFILE=$1
+(
+cat  << EOF
+	@echo "export TEST_LOG=\$(crTESTLOGDIR)/$TESTLOGFILE" >> envars && \\
+	echo "\$(nl_)\`date\`\$(nl_)" >test-logs/\$@
+EOF
+) >> $MKFILE.tmp
+}
+
+#=======================
+
+
+#======== RUN AS =======
+
+#----------------------------------#
+wrt_RunAsRoot() {                  # Some scripts must be run as root..
+#----------------------------------#
+  local MOUNT_ENV
+  local file=$1
+
+  case ${PROGNAME} in
+    lfs   ) MOUNT_ENV="LFS" ;;
+    clfs  ) MOUNT_ENV="CLFS" ;;
+    clfs2 ) MOUNT_ENV="CLFS" ;;
+    clfs3 ) MOUNT_ENV="CLFS" ;;
+    hlfs  ) MOUNT_ENV="HLFS" ;;
+    *) echo "undefined progname $PROGNAME"; exit 1 ;;
+  esac
+
+(
+cat << EOF
+	@export ${MOUNT_ENV}=\$(MOUNT_PT) && \\
+	${PROGNAME}-commands/`dirname $file`/\$@ >>logs/\$@ 2>&1 && \\
+	\$(PRT_DU) >>logs/\$@
+EOF
+) >> $MKFILE.tmp
+}
+
+#----------------------------------#
+LUSER_wrt_RunAsUser() {            # Calculate time with perl, footer to log file
+#----------------------------------#
+  local file=$1
+
+(
+cat << EOF
+	@source ~/.bashrc && \\
+	\$(CMDSDIR)/`dirname $file`/\$@ >> logs/\$@ 2>&1 && \\
+	\$(PRT_DU) >>logs/\$@
+EOF
+) >> $MKFILE.tmp
+}
+
+#----------------------------------#
+CHROOT_wrt_RunAsRoot() {           #
+#----------------------------------#
+  local file=$1
+(
+cat << EOF
+	@source envars && \\
+	\$(crCMDSDIR)/`dirname $file`/\$@ >>logs/\$@ 2>&1 && \\
+	\$(PRT_DU_CR) >>logs/\$@
+EOF
+) >> $MKFILE.tmp
+
+}
+
+#=======================
+
+
+#====== COPY FSTAB =====
+
+#----------------------------------#
+LUSER_wrt_CopyFstab() {            #
+#----------------------------------#
+(
+cat << EOF
+	@cp -v \$(MOUNT_PT)/sources/fstab \$(MOUNT_PT)/etc/fstab >>logs/\$@ 2>&1 && \\
+	\$(PRT_DU) >>logs/\$@
+EOF
+) >> $MKFILE.tmp
+}
+
+#----------------------------------#
+CHROOT_wrt_CopyFstab() {           #
+#----------------------------------#
+(
+cat << EOF
+	@cp -v /sources/fstab /etc/fstab >>logs/\$@ 2>&1 && \\
+	\$(PRT_DU_CR) >>logs/\$@
+EOF
+) >> $MKFILE.tmp
+}
+
+#=======================
+
+
+#==== INSTALLED FILES LOGS ====
+
+#----------------------------------#
+LUSER_wrt_TouchTimestamp() {       #
+#----------------------------------#
+(
+cat << EOF
+	@\$(call touch_timestamp_LUSER)
+EOF
+) >> $MKFILE.tmp
+}
+
+#----------------------------------#
+CHROOT_wrt_TouchTimestamp() {      #
+#----------------------------------#
+(
+cat << EOF
+	@\$(call touch_timestamp)
+EOF
+) >> $MKFILE.tmp
+}
+
+#----------------------------------#
+LUSER_wrt_LogNewFiles() {          #
+#----------------------------------#
+  local name=$1
+(
+cat << EOF
+	@\$(call log_new_files_LUSER,$name)
+EOF
+) >> $MKFILE.tmp
+}
+
+#----------------------------------#
+CHROOT_wrt_LogNewFiles() {         #
+#----------------------------------#
+  local name=$1
+(
+cat << EOF
+	@\$(call log_new_files,$name)
+EOF
+) >> $MKFILE.tmp
+}
+
+#=======================
+
+
+#==== RM BUILD DIRS ====
+
+#----------------------------------#
+LUSER_RemoveBuildDirs() {          #
+#----------------------------------#
+  local name=$1
+(
+cat << EOF
+	@\$(call remove_build_dirs,$name)
+EOF
+) >> $MKFILE.tmp
+}
+
+#----------------------------------#
+CHROOT_wrt_RemoveBuildDirs() {     #
+#----------------------------------#
+  local name=$1
+(
+cat << EOF
+	@\$(call remove_build_dirs2,$name)
+EOF
+) >> $MKFILE.tmp
+}
+
+#=======================
+
+
+#======== TOUCH ========
+
+#----------------------------------#
+wrt_touch() {                      #
+#----------------------------------#
+(
+cat << EOF
+	@\$(call housekeeping)
+EOF
+) >> $MKFILE.tmp
+}
+
+#=======================
