/ani/mrses

To get this branch, use:
bzr branch http://suren.me/webbzr/ani/mrses

« back to all changes in this revision

Viewing changes to cell/buildutils/cellsdk_select_compiler

  • Committer: Suren A. Chilingaryan
  • Date: 2010-04-28 04:30:08 UTC
  • Revision ID: csa@dside.dyndns.org-20100428043008-vd9z0nso9axezvlp
Initial import

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/bin/sh
 
2
# --------------------------------------------------------------
 
3
# (C) Copyright 2001,2007,
 
4
# International Business Machines Corporation,
 
5
#
 
6
# All Rights Reserved.
 
7
# --------------------------------------------------------------
 
8
 
 
9
#------------------------------------------------------------------------
 
10
#  cellsdk_select_compiler
 
11
#
 
12
#  This script selects the compiler in make.env
 
13
#
 
14
#------------------------------------------------------------------------
 
15
 
 
16
#
 
17
# Miscellaneous variables
 
18
#
 
19
if [ -f ${CELL_TOP}/buildutils/make.env ] ; then
 
20
        CELL_BUILD_DIR=$CELL_TOP
 
21
else
 
22
        CELL_BUILD_DIR=/opt/cell/sdk
 
23
fi
 
24
CELL_MAKE_ENV=${CELL_BUILD_DIR}/buildutils/make.env
 
25
CELL_MAKE_FOOTER=${CELL_BUILD_DIR}/buildutils/make.footer
 
26
 
 
27
#--------------------------------------------------------------------------
 
28
# Switches to the gcc compiler
 
29
#
 
30
# return: none
 
31
function switch_to_gcc()
 
32
{
 
33
  # abort if gcc is not installed
 
34
  which `PROGRAM_ppu=foo PPU_COMPILER=gcc make --no-print-directory CCACHE="" -f ${CELL_MAKE_FOOTER} listenv_c 2>/dev/null` >/dev/null 2>&1
 
35
  if [ $? -ne 0 ] ; then
 
36
        echo "gcc is not installed - can't change default to gcc."
 
37
  elif [ "`grep "^ .*_COMPILER.*:= gcc" ${CELL_MAKE_ENV}`" == "" ] ; then
 
38
        sed -i -e 's/^    PPU32_COMPILER        := xlc/#   PPU32_COMPILER       := xlc/' \
 
39
               -e 's/^#   PPU32_COMPILER        := gcc/    PPU32_COMPILER       := gcc/' \
 
40
               -e 's/^    PPU64_COMPILER        := xlc/#   PPU64_COMPILER       := xlc/' \
 
41
               -e 's/^#   PPU64_COMPILER        := gcc/    PPU64_COMPILER       := gcc/' \
 
42
               -e 's/^    SPU_COMPILER  := xlc/#   SPU_COMPILER := xlc/' \
 
43
               -e 's/^#   SPU_COMPILER  := gcc/    SPU_COMPILER := gcc/' \
 
44
            ${CELL_MAKE_ENV} && echo "Default compiler changed to GNU gcc."
 
45
  else
 
46
      echo "Default compiler is already set to GNU gcc."
 
47
  fi
 
48
}
 
49
 
 
50
#--------------------------------------------------------------------------
 
51
# Switches to the gfortran
 
52
#
 
53
function switch_to_gfortran()
 
54
{
 
55
  # abort if gfortran is not installed
 
56
  which `PROGRAM_ppu=foo FTN_PPU32_COMPILER=gfortran FTN_PPU64_COMPILER=gfortran make --no-print-directory -f ${CELL_MAKE_FOOTER} listenv_f 2>/dev/null` >/dev/null 2>&1
 
57
  if [ $? -ne 0 ] ; then
 
58
        echo "gfortran is not installed - can't change default to gfortran."
 
59
  elif [ "`grep "^ .*_COMPILER.*:= gfortran" ${CELL_MAKE_ENV}`" == "" ] ; then
 
60
        sed -i -e 's/^    FTN_PPU32_COMPILER    := xlf/#   FTN_PPU32_COMPILER   := xlf/' \
 
61
               -e 's/^#   FTN_PPU32_COMPILER    := gfortran/    FTN_PPU32_COMPILER      := gfortran/' \
 
62
               -e 's/^    FTN_PPU64_COMPILER    := xlf/#   FTN_PPU64_COMPILER   := xlf/' \
 
63
               -e 's/^#   FTN_PPU64_COMPILER    := gfortran/    FTN_PPU64_COMPILER      := gfortran/' \
 
64
               -e 's/^    FTN_SPU_COMPILER      := xlf/#   FTN_SPU_COMPILER     := xlf/' \
 
65
               -e 's/^#   FTN_SPU_COMPILER      := gfortran/    FTN_SPU_COMPILER        := gfortran/' \
 
66
            ${CELL_MAKE_ENV} && echo "Default compiler changed to GNU gfortran."
 
67
  else
 
68
      echo "Default compiler is already set to GNU gfortran."
 
69
  fi
 
70
}
 
71
 
 
72
#--------------------------------------------------------------------------
 
73
# Switches to the xlc compiler
 
74
#
 
75
function switch_to_xlc()
 
