summaryrefslogtreecommitdiff
path: root/gnucapjs/Makeem++
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