summaryrefslogtreecommitdiff
path: root/install-nghdl.sh
diff options
context:
space:
mode:
Diffstat (limited to 'install-nghdl.sh')
-rwxr-xr-xinstall-nghdl.sh258
1 files changed, 161 insertions, 97 deletions
diff --git a/install-nghdl.sh b/install-nghdl.sh
index eade469..f14116e 100755
--- a/install-nghdl.sh
+++ b/install-nghdl.sh
@@ -3,7 +3,9 @@
#
# FILE: install-nghdl.sh
#
-# USAGE: ./install-nghdl.sh
+# USAGE: ./install-nghdl.sh --install
+# or
+# ./install-nghdl.sh --uninstall
#
# DESCRIPTION: It is installation script for ngspice and ghdl work (nghdl).
#
@@ -11,13 +13,14 @@
# REQUIREMENTS: ---
# BUGS: ---
# NOTES: ---
-# AUTHOR: Fahim Khan , fahim.elex@gmail.com
+# AUTHOR: Fahim Khan, Rahul Paknikar
# ORGANIZATION: eSim, FOSSEE group at IIT Bombay
-# CREATED: Tuesday 02 December 2014 17:01
+# CREATED: Wednesday 23 October 2019 14:30
# REVISION: ---
#===============================================================================
ngspice="ngspice-nghdl"
+ghdl="ghdl-0.36"
config_dir="$HOME/.nghdl"
config_file="config.ini"
src_dir=`pwd`
@@ -28,29 +31,63 @@ timestamp=`echo $sysdate|awk '{print $3"_"$2"_"$6"_"$4 }'`
#All functions goes here
-function addghdlPPA
+function installDependency
{
- ghdlppa="pgavin/ghdl"
- #Checking if ghdl ppa is already exist
- grep -h "^deb.*$ghdlppa*" /etc/apt/sources.list.d/* > /dev/null 2>&1
- if [ $? -ne 0 ]
- then
- echo "Adding ghdl PPA to install latest ghdl version"
- sudo add-apt-repository -y ppa:pgavin/ghdl
- sudo apt-get update
+
+ echo "Updating indexes to install latest versions......"
+ sudo apt-get update
+
+ echo "Installing dependencies for ghdl-0.36 LLVM......."
+ echo "Installing make.................................."
+ sudo apt-get install -y make
+ echo "Installing gnat-5.................................."
+ sudo apt-get install -y gnat-5
+ echo "Installing llvm.................................."
+ sudo apt-get install -y llvm
+ echo "Installing clang.................................."
+ sudo apt-get install -y clang
+ echo "Installing zlib1g-dev.................................."
+ sudo apt-get install -y zlib1g-dev
+ echo "Installing xterm.................................."
+ sudo apt-get install -y xterm
+
+ grep -h "ghdl" /usr/local/bin/ghdl > /dev/null
+ if [ $? -ne 0 ]; then
+ tar -xzvf ghdl-0.36.tar.gz -C $HOME
+ if [ "$?" == 0 ]; then
+ echo "ghdl-0.36 LLVM successfully extracted to $HOME......"
+ echo "Changing directory to ghdl-0.36 LLVM installation..."
+ cd $HOME/ghdl-0.36
+ echo "Configuring ghdl-0.36 build as per requirements....."
+ #Other configure flags can be found at - https://github.com/ghdl/ghdl/blob/master/configure
+ sudo ./configure --with-llvm-config
+ echo "Building the install file for ghdl-0.36 LLVM....."
+ sudo make
+ echo "Installing ghdl-0.36 LLVM....."
+ sudo make install
+ echo "Removing unused part of ghdl-0.36 LLVM....."
+ sudo rm -rf ../ghdl-0.36
else
- echo "ghdl is available in synaptic"
+ echo "Unable to extract ghdl-0.36 LLVM"
+ echo "Exiting installation"
+ exit 1
fi
-}
-
-function installDependency
-{
- echo "Installing ghdl.................................."
- sudo apt-get install -y ghdl
- echo "Installing flex.................................."
- sudo apt-get install -y flex
- echo "Installing bison................................."
- sudo apt-get install -y bison
+ else
+ echo "ghdl already exists....."
+ echo "Leaving ghdl-0.36 LLVM installation"
+ fi
+
+ echo "Installing flex.................................."
+ sudo apt-get install -y flex
+ echo "Installing bison................................."
+ sudo apt-get install -y bison
+
+ # Specific dependency for nvidia graphic cards
+ echo "Installing graphics dependency for ngspice souce build"
+ echo "Installing libxaw7................................"
+ sudo apt-get install libxaw7
+ echo "Installing libxaw7-dev............................"
+ sudo apt-get install libxaw7-dev
}
@@ -59,15 +96,12 @@ function installNgspice
echo "Installing ngspice..................................."
#Checking if ngspice-nghdl directory is already present in Home directory
if [ -d $HOME/$ngspice ];then
- echo "$ngspice directory already exist"
+ echo "$ngspice directory already exists at $HOME"
echo "Leaving ngspice installation"
-
-
else
-
#Extracting Ngspice to Home Directory
+ cd $src_dir
tar -xzvf $ngspice.tar.gz -C $HOME
-
if [ "$?" == 0 ];then
echo "Ngspice extracted sucessfuly to $HOME "
#change to ngspice-nghdl directory
@@ -81,19 +115,34 @@ function installNgspice
echo "Installing Ngspice....."
echo "------------------------------------"
sleep 5
- ../configure --enable-xspice --disable-debug --prefix=$HOME/$ngspice/install_dir/ --exec-prefix=$HOME/$ngspice/install_dir/
-
- #dirty fix for adding patch to ngspice base code
- cp $src_dir/src/outitf.c $HOME/$ngspice/src/frontend
+ ../configure --enable-xspice --disable-debug --prefix=$HOME/$ngspice/install_dir/ --exec-prefix=$HOME/$ngspice/install_dir/
+
+ #dirty fix for adding patch to ngspice base code
+ cp $src_dir/src/outitf.c $HOME/$ngspice/src/frontend
make
make install
if [ "$?" == 0 ];then
- echo "Ngspice Installed sucessfully"
+ echo "Removing previously Installed Ngspice (if any)......"
+ sudo apt-get remove -y ngspice
+
+ echo "Ngspice Installed sucessfully......"
+ echo "Adding softlink for the installed ngspice......"
+
+ sudo ln -s $HOME/$ngspice/install_dir/bin/ngspice /usr/bin/ngspice
+ if [ "$?" == 0 ];then
+ echo "failed to add softlink"
+ echo "ngspice already installed at /usr/bin/ngspice..."
+ echo "Remove earlier installations and try again..."
+ else
+ echo "Added softlink for ngspice"
+ fi
+
else
echo "There was some error in installing ngspice"
fi
+
else
echo "Unable to extract ngspice tar file"
exit 1;
@@ -125,7 +174,6 @@ function createConfigFile
function createSoftLink
{
-
## Creating softlink
cd /usr/local/bin
if [[ -L nghdl ]];then
@@ -138,76 +186,92 @@ function createSoftLink
sudo ln -sf $src_dir/src/ngspice_ghdl.py nghdl
fi
cd $pwd
-
}
#####################################################################
# Script start from here #
#####################################################################
-echo "Enter proxy details if you are connected to internet thorugh proxy"
-
-echo -n "Is your internet connection behind proxy? (y/n): "
-read getProxy
-if [ $getProxy == "y" -o $getProxy == "Y" ];then
- echo -n 'Proxy hostname :'
- read proxyHostname
-
- echo -n 'Proxy Port :'
- read proxyPort
-
- echo -n username@$proxyHostname:$proxyPort :
- read username
-
- echo -n 'Password :'
- read -s passwd
-
- unset http_proxy
- unset https_proxy
- unset HTTP_PROXY
- unset HTTPS_PROXY
- unset ftp_proxy
- unset FTP_PROXY
-
- export http_proxy=http://$username:$passwd@$proxyHostname:$proxyPort
- export https_proxy=http://$username:$passwd@$proxyHostname:$proxyPort
- export HTTP_PROXY=http://$username:$passwd@$proxyHostname:$proxyPort
- export HTTPS_PROXY=http://$username:$passwd@$proxyHostname:$proxyPort
- export ftp_proxy=http://$username:$passwd@$proxyHostname:$proxyPort
- export FTP_PROXY=http://$username:$passwd@$proxyHostname:$proxyPort
-
- echo "Install with proxy"
- #Calling functions
- addghdlPPA
- installDependency
- if [ $? -ne 0 ];then
- echo -e "\n\n\nERROR: Unable to install required packages. Please check your internet connection.\n\n"
- exit 0
- fi
- installNgspice
- createConfigFile
- createSoftLink
-
-elif [ $getProxy == "n" -o $getProxy == "N" ];then
- echo "Install without proxy"
-
- #Calling functions
- addghdlPPA
- installDependency
- if [ $? -ne 0 ];then
- echo -e "\n\n\nERROR: Unable to install required packages. Please check your internet connection.\n\n"
- exit 0
- fi
- installNgspice
- createConfigFile
- createSoftLink
+###Checking if file is passsed as argument to script
+if [ "$#" -eq 1 ];then
+ option=$1
else
- echo "Please select the right option"
- exit 0
-
+ echo "USAGE : "
+ echo "./install.sh --install"
+ exit 1;
fi
-
-
-
+##Checking flags
+
+if [ $option == "--install" ];then
+ echo "Enter proxy details if you are connected to internet thorugh proxy"
+
+ echo -n "Is your internet connection behind proxy? (y/n): "
+ read getProxy
+ if [ $getProxy == "y" -o $getProxy == "Y" ];then
+ echo -n 'Proxy hostname :'
+ read proxyHostname
+
+ echo -n 'Proxy Port :'
+ read proxyPort
+
+ echo -n username@$proxyHostname:$proxyPort :
+ read username
+
+ echo -n 'Password :'
+ read -s passwd
+
+ unset http_proxy
+ unset https_proxy
+ unset HTTP_PROXY
+ unset HTTPS_PROXY
+ unset ftp_proxy
+ unset FTP_PROXY
+
+ export http_proxy=http://$username:$passwd@$proxyHostname:$proxyPort
+ export https_proxy=http://$username:$passwd@$proxyHostname:$proxyPort
+ export HTTP_PROXY=http://$username:$passwd@$proxyHostname:$proxyPort
+ export HTTPS_PROXY=http://$username:$passwd@$proxyHostname:$proxyPort
+ export ftp_proxy=http://$username:$passwd@$proxyHostname:$proxyPort
+ export FTP_PROXY=http://$username:$passwd@$proxyHostname:$proxyPort
+
+ echo "Install with proxy"
+ #Calling functions
+ installDependency
+ if [ $? -ne 0 ];then
+ echo -e "\n\n\nERROR: Unable to install required packages. Please check your internet connection.\n\n"
+ exit 0
+ fi
+ installNgspice
+ createConfigFile
+ createSoftLink
+
+ elif [ $getProxy == "n" -o $getProxy == "N" ];then
+ echo "Install without proxy"
+
+ #Calling functions
+ installDependency
+ if [ $? -ne 0 ];then
+ echo -e "\n\n\nERROR: Unable to install required packages. Please check your internet connection.\n\n"
+ exit 0
+ fi
+ installNgspice
+ createConfigFile
+ createSoftLink
+
+elif [ $option == "--uninstall" ];then
+ echo "Deleting Files............"
+ sudo rm -rf $HOME/ngspice-nghdl $HOME/.nghdl /usr/share/kicad/library/eSim_Nghdl.lib /usr/local/bin/nghdl /usr/bin/ngspice
+ echo "Removing gnat-5............"
+ sudo apt-get remove -y gnat-5
+ echo "Removing llvm............"
+ sudo apt-get remove -y llvm
+ echo "Removing ghdl............"
+ sudo rm -rf /usr/local/bin/ghdl /usr/local/lib/ghdl /usr/local/bin/ghdl1-llvm /usr/local/lib/libghdlvpi.so
+
+else
+ echo "Please select the proper operation."
+ echo "--install"
+ echo "--uninstall"
+fi \ No newline at end of file