76
{
 
77
  # abort if xlc is not installed
 
78
  which `PROGRAM_ppu=foo PPU_COMPILER=xlc make --no-print-directory -f ${CELL_MAKE_FOOTER} listenv_c 2>/dev/null` >/dev/null 2>&1
 
79
  if [ $? -ne 0 ] ; then
 
80
        echo "xlc is not installed - can't change default to xlc."
 
81
  elif [ "`grep "^ .*_COMPILER.*:= xlc" ${CELL_MAKE_ENV}`" == "" ] ; then
 
82
        sed -i -e 's/^#   PPU32_COMPILER        := xlc/    PPU32_COMPILER       := xlc/' \
 
83
               -e 's/^    PPU32_COMPILER        := gcc/#   PPU32_COMPILER       := gcc/' \
 
84
               -e 's/^#   PPU64_COMPILER        := xlc/    PPU64_COMPILER       := xlc/' \
 
85
               -e 's/^    PPU64_COMPILER        := gcc/#   PPU64_COMPILER       := gcc/' \
 
86
               -e 's/^#   SPU_COMPILER  := xlc/    SPU_COMPILER := xlc/' \
 
87
               -e 's/^    SPU_COMPILER  := gcc/#   SPU_COMPILER := gcc/' \
 
88
            ${CELL_MAKE_ENV} && echo "Default compiler changed to IBM xlc."
 
89
  else
 
90
      echo "Default compiler is already set to IBM xlc."
 
91
  fi
 
92
}
 
93
 
 
94
#--------------------------------------------------------------------------
 
95
# Switches to the xlf compiler
 
96
#
 
97
function switch_to_xlf()
 
98
{
 
99
  # warn if xlf is not installed
 
100
  which `PROGRAM_ppu=foo FTN_PPU32_COMPILER=xlf FTN_PPU64_COMPILER=xlf make --no-print-directory -f ${CELL_MAKE_FOOTER} listenv_f 2>/dev/null` >/dev/null 2>&1
 
101
  if [ $? -ne 0 ] ; then
 
102
        echo "xlf is not installed - can't change default to xlf."
 
103
  elif [ "`grep "^ .*_COMPILER.*:= xlf" ${CELL_MAKE_ENV}`" == "" ] ; then
 
104
        sed -i -e 's/^#   FTN_PPU32_COMPILER    := xlf/    FTN_PPU32_COMPILER   := xlf/' \
 
105
               -e 's/^    FTN_PPU32_COMPILER    := gfortran/#   FTN_PPU32_COMPILER      := gfortran/' \
 
106
               -e 's/^#   FTN_PPU64_COMPILER    := xlf/    FTN_PPU64_COMPILER   := xlf/' \
 
107
               -e 's/^    FTN_PPU64_COMPILER    := gfortran/#   FTN_PPU64_COMPILER      := gfortran/' \
 
108
               -e 's/^#   FTN_SPU_COMPILER      := xlf/    FTN_SPU_COMPILER     := xlf/' \
 
109
               -e 's/^    FTN_SPU_COMPILER      := gfortran/#   FTN_SPU_COMPILER        := gfortran/' \
 
110
            ${CELL_MAKE_ENV} && echo "Default compiler changed to IBM xlf."
 
111
  else
 
112
      echo "Default compiler is already set to IBM xlf."
 
113
  fi
 
114
}
 
115
 
 
116
 
 
117
#--------------------------------------------------------------------------
 
118
# Displays the usage statement
 
119
#
 
120
function usage()
 
121
{
 
122
  echo "Usage: $SELF <gcc | gfortran | gnu | xlc | xlf | xl> "
 
123
  echo ""
 
124
  echo "  gcc:      set GNU gcc as default c/c++ compiler in make.footer (default)"
 
125
  echo "  gfortran: set GNU gfortran as default fortran compiler in make.footer (default)"
 
126
  echo "  gnu:      set both GNU gcc and gfortran as default compilers in make.footer (default)"
 
127
  echo "  xlc:      set IBM xlc as default c/c++ compiler in make.footer"
 
128
  echo "  xlf:      set IBM xlf as default fortran compiler in make.footer"
 
129
  echo "  xl:       set IBM xlc and xlf as default compilers in make.footer"
 
130
  echo ""
 
131
}
 
132
 
 
133
 
 
134
#--------------------------------------------------------------------------
 
135
# Continue with main line execution of script
 
136
 
 
137
 
 
138
#  Set our name
 
139
SELF=`basename $0`
 
140
 
 
141
#  Ensure we have at least one argument
 
142
if [ $# -lt 1 ] ; then
 
143
  usage
 
144
  exit 1
 
145
fi
 
146
 
 
147
#  Pop the first argument as the task
 
148
TASK=$1
 
149
shift
 
150
 
 
151
case $TASK in
 
152
  gcc|gfortran|gnu|xlc|xlf|xl)
 
153
    if [ ! -w ${CELL_MAKE_ENV} ] ; then
 
154
        echo ${CELL_MAKE_ENV} "not writable"
 
155
        exit 1
 
156
    fi
 
157
    ;;
 
158
 
 
159
  -?|-h|--help|--usage)
 
160
    usage
 
161
    exit 0
 
162
    ;;
 
163
 
 
164
  *)
 
165
    echo "$SELF:  unknown option '$TASK'"
 
166
    usage
 
167
    exit 1
 
168
    ;;
 
169
 
 
170
esac
 
171
 
 
172
case $TASK in
 
173
        gcc)
 
174
                switch_to_gcc
 
175
                ;;
 
176
        gfortran)
 
177
                switch_to_gfortran
 
178
                ;;
 
179
        gnu)
 
180
                switch_to_gcc
 
181
                switch_to_gfortran
 
182
                ;;
 
183
 
 
184
        xlc)
 
185
                switch_to_xlc
 
186
                ;;
 
187
        xlf)
 
188
                switch_to_xlf
 
189
                ;;
 
190
        xl)
 
191
                switch_to_xlc
 
192
                switch_to_xlf
 
193
                ;;
 
194
        *)
 
195
                usage
 
196
                exit 1
 
197
                ;;
 
198
esac
 
199
 
 
200
# end of script