#####
#
#
#
# $Id$
#####

# TEMPORARY VARIABLES.. development use only
declare MKFILE=devMakefile
declare PREV_PACKAGE=""
declare BUILD_SCRIPTS=scripts
declare TRACKING_DIR=/var/lib/jhalfs/BLFS


#----------------------------------#
__wrt_target() {                   # Create target and initialize log file
#----------------------------------#
  local i=$1
  local PREV=$2
(
cat << EOF

$i:  $PREV
	@\$(call echo_message, Building)
	@./progress_bar.sh \$@ &
EOF
) >> $MKFILE.tmp
}



#----------------------------------#
__write_build_cmd() {              #
#----------------------------------#
  local this_script=$1
  local file=$2
(
cat << EOF
	@( time { ${BUILD_SCRIPTS}/${file} >>logs/${this_script} 2>&1 ; } ) 2>>logs/${this_script}
EOF
) >> $MKFILE.tmp
}

#----------------------------------#
__wrt_touch() {                    #
#----------------------------------#
  local pkg_name=$1
(
cat << EOF
	@touch  \$@ && \\
	touch \$(TRACKING_DIR)/${pkg_name#*-} && \\
	sleep .25 && \\
	echo -e "\n\n "\$(BOLD)Target \$(BLUE)\$@ \$(BOLD)OK && \\
	echo --------------------------------------------------------------------------------\$(WHITE)
EOF
) >> $MKFILE.tmp
}


#----------------------------#
__write_entry() {            #
#----------------------------#
  local script_name=$1

  echo -n "${tab_}${tab_} entry for <$script_name>"

  #--------------------------------------------------------------------#
  #         >>>>>>>> START BUILDING A Makefile ENTRY <<<<<<<<          #
  #--------------------------------------------------------------------#
  #
  # Drop in the name of the target on a new line, and the previous target
  # as a dependency. Also call the echo_message function.
  __wrt_target "${script_name}" "$PREV_PACKAGE"
  __write_build_cmd "${script_name}" "${script_name}"

  # Include a touch of the target name so make can check
  # if it's already been made.
  __wrt_touch "${script_name}"
  #
  #--------------------------------------------------------------------#
  #              >>>>>>>> END OF Makefile ENTRY <<<<<<<<               #
  #--------------------------------------------------------------------#
  echo " .. OK"
}

#----------------------------#
generate_Makefile () {       #
#----------------------------#


  echo "${tab_}Creating Makefile... ${BOLD}START${OFF}"

  # Start with a clean files
  >$MKFILE
  >$MKFILE.tmp

  
  for package_script in scripts/* ; do
    this_script=`basename $package_script`
    if [ ! -e $TRACKING_DIR/${this_script#*-} ]; then
      pkg_list="$pkg_list ${this_script}"
      __write_entry $this_script
      PREV_PACKAGE=${this_script}
    fi
  done


  # Add a header, some variables and include the function file
  # to the top of the real Makefile.
(
    cat << EOF
$HEADER

PACKAGE= "`basename $PKGXML .xml`"
TRACKING_DIR= $TRACKING_DIR

BOLD= ""
RED= ""
GREEN= ""
ORANGE= ""
BLUE= ""
WHITE= ""

define echo_message
  @echo \$(BOLD)
  @echo --------------------------------------------------------------------------------
  @echo \$(BOLD)\$(1) target \$(BLUE)\$@\$(BOLD)
  @echo \$(WHITE)
endef


define fin_message
  @echo \$(BOLD)
  @echo --------------------------------------------------------------------------------
  @echo \$(BOLD) Build complete for the package \$(BLUE)\$(PACKAGE)\$(BOLD) and its dependencies
  @echo \$(WHITE)
endef

all : $pkg_list
	@\$(call fin_message )
EOF
) > $MKFILE

  cat $MKFILE.tmp >> $MKFILE
  echo "${tab_}Creating Makefile... ${BOLD}DONE${OFF}"

  rm $MKFILE.tmp

}