]> git.uio.no Git - u/mrichter/AliRoot.git/blob - CMakeLists.txt
Fix for Coverity defect 21184.
[u/mrichter/AliRoot.git] / CMakeLists.txt
1 # -*- mode: cmake -*-
2
3 # Top level CMakeList.txt file for the AliRoot Build System
4 #
5 # Author: Johny Jose (johny.jose@cern.ch)
6 #         Port of previous Makefile build to cmake
7
8
9 cmake_minimum_required(VERSION 2.8.4 FATAL_ERROR)
10
11 #--------------------------------------------------------------------------------#
12 # Set Basic CMake Configuration                                                  #
13 #--------------------------------------------------------------------------------#
14
15 project(AliRoot CXX C Fortran)
16
17 # Environment variables
18 set(ALICE $ENV{ALICE})
19 if(NOT ALICE)
20   message(WARNING "Environment variable ALICE is not set")
21 endif(NOT ALICE)
22
23 set(ALICE_ROOT $ENV{ALICE_ROOT})
24 if(NOT ALICE_ROOT)
25   message(FATAL_ERROR "Please set ALICE_ROOT to the AliRoot source directory")
26 endif(NOT ALICE_ROOT)
27
28 set(ALICE_INSTALL $ENV{ALICE_INSTALL})
29 # Set AliRoot Installation directory 
30 if(NOT ALICE_INSTALL)
31   message(STATUS "AliRoot files will be installed in ${ALICE_ROOT}. You can specify a different location by setting ALICE_INSTALL environment variable")
32   set(ALICE_INSTALL ${ALICE_ROOT})
33 else()
34   message(STATUS "AliRoot files will be installed in ${ALICE_INSTALL}")
35 endif(NOT ALICE_INSTALL)
36 if(${ALICE_INSTALL} STREQUAL ${CMAKE_BINARY_DIR})
37   message(FATAL_ERROR "Install dir should be different from build dir")
38 endif()
39 set(CMAKE_INSTALL_PREFIX ${ALICE_INSTALL})
40
41 # Environment for SHUTTLE
42 set(DIMDIR $ENV{DIMDIR})
43 set(ODIR $ENV{ODIR})
44
45 get_filename_component(PROJECT_SOURCE_DIR "${PROJECT_SOURCE_DIR}" REALPATH)
46 set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
47 set(CPACK_COMPONENTS_ALL MDC)
48
49 include(ALICE_CMake)
50
51 #--------------------------------------------------------------------------------#
52 # Find Packages                                                                  #
53 #--------------------------------------------------------------------------------#
54
55 # Subversion
56 # ------------------------------
57
58 find_package(Subversion REQUIRED)
59
60 # ROOT
61 # ------------------------------
62
63 find_package(ROOT REQUIRED)
64
65 # IRST Rule Checker 
66 # ------------------------------
67
68 find_package(RuleChecker)
69
70 # DATE
71 # ------------------------------ 
72
73 find_package(DATE)
74
75 # GEANT3
76 # ------------------------------
77
78 find_package(GEANT3)
79
80 # AMORE
81 # ------------------------------
82
83 find_package(AMORE)
84
85 # AliRoot CPack configuration                                                    
86 #-------------------------------
87
88 find_package(CPack)
89
90 # ZeroMQ
91 # ------------------------------
92 find_package(ZeroMQ)
93
94 #--------------------------------------------------------------------------------#
95 # Environment/Compiler Configuration                                             #
96 #--------------------------------------------------------------------------------#
97
98 ALICE_CheckOutOfSourceBuild()
99 ALICE_RootConfig(CMAKE_CXX_COMPILER --cxx)
100 ALICE_RootConfig(CMAKE_C_COMPILER --cc)
101 ALICE_RootConfig(CMAKE_Fortran_COMPILER --f77)
102 ALICE_ConfigurePlatform()
103 ALICE_ConfigureCompiler()
104
105
106 #--------------------------------------------------------------------------------#
107 # AliRoot Path Settings                                                          #
108 #--------------------------------------------------------------------------------#
109
110 ALICE_DevFlagsOutput()
111 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin/tgt_${ALICE_TARGET}")
112 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib/tgt_${ALICE_TARGET}")
113 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib/tgt_${ALICE_TARGET}")
114 set(CMAKE_INCLUDE_EXPORT_DIRECTORY "${PROJECT_BINARY_DIR}/include")
115 file(MAKE_DIRECTORY ${CMAKE_INCLUDE_EXPORT_DIRECTORY})
116 set(EXPORTDIRS "${ALICE_INSTALL}/include")
117 set(BINLIBDIRS "-L${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
118
119
120 #--------------------------------------------------------------------------------#
121 # AliRoot Modules                                                                #
122 #--------------------------------------------------------------------------------#
123
124 # Exclude Module from all target
125 # ------------------------------
126
127 #set(EXCLUDEMODULES THydjet SHUTTLE)
128
129
130 # Standard Modules
131 # ------------------------------
132 set(ALIROOTMODULES STEER PHOS TRD TPC ZDC MUON PMD FMD TOF ITS ACORDE HMPID T0 BCM STRUCT VZERO THijing THbtp EMCAL THerwig TEPEMGEN FASTSIM TPHIC RAW MONITOR ANALYSIS JETAN HLT STAT TTherminator CORRFW DPMJET TDPMjet STARLIGHT PWGPP PWG PWGCF PWGGA PWGHF PWGDQ PWGJE PWGLF PWGUD TRIGGER PYTHIA8 TAmpt OADB MFT TEvtGen)
133
134 if(THydjet)
135   list(APPEND ALIROOTMODULES THydjet)
136 endif(THydjet)
137
138 if(SHUTTLE)
139   list(APPEND ALIROOTMODULES SHUTTLE)
140 endif(SHUTTLE)
141
142 # Additional Modules
143 # ------------------------------
144 list(APPEND ALIROOTMODULES TUHKMgen EPOS)
145
146 # EVE
147 # ------------------------------
148 ALICE_RootConfig(EVE --has-opengl)
149 if(NOT EVE STREQUAL "no")
150   list(APPEND ALIROOTMODULES EVE)
151 endif(NOT EVE STREQUAL "no")
152
153 # CERN Modules
154 # ------------------------------
155 set(CERNMODULES LHAPDF HIJING MICROCERN HERWIG)
156
157 # Check for Pythia 6
158 if(EXISTS ${ROOTINCDIR}/TPythia6.h)
159   set(PYTHIA6 TRUE)
160   list(APPEND CERNMODULES PYTHIA6 EVGEN)
161 elseif(NOT NOPYTHIA)
162   message(FATAL_ERROR "ROOT must have Pythia6 enabled !")
163 endif(EXISTS ${ROOTINCDIR}/TPythia6.h)
164
165 # Set Final list of modules 
166 set(MODULES ${ALIROOTMODULES} ${CERNMODULES} ALIROOT)
167
168 # Set Module directories
169 set(MODDIRS ${MODULES})
170
171 # Libraries for Linking
172 # ------------------------------
173 set(ALILIBS MUON TPC PMD TRD FMD TOF ITS PHOS ACORDE HMPID VZERO ZDC STRUCT T0 EVGEN STEER TRIGGER MFT)
174 set(LIBS ${ROOTCLIBS} ${ROOTPLIBS} ${SYSLIBS})
175
176 # Configure ARVerion.h
177 # ------------------------------
178 #If the sources were taken from Git
179 if(EXISTS ${PROJECT_SOURCE_DIR}/.git/)
180  include(GetGitRevisionDescription)
181  find_package(Git)
182  if(GIT_FOUND)
183   get_git_head_revision(GIT_REFSPEC GIT_SHA1)
184   message(STATUS "Aliroot Revision - ${GIT_SHA1} Branch - ${GIT_REFSPEC}")
185
186   STRING(REGEX REPLACE "^(.+/)(.+/)(.*)$" "\\3" SHORT_BRANCH "${GIT_REFSPEC}" )
187
188   set(ALIROOT_REVISION ${GIT_SHA1})
189   set(ALIROOT_BRANCH ${SHORT_BRANCH})
190
191  else()
192   message("Git not installed. I can't tell you which revision you are using!")
193   endif(GIT_FOUND)
194 else()
195  message("AliRoot sources not downloaded from a Version Control System. I can't tell which revision you are using!")
196 endif(EXISTS ${PROJECT_SOURCE_DIR}/.git/)
197
198 configure_file(${PROJECT_SOURCE_DIR}/cmake/ARVersion.h.tmp ${CMAKE_INCLUDE_EXPORT_DIRECTORY}/ARVersion.h @ONLY)
199
200 string (REPLACE "-" "." ALIROOT_BRANCH_SPEC "${ALIROOT_BRANCH}")
201
202 #--------------------------------------------------------------------------------#
203 # Build Modules                                                                  #
204 #--------------------------------------------------------------------------------#
205
206 # Module Variables
207 # ------------------------------
208 set(ALLLIBS)
209 set(ALLEXECS)
210 set(INCLUDEFILES)
211 set(BINLIBS)
212 set(EXPORTFILES)
213
214 # Top Level Build Targets
215 # ------------------------------
216
217 add_custom_target(alilibs-static)
218 add_custom_target(include-headers ALL)
219 add_custom_target(DA-all)
220 add_custom_target(check-all) 
221 add_custom_target(check-hxml)
222 add_custom_target(smell-all) 
223 add_custom_target(htmldoc) 
224 add_custom_target(par-all)
225 add_custom_target(test-par-all)
226
227 #NY file(GLOB CFILES_LIST ${CMAKE_SOURCE_DIR}/macros/*.C)
228
229 add_custom_command(TARGET htmldoc
230                    PRE_BUILD
231                    COMMAND mkdir -p html
232                    COMMAND rm -rf html/roothtml
233                    COMMAND rm -f html/picts
234                    COMMAND cd html && aliroot -q -b mkhtml.C\\\(0,1\\\)
235                    WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
236
237 # Include Vc, which provides the static libVc and the relevant CMake macros
238 include(Vc/Vc.cmake)
239 add_subdirectory(Vc)
240
241 # Add Modules   
242 # ------------------------------
243 foreach(MODULE ${MODDIRS})
244   set(${MODULE}ALIBS)
245 #RS  configure_file(${PROJECT_SOURCE_DIR}/cmake/Module.tmp ${PROJECT_SOURCE_DIR}/${MODULE}/CMakeLists.txt @ONLY)
246   add_custom_target(${MODULE}-all ALL)
247   add_custom_target(${MODULE}-par-all)
248   add_custom_target(test-${MODULE}-par-all)
249   add_custom_target(${MODULE}-all-static)
250   add_dependencies(alilibs-static "${MODULE}-static")
251   add_subdirectory(${MODULE})
252   
253 #NY  set(dir "${CMAKE_SOURCE_DIR}/${MODULE}")
254 #NY  if (EXISTS "${dir}")
255 #NY      file(GLOB CFILES_MOD ${dir}/*.C)
256 #NY      list(LENGTH CFILES_MOD len)
257 #NY      if (${len} GREATER 0)
258 #NY        list(APPEND CFILES_LIST "${CFILES_MOD}")
259 #NY      endif (${len} GREATER 0)
260 #NY  endif(EXISTS "${dir}")
261 endforeach(MODULE)
262
263 #NY foreach(cfile ${CFILES_LIST})
264 #NY     add_custom_command(TARGET htmldoc
265 #NY                    PRE_BUILD
266 #NY                    COMMAND cd html && 
267 #NY                            aliroot -b -q \"mkhtml.C(\"${cfile}\")\" > /dev/null
268 #NY                    WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
269 #NY endforeach(cfile)
270
271 if(DATE_FOUND)
272   include (CMakeDA)
273 endif(DATE_FOUND)
274
275 if(RULECHECKER_FOUND)
276     add_custom_target(factfile DEPENDS ${FACTFILE})
277     add_custom_command( OUTPUT ${FACTFILE}
278                         COMMAND ${CMAKE_COMMAND} -E echo "Re-generating factfile"
279                         COMMAND ${JAVA_RUNTIME}  -Xmx1024M -jar ${FACTEXTRACTOR_JAR} ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}                    
280                         DEPENDS check-hxml ${CMAKE_BINARY_DIR}/check-hxml-touchfile ${_factfile_deps} 
281                         WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
282 endif(RULECHECKER_FOUND)
283
284 #--------------------------------------------------------------------------------#
285 # Additional Targets                                                             #
286 #--------------------------------------------------------------------------------#
287
288 # AliMdc RPM
289 # ------------------------------
290
291 execute_process(
292 COMMAND root-config --libdir 
293 OUTPUT_VARIABLE ROOTALIBDIR)
294 string(REPLACE "\n" "" ROOTALIBDIR ${ROOTALIBDIR}) 
295
296 execute_process(
297 COMMAND root-config --arch 
298 OUTPUT_VARIABLE ARCHITECTURE)
299
300
301 set(AEXT a)
302 set(LIBPATH ${CMAKE_BINARY_DIR}/lib/tgt_${ALICE_TARGET})
303 set(BINPATH ${CMAKE_BINARY_DIR}/bin/tgt_${ALICE_TARGET})
304 set(EXPORTDIR ${ALICE_ROOT}/include)
305 set(BINLIBDIRS -L${ALICE_ROOT}/${LIBPATH})
306 set(RAWDIRO ${CMAKE_BINARY_DIR}/RAW)
307 set(ALIMDCSPECFILE ${RAWDIRO}/alimdc.spec)
308 set(RAWDatabaseALIB ${LIBPATH}/libRAWDatabase.${AEXT})
309 set(ESDALIB ${LIBPATH}/libESD.${AEXT})
310 set(STEERBaseALIB ${LIBPATH}/libSTEERBase.${AEXT})
311 set(MDCALIB ${LIBPATH}/libMDC.${AEXT})
312 set(MODDIRO RAW/tgt_${ALICE_TARGET})
313
314
315 if( ${ARCHITECTURE} MATCHES "linuxx8664gcc" )
316 set(ALIMDCARCHDIR x86_64)
317 elseif( ${ARCHITECTURE} MATCHES "linux" )
318 set(ALIMDCARCHDIR i386)
319 elseif( ${ARCHITECTURE} MATCHES "linuxia64gcc" )
320 set(ALIMDCARCHDIR ia64)
321 elseif(NOT DEFINED ${ARCHITECTURE})
322 message("alimdc-rpm: Unknown architecture" )
323 else( ${ARCHITECTURE} MATCHES "linuxx8664gcc" )
324 message("alimdc-rpm: Unknown architecture" )
325 endif( ${ARCHITECTURE} MATCHES "linuxx8664gcc" )
326
327
328 add_custom_target( alimdc-rpm
329 DEPENDS alimdc-static alimdc-specfile
330 )
331
332 add_custom_command(
333 TARGET alimdc-rpm
334 POST_BUILD 
335 COMMAND rm -rf ${ALICE_ROOT}/alimdc-root
336 COMMAND mkdir -p ${ALICE_ROOT}/alimdc-root/opt/alimdc/lib
337 COMMAND mkdir -p ${ALICE_ROOT}/alimdc-root/opt/alimdc/include
338 COMMAND cp ${ALICE_ROOT}/RAW/mdc.h ${ALICE_ROOT}/alimdc-root/opt/alimdc/include
339 COMMAND cp ${LIBPATH}/libAliMDC.a ${ALICE_ROOT}/alimdc-root/opt/alimdc/lib
340 COMMAND cp ${ROOTALIBDIR}/libRoot.a ${ALICE_ROOT}/alimdc-root/opt/alimdc/lib
341 COMMAND cp ${ROOTALIBDIR}/liblzma.a ${ALICE_ROOT}/alimdc-root/opt/alimdc/lib
342 COMMAND cp ${ROOTALIBDIR}/libpcre.a ${ALICE_ROOT}/alimdc-root/opt/alimdc/lib
343 COMMAND cp ${ROOTALIBDIR}/libfreetype.a ${ALICE_ROOT}/alimdc-root/opt/alimdc/lib
344 COMMAND cp ${ROOTALIBDIR}/libpcre.a ${ALICE_ROOT}/alimdc-root/opt/alimdc/lib
345 COMMAND rm -rf ${ALICE_ROOT}/RPMS
346 COMMAND mkdir -p ${ALICE_ROOT}/RPMS/${ALIMDCARCHDIR}/
347 COMMAND rpmbuild --verbose --define "_topdir ${ALICE_ROOT}" --define "_tmppath ${ALICE_ROOT}" -bb ${ALIMDCSPECFILE} 
348 COMMAND cp -p ${ALICE_ROOT}/RPMS/${ALIMDCARCHDIR}/alimdc-*.rpm .
349 COMMAND rm -rf ${ALICE_ROOT}/alimdc-root
350 COMMAND rm -rf ${ALICE_ROOT}/RPMS
351 COMMAND echo "***** alimdc RPM created and put in ${CMAKE_BINARY_DIR} folder *****"
352 )
353
354 add_custom_command(
355 TARGET ${RAWDIRO}
356 COMMAND mkdir-p ${RAWDIRO}
357 )
358
359
360 add_custom_target( alimdc-specfile
361 DEPENDS ${RAWDIRO}
362 )
363
364 add_custom_command( 
365 TARGET alimdc-specfile
366 POST_BUILD
367 COMMAND rm -rf ${ALIMDCSPECFILE}
368 COMMAND @echo "***** Making alimdc RPM spec-file ${ALIMDCSPECFILE} *****"
369 COMMAND @echo '\# RPM specfile for alimdc static libs' >> ${ALIMDCSPECFILE} 
370 COMMAND @echo '\# Package contains both ROOT and AliRoot' >> ${ALIMDCSPECFILE}
371 COMMAND @echo '\# static libs needed by mStreamRecorder' >> ${ALIMDCSPECFILE}
372 COMMAND @echo '\# in order to ROOT-ify the incoming raw' >> ${ALIMDCSPECFILE}
373 COMMAND @echo '\# data' >> ${ALIMDCSPECFILE}
374 COMMAND @echo '\# Example how-to build alimdc RPM:' >> ${ALIMDCSPECFILE}
375 COMMAND @echo '\# cd ${ALICE_ROOT}' >> ${ALIMDCSPECFILE}
376 COMMAND @echo '\# make alimdc-rpm' >> ${ALIMDCSPECFILE}
377 COMMAND @echo "" >> ${ALIMDCSPECFILE}
378 COMMAND @echo "Summary: AliMDC static libraries" >> ${ALIMDCSPECFILE}
379 COMMAND @echo "Name: alimdc" >> ${ALIMDCSPECFILE}
380 COMMAND @echo "Version:  ${ALIROOT_BRANCH_SPEC}" >> ${ALIMDCSPECFILE}
381 COMMAND @echo "Release: ${ALIROOT_REVISION}" >> ${ALIMDCSPECFILE}
382 COMMAND @echo '\# Copyright: CERN Alice Off-line' >> ${ALIMDCSPECFILE}
383 COMMAND @echo "License: CERN Alice Off-line" >> ${ALIMDCSPECFILE}
384 COMMAND @echo "Vendor: ALICE Core Off-line Group" >> ${ALIMDCSPECFILE}
385 COMMAND @echo "URL: http://aliceinfo.cern.ch" >> ${ALIMDCSPECFILE}
386 COMMAND @echo "Group: Applications/Alice" >> ${ALIMDCSPECFILE}
387 COMMAND @echo "Prefix: /opt/%{name}" >> ${ALIMDCSPECFILE}
388 COMMAND @echo "BuildRoot: %{_tmppath}/%{name}-root" >> ${ALIMDCSPECFILE}
389 COMMAND @echo "" >> ${ALIMDCSPECFILE}
390 COMMAND @echo '\# automatic dependencies' >> ${ALIMDCSPECFILE}
391 COMMAND @echo "AutoReqProv: yes" >> ${ALIMDCSPECFILE}
392 COMMAND @echo "" >> ${ALIMDCSPECFILE}
393 COMMAND @echo '\# list here required RPM packages for runtime' >> ${ALIMDCSPECFILE}
394 COMMAND @echo "Requires: glibc" >> ${ALIMDCSPECFILE}
395 COMMAND @echo "" >> ${ALIMDCSPECFILE}
396 COMMAND @echo "Provides: alimdc" >> ${ALIMDCSPECFILE}
397 COMMAND @echo "" >> ${ALIMDCSPECFILE}
398 COMMAND @echo '\# description of the package' >> ${ALIMDCSPECFILE}
399 COMMAND @echo "%description" >> ${ALIMDCSPECFILE}
400 COMMAND @echo "Package contains both ROOT and AliRoot" >> ${ALIMDCSPECFILE}
401 COMMAND @echo "static libs needed by mStreamRecorder" >> ${ALIMDCSPECFILE}
402 COMMAND @echo "in order to ROOT-ify the incoming raw" >> ${ALIMDCSPECFILE}
403 COMMAND @echo "data. The package version correspond to" >> ${ALIMDCSPECFILE}
404 COMMAND @echo "the AliRoot one." >> ${ALIMDCSPECFILE}
405 COMMAND @echo "" >> ${ALIMDCSPECFILE}
406 COMMAND @echo '\# list of files to be installed' >> ${ALIMDCSPECFILE}
407 COMMAND @echo "%files" >> ${ALIMDCSPECFILE}
408 COMMAND @echo "%defattr (-,root,root)" >> ${ALIMDCSPECFILE}
409 COMMAND @echo "%{prefix}/lib/libAliMDC.a" >> ${ALIMDCSPECFILE}
410 COMMAND @echo "%{prefix}/lib/libRoot.a" >> ${ALIMDCSPECFILE}
411 COMMAND @echo "%{prefix}/lib/libpcre.a" >> ${ALIMDCSPECFILE}
412 COMMAND @echo "%{prefix}/lib/liblzma.a" >> ${ALIMDCSPECFILE}
413 COMMAND @echo "%{prefix}/lib/libfreetype.a" >> ${ALIMDCSPECFILE}
414 COMMAND @echo "%{prefix}/include/mdc.h" >> ${ALIMDCSPECFILE}
415 )
416
417
418 add_custom_target( alimdc-static
419 DEPENDS ${LIBPATH} ${BINPATH} RAW-all-static STEER-all-static )
420
421 add_custom_command( 
422 TARGET alimdc-static
423 POST_BUILD
424 COMMAND ar r ${LIBPATH}/alimdccxxo.a ${CMAKE_BINARY_DIR}/RAW/CMakeFiles/alimdc.dir/alimdc_main.cxx.o
425 COMMAND rm -rf ${LIBPATH}/libAliMDC.a
426 COMMAND ar x ${RAWDatabaseALIB}
427 COMMAND ar x ${MDCALIB}
428 COMMAND ar x ${ESDALIB}
429 COMMAND ar x ${STEERBaseALIB}
430 COMMAND ar r ${LIBPATH}/libAliMDC.a *.o
431 COMMAND ar t ${RAWDatabaseALIB} | xargs rm 
432 COMMAND ar t ${MDCALIB} | xargs rm 
433 COMMAND ar t ${ESDALIB} | xargs rm 
434 COMMAND ar t ${STEERBaseALIB} | xargs rm 
435 COMMAND ${CMAKE_CXX_COMPILER} ${LDFLAGS} -o ${BINPATH}/alimdca ${LIBPATH}/alimdccxxo.a ${LIBPATH}/libAliMDC.a ${ROOTALIBDIR}/libRoot.a ${ROOTALIBDIR}/libfreetype.a ${ROOTALIBDIR}/libpcre.a ${ROOTALIBDIR}/liblzma.a -pthread -ldl -lz
436 COMMAND @echo "Target alimdc-static made"
437 )
438
439 add_custom_command(
440 TARGET ${LIBPATH}
441 COMMAND mkdir -p ${LIBPATH}
442 )
443
444
445 #include (MakefileDA) 
446 include (InstallRequiredSystemLibraries)
447 include (CPack)
448
449 # Install data
450 # ------------------------------
451 install ( DIRECTORY data 
452           DESTINATION . )
453 install ( DIRECTORY OCDB 
454           DESTINATION . 
455           PATTERN ".svn" EXCLUDE)
456 install ( DIRECTORY QAref 
457           DESTINATION . 
458           PATTERN ".svn" EXCLUDE)
459 install ( DIRECTORY GRP 
460           DESTINATION . 
461           PATTERN ".svn" EXCLUDE)
462
463 #
464 # EOF
465 #
466