diff options
author | rahulp13 | 2022-09-17 08:53:01 +0530 |
---|---|---|
committer | rahulp13 | 2022-09-17 08:53:01 +0530 |
commit | 9e5a67c12180c74bcbc9c8e17156961bb1488234 (patch) | |
tree | 6dfbef069ef069e5969d6a93fc41bc0a6b8c3e8e | |
parent | 230cafaff89674816b8d453a8874fcf55730e118 (diff) | |
download | eSim-9e5a67c12180c74bcbc9c8e17156961bb1488234.tar.gz eSim-9e5a67c12180c74bcbc9c8e17156961bb1488234.tar.bz2 eSim-9e5a67c12180c74bcbc9c8e17156961bb1488234.zip |
added SKY130 install scripts
-rwxr-xr-x | Ubuntu/install-eSim-sky130.sh | 449 | ||||
-rw-r--r-- | Windows/esim-setup-script-sky130.nsi | 414 |
2 files changed, 863 insertions, 0 deletions
diff --git a/Ubuntu/install-eSim-sky130.sh b/Ubuntu/install-eSim-sky130.sh new file mode 100755 index 00000000..856a631d --- /dev/null +++ b/Ubuntu/install-eSim-sky130.sh @@ -0,0 +1,449 @@ +#!/bin/bash +#=============================================================================== +# FILE: install-eSim.sh +# +# USAGE: ./install-eSim.sh --install +# OR +# ./install-eSim.sh --uninstall +# +# DESCRIPTION: Installation script for eSim EDA Suite +# +# OPTIONS: --- +# REQUIREMENTS: --- +# BUGS: --- +# NOTES: --- +# AUTHOR: Fahim Khan, Rahul Paknikar, Saurabh Bansode, Sumanto Kar +# ORGANIZATION: eSim Team, FOSSEE, IIT Bombay +# CREATED: Wednesday 15 July 2015 15:26 +# REVISION: Tuesday 13 September 2022 23:50 +#=============================================================================== + +# All variables goes here +config_dir="$HOME/.esim" +config_file="config.ini" +eSim_Home=`pwd` +ngspiceFlag=0 + +## All Functions goes here + +error_exit() { + echo -e "\n\nError! Kindly resolve above error(s) and try again." + echo -e "\nAborting Installation...\n" +} + + +function createConfigFile +{ + + # Creating config.ini file and adding configuration information + # Check if config file is present + if [ -d $config_dir ];then + rm $config_dir/$config_file && touch $config_dir/$config_file + else + mkdir $config_dir && touch $config_dir/$config_file + fi + + echo "[eSim]" >> $config_dir/$config_file + echo "eSim_HOME = $eSim_Home" >> $config_dir/$config_file + echo "LICENSE = %(eSim_HOME)s/LICENSE" >> $config_dir/$config_file + echo "KicadLib = %(eSim_HOME)s/library/kicadLibrary.tar.xz" >> $config_dir/$config_file + echo "IMAGES = %(eSim_HOME)s/images" >> $config_dir/$config_file + echo "VERSION = %(eSim_HOME)s/VERSION" >> $config_dir/$config_file + echo "MODELICA_MAP_JSON = %(eSim_HOME)s/library/ngspicetoModelica/Mapping.json" >> $config_dir/$config_file + +} + + +function installNghdl +{ + + echo "Installing NGHDL..........................." + unzip -o nghdl.zip + cd nghdl/ + chmod +x install-nghdl.sh + + # Do not trap on error of any command. Let NGHDL script handle its own errors. + trap "" ERR + + ./install-nghdl.sh --install # Install NGHDL + + # Set trap again to error_exit function to exit on errors + trap error_exit ERR + + ngspiceFlag=1 + cd ../ + +} + + + +function installSky130Pdk +{ + + echo "Installing SKY130 PDK......................" + + #Extract SKY130 PDK + tar -xJf library/sky130_fd_pr.tar.xz + + # Remove any previous sky130-fd-pdr instance, if any + sudo rm -rf /usr/share/local/sky130_fd_pr + + #Copy SKY130 library + echo "Copying SKY130 PDK........................." + + sudo mkdir -p /usr/share/local/ + sudo mv sky130_fd_pr /usr/share/local/ + + #Change ownership from root to the user + sudo chown -R $USER:$USER /usr/share/local/sky130_fd_pr/ + +} + + +function installKicad +{ + + echo "Installing KiCad..........................." + + #sudo add-apt-repository ppa:js-reynaud/ppa-kicad + kicadppa="reynaud/kicad-4" + findppa=$(grep -h -r "^deb.*$kicadppa*" /etc/apt/sources.list* > /dev/null 2>&1 || test $? = 1) + if [ -z "$findppa" ]; then + echo "Adding KiCad-4 PPA to local apt-repository" + if [[ $(lsb_release -rs) == 20.* ]]; then + sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 83FBAD2D910F124E + sudo add-apt-repository --yes "deb [trusted=yes] http://ppa.launchpad.net/js-reynaud/kicad-4/ubuntu bionic main" + sudo touch /etc/apt/preferences.d/preferences + echo "Package: kicad" | sudo tee -a /etc/apt/preferences.d/preferences > /dev/null + echo "Pin: version 4.0.7*" | sudo tee -a /etc/apt/preferences.d/preferences > /dev/null + echo "Pin-Priority: 501" | sudo tee -a /etc/apt/preferences.d/preferences > /dev/null + sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3B4FE6ACC0B21F32 + sudo add-apt-repository --yes "deb http://archive.ubuntu.com/ubuntu/ bionic main universe" + else + sudo add-apt-repository --yes ppa:js-reynaud/kicad-4 + fi + else + echo "KiCad-4 is available in synaptic" + fi + + sudo apt-get install -y --no-install-recommends kicad=4.0.7* + if [[ $(lsb_release -rs) == 20.* ]]; then + sudo add-apt-repository -ry "deb http://archive.ubuntu.com/ubuntu/ bionic main universe" + fi + +} + + +function installDependency +{ + + set +e # Temporary disable exit on error + trap "" ERR # Do not trap on error of any command + + #Update apt repository + echo "Updating apt index files..................." + sudo apt-get update + + set -e # Re-enable exit on error + trap error_exit ERR + + echo "Installing Xterm..........................." + sudo apt-get install -y xterm + + echo "Installing Psutil.........................." + sudo apt-get install -y python3-psutil + + echo "Installing PyQt5..........................." + sudo apt-get install -y python3-pyqt5 + + echo "Installing Matplotlib......................" + sudo apt-get install -y python3-matplotlib + + echo "Installing Distutils......................." + sudo apt-get install -y python3-distutils + + # Install NgVeri Depedencies + echo "Installing Pip3............................" + sudo apt install -y python3-pip + + echo "Installing Watchdog........................" + pip3 install watchdog + + echo "Installing Hdlparse........................" + pip3 install hdlparse + + echo "Installing Makerchip......................." + pip3 install makerchip-app + + echo "Installing SandPiper Saas.................." + pip3 install sandpiper-saas + +} + + +function copyKicadLibrary +{ + + if [ -d ~/.config/kicad ];then + echo "kicad folder already exists" + else + echo ".config/kicad does not exist" + mkdir ~/.config/kicad + fi + + # Dump KiCad config path + echo "$HOME/.config/kicad" > $eSim_Home/library/supportFiles/kicad_config_path.txt + + #Copy fp-lib-table for switching modes + cp -r library/supportFiles/fp-lib-table ~/.config/kicad/ + cp -r library/supportFiles/fp-lib-table-online ~/.config/kicad/ + echo "fp-lib-table copied in the directory" + + #Extract custom KiCad Library + tar -xJf library/kicadLibrary.tar.xz + + #Copy KiCad libraries + echo "Copying KiCad libraries...................." + + sudo cp -r kicadLibrary/library /usr/share/kicad/ + sudo cp -r kicadLibrary/modules /usr/share/kicad/ + sudo cp -r kicadLibrary/template/* /usr/share/kicad/template/ + + #Copy KiCad library made for eSim + sudo cp -r kicadLibrary/kicad_eSim-Library/* /usr/share/kicad/library/ + + # Full path of 'kicad.pro file' + KICAD_PRO="/usr/share/kicad/template/kicad.pro" + KICAD_ORIGINAL="/usr/share/kicad/template/kicad.pro.original" + + if [ -f "$KICAD_ORIGINAL" ];then + echo "kicad.pro.original file found" + sudo cp -rv kicadLibrary/template/kicad.pro ${KICAD_PRO} + else + echo "Making copy of original file" + sudo cp -rv ${KICAD_PRO}{,.original} + sudo cp -rv kicadLibrary/template/kicad.pro ${KICAD_PRO} + fi + + set +e # Temporary disable exit on error + trap "" ERR # Do not trap on error of any command + + # Remove extracted KiCad Library - not needed anymore + rm -rf kicadLibrary + + set -e # Re-enable exit on error + trap error_exit ERR + + #Change ownership from Root to the User + sudo chown -R $USER:$USER /usr/share/kicad/library/ + +} + + +function createDesktopStartScript +{ + # Generating new esim-start.sh + echo '#!/bin/bash' > esim-start.sh + echo "cd $eSim_Home/src/frontEnd" >> esim-start.sh + echo "python3 Application.py" >> esim-start.sh + + # Make it executable + sudo chmod 755 esim-start.sh + # Copy esim start script + sudo cp -vp esim-start.sh /usr/bin/esim + # Remove local copy of esim start script + rm esim-start.sh + + # Generating esim.desktop file + echo "[Desktop Entry]" > esim.desktop + echo "Version=1.0" >> esim.desktop + echo "Name=eSim" >> esim.desktop + echo "Comment=EDA Tool" >> esim.desktop + echo "GenericName=eSim" >> esim.desktop + echo "Keywords=eda-tools" >> esim.desktop + echo "Exec=esim %u" >> esim.desktop + echo "Terminal=true" >> esim.desktop + echo "X-MultipleArgs=false" >> esim.desktop + echo "Type=Application" >> esim.desktop + getIcon="$config_dir/logo.png" + echo "Icon=$getIcon" >> esim.desktop + echo "Categories=Development;" >> esim.desktop + echo "MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;x-scheme-handler/chrome;video/webm;application/x-xpinstall;" >> esim.desktop + echo "StartupNotify=true" >> esim.desktop + + # Make esim.desktop file executable + sudo chmod 755 esim.desktop + # Copy desktop icon file to share applications + sudo cp -vp esim.desktop /usr/share/applications/ + # Copy desktop icon file to Desktop + cp -vp esim.desktop $HOME/Desktop/ + + set +e # Temporary disable exit on error + trap "" ERR # Do not trap on error of any command + + # Make esim.desktop file as trusted application + gio set $HOME/Desktop/esim.desktop "metadata::trusted" true + # Set Permission and Execution bit + chmod a+x $HOME/Desktop/esim.desktop + + # Remove local copy of esim.desktop file + rm esim.desktop + + set -e # Re-enable exit on error + trap error_exit ERR + + # Copying logo.png to .esim directory to access as icon + cp -vp images/logo.png $config_dir + +} + + +#################################################################### +# MAIN START FROM HERE # +#################################################################### + +### Checking if file is passsed as argument to script + +if [ "$#" -eq 1 ];then + option=$1 +else + echo "USAGE : " + echo "./install-eSim.sh --install" + echo "./install-eSim.sh --uninstall" + exit 1; +fi + +## Checking flags + +if [ $option == "--install" ];then + + set -e # Set exit option immediately on error + set -E # inherit ERR trap by shell functions + + # Trap on function error_exit before exiting on error + trap error_exit ERR + + + 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 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 + createConfigFile + installDependency + installKicad + copyKicadLibrary + installNghdl + installSky130Pdk + createDesktopStartScript + + elif [ $getProxy == "n" -o $getProxy == "N" ];then + echo "Install without proxy" + + # Calling functions + createConfigFile + installDependency + installKicad + copyKicadLibrary + installNghdl + installSky130Pdk + createDesktopStartScript + + if [ $? -ne 0 ];then + echo -e "\n\n\nERROR: Unable to install required packages. Please check your internet connection.\n\n" + exit 0 + fi + + echo "-----------------eSim Installed Successfully-----------------" + echo "Type \"esim\" in Terminal to launch it" + echo "or double click on \"eSim\" icon placed on Desktop" + + else + echo "Please select the right option" + exit 0 + fi + + +elif [ $option == "--uninstall" ];then + echo -n "Are you sure? It will remove eSim completely including KiCad, Makerchip and NGHDL along with their models and libraries (y/n):" + read getConfirmation + if [ $getConfirmation == "y" -o $getConfirmation == "Y" ];then + echo "Removing eSim............................" + sudo rm -rf $HOME/.esim $HOME/Desktop/esim.desktop /usr/bin/esim /usr/share/applications/esim.desktop + echo "Removing KiCad..........................." + sudo apt purge -y kicad + sudo rm -rf /usr/share/kicad + sudo rm -rf $HOME/.config/kicad + rm -f $eSim_Home/library/supportFiles/kicad_config_path.txt + + if [[ $(lsb_release -rs) == 20.* ]]; then + sudo sed -i '/Package: kicad/{:label;N;/Pin-Priority: 501/!blabel};/Pin: version 4.0.7*/d' /etc/apt/preferences.d/preferences + fi + + echo "Removing Makerchip......................." + pip3 uninstall -y hdlparse + pip3 uninstall -y makerchip-app + pip3 uninstall -y sandpiper-saas + + echo "Removing SKY130 PDK......................" + sudo rm -R /usr/share/local/sky130_fd_pr + + echo "Removing NGHDL..........................." + rm -rf library/modelParamXML/Nghdl/* + rm -rf library/modelParamXML/Ngveri/* + cd nghdl/ + if [ $? -eq 0 ];then + chmod +x install-nghdl.sh + ./install-nghdl.sh --uninstall + cd ../ + rm -rf nghdl + if [ $? -eq 0 ];then + echo -e "----------------eSim Uninstalled Successfully----------------" + else + echo -e "\nError while removing some files/directories in \"nghdl\". Please remove it manually" + fi + else + echo -e "\nCannot find \"nghdl\" directory. Please remove it manually" + fi + + elif [ $getConfirmation == "n" -o $getConfirmation == "N" ];then + exit 0 + else + echo "Please select the right option." + exit 0 + fi + +else + echo "Please select the proper operation." + echo "--install" + echo "--uninstall" +fi diff --git a/Windows/esim-setup-script-sky130.nsi b/Windows/esim-setup-script-sky130.nsi new file mode 100644 index 00000000..513650bb --- /dev/null +++ b/Windows/esim-setup-script-sky130.nsi @@ -0,0 +1,414 @@ +;NSIS Modern User Interface
+;Start Menu Folder Selection Example Script
+;Modified by Fahim Khan, Saurabh Bansode, Rahul Paknikar - 14_09_2022
+;Made by eSim Team, FOSSEE, IIT Bombay
+
+;--------------------------------
+;Include Modern UI
+
+ !include "MUI2.nsh"
+ !include "ZipDLL.nsh"
+ !include "x64.nsh"
+;--------------------------------
+
+;--------------------------------
+; StrContains
+; This function does a case sensitive searches for an occurrence of a substring in a string.
+; It returns the substring if it is found.
+; Otherwise it returns null("").
+; Written by kenglish_hi
+; Adapted from StrReplace written by dandaman32
+
+
+Var STR_HAYSTACK
+Var STR_NEEDLE
+Var STR_CONTAINS_VAR_1
+Var STR_CONTAINS_VAR_2
+Var STR_CONTAINS_VAR_3
+Var STR_CONTAINS_VAR_4
+Var STR_RETURN_VAR
+
+Function StrContains
+ Exch $STR_NEEDLE
+ Exch 1
+ Exch $STR_HAYSTACK
+ ; Uncomment to debug
+ ;MessageBox MB_OK 'STR_NEEDLE = $STR_NEEDLE STR_HAYSTACK = $STR_HAYSTACK '
+ StrCpy $STR_RETURN_VAR ""
+ StrCpy $STR_CONTAINS_VAR_1 -1
+ StrLen $STR_CONTAINS_VAR_2 $STR_NEEDLE
+ StrLen $STR_CONTAINS_VAR_4 $STR_HAYSTACK
+ loop:
+ IntOp $STR_CONTAINS_VAR_1 $STR_CONTAINS_VAR_1 + 1
+ StrCpy $STR_CONTAINS_VAR_3 $STR_HAYSTACK $STR_CONTAINS_VAR_2 $STR_CONTAINS_VAR_1
+ StrCmp $STR_CONTAINS_VAR_3 $STR_NEEDLE found
+ StrCmp $STR_CONTAINS_VAR_1 $STR_CONTAINS_VAR_4 done
+ Goto loop
+ found:
+ StrCpy $STR_RETURN_VAR $STR_NEEDLE
+ Goto done
+ done:
+ Pop $STR_NEEDLE ;Prevent "invalid opcode" errors and keep the
+ Exch $STR_RETURN_VAR
+FunctionEnd
+
+!macro _StrContainsConstructor OUT NEEDLE HAYSTACK
+ Push `${HAYSTACK}`
+ Push `${NEEDLE}`
+ Call StrContains
+ Pop `${OUT}`
+!macroend
+
+!define StrContains '!insertmacro "_StrContainsConstructor"'
+
+;--------------------------------
+
+
+;General
+
+!define PRODUCT_NAME "eSim"
+!define PRODUCT_VERSION "2.3"
+!define VERSION "2.3.0.0"
+!define PRODUCT_PUBLISHER "FOSSEE, IIT Bombay"
+!define PRODUCT_WEB_SITE "https://esim.fossee.in/"
+!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
+!define PRODUCT_UNINST_ROOT_KEY "HKLM"
+
+VIAddVersionKey "ProductName" "eSim"
+VIProductVersion "${VERSION}"
+VIFileVersion "${VERSION}"
+VIAddVersionKey "FileVersion" "${VERSION}"
+VIAddVersionKey "CompanyName" "FOSSEE, IIT Bombay"
+VIAddVersionKey "LegalCopyright" "Copyright (C) 2007 Free Software Foundation, Inc."
+VIAddVersionKey "FileDescription" "Installer for eSim EDA Suite"
+
+
+
+;Default installation folder
+ InstallDir "C:\FOSSEE"
+
+;Request application privileges for Admin Rights
+ RequestExecutionLevel admin
+
+;Get installation folder from registry if available
+ InstallDirRegKey HKLM "Software\eSim" ""
+
+!include LogicLib.nsh
+
+Function .onInit
+UserInfo::GetAccountType
+pop $0
+${If} $0 != "admin" ;Require admin rights on NT4+
+ MessageBox mb_iconstop "Administrator rights required!"
+ SetErrorLevel 740 ;ERROR_ELEVATION_REQUIRED
+ Quit
+${EndIf}
+FunctionEnd
+
+;--------------------------------
+;Variables
+ Var StartMenuFolder
+
+;--------------------------------
+;Interface Settings
+ !define MUI_ABORTWARNING
+;--------------------------------
+
+;Pages
+
+ !insertmacro MUI_PAGE_LICENSE "LICENSE.rtf"
+ !insertmacro MUI_PAGE_DIRECTORY
+
+ ;Start Menu Folder Page Configuration
+
+ !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKLM"
+ !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\eSim"
+ !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
+
+ !insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder
+
+ !insertmacro MUI_PAGE_INSTFILES
+
+ !insertmacro MUI_UNPAGE_CONFIRM
+ !insertmacro MUI_UNPAGE_INSTFILES
+
+;--------------------------------
+;Languages
+
+ !insertmacro MUI_LANGUAGE "English"
+
+;--------------------------------
+
+Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
+OutFile "eSim-2.3_installer.exe"
+
+
+Function .onVerifyInstDir
+ ${StrContains} $0 "Program Files" $INSTDIR
+ StrCmp $0 "" notfound
+ MessageBox MB_ICONSTOP|MB_OK \
+ "Installation in 'Program Files' is not allowed, please choose another directory."
+ Abort
+ notfound:
+ ${StrContains} $0 " " $INSTDIR
+ StrCmp $0 "" PathGood
+ MessageBox MB_ICONSTOP|MB_OK \
+ "Installation path containing spaces is not allowed, please choose another directory."
+ Abort
+ PathGood:
+FunctionEnd
+
+
+;Installer Sections
+
+Section -NgspiceSim
+
+ ;Current section needs an additional "size_kb" kilobytes of disk space
+ ;AddSize 2726298
+ AddSize 1593968
+
+ SetOutPath "$EXEDIR"
+
+ File "eSim.7z"
+ File "logo.ico"
+ File "sky130_fd_pr.7z"
+
+ SetOutPath "$INSTDIR"
+
+ ;ADD YOUR OWN FILES HERE...
+ Nsis7z::ExtractWithDetails "$EXEDIR\eSim.7z" "Extracting eSim %s..."
+
+ ;Copying Folder to install directory
+ SetOutPath "$INSTDIR\eSim"
+ ;File /nonfatal /a /r "eSim\"
+
+ ;Store installation folder
+ WriteRegStr HKLM "Software\eSim" "" $INSTDIR
+
+ ;Create eSim config directory
+ CreateDirectory $INSTDIR\eSim\library\config\.esim
+ CopyFiles "$EXEDIR\logo.ico" "$INSTDIR\eSim\library\config\.esim"
+ FileOpen $0 "$INSTDIR\eSim\library\config\.esim\config.ini" w
+ FileWrite $0 `[eSim]$\n`
+ FileWrite $0 `eSim_HOME = $INSTDIR\eSim$\n`
+ FileWrite $0 `LICENSE = %(eSim_HOME)s\LICENSE.rtf$\n`
+ FileWrite $0 `KicadLib = %(eSim_HOME)s\library\kicadLibrary.zip$\n`
+ FileWrite $0 `IMAGES = %(eSim_HOME)s\images$\n`
+ FileWrite $0 `VERSION = %(eSim_HOME)s\VERSION$\n`
+ FileWrite $0 `MODELICA_MAP_JSON = %(eSim_HOME)s\library\ngspicetoModelica\Mapping.json$\n`
+ FileClose $0
+
+ ;Create eSim startup batch file
+ ;FileOpen $0 "$INSTDIR\eSim\eSim.bat" w
+ ;FileWrite $0 `@echo off$\n`
+ ;FileWrite $0 `set HOME=$PROFILE$\n`
+ ;FileWrite $0 `start eSim.exe$\n`
+ ;FileWrite $0 `cd /d %HOME%$\n`
+ ;FileClose $0
+
+ !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
+
+ ;Create shortcuts
+ ;create desktop shortcut
+ CreateShortCut "$PROFILE\..\Public\Desktop\eSim.lnk" "$INSTDIR\eSim\eSim.exe" "" "$INSTDIR\eSim\library\config\.esim\logo.ico" "" SW_SHOWMINIMIZED
+
+
+ SetOutPath "$INSTDIR\eSim\library"
+
+ Nsis7z::ExtractWithDetails "$EXEDIR\sky130_fd_pr.7z" "Extracting SkyWater SKY130 PDK %s..."
+
+ SetOutPath "$INSTDIR"
+
+ !insertmacro MUI_STARTMENU_WRITE_END
+
+ ;Remove not required files
+ Delete "$EXEDIR\eSim.7z"
+ Delete "$EXEDIR\logo.ico"
+ Delete "$EXEDIR\sky130_fd_pr.7z"
+SectionEnd
+
+
+Section -InstallKiCad
+
+ SetOutPath "$EXEDIR"
+ File "kicad-4.0.7-i686.exe"
+
+ SetOutPath "$INSTDIR"
+ SetDetailsPrint both
+ DetailPrint "Installing: KiCad......"
+ SetDetailsPrint listonly
+ ExecWait '"$EXEDIR\kicad-4.0.7-i686.exe" /S /D=$INSTDIR\KiCad'
+ SetDetailsPrint both
+
+ Goto endActiveSync
+ endActiveSync:
+
+ ;Remove not required files
+ Delete "$EXEDIR\kicad-4.0.7-i686.exe"
+ Delete "$PROFILE\..\Public\Desktop\KiCad.lnk"
+
+ EnVar::SetHKLM
+ EnVar::AddValue "Path" "$INSTDIR\KiCad\bin"
+ Pop $0
+ DetailPrint "EnVar::AddValue returned=|$0|"
+
+ ZipDLL::extractall "$INSTDIR\eSim\library\kicadLibrary.zip" "$INSTDIR\eSim\library\"
+
+ ;CopyFiles "$INSTDIR\eSim\library\kicadLibrary\library\*" "$INSTDIR\KiCad\share\kicad\library\"
+
+ ;Copy KiCad library made for eSim
+ CopyFiles "$INSTDIR\eSim\library\kicadLibrary\kicad_eSim-Library\*" "$INSTDIR\KiCad\share\kicad\library\"
+
+ CopyFiles "$INSTDIR\eSim\library\kicadLibrary\modules\*" "$INSTDIR\KiCad\share\kicad\modules\"
+
+ CopyFiles "$INSTDIR\eSim\library\kicadLibrary\template\*" "$INSTDIR\KiCad\share\kicad\template\"
+
+
+ ;Remove older KiCad config files (if any).
+ RMDir /r "$PROFILE\AppData\Roaming\kicad"
+
+ CreateDirectory "$PROFILE\AppData\Roaming\kicad"
+ CopyFiles "$INSTDIR\eSim\library\supportFiles\fp-lib-table" "$PROFILE\AppData\Roaming\kicad\"
+ CopyFiles "$INSTDIR\eSim\library\supportFiles\fp-lib-table-online" "$PROFILE\AppData\Roaming\kicad\"
+
+ FileOpen $0 "$INSTDIR\eSim\library\supportFiles\kicad_config_path.txt" w
+ FileWrite $0 `$PROFILE\AppData\Roaming\kicad$\n`
+ FileClose $0
+
+ ;Remove extracted KiCad Library - not needed anymore
+ RMDir /r "$INSTDIR\eSim\library\kicadLibrary"
+
+SectionEnd
+
+
+Section -AdditionalIcons
+
+ SetOutPath "$INSTDIR"
+ CreateDirectory "$SMPROGRAMS\eSim"
+ CreateShortCut "$SMPROGRAMS\eSim\Uninstall.lnk" "$INSTDIR\eSim\uninst-eSim.exe"
+
+SectionEnd
+
+
+!include "nghdl-setup-script.nsi"
+
+
+Section -InstallMakerchip
+
+ SetOutPath "$EXEDIR"
+ File "makerchip.7z"
+
+ SetOutPath $INSTDIR
+ Nsis7z::ExtractWithDetails "$EXEDIR\makerchip.7z" "Extracting Makerchip %s..."
+ CopyFiles "$INSTDIR\makerchip\*" "$INSTDIR\MSYS\mingw64\bin"
+
+ RMDir /r "$INSTDIR\makerchip"
+ Delete "$EXEDIR\makerchip.7z"
+
+SectionEnd
+
+
+Section -Post
+
+ WriteUninstaller "$INSTDIR\eSim\uninst-eSim.exe"
+ WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
+ WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\eSim\uninst-eSim.exe"
+ WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
+ WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
+ WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
+
+SectionEnd
+
+
+;Function un.onUninstSuccess
+; HideWindow
+; MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer."
+;FunctionEnd
+
+Function un.onInit
+ MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove $(^Name) and all of its components?" IDYES +2
+ Abort
+FunctionEnd
+
+
+Section Uninstall
+
+ ; Set to HKLM
+ EnVar::SetHKLM
+
+ GetFullPathName $1 $INSTDIR\..\eSim\nghdl\src
+ EnVar::DeleteValue "Path" $1
+ Pop $0
+ DetailPrint "EnVar::AddValue returned=|$0|"
+
+ GetFullPathName $1 $INSTDIR\..\MSYS\mingw64\bin
+ EnVar::DeleteValue "Path" $1
+ Pop $0
+ DetailPrint "EnVar::AddValue returned=|$0|"
+
+ GetFullPathName $1 $INSTDIR\..\MSYS\usr\bin
+ EnVar::DeleteValue "Path" $1
+ Pop $0
+ DetailPrint "EnVar::AddValue returned=|$0|"
+
+ ;GetFullPathName $1 $INSTDIR\..\mingw64\GHDL\bin
+ ;EnVar::DeleteValue "Path" $1
+ ;Pop $0
+ ;DetailPrint "EnVar::AddValue returned=|$0|"
+
+ GetFullPathName $1 $INSTDIR\..\nghdl-simulator\bin
+ EnVar::DeleteValue "Path" $1
+ Pop $0
+ DetailPrint "EnVar::AddValue returned=|$0|"
+
+ RMDir /r "$INSTDIR\..\MSYS"
+ RMDir /r "$INSTDIR\..\nghdl-simulator"
+ RMDir /r "$INSTDIR\..\eSim\nghdl"
+
+ ;Note that in uninstaller code, $INSTDIR contains the directory where the uninstaller lies
+
+ Delete "$INSTDIR\uninst-eSim.exe"
+ Delete "$SMPROGRAMS\eSim\Uninstall.lnk"
+
+ ;Removing Env Variable for KiCad
+ GetFullPathName $1 $INSTDIR\..\KiCad\bin
+ EnVar::DeleteValue "Path" $1
+ Pop $0
+ DetailPrint "EnVar::AddValue returned=|$0|"
+
+ ;Remove KiCad config
+ RMDir /r "$PROFILE\AppData\Roaming\kicad"
+
+ ;Removing KiCad
+ ExecWait '"$INSTDIR\..\KiCad\uninstaller.exe" /S'
+
+ Goto endActiveSync
+
+ endActiveSync:
+
+ ;Removing eSim
+ RMDir /r "$INSTDIR\eSim\library\config\.esim"
+ RMDir /r "$INSTDIR\eSim\library\config\.nghdl"
+ RMDir /r "$INSTDIR\eSim\library\config"
+ RMDir "$SMPROGRAMS\eSim"
+ RMDir /r "$INSTDIR\..\eSim"
+ RMDir /r "$INSTDIR\..\KiCad"
+ Delete "$PROFILE\..\Public\Desktop\eSim.lnk"
+
+ DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
+ ;SetAutoClose true
+
+SectionEnd
+
+
+;Descriptions--------------------
+
+ ;Language strings
+ ;LangString DESC_NgspiceSim ${LANG_ENGLISH} "Ngspice is a mixed-level/mixed-signal circuit simulator. Its code is based on three open source software packages: Spice3f5, Cider1b1 and XSPICE. Ngspice is part of gEDA project, a full GPL'd suite of Electronic Design Automation tools."
+
+ ;Assign language strings to sections
+ ;!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
+ ;!insertmacro MUI_DESCRIPTION_TEXT ${NgspiceSim} $(DESC_NgspiceSim)
+ ;!insertmacro MUI_FUNCTION_DESCRIPTION_END
+
+;--------------------------------
|