xref: /aosp_15_r20/external/toolchain-utils/bestflags/examples/omnetpp/build_omnetpp (revision 760c253c1ed00ce9abd48f8546f08516e57485fe)
1*760c253cSXin Li#!/bin/bash -x
2*760c253cSXin Li
3*760c253cSXin Licd examples/omnetpp/cpu2006-redhat-ia32
4*760c253cSXin Li
5*760c253cSXin Li# Contains the optimization flags.
6*760c253cSXin Liflags=''
7*760c253cSXin Li
8*760c253cSXin Li# The index of the parameter.
9*760c253cSXin Lii=1
10*760c253cSXin Li
11*760c253cSXin Li# Indicate whether it is parsing the gcc param.
12*760c253cSXin Liin_gcc_param=false
13*760c253cSXin Li
14*760c253cSXin Lifor parameter in "$@"
15*760c253cSXin Li  do
16*760c253cSXin Li    #  The last parameter is the file name.
17*760c253cSXin Li    if [ "$i" == "$#" ]; then
18*760c253cSXin Li      file=$parameter
19*760c253cSXin Li      break
20*760c253cSXin Li    fi
21*760c253cSXin Li
22*760c253cSXin Li    # The param is not a flag, it combines with the flag that comes right after.
23*760c253cSXin Li    # For example, --param max-inline-insns-single
24*760c253cSXin Li    if [ "$parameter" == "-param" ]; then
25*760c253cSXin Li      in_gcc_param=true
26*760c253cSXin Li      flags+=-$parameter' '
27*760c253cSXin Li      let i++
28*760c253cSXin Li      continue
29*760c253cSXin Li    fi
30*760c253cSXin Li
31*760c253cSXin Li    # In in_gcc_param section, this flag follows the key word '--param'.
32*760c253cSXin Li    if [ $in_gcc_param == true ]; then
33*760c253cSXin Li      flags+=$parameter' '
34*760c253cSXin Li      let i++
35*760c253cSXin Li      in_gcc_param=false
36*760c253cSXin Li      continue
37*760c253cSXin Li    fi
38*760c253cSXin Li
39*760c253cSXin Li    # Normal flags.
40*760c253cSXin Li    flags+=-$parameter' '
41*760c253cSXin Li    let i++
42*760c253cSXin Li  done
43*760c253cSXin Li
44*760c253cSXin Li# Change the configuration file.
45*760c253cSXin Licontent=$(sed s/amd64-m64-gcc41-kk/test$file/ config/linux64-amd64-pgi.cfg)
46*760c253cSXin Liecho "$content" | sed s/-O2/-O1\ "$flags"/ >config/linux64-amd64-pgi$file.cfg
47*760c253cSXin Li. ./shrc
48*760c253cSXin Li/usr/bin/time -o temp$file runspec --config linux64-amd64-pgi$file -D --action=build  471.omnetpp
49*760c253cSXin Li
50*760c253cSXin Listate=$?
51*760c253cSXin Li
52*760c253cSXin Lioutfile="./benchspec/CPU2006/471.omnetpp/run/build_base_test$file.0000/omnetpp"
53*760c253cSXin Li
54*760c253cSXin Liif [ $state -eq 0 ];then
55*760c253cSXin Li  user_time=$(cat build_timer$file | grep "user" | cut -d "u" -f 1)
56*760c253cSXin Li  output_file="$file"
57*760c253cSXin Li
58*760c253cSXin Li  checksum=$(readelf -x .text $outfile | md5sum | cut -d " " -f 1)
59*760c253cSXin Li  file_size=$(ls -l $outfile | cut -d " " -f 5)
60*760c253cSXin Li  text_section=$(readelf -SW $outfile | grep ".text")
61*760c253cSXin Li  size_hex=$(echo $text_section | sed "s/\s\{1,\}/\ /g" | cut -d ' ' -f 6)
62*760c253cSXin Li  size=$(echo $size_hex | ( echo "ibase=16" ; tr '[:lower:]' '[:upper:]') | bc)
63*760c253cSXin Li
64*760c253cSXin Li  echo $checksum $user_time $output_file $file_size $size
65*760c253cSXin Lielse
66*760c253cSXin Li  echo "error" "error" "error" "error" "error"
67*760c253cSXin Lifi
68*760c253cSXin Li
69*760c253cSXin Lireturn $state