#!/bin/bash

# installadl
# this assumes you have a complete ArchProj directory hierarchy installed, with then
# archTools folders containing correct source etc code
# it populates the architecture folders by copying the common source into the folders
# also populates the various tools folders with necessary common code (by copying from kdLibrary)

echo "installadl 0.1v0"
echo

#first find the path to the current directory
archpath="${PWD}"
#echo "We're in directory $archpath"

#################### set up the tools ######################

echo "setting up tools:"

# no need to loop through the tools - we know what they are
# simpleADL
cd "$archpath/archTools/simpleADL/"
      
echo "copying files for simpleADL..."

#queues
cp   $archpath/kdLibrary/simpleQueues/queues.c queues.c 
cp   $archpath/kdLibrary/simpleQueues/queues.h queues.h 
#utilities
cp   $archpath/kdLibrary/utilities/utilities.c utilities.c 
cp   $archpath/kdLibrary/utilities/utilities.h utilities.h 
cp   $archpath/kdLibrary/utilities/types.h types.h 
#symbol
cp   $archpath/kdLibrary/simpleSymbol/symbol.c symbol.c  
cp   $archpath/kdLibrary/simpleSymbol/symbol.h  symbol.h 
#tokeniser
cp   $archpath/kdLibrary/simpleTokeniser/Tokens.c Tokens.c  
cp   $archpath/kdLibrary/simpleTokeniser/Tokens.h  Tokens.h 
cp   $archpath/kdLibrary/simpleTokeniser/TokName.c TokName.c 
cp   $archpath/kdLibrary/simpleTokeniser/TokPrivate.h TokPrivate.h  
cp   $archpath/kdLibrary/simpleTokeniser/TokUtilities.c TokUtilities.c 

###################### build the tools ######################

echo
echo "Making simpleADL..."
# now let's make simpleADL with its makefile
make clean
make

#copy result into /usr/local/bin

echo
echo "Copying simpleADL into /usr/local/bin/.. as sADL"

sudo cp   sADL /usr/local/bin/

cd ..

cd "$archpath/archTools/simpleAsm/"

echo "copying files  for simpleAsm..."

#queues
cp   $archpath/kdLibrary/simpleQueues/queues.c queues.c 
cp   $archpath/kdLibrary/simpleQueues/queues.h queues.h 
#utilities
cp   $archpath/kdLibrary/utilities/utilities.c utilities.c 
cp   $archpath/kdLibrary/utilities/utilities.h utilities.h 
cp   $archpath/kdLibrary/utilities/types.h types.h 
#symbol
cp   $archpath/kdLibrary/simpleSymbol/symbol.c symbol.c  
cp   $archpath/kdLibrary/simpleSymbol/symbol.h  symbol.h 
#tokeniser
cp   $archpath/kdLibrary/simpleTokeniser/Tokens.c Tokens.c  
cp   $archpath/kdLibrary/simpleTokeniser/Tokens.h  Tokens.h 
cp   $archpath/kdLibrary/simpleTokeniser/TokName.c TokName.c 
cp   $archpath/kdLibrary/simpleTokeniser/TokPrivate.h TokPrivate.h  
cp   $archpath/kdLibrary/simpleTokeniser/TokUtilities.c TokUtilities.c 

echo
echo "making simpleAsm..."

# now let's make simpleAsm with its makefile
make clean
make

#copy result into /usr/local/bin

echo
echo "Copying simpleAsm into /usr/local/bin/.. as sAsm"
sudo cp   sAsm /usr/local/bin/

cd ..


cd "$archpath/archTools/simpleModel/"
echo "copying files  for simpleModel..."
#utilities
cp   $archpath/kdLibrary/utilities/utilities.c utilities.c 
cp   $archpath/kdLibrary/utilities/utilities.h utilities.h 
cp   $archpath/kdLibrary/utilities/types.h types.h

# now let's make simpleModel with its makefile
echo
echo "Making simpleModel..."
make clean
make

#copy result into /usr/local/bin

echo
echo "Copying simpleModel into /usr/local/bin/.. as sModel"
sudo cp   sModel /usr/local/bin/


cd ..

#################### build all the architectures ######################

echo 
echo
echo "listing architectures:"
cd "$archpath/archModels"

# loop through the list of directories
for f in *; do
    if [[ -d $f ]]; then
        # $f is a directory
        # need to copy stuff into the 'projects/asm' folder
        echo
        echo "$f..."
        cd "$archpath/archModels/$f/projects/asm/"
        
        #symlinks don't work in 'make' - that is, the touchtime of the referenced file isn't looked at
        # so we need to copy things.
        echo "copying files for asm..."
		#queues
		cp   $archpath/kdLibrary/simpleQueues/queues.c queues.c 
		cp   $archpath/kdLibrary/simpleQueues/queues.h queues.h 
		#utilities
		cp   $archpath/kdLibrary/utilities/utilities.c utilities.c 
		cp   $archpath/kdLibrary/utilities/utilities.h utilities.h 
		cp   $archpath/kdLibrary/utilities/types.h types.h 
		#symbol
		cp   $archpath/kdLibrary/simpleSymbol/symbol.c symbol.c  
		cp   $archpath/kdLibrary/simpleSymbol/symbol.h  symbol.h 
		#tokeniser
		cp   $archpath/kdLibrary/simpleTokeniser/Tokens.c Tokens.c  
		cp   $archpath/kdLibrary/simpleTokeniser/Tokens.h  Tokens.h 
		cp   $archpath/kdLibrary/simpleTokeniser/TokName.c TokName.c 
		cp   $archpath/kdLibrary/simpleTokeniser/TokPrivate.h TokPrivate.h  
		cp   $archpath/kdLibrary/simpleTokeniser/TokUtilities.c TokUtilities.c 
        
        # symlinks to stuff from assembler
        cp   $archpath/archTools/simpleAsm/asmmain.c asmmain.c 
        cp   $archpath/archTools/simpleAsm/asmDefinitions.h asmDefinitions.h 

        # back to the upper level
        cd "$archpath/archModels"
        
        # copy source into model
        cd "$archpath/archModels/$f/projects/model/"
        
        echo "copying files for model..."
		#utilities
		cp   $archpath/kdLibrary/utilities/utilities.c utilities.c 
		cp   $archpath/kdLibrary/utilities/utilities.h utilities.h 
		cp   $archpath/kdLibrary/utilities/types.h types.h		 
		#simpleModel
        cp   $archpath/archTools/simpleModel/modelmain.c modelmain.c 
		
		# run simpleADL on this architecture, creating files in projects/asm and projects/model
		echo
		echo "Running simpleADL to create the architecture's asm and model source and header files..."
		sADL $archpath/archModels/$f
		
		echo
		echo "Making the assembler and copying to /usr/local/bin"
		cd ../asm
		make clean
		make
		
		echo 
		echo "Making the model and copying to /usr/local/bin"
		cd ../model
		make clean
		make
		
        # back to the upper level
        cd "$archpath/archModels"

    fi
done

cd ..


echo
echo "All done."
echo

