source: codes/icosagcm/devel/Python/codegen @ 615

Last change on this file since 615 was 615, checked in by dubos, 6 years ago

devel/unstructured : import Python layer from HEAT

  • Property svn:executable set to *
File size: 1.6 KB
Line 
1#!/bin/bash
2
3function filter()
4{
5    PASS=$1 ; shift
6    cpp -P -DPASS_$PASS $* -include ../macros.jin
7}
8
9function log()
10{
11    echo $*
12    $*
13}
14
15function main()
16{
17    VARIANT=$SRCDIR/$1
18    cd $VARIANT
19    rm -f *~ tmp/*
20    mkdir -p tmp
21    cd tmp
22    cp $SRCDIR/macros.jin . # jinja macros common to all variants
23    cpp -P -DPASS_JINJA ../macros.jin >> macros.jin # variant-specific macros
24
25    # first expand user-defined CPP and jinja macros
26    cat $SRCDIR/kernels_*.jin | cpp -P > caldyn_all.jin
27    $PYTHON -u $ROOT/jinja caldyn_all.jin > caldyn_all.dysl
28    # then expand the code-generating CPP and jinja macros
29    cat caldyn_all.dysl | filter PRE1 | filter PRE2 >> macros.jin
30    $PYTHON -u $ROOT/jinja macros.jin > caldyn_all.k90
31    # extract each kernel and apply post-jinja CPP macros
32    KERNELS=$(grep KERNEL caldyn_all.dysl | cpp -P -D'KERNEL(x)=x')
33    for NAME in $KERNELS ; do
34        cat caldyn_all.k90 | filter POST1 -DKERNEL_${NAME} | filter POST2 | sed '/^$/d' > ../${NAME}.k90
35        head ../${NAME}.k90
36    done
37
38    cd ..
39    grep ERROR *.k90
40
41    cd $VARIANT
42    wc *.k90
43    cd $ROOT
44}
45
46if [ -z "$CODEGEN_ENV_SET" ] ; then
47    cat <<EOF
48Before running this script, you must source one of the *.env scripts found in the env/ directory.
49This will set up appropriate, machine-dependent values for the following environment variables :
50PYTHON F90 C99 CFLAGS FFLAGS LINK SOFLAGS LDFLAGS LIBS ...
51EOF
52else
53    set +x
54   
55    ROOT=$PWD
56    LIBDIR=$ROOT/lib
57    SRCDIR=$ROOT/src
58    cd $SRCDIR
59
60    for x in $* ; do
61        echo "Generating code for variant : $x"
62        grep FIXME *.jin
63        main $x
64    done
65fi
Note: See TracBrowser for help on using the repository browser.