blob: d29ff4c10c02e8928c688ff2af77f32b412f2c7b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
|
#!/bin/bash
set -x
set -e
EMSCRIPTEN_PATH="PUT YOUR EMSCRIPTEN PATH HERE "
OPTIMIZE="-O2 -s USE_TYPED_ARRAYS=2 -s DISABLE_EXCEPTION_CATCHING=0 "
CCP="$EMSCRIPTEN_PATH/em++"
CC="$EMSCRIPTEN_PATH/emcc"
CFLAGS="$OPTIMIZE -DEMSCRIPTEN -DUNIX -DNDEBUG -Dlinux -DSPICE_3f -DPREDICTOR -DAN_pz -DAN_disto -DAN_noise -DHAS_STDLIB -fPIC -I./ -I../include -I../../include -I../Include "
CCFLAGS="$CFLAGS -std=c++98"
JFET(){
cd models-spice3f5/jfet
$CCP $CCFLAGS -I../Include ../Gnucap/spice-wrapper.cc -c -o ../Gnucap/spice-wrapper.bc
$CC $CFLAGS -I../Include ../Include/devsup.c -c -o ../Include/devsup.bc
declare -a BCFILES=$(find -name *.bc)
for BCFILE in ${BCFILES[@]};do
rm $BCFILE
done
#models first
declare -a SOURCES=(jfet jfetacld jfetask jfetdel jfetdest jfetdist jfetdset
jfetic jfetload jfetmask jfetmdel jfetmpar
jfetnoi jfetpar jfetpzld jfetset jfettemp jfettrun
)
for CCFILE in ${SOURCES[@]}; do
$CC $CFLAGS -Wno-implicit-function-declaration -I../Include -I../Gnucap -c $CCFILE.c -o O/$CCFILE.bc
done
cd O
$CC $OPTIMIZE $(ls *.bc) ../../Gnucap/spice-wrapper.bc ../../Include/devsup.bc -o d_jfet.bc
cd ../../..
}
LIB(){
cd lib
declare -a BCFILES=$(find -name *.bc)
for BCFILE in ${BCFILES[@]};do
rm $BCFILE
done
declare -a SOURCES=(m_expression_dump m_expression_in
m_expression_reduce
m_base_in m_base_math m_fft m_spline
ap_construct ap_convert ap_error ap_get ap_match ap_skip
l_ftos l_pmatch l_timer l_trim l_wmatch
io io_contr io_error io_findf io_out io_xopen
u_function u_lang u_nodemap u_opt1 u_opt2
u_parameter u_prblst u_probe u_sim_data u_xprobe
d_subckt d_logic d_logicmod
e_base e_card e_node e_model e_compon
e_elemnt e_ccsrc e_storag e_cardlist
bm_cond bm_value bm
c__cmd c_attach c_file
findbr plot globals)
for CCFILE in ${SOURCES[@]}; do
$CCP $CCFLAGS $CCFILE.cc -c -o O/$CCFILE.bc
done
# link
cd O
$CCP $OPTIMIZE $(ls *.bc) -o libgnucap.bc
cd ../..
}
APPS(){
cd apps
declare -a BCFILES=$(find -name *.bc)
for BCFILE in ${BCFILES[@]};do
rm $BCFILE
done
#models first
declare -a SOURCES=(d_mos1 d_mos2 d_mos3
d_mos4 d_mos5 d_mos6 d_mos7 d_mos8
d_mos123 d_mos_base d_mos
d_bjt d_diode )
for CCFILE in ${SOURCES[@]}; do
$CCP -c $CCFLAGS O/$CCFILE.cc -o O/$CCFILE.bc
done
SOURCES=(
d_admit d_cap d_cccs d_ccvs d_coil
d_cs d_poly_g d_poly_cap d_res d_switch
d_trln d_vcg d_vcr d_vcvs d_vs
d_meter
bm_complex bm_exp bm_fit bm_generator
bm_model bm_poly bm_posy bm_pulse bm_pwl bm_sffm
bm_sin bm_tanh bmm_table bmm_semi
c_clear c_comand c_delete c_exp c_genrat
c_list c_measure c_modify c_param c_prbcmd
c_status c_sweep c_sim c_system
s__init s__out s__solve
s_ac s_dc s_fo
s_tr s_tr_set s_tr_swp
lang_spice lang_spectre lang_verilog
func_core measure_eval
measure_max measure_min measure_slewrate measure_cross
measure_integral measure_average measure_rms measure_at signon
)
for CCFILE in ${SOURCES[@]}; do
$CCP $CCFLAGS $CCFILE.cc -c -o O/$CCFILE.bc
done
# link
cd O
$CCP $OPTIMIZE $(ls *.bc) -o libgnucap-default-plugins.bc
cd ../..
}
MAIN(){
#get the functions to export from the so file
cd main
declare -a BCFILES=$(find -name *.bc)
for BCFILE in ${BCFILES[@]};do
rm $BCFILE
done
declare -a SOURCES=(main)
for CCFILE in ${SOURCES[@]}; do
$CCP $CCFLAGS $CCFILE.cc -c -o O/$CCFILE.bc
done
# link
cd O
EMCC_DEBUG=1 $CC $OPTIMIZE ../../lib/O/libgnucap.bc ../../models-spice3f5/jfet/O/d_jfet.bc ../../apps/O/libgnucap-default-plugins.bc main.bc -o gnucap.html --embed-file temp
cd ../..
}
case "$1" in
jfet)
JFET
;;
apps)
APPS
;;
lib)
LIB
;;
main)
MAIN
;;
*)
JFET
LIB
APPS
MAIN
esac
#command to minify
#uglifyjs -v main/O/gnucap.js > main/O/gnucap-ugly.js
|