ngspice/compile_linux.sh

82 lines
3.1 KiB
Bash
Raw Normal View History

2018-05-27 14:44:22 +02:00
#!/bin/bash
# ngspice build script for Linux, release or debug version, 64 bit
# compile_linux.sh <d>
2018-05-27 14:44:22 +02:00
# Procedure:
# Install gcc, bison, flex, libtool, autoconf, automake,
# libx11 and libx11-dev (headers), libXaw and libXaw-dev, libreadline and dev
2021-11-01 13:47:31 +01:00
# xmu, xet, xt, libxft, libxrender, libfreetype, libfontconfig
# for details please see the ngspice manual, chapt. 32.1.
2018-05-27 14:44:22 +02:00
# Declare 'compile_linux.sh' executable and start compiling with
# './compile_linux.sh' or './compile_linux.sh d' from the ngspice directory.
2023-04-26 15:09:48 +02:00
# Centos users may need to add -std=c99 to the CFLAGS in the ../configure
# statement.
2018-05-27 14:44:22 +02:00
# Options:
2023-04-26 15:09:48 +02:00
# --enable-osdi will enable the OSDI interface, which, in conjuction with the
# external OpenVAF Verilig-A compiler, will allow access to advanced compact
# device models writen in Verilog-A.
# Please see the ngspice manual, chapt. 13, for more info on using OSDI/OpenVAF.
2018-05-27 14:44:22 +02:00
# CIDER, XSPICE, and OpenMP may be selected at will.
# --disable-debug will give O2 optimization (versus O0 for debug) and removes all debugging info.
# ngspice as shared library:
# Replace --with-x by --with-ngshared in line ../configure ... .
# Add (optionally) --enable-relpath to avoid absolute paths when searching for code models.
# It might be necessary to uncomment and run ./autogen.sh .
2020-02-29 18:13:05 +01:00
SECONDS=0
if test "$1" = "d"; then
if [ ! -d "debug" ]; then
mkdir debug
if [ $? -ne 0 ]; then echo "mkdir debug failed"; exit 1 ; fi
2018-05-27 14:44:22 +02:00
fi
else
if [ ! -d "release" ]; then
mkdir release
if [ $? -ne 0 ]; then echo "mkdir release failed"; exit 1 ; fi
fi
fi
# If compiling sources from git, you may need to uncomment the following two lines:
./autogen.sh
if [ $? -ne 0 ]; then echo "./autogen.sh failed"; exit 1 ; fi
echo
if test "$1" = "d"; then
cd debug
if [ $? -ne 0 ]; then echo "cd debug failed"; exit 1 ; fi
echo "configuring for 64 bit debug"
2018-05-27 14:44:22 +02:00
echo
prototype for Verilog-A integration using OSDI and OpenVAF This initial prototype is capable of performing DC, transient and AC analysis. Not all features of OSDI are supported yet and there are still some open questions regarding ngspice integration. However many usecase already work very well and a large amount of CMC models are supported. The biggest missing feature right now is noise analysis. test: test case for diode DC working with SH test: add transient analysis to osdi_diode test test: added docu text to osdi_diode test test: added test case directories fix: bug in osdi_load test: small change to netlist fix: implement DEVunsetup fix: correct behaviour for MODEINITSMSIG test: osdi diode enable all analysis modes removed netlist ignoring test results added the build of the diode shared object to the python test script deleting old stuff and always rebuilding the shared object added diode_va.c to the repo preparing CI Create .gitlab-ci.yml file (testing) add res, cap and multiple devices test feat: use osdi command to load files Previously OSDI shared object files were loaded from fixed directories. This was unreliable, inconvenient and caused conflicts with XSPICE. This commit remove the old loading mechanism and instead introduces the `osdi` command that can load (a list of) osdi object files (like the codemodel command for XSPICE). A typical usecase will use this as a precommand in the netlist: .control pre_osdi foo.osdi .endc If the specified file is a relative path it is first resolved relative to the parent directory of the netlist. If the osdi command is invoked from the interactive prompt the file is resolved relative to the current working directory instead. This commit also moves osdi from the devices folder to the root src folder like xspice. This better reflects the role of the code as users may otherthwise (mistakenly) assume that osdi is just another handwritten model. test: update tests to new command fix: do not ignore first parameter feat: implement log message callback fix: don't generate ddt matrix/rhs in DC sweep fix: missing linker script update to osdi 0.3 (testing) simplify test cases, fix bug (testing) multiple devices test improvement (testig) node collapsing bugfix test: increase tolerance in tests feat: update to newest OSDI header fix: temperature update dt behaviour fix: ignored models fix: compilation script fix: allow hicum/l2 to compile with older c++ compilers fix: set required compiler flags for osdi fix: disable x by default fix: add missing SPICE functions fix: update diode to latest ngspice version feat: implement python CMC test runner doc: Add README_OSDI.md fix: make testing script work with python version before 3.9 fix: free of undefined local variable fix: do not calculate time derivative during tran op update osdi version fixes for compilation on windows
2022-04-20 18:12:10 +02:00
../configure --with-x --enable-xspice --enable-cider --enable-predictor --enable-osdi --with-readline=yes --enable-openmp CFLAGS="-g -m64 -O0 -Wall -Wno-unused-but-set-variable" LDFLAGS="-m64 -g"
2018-05-27 14:44:22 +02:00
else
cd release
if [ $? -ne 0 ]; then echo "cd release failed"; exit 1 ; fi
echo "configuring for 64 bit release"
2018-05-27 14:44:22 +02:00
echo
prototype for Verilog-A integration using OSDI and OpenVAF This initial prototype is capable of performing DC, transient and AC analysis. Not all features of OSDI are supported yet and there are still some open questions regarding ngspice integration. However many usecase already work very well and a large amount of CMC models are supported. The biggest missing feature right now is noise analysis. test: test case for diode DC working with SH test: add transient analysis to osdi_diode test test: added docu text to osdi_diode test test: added test case directories fix: bug in osdi_load test: small change to netlist fix: implement DEVunsetup fix: correct behaviour for MODEINITSMSIG test: osdi diode enable all analysis modes removed netlist ignoring test results added the build of the diode shared object to the python test script deleting old stuff and always rebuilding the shared object added diode_va.c to the repo preparing CI Create .gitlab-ci.yml file (testing) add res, cap and multiple devices test feat: use osdi command to load files Previously OSDI shared object files were loaded from fixed directories. This was unreliable, inconvenient and caused conflicts with XSPICE. This commit remove the old loading mechanism and instead introduces the `osdi` command that can load (a list of) osdi object files (like the codemodel command for XSPICE). A typical usecase will use this as a precommand in the netlist: .control pre_osdi foo.osdi .endc If the specified file is a relative path it is first resolved relative to the parent directory of the netlist. If the osdi command is invoked from the interactive prompt the file is resolved relative to the current working directory instead. This commit also moves osdi from the devices folder to the root src folder like xspice. This better reflects the role of the code as users may otherthwise (mistakenly) assume that osdi is just another handwritten model. test: update tests to new command fix: do not ignore first parameter feat: implement log message callback fix: don't generate ddt matrix/rhs in DC sweep fix: missing linker script update to osdi 0.3 (testing) simplify test cases, fix bug (testing) multiple devices test improvement (testig) node collapsing bugfix test: increase tolerance in tests feat: update to newest OSDI header fix: temperature update dt behaviour fix: ignored models fix: compilation script fix: allow hicum/l2 to compile with older c++ compilers fix: set required compiler flags for osdi fix: disable x by default fix: add missing SPICE functions fix: update diode to latest ngspice version feat: implement python CMC test runner doc: Add README_OSDI.md fix: make testing script work with python version before 3.9 fix: free of undefined local variable fix: do not calculate time derivative during tran op update osdi version fixes for compilation on windows
2022-04-20 18:12:10 +02:00
../configure --with-x --enable-xspice --enable-cider --enable-predictor --enable-osdi --with-readline=yes --enable-openmp --disable-debug CFLAGS="-m64 -O2" LDFLAGS="-m64 -s"
2018-05-27 14:44:22 +02:00
fi
if [ $? -ne 0 ]; then echo "../configure failed"; exit 1 ; fi
echo
# make clean is required for properly making the code models
echo "cleaning (see make_clean.log)"
make clean 2>&1 -j8 | tee make_clean.log
exitcode=${PIPESTATUS[0]}
if [ $exitcode -ne 0 ]; then echo "make clean failed"; exit 1 ; fi
echo "compiling (see make.log)"
make 2>&1 -j8 | tee make.log
exitcode=${PIPESTATUS[0]}
if [ $exitcode -ne 0 ]; then echo "make failed"; exit 1 ; fi
# Install to /usr/local
2018-05-27 14:44:22 +02:00
echo "installing (see make_install.log)"
make install 2>&1 | tee make_install.log
exitcode=${PIPESTATUS[0]}
if [ $exitcode -ne 0 ]; then echo "make install failed"; exit 1 ; fi
2020-02-29 18:13:05 +01:00
ELAPSED="Elapsed compile time: $(($SECONDS / 3600))hrs $((($SECONDS / 60) % 60))min $(($SECONDS % 60))sec"
echo
echo $ELAPSED
2018-05-27 14:44:22 +02:00
echo "success"
exit 0