source: branches/asap4casa3.1.0/CMakeLists.txt @ 1952

Last change on this file since 1952 was 1952, checked in by Takeshi Nakazato, 13 years ago

New Development: Yes

JIRA Issue: Yes CAS-2668

Ready for Test: No

Interface Changes: No

What Interface Changed: Please list interface changes

Test Programs: List test programs

Put in Release Notes: No

Module(s): Module Names change impacts.

Description: Describe your changes here...

First version of CMakeLists.txt for cmake system.
This is preliminary version that search path for some key external
libraries are hard coded. However, overall design would be fixed so far.


File size: 6.3 KB
Line 
1###
2# CMakeLists.txt for ASAP module
3###
4
5# minimum requirement for cmake version
6cmake_minimum_required( VERSION 2.8 )
7
8# project name is ASAP
9project( ASAP )
10
11# install directory
12# set casaroot
13# the regular expression means '../'
14#  [^ ] Matches any character(s) not inside the brackets
15#  +    Matches preceding pattern one or more times
16#  ?    Matches preceding pattern zero or once only
17#  $    Mathces at end of a line
18string( REGEX REPLACE /[^/]+/?$ "" casaroot ${CMAKE_SOURCE_DIR} )
19message( STATUS "casaroot = " ${casaroot} )
20
21# flags
22set( DEFAULT_CXX_FLAGS
23     "-pipe -Wall -Wextra -Wno-non-template-friend -Wcast-align -Wno-comment" )
24find_package( OpenMP )
25if( OPENMP_FOUND )
26   set( DEFAULT_CXX_FLAGS "${DEFAULT_CXX_FLAGS} ${OpenMP_CXX_FLAGS}" )
27endif()
28
29# environment dependent settings
30if( APPLE )
31   set( SO dylib )
32   if( NOT arch )
33      set( arch darwin )
34   endif()
35   if( CMAKE_SYSTEM MATHCES ^Darwin-10 )
36      if( NOT archflag )
37         if( EXISTS /opt/casa/darwin10-64b )
38            set( archflag x86_64 )
39         elseif( EXISTS /opt/casa/core2-apple-darwin10 )
40            set( archflag i386 )
41         else()
42            set( archflag x86_64 )
43         endif()
44      endif()
45      if( archflag STREQUAL x86_64 )
46         add_definitions( -DAIPS_64B )
47         set( casa_packages /opt/casa/darwin10-64b )
48      else()
49         set( casa_packages /opt/casa/core2-apple-darwin10 )
50      endif()
51      execute_process( COMMAND ${CMAKE_CXX_COMPILER} --version
52                       COMMAND head -1
53                       COMMAND perl -pe "s|.*?(\\d+\\.\\d+)\\.\\d+$|$1|"
54                       OUTPUT_VARIABLE _cxx_version
55                       OUTPUT_STRIP_TRAILING_WHITESPACE )
56      if( NOT _cxx_version STREQUAL "4.4" )
57         set( DEFAULT_CXX_FLAGS "${DEFAULT_CXX_FLAGS} -arch ${archflag}" )
58      endif()
59   elseif( CMAKE_SYSTEM MATCHES ^Darwin-9 )
60      set( casa_packages /opt/casa/core2-apple-darwin8/3rd-party )
61   endif()         
62elseif( CMAKE_SYSTEM_NAME STREQUAL Linux )
63   set( SO so )
64   add_definitions( -DAIPS_LINUX )
65   if( CMAKE_SYSTEM_PROCESSOR STREQUAL x86_64 )
66      set( casa_packages /usr/lib64/casapy )
67      if( NOT arch )
68         set( arch linux_64b )
69      endif()
70      add_definitions( -DAIPS_64B )
71      set( DEFAULT_CXX_FLAGS "${DEFAULT_CXX_FLAGS} -Wno-deprecated" )
72   else()
73      set( casa_packages /usr/lib/casapy )
74      if( NOT arch )
75         set( arch linux_gnu )
76      endif()
77      set( DEFAULT_CXX_FLAGS "${DEFAULT_CXX_FLAGS} -Wno-deprecated -Woverloaded-virtual" )
78   endif()
79endif()
80message( STATUS "arch = " ${arch} )
81
82# set root directory for installation
83set( CMAKE_INSTALL_PREFIX ${casaroot}/${arch} )
84message( STATUS "CMAKE_INSTALL_PREFIX = " ${CMAKE_INSTALL_PREFIX} )
85
86# set flags for cpp compiler
87set( CMAKE_CXX_FLAGS ${DEFAULT_CXX_FLAGS} )
88
89#
90# casacore
91#
92set( CASACORE_INCLUDE_DIR ${casaroot}/${arch}/include/casacore )
93
94set( CASACORE_LIBS casa
95                   components
96                   coordinates
97                   fits
98                   images
99                   lattices
100                   measures
101                   mirlib
102                   ms
103                   msfits
104                   scimath
105                   scimath_f
106                   tables )
107set( _casacore_libs "" )
108foreach( _a ${CASACORE_LIBS} )
109   set( _libname libcasa_${_a}.${SO} )
110   unset( _casacore_lib CACHE )
111   find_library( _casacore_lib ${_libname}
112                 PATHS ${CMAKE_INSTALL_PREFIX} PATH_SUFFIXES lib )
113   if( NOT _casacore_lib-NOTFOUND )
114      list( APPEND _casacore_libs casa_${_a} )
115   endif()
116endforeach()
117set( CASACORE_LIBRARIES ${_casacore_libs} )
118message( STATUS "CASACORE_LIBRARIES = " ${CASACORE_LIBRARIES} )
119
120#
121# Python
122#
123# tentative
124set( PYVERSION 2.6 )
125if (NOT PYTHON_ROOT )
126   set( PYTHON_ROOT ${casa_packages} )
127endif()
128find_package( PythonLibs REQUIRED python${PYVERSION} )
129
130if( NOT PYTHONLIBS_FOUND )
131   message( FATAL_ERROR "Python could not be found. Please check!" )
132endif()
133message( STATUS "PYTHON_INCLUDE_PATH = " ${PYTHON_INCLUDE_PATH} )
134message( STATUS "PYTHON_LIBRARIES = " ${PYTHON_LIBRARIES} )
135
136set( PYTHON_INCLUDE_DIR ${PYTHON_INCLUDE_PATH} )
137find_path( NUMPY_INC_DIR numpy/npy_interrupt.h
138           PATHS ${casa_packages}/lib/python${PYVERSION}/site-packages/numpy/core/include )
139message( STATUS "NUMPY_INC_DIR = " ${NUMPY_INC_DIR} )
140if( NOT NUMPY_INC_DIR STREQUAL NUMPY_INC_DIR-NOTFOUND )
141   list( APPEND PYTHON_INCLUDE_DIR ${NUMPY_INC_DIR} )
142endif()
143message( STATUS "PYTHON_INCLUDE_DIR = " ${PYTHON_INCLUDE_DIR} )
144
145#
146# Boost
147#
148if( NOT BOOST_ROOT )
149   set( BOOST_ROOT ${casa_packages} )
150endif()
151
152set( boost_components regex program_options filesystem )
153find_package( Boost REQUIRED ${boost_components} )
154
155if( NOT Boost_FOUND )
156  message( FATAL_ERROR "Boost could not be found. Please check!" )
157endif()
158
159# For boost >= 1.35, we need to link also to boost-system
160if( Boost_VERSION GREATER 103499 )
161
162  # Force redetection by resetting these variables
163  if( NOT Boost_SYSTEM_FOUND )
164    message( STATUS "Boost version (${Boost_VERSION}) is 1.35.0 or newer" )
165    unset( Boost_FOUND )
166    unset( Boost_INCLUDE_DIR CACHE )
167  endif()
168  set( boost_components regex program_options filesystem system )
169  find_package( Boost REQUIRED ${boost_components} )
170
171  if( NOT Boost_FOUND )
172    message( FATAL_ERROR "Boost-system could not be found. Please check!" )
173  endif()
174endif()
175
176if( NOT Boost_VERSION GREATER 103199 AND NOT CASA_IGNORE_VERSION )
177  message( FATAL_ERROR "Boost version (${Boost_VERSION}) is too old! Must be 103200 (1.32.0) or newer. Please check!" )
178endif()
179
180
181
182# include path
183message( STATUS "Boost_INCLUDE_DIR = " ${Boost_INCLUDE_DIR} )
184include_directories( ${CASACORE_INCLUDE_DIR}
185                     ${Boost_INCLUDE_DIR}
186                     ${PYTHON_INCLUDE_DIR} )
187
188# link path
189set( CASACORE_LIBRARY_DIR ${casaroot}/${arch}/lib )
190link_directories( ${CASACORE_LIBRARY_DIR} )
191
192
193# install directory
194set( EXEC_INSTALL_DIR bin )
195set( LIB_INSTALL_DIR lib )
196set( PYTHON_INSTALL_DIR python/${PYVERSION}/asap )
197set( SHARED_INSTALL_DIR share/asap )
198
199# subdirectories
200#  asap2to3       apps
201#  libpyrap.so    external/libpyrap
202#  libatnf.so     external-alma/atnf
203#  _asap.so       src
204#  python modules python
205add_subdirectory( apps )
206add_subdirectory( external/libpyrap )
207add_subdirectory( external-alma/atnf )
208add_subdirectory( src )
209add_subdirectory( python )
210add_subdirectory( share )
211
212
Note: See TracBrowser for help on using the repository browser.