ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CMSDIST/llvm-gcc-toolfile.spec
Revision: 1.10
Committed: Mon Jun 4 09:19:59 2012 UTC (12 years, 10 months ago) by eulisse
Branch: MAIN
CVS Tags: cmsbuild_20130422-53X-slc5, cmsbuild_20130422-53X-osx107, sm20130422-53X-osx107, sm20130422-53X-slc5, CMSSW_5_3_9_patch3-osx107, CMSSW_5_3_9_patch3, sm130409-53X-osx107, sm130409-53X, CMSSW_5_3_9_sherpa2beta2, CMSSW_5_3_9_patch2-osx107, CMSSW_5_3_9_patch2, CMSSW_5_3_9_patch1-osx107, CMSSW_5_3_9_patch1, CMSSW_5_3_9, CMSSW_5_3_9-osx107, CMSW_5_3_9, sm130226-53X-osx107, sm130226-53X-gcc462, sm130214a-53X-gcc462, sm130214a-53X-osx107, sm130214-53X-osx107, sm130214-53X-gcc462, CMSSW_5_3_8_patch3-osx107, CMSSW_5_3_8_patch3, CMSSW_5_3_7_patch6, CMSSW_5_3_7_patch6-osx107, CMSSW_5_3_8_patch2-osx107, CMSSW_5_3_8_patch2, CMSSW_5_3_8_patch1-osx107, CMSSW_5_3_8_patch1, CMSSW_5_3_8-osx107, CMSSW_5_3_8, CMSSW_5_3_8_HI_patch2-osx107, CMSSW_5_3_8_HI_patch2, CMSSW_5_3_8_HI_patch1-osx107, CMSSW_5_3_7_patch5-osx107, CMSSW_5_3_8_HI_patch1, CMSSW_5_3_7_patch5, CMSSW_5_3_8_HI-osx107, CMSSW_5_3_8_HI, CMSSW_5_3_7_patch4-osx107, CMSSW_5_3_7_patch4, CMSSW_5_3_7_patch3-osx107, CMSSW_5_3_7_patch3, CMSSW_5_3_7_25nspatch1-osx107, CMSSW_5_3_7_patch2-osx107, CMSSW_5_3_7_25nspatch1, CMSSW_5_3_7_patch2, sm121128-53X-osx107, sm121128-53X, CMSSW_5_3_7_patch1-osx107, CMSSW_5_3_7_patch1, CMSSW_5_3_7_alcapatch1, CMSSW_5_3_7, CMSSW_5_3_7-osx107, sm121119-53X-osx107, sm121119-53X, sm121113-53X-osx107, sm121113-53X, CMSSW_5_3_6_patch1, CMSSW_5_3_6_patch1-osx107, sm121112-53X-osx107, sm121112-53X, CMSSW_5_3_6-osx107, CMSSW_5_3_6, sm121102-53X-osx107, sm121102-53X, CMSSW_5_3_4_TC125616patch1, CMSSW_5_3_4_patch2, CMSSW_5_3_5-osx107, CMSSW_5_3_5, sm121008a-53X-osx107, sm121008a-53X, sm121008-53X-osx107, sm121008-53X, CMSSW_5_3_4_patch1, CMSSW_5_3_4, sm1209122-53X, sm1209122-53X-osx107, CMSSW_5_3_2_patch5, CMSSW_5_3_4_cand2, CMSSW_5_3_4_cand1_patch1, CMSSW_5_3_4_cand1_TTpatch1, CMSSW_5_3_4_cand1, CMSSW_5_3_3_patch3, geForCMSSW_5_3_3_patch3-slc5_amd64_gcc462, geForCMSSW_5_3_3_cand1_patch1-slc5_amd64_gcc462, geForCMSSW_5_3_3_cand1patch1-slc5_amd64_gcc462, sm120810a-53X, sm120810a-53X-osx107, sm120810-53X-osx107, sm120810-53X, sm120809-53X-osx107, sm120809-53X, CMSSW_5_3_3_patch2-osx107, CMSSW_5_3_3_patch2, CMSSW_5_3_3_patch1-osx107, CMSSW_5_3_3_patch1, sm120801-53X-osx107, sm120801-53X, CMSSW_5_3_3, CMSSW_5_3_3-osx107, davidlt_20120716_1513-53X-osx107, davidlt_20120716_1512-53X, CMSSW_5_3_2_patch4, geForCMSSW_5_3_2_patch4-slc5_amd64_gcc462, CMSSW_5_3_2_patch3, CMSSW_5_3_3_cand1, CMSSW_5_3_2_patch2, geForCMSSW_5_3_2_patch2-slc5_amd64_gcc462, CMSSW_5_3_2_metpatch1, davidlt_20120629_1048-53X-osx107, davidlt_20120629_1042-53X, davidlt_20120629_1042-CMSSW_5_3_2_patch1, CMSSW_6_0_0_pre7py273, sm120627-53X-osx107, sm120626-53X-osx107, CMSSW_5_3_2_patch1, sm120626-53X, daForCMSSW_6_0_0_pre7py273-osx107_amd64_gcc462, daForCMSSW_6_0_0_pre7py273-slc5_amd64_gcc462, sm120625-53X, davidlt_20120625_1521-osx107, davidlt_20120625_1518-CMSSW_6_0_0_pre7, davidlt_test_py273, CMSSW_6_0_0_pre7-osx107, CMSSW_6_0_0_pre7-slc6, CMSSW_6_0_0_pre7-gcc470, daForCMSSW_6_0_0_pre7-osx107_amd64_gcc462, ForCMSSW_6_0_0_pre7-slc6_amd64_gcc462, daForCMSSW_6_0_0_pre7-slc5_amd64_gcc470, CMSSW_5_3_2, CMSSW_6_0_0_pre7, geForCMSSW_5_3_2-slc5_amd64_gcc462, ge20120615, eulisse_20120615_1606-53X, daForCMSSW_6_0_0_pre7-slc5_amd64_gcc462, davidlt_20120613_1051-60X-gcc470, davidlt_20120608_1804-60X-gcc470, davidlt_20120608_1759-60X-slc6, davidlt_20120608_1756-60X-osx107, davidlt_20120608_1436-60X, davidlt_20120606_1728-53X, ge20120604-llvm
Changes since 1.9: +22 -5 lines
Log Message:
More fixes for clang-static-analyzer.

* Add a llvm toolfile which can be used to build clang plugins.
* Put all *compiler toolfiles which use clang in a "disabled" folder,
  so that we do not pick them up by default, even if llvm-gcc-toolfile
  becomes a "Requires".

File Contents

# Content
1 ### RPM cms llvm-gcc-toolfile 11.0
2
3 Requires: llvm
4 %if "%(echo %cmsos | grep osx >/dev/null && echo true)" == "true"
5 Requires: gfortran-macosx
6 %endif
7 Source: none
8
9 %if "%(echo %cmsos | grep osx >/dev/null && echo true)" == "true"
10 Requires: gfortran-macosx
11 %else
12 Requires: gcc
13 %endif
14
15 %prep
16 %build
17 %install
18 mkdir -p %i/etc/scram.d
19
20 export LLVM_PATH
21 export LLVM_ROOT
22 export LLVM_VERSION
23
24 # Determine the GCC_ROOT if "use system compiler is used. We still need this
25 # because we need to pick up libstdc++ from the gcc installation since clang
26 # does not ship its own and because clang does not provide a fortran compiler.
27 if [ "X$GCC_ROOT" = X ]
28 then
29 export GCC_PATH=`which gcc` || exit 1
30 export GCC_ROOT=`echo $GCC_PATH | sed -e 's|/bin/gcc||'`
31 export GCC_VERSION=`gcc -v 2>&1 | grep "gcc version" | sed 's|[^0-9]*\([0-9].[0-9].[0-9]\).*|\1|'` || exit 1
32 export G77_ROOT=$GFORTRAN_MACOSX_ROOT
33 else
34 export GCC_PATH
35 export GCC_ROOT
36 export GCC_VERSION
37 export G77_ROOT=$GCC_ROOT
38 fi
39 export GCC_REALVERSION=`echo $GCC_VERSION | sed -e's|-.*||'`
40 export COMPILER_VERSION=`echo $LLVM_VERSION`
41 export COMPILER_VERSION_MAJOR=`echo $LLVM_VERSION | sed -e 's|\([0-9]\).*|\1|'`
42 export COMPILER_VERSION_MINOR=`echo $LLVM_VERSION | sed -e 's|[0-9].\([0-9]\).*|\1|'`
43
44 export GCC_ARCH=$(basename $(dirname `find $GCC_ROOT/include -mindepth 4 -maxdepth 4 -name bits`))
45
46 mkdir -p %i/etc/disabled/scram.d
47 # Generic template for the toolfiles.
48 # *** USE @VARIABLE@ plus associated environment variable to customize. ***
49 # DO NOT DUPLICATE the toolfile template.
50
51 cat << \EOF_TOOLFILE >%i/etc/disabled/scram.d/cxxcompiler.xml
52 <tool name="cxxcompiler" version="@LLVM_VERSION@" type="compiler">
53 <client>
54 <environment name="CXXCOMPILER_BASE" default="@LLVM_ROOT@"/>
55 <environment name="GCCBINDIR" default="$CXXCOMPILER_BASE/bin"/>
56 <environment name="CXX" value="$GCCBINDIR/clang++@COMPILER_NAME_SUFFIX@"/>
57 </client>
58 <flags SCRAM_COMPILER_NAME="clang@COMPILER_VERSION@"/>
59 <flags CCCOMPILER="clang@COMPILER_VERSION_MAJOR@"/>
60 <flags MODULEFLAGS="@OS_SHAREDFLAGS@ @ARCH_SHAREDFLAGS@"/>
61 <flags CXXDEBUGFLAG="-g"/>
62 <flags CPPDEFINES="GNU_GCC"/>
63 <flags CPPDEFINES="_GNU_SOURCE"/>
64 <flags CXXSHAREDOBJECTFLAGS="-fPIC"/>
65 <flags CPPFLAGS="-I@GCC_ROOT@/include/c++/@GCC_REALVERSION@"/>
66 <flags CPPFLAGS="-I@GCC_ROOT@/include/c++/@GCC_REALVERSION@/@GCC_ARCH@"/>
67 <flags CPPFLAGS="-I@GCC_ROOT@/include/c++/@GCC_REALVERSION@/backward"/>
68 <flags CXXFLAGS="-O2 -ansi -pthread -pipe"/>
69 <flags CXXFLAGS="@ARCH_CXXFLAGS@ @COMPILER_CXXFLAGS@"/>
70 <flags CXXFLAGS="-fmessage-length=0 -ftemplate-depth-300"/>
71 # -Wno-non-template-friend removed since it's not supported, yet, by llvm.
72 <flags CXXFLAGS="-Wall -Wno-long-long -Wreturn-type -Wunused -Wsign-compare -Wno-deprecated -Werror=return-type -Werror=missing-braces -Werror=unused-value -Werror=address -Werror=format -Werror=write-strings -Werror=strict-overflow -fdiagnostics-show-option"/>
73 <flags LDFLAGS="@OS_LDFLAGS@ -L@GCC_ROOT@/lib64"/>
74 <flags CXXSHAREDFLAGS="@OS_SHAREDFLAGS@ @ARCH_SHAREDFLAGS@"/>
75 <flags SHAREDSUFFIX="@OS_SHAREDSUFFIX@"/>
76 <flags LD_UNIT="@OS_LD_UNIT@ @ARCH_LD_UNIT@"/>
77 <flags SCRAM_LANGUAGE_TYPE="C++"/>
78 <runtime name="@OS_RUNTIME_LDPATH_NAME@" value="$CXXCOMPILER_BASE/lib" type="path"/>
79 <runtime name="PATH" value="$CXXCOMPILER_BASE/bin" type="path"/>
80 <runtime name="@OS_RUNTIME_LDPATH_NAME@" value="@GCC_ROOT@/@ARCH_LIB64DIR@" type="path"/>
81 <runtime name="@OS_RUNTIME_LDPATH_NAME@" value="@GCC_ROOT@/lib" type="path"/>
82 <runtime name="COMPILER_RUNTIME_OBJECTS" value="@GCC_ROOT@/lib/gcc/@GCC_ARCH@/@GCC_REALVERSION@"/>
83 <runtime name="PATH" value="@GCC_ROOT@/bin" type="path"/>
84 </tool>
85 EOF_TOOLFILE
86
87 cat << \EOF_TOOLFILE >%i/etc/disabled/scram.d/cxx-analyzer.xml
88 <tool name="cxxcompiler" version="@LLVM_VERSION@" type="compiler">
89 <client>
90 <environment name="CXXCOMPILER_BASE" default="@LLVM_ROOT@"/>
91 <environment name="GCCBINDIR" default="$CXXCOMPILER_BASE/bin"/>
92 <environment name="CXX" value="$GCCBINDIR/c++-analyzer"/>
93 </client>
94 <flags SCRAM_COMPILER_NAME="clang@COMPILER_VERSION@"/>
95 <flags CCCOMPILER="clang@COMPILER_VERSION_MAJOR@"/>
96 <flags MODULEFLAGS="@OS_SHAREDFLAGS@ @ARCH_SHAREDFLAGS@"/>
97 <flags CXXDEBUGFLAG="-g"/>
98 <flags CPPDEFINES="GNU_GCC"/>
99 <flags CPPDEFINES="_GNU_SOURCE"/>
100 <flags CXXSHAREDOBJECTFLAGS="-fPIC"/>
101 <flags CPPFLAGS="-I@GCC_ROOT@/include/c++/@GCC_REALVERSION@"/>
102 <flags CPPFLAGS="-I@GCC_ROOT@/include/c++/@GCC_REALVERSION@/@GCC_ARCH@"/>
103 <flags CPPFLAGS="-I@GCC_ROOT@/include/c++/@GCC_REALVERSION@/backward"/>
104 <flags CXXFLAGS="-O2 -ansi -pthread -pipe"/>
105 <flags CXXFLAGS="@ARCH_CXXFLAGS@ @COMPILER_CXXFLAGS@"/>
106 <flags CXXFLAGS="-fmessage-length=0 -ftemplate-depth-300"/>
107 # -Wno-non-template-friend removed since it's not supported, yet, by llvm.
108 <flags CXXFLAGS="-std=c++11 -Wall -Wno-long-long -Wreturn-type -Wunused -Wsign-compare -Wno-deprecated -Werror=return-type -Werror=missing-braces -Werror=unused-value -Werror=address -Werror=format -Werror=write-strings -Werror=strict-overflow -fdiagnostics-show-option"/>
109 <flags LDFLAGS="@OS_LDFLAGS@ -L@GCC_ROOT@/lib64"/>
110 <flags CXXSHAREDFLAGS="@OS_SHAREDFLAGS@ @ARCH_SHAREDFLAGS@"/>
111 <flags SHAREDSUFFIX="@OS_SHAREDSUFFIX@"/>
112 <flags LD_UNIT="@OS_LD_UNIT@ @ARCH_LD_UNIT@"/>
113 <flags SCRAM_LANGUAGE_TYPE="C++"/>
114 <runtime name="@OS_RUNTIME_LDPATH_NAME@" value="$CXXCOMPILER_BASE/lib" type="path"/>
115 <runtime name="PATH" value="$CXXCOMPILER_BASE/bin" type="path"/>
116 <runtime name="@OS_RUNTIME_LDPATH_NAME@" value="@GCC_ROOT@/@ARCH_LIB64DIR@" type="path"/>
117 <runtime name="@OS_RUNTIME_LDPATH_NAME@" value="@GCC_ROOT@/lib" type="path"/>
118 <runtime name="COMPILER_RUNTIME_OBJECTS" value="@GCC_ROOT@/lib/gcc/@GCC_ARCH@/@GCC_REALVERSION@"/>
119 <runtime name="PATH" value="@GCC_ROOT@/bin" type="path"/>
120 </tool>
121 EOF_TOOLFILE
122
123 cat << \EOF_TOOLFILE >%i/etc/disabled/scram.d/ccompiler.xml
124 <tool name="ccompiler" version="@LLVM_VERSION@" type="compiler">
125 <client>
126 <environment name="CCOMPILER_BASE" default="@LLVM_ROOT@"/>
127 <environment name="GCCBINDIR" value="$CCOMPILER_BASE/bin"/>
128 <environment name="CC" value="$GCCBINDIR/clang@COMPILER_NAME_SUFFIX@"/>
129 </client>
130 <flags CDEBUGFLAG="-g"/>
131 <flags CSHAREDOBJECTFLAGS="-fPIC"/>
132 <flags CFLAGS="-pthread"/>
133 <flags CFLAGS="-O2"/>
134 <flags LDFLAGS="@OS_LDFLAGS@ -L@GCC_ROOT@/lib64"/>
135 <flags CSHAREDFLAGS="@OS_SHAREDFLAGS@ @ARCH_SHAREDFLAGS@"/>
136 <flags SCRAM_COMPILER_NAME="clangc@COMPILER_VERSION@"/>
137 <flags SCRAM_LANGUAGE_TYPE="C"/>
138 </tool>
139 EOF_TOOLFILE
140
141 # Notice that on OSX we have a LIBDIR defined for f77compiler because gcc C++
142 # compiler (which comes from the system) does not know about where to find
143 # libgfortran.
144 cat << \EOF_TOOLFILE >%i/etc/disabled/scram.d/f77compiler.xml
145 <tool name="f77compiler" version="@GCC_VERSION@" type="compiler">
146 <lib name="gfortran"/>
147 <lib name="m"/>
148 <client>
149 <environment name="F77COMPILER_BASE" default="@G77_ROOT@"/>
150 <environment name="FC" default="$F77COMPILER_BASE/bin/gfortran"/>
151 @ARCH_FORTRAN_LIBDIR@
152 </client>
153 <flags SCRAM_COMPILER_NAME="clang@COMPILER_VERSION@"/>
154 <flags FFLAGS="-fno-second-underscore -Wunused -Wuninitialized -O2"/>
155 <flags FCO2FLAG="-O2"/>
156 <flags FCOPTIMISED="-O2"/>
157 <flags FCDEBUGFLAG="-g"/>
158 <flags FCSHAREDOBJECTFLAGS="-fPIC"/>
159 <flags SCRAM_LANGUAGE_TYPE="FORTRAN"/>
160 </tool>
161 EOF_TOOLFILE
162
163 # This is a toolfile to use llvm / clang as a library, not as a compiler.
164 cat << \EOF_TOOLFILE >%i/etc/scram.d/llvm.xml
165 <tool name="llvm" version="@LLVM_VERSION@">
166 <lib name="clang"/>
167 <client>
168 <environment name="LLVM_BASE" default="@LLVM_ROOT@"/>
169 <environment name="LIBDIR" default="$LLVM_BASE/lib"/>
170 <environment name="INCLUDE" default="$LLVM_BASE/include"/>
171 </client>
172 <flags LDFLAGS="-Wl,-undefined -Wl,suppress"/>
173 <flags CXXFLAGS="-D_DEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS"/>
174 <flags CXXFLAGS="-D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -O3 "/>
175 <flags CXXFLAGS="-fomit-frame-pointer -fPIC -Wno-enum-compare "/>
176 <flags CXXFLAGS="-Wno-strict-aliasing -fno-rtti"/>
177 </tool>
178 EOF_TOOLFILE
179
180 # NON-empty defaults
181 export COMPILER_EXEC_NAME="clang++"
182
183 # First of all handle OS specific options.
184 case %cmsplatf in
185 slc* )
186 export OS_SHAREDFLAGS="-shared -Wl,-E"
187 export OS_SHAREDSUFFIX="so"
188 export OS_LDFLAGS="-Wl,-E -Wl,--hash-style=gnu"
189 export OS_RUNTIME_LDPATH_NAME="LD_LIBRARY_PATH"
190 ;;
191 osx* )
192 export OS_SHAREDFLAGS="-shared -dynamic -single_module"
193 export OS_SHAREDSUFFIX="dylib"
194 export OS_LDFLAGS="-Wl,-commons -Wl,use_dylibs"
195 export OS_RUNTIME_LDPATH_NAME="DYLD_LIBRARY_PATH"
196 ;;
197 esac
198
199 # Then handle OS + architecture specific options (maybe we should enable more
200 # aggressive optimizations for amd64 as well??)
201 case %cmsplatf in
202 osx*_ia32_* )
203 export ARCH_CXXFLAGS="-arch i386"
204 export ARCH_SHAREDFLAGS="-arch i386"
205 export ARCH_LIB64DIR="lib"
206 export ARCH_FORTRAN_LIBDIR='<environment name="LIBDIR" default="$F77COMPILER_BASE/lib/gcc/i686-apple-darwin10/4.2.1"/>'
207 ;;
208 osx*_amd64_* )
209 export ARCH_CXXFLAGS="-arch x86_64"
210 export ARCH_SHAREDFLAGS="-arch x86_64"
211 export ARCH_LIB64DIR="lib"
212 export ARCH_FORTRAN_LIBDIR='<environment name="LIBDIR" default="$F77COMPILER_BASE/lib/gcc/i686-apple-darwin10/4.2.1/x86_64"/>'
213 ;;
214 osx*_ppc32_* )
215 export ARCH_CXXFLAGS="-arch ppc"
216 export ARCH_SHAREDFLAGS="-arch ppc"
217 export ARCH_LIB64DIR="lib"
218 ;;
219 slc*_amd64_* )
220 # For some reason on mac, some of the header do not compile if this is
221 # defined. Ignore for now.
222 export ARCH_CXXFLAGS="-Werror=overflow"
223 export ARCH_LIB64DIR="lib64"
224 export ARCH_LD_UNIT="-r -m elf_x86_64"
225 ;;
226 slc*_ia32_* )
227 # For some reason on mac, some of the header do not compile if this is
228 # defined. Ignore for now.
229 export ARCH_CXXFLAGS="-Werror=overflow"
230 export ARCH_LIB64DIR="lib"
231 export ARCH_LD_UNIT="-r -m elf_i386"
232 ;;
233 *)
234 echo "Unsupported."
235 exit 1
236 ;;
237 esac
238
239 # Then handle compiler specific options. E.g. enable
240 # optimizations as they become available in gcc.
241 COMPILER_CXXFLAGS=
242 case %cmsplatf in
243 *_gcc4[56789]* )
244 COMPILER_CXXFLAGS="$COMPILER_CXXFLAGS"
245 F77_MMD="-cpp -MMD"
246 ;;
247 esac
248
249 case %cmsplatf in
250 *_gcc4[3456789]* )
251 COMPILER_CXXFLAGS="$COMPILER_CXXFLAGS -Werror=type-limits"
252 ;;
253 esac
254
255 # Enable visibility inlines hidden. Should drastically remove
256 # the amount of symbols due to templates.
257 # FIXME: not enabled on linux, yet, change the case statement
258 # to *_gcc4[23456789]* when stable.
259 case %cmsplatf in
260 osx* )
261 COMPILER_CXXFLAGS="$COMPILER_CXXFLAGS -fvisibility-inlines-hidden"
262 ;;
263 esac
264
265 export COMPILER_CXXFLAGS
266
267 # Handle here platform specific overrides. In case we
268 # want to tune something for a specific architecture.
269 case %cmsplatf in
270 osx10[56]*)
271 # On macosx we explicitly pick up a compiler version so that there is
272 # actually matching between the platform specified to cmsBuild and the
273 # compiler.
274 export COMPILER_NAME_SUFFIX="-$COMPILER_VERSION_MAJOR.$COMPILER_VERSION_MINOR"
275 ;;
276 esac
277
278 # General substitutions
279 perl -p -i -e 's|\@([^@]*)\@|$ENV{$1}|g' %i/etc/scram.d/*.xml
280 perl -p -i -e 's|\@([^@]*)\@|$ENV{$1}|g' %i/etc/disabled/scram.d/*.xml
281 %post
282 %{relocateConfig}etc/disabled/scram.d/*.xml
283 %{relocateConfig}etc/scram.d/*.xml
284 echo "LLVM_GCC_TOOLFILE_ROOT='$CMS_INSTALL_PREFIX/%{pkgrel}'; export GCC_TOOLFILE_ROOT" > $RPM_INSTALL_PREFIX/%{pkgrel}/etc/profile.d/init.sh
285 echo "setenv LLVM_GCC_TOOLFILE_ROOT '$CMS_INSTALL_PREFIX/%{pkgrel}'" > $RPM_INSTALL_PREFIX/%{pkgrel}/etc/profile.d/init.csh