root/branch/3.4.2/CMakeLists.txt

Revision 1278, 9.7 kB (checked in by mswat, 23 months ago)

Added support for periodic boundary conditions in mitosis steppable

Line 
1CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
2PROJECT(COMPUCELL3D)
3
4if(COMMAND cmake_policy)
5  cmake_policy(SET CMP0003 NEW)
6endif(COMMAND cmake_policy)
7
8#APPLE CHECK                                                                                                                                               
9IF (APPLE)
10#       SET (CMAKE_OSX_ARCHITECTURES "i386")            #x86_64 ppc ppc64                                                                 
11#       SET (CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX10.5.sdk")         
12#       SET (CMAKE_CXX_FLAGS -mmacosx-version-min=10.4)                                                                                   
13#       SET (CMAKE_C_FLAGS -mmacosx-version-min=10.4)                                                                                     
14        MESSAGE ("GOT APPLE")                                                 
15ENDIF (APPLE)
16
17# Should we build shared libraries
18OPTION(BUILD_SHARED_LIBS "Build shared libraries" ON)
19
20# Specify a version for all libs to use
21SET(COMPUCELL3D_MAJOR_VERSION 3)
22SET(COMPUCELL3D_MINOR_VERSION 4)
23SET(COMPUCELL3D_BUILD_VERSION 2)
24SET(COMPUCELL3D_VERSION
25  "${COMPUCELL3D_MAJOR_VERSION}.${COMPUCELL3D_MINOR_VERSION}.${COMPUCELL3D_BUILD_VERSION}")
26
27INCLUDE_DIRECTORIES (
28    ${COMPUCELL3D_SOURCE_DIR}/core
29    )
30   
31SET(COMPUCELL3D_LIBRARY_PROPERTIES ${COMPUCELL3D_LIBRARY_PROPERTIES}
32  VERSION "${COMPUCELL3D_VERSION}"
33  SOVERSION "${COMPUCELL3D_MAJOR_VERSION}.${COMPUCELL3D_MINOR_VERSION}"
34)
35
36# Enable Unit Testing
37OPTION(COMPUCELL3D_TEST "Unit testing of CompuCell3D" OFF)
38MARK_AS_ADVANCED(COMPUCELL3D_TEST)
39
40IF(COMPUCELL3D_TEST)
41        ENABLE_TESTING()
42        INCLUDE(FindCppUnit.cmake)
43        INCLUDE_DIRECTORIES(${CPPUNIT_INCLUDE_DIR})
44ENDIF(COMPUCELL3D_TEST)
45
46#if(COMMAND cmake_policy)
47#  cmake_policy(SET CMP0002 NEW)
48#endif(COMMAND cmake_policy)
49
50# Always include the top level source for compiles
51SET_DIRECTORY_PROPERTIES(PROPERTIES
52  INCLUDE_DIRECTORIES ${COMPUCELL3D_SOURCE_DIR})
53
54# Where to install files relative to prefix
55SET(COMPUCELL3D_INSTALL_LIB_DIR "/lib")
56SET(COMPUCELL3D_INSTALL_PLUGIN_DIR "/lib/CompuCell3DPlugins")
57SET(COMPUCELL3D_INSTALL_STEPPABLE_DIR "/lib/CompuCell3DSteppables")
58SET(COMPUCELL3D_INSTALL_INCLUDE_DIR "/include/CompuCell3D")
59
60# Find libz for use in the CompuCell/IO utils
61INCLUDE(FindZLIB)
62
63# Should we build wrappings
64OPTION(BUILD_PYINTERFACE "Build Python language wrappings" ON)
65
66# C++ only executable - useful for debugging
67OPTION(BUILD_CPP_ONLY_EXECUTABLE "Build C++ only executable(requires Expat library)" OFF)
68
69# set a path to VTK , PyQT and Qt libraries and to VS redeistributable package on windows 
70if(${CMAKE_SYSTEM_NAME} STREQUAL Windows)
71    SET(WINDOWS_DEPENDENCIES CACHE PATH  "Location of windows dependencies")
72    LINK_DIRECTORIES(  ${WINDOWS_DEPENDENCIES}/lib)
73endif(${CMAKE_SYSTEM_NAME} STREQUAL Windows)
74
75
76SET(COMPUCELL3D_PLUGIN_PATH
77    /lib/CompuCell3DPlugins)
78#ENDIF(NOT COMPUCELL3D_PLUGIN_PATH)
79
80
81SET(COMPUCELL3D_STEPPABLE_PATH
82    /lib/CompuCell3DSteppables)
83
84#helpful macros
85MACRO(LIST_CONTAINS var value)
86  SET(${var})
87  FOREACH (value2 ${ARGN})
88    IF (${value} STREQUAL ${value2})
89      SET(${var} TRUE)
90    ENDIF (${value} STREQUAL ${value2})
91  ENDFOREACH (value2)
92ENDMACRO(LIST_CONTAINS)
93
94MACRO(PARSE_ARGUMENTS prefix arg_names option_names)
95  SET(DEFAULT_ARGS)
96  FOREACH(arg_name ${arg_names})
97    SET(${prefix}_${arg_name})
98  ENDFOREACH(arg_name)
99  FOREACH(option ${option_names})
100    SET(${prefix}_${option} FALSE)
101  ENDFOREACH(option)
102
103  SET(current_arg_name DEFAULT_ARGS)
104  SET(current_arg_list)
105  FOREACH(arg ${ARGN})
106    LIST_CONTAINS(is_arg_name ${arg} ${arg_names})
107    IF (is_arg_name)
108      SET(${prefix}_${current_arg_name} ${current_arg_list})
109      SET(current_arg_name ${arg})
110      SET(current_arg_list)
111    ELSE (is_arg_name)
112      LIST_CONTAINS(is_option ${arg} ${option_names})
113      IF (is_option)
114        SET(${prefix}_${arg} TRUE)
115      ELSE (is_option)
116        SET(current_arg_list ${current_arg_list} ${arg})
117      ENDIF (is_option)
118    ENDIF (is_arg_name)
119  ENDFOREACH(arg)
120  SET(${prefix}_${current_arg_name} ${current_arg_list})
121ENDMACRO(PARSE_ARGUMENTS)
122
123
124MACRO(CAR var)
125  SET(${var} ${ARGV1})
126ENDMACRO(CAR)
127
128
129MACRO(CDR var junk)
130  SET(${var} ${ARGN})
131ENDMACRO(CDR)
132
133
134MACRO(ADD_STATIC_LIBRARY)
135   PARSE_ARGUMENTS(LIBRARY
136    "LINK_LIBRARIES;DEPENDS;SUFFIX"
137    ""
138    ${ARGN}
139    )
140  CAR(LIBRARY_NAME ${LIBRARY_DEFAULT_ARGS})
141  CDR(LIBRARY_SOURCES ${LIBRARY_DEFAULT_ARGS})
142
143  #MESSAGE("*** NAME OF LIBRARY ${LIBRARY_NAME}")
144  #MESSAGE("Sources: ${LIBRARY_SOURCES}")
145  #MESSAGE("Link libraries: ${LIBRARY_LINK_LIBRARIES}")
146
147  ADD_LIBRARY(${LIBRARY_NAME}Static STATIC ${LIBRARY_SOURCES})
148  TARGET_LINK_LIBRARIES(${LIBRARY_NAME}Static ${LIBRARY_LINK_LIBRARIES})
149  SET_TARGET_PROPERTIES(
150  ${LIBRARY_NAME}Static PROPERTIES
151  ${COMPUCELL3D_LIBRARY_PROPERTIES})
152
153  SET_TARGET_PROPERTIES(${LIBRARY_NAME}Static  PROPERTIES OUTPUT_NAME CC3D${LIBRARY_NAME}${LIBRARY_SUFFIX})
154  INSTALL_TARGETS(/lib ${LIBRARY_NAME}Static)
155ENDMACRO(ADD_STATIC_LIBRARY)
156
157
158MACRO(ADD_SHARED_LIBRARY)
159   PARSE_ARGUMENTS(LIBRARY
160    "LINK_LIBRARIES;DEPENDS;SUFFIX"
161    ""
162    ${ARGN}
163    )
164  CAR(LIBRARY_NAME ${LIBRARY_DEFAULT_ARGS})
165  CDR(LIBRARY_SOURCES ${LIBRARY_DEFAULT_ARGS})
166
167  #MESSAGE("*** NAME OF LIBRARY ${LIBRARY_NAME}")
168  #MESSAGE("Sources: ${LIBRARY_SOURCES}")
169  #MESSAGE("Link libraries: ${LIBRARY_LINK_LIBRARIES}")
170
171  ADD_LIBRARY(${LIBRARY_NAME}Shared SHARED ${LIBRARY_SOURCES})
172  TARGET_LINK_LIBRARIES(${LIBRARY_NAME}Shared ${LIBRARY_LINK_LIBRARIES})
173  SET_TARGET_PROPERTIES(
174  ${LIBRARY_NAME}Shared PROPERTIES
175  ${COMPUCELL3D_LIBRARY_PROPERTIES})
176
177  SET_TARGET_PROPERTIES(${LIBRARY_NAME}Shared  PROPERTIES OUTPUT_NAME CC3D${LIBRARY_NAME}${LIBRARY_SUFFIX})
178  INSTALL_TARGETS(/lib ${LIBRARY_NAME}Shared)
179ENDMACRO(ADD_SHARED_LIBRARY)
180
181
182MACRO(ADD_COMPUCELL3D_PLUGIN)
183   PARSE_ARGUMENTS(LIBRARY
184    "LINK_LIBRARIES;DEPENDS;SUFFIX"
185    ""
186    ${ARGN}
187    )
188  CAR(LIBRARY_NAME ${LIBRARY_DEFAULT_ARGS})
189  CDR(LIBRARY_SOURCES ${LIBRARY_DEFAULT_ARGS})
190
191  #MESSAGE("*** NAME OF LIBRARY ${LIBRARY_NAME}")
192  #MESSAGE("Sources: ${LIBRARY_SOURCES}")
193  #MESSAGE("Link libraries: ${LIBRARY_LINK_LIBRARIES}")
194  # ADD_DEFINITIONS(-DEXP_STL)
195  # # # #Automatically write a dll header file - used once during code rewriting
196  # # # set(LIBRARY_NAME_UPPERCASE ${LIBRARY_NAME})
197  # # # #note to replace "/" with "\" you need in fact use "escaped baskslash as a string literal". this is property of regex
198  # # # #for more info please see http://www.amk.ca/python/howto/regex/
199  # # # STRING(TOUPPER ${LIBRARY_NAME_UPPERCASE} LIBRARY_NAME_UPPERCASE )
200 
201  # # # configure_file(${CMAKE_SOURCE_DIR}/core/DLLSpecifier.h.in ${CMAKE_CURRENT_SOURCE_DIR}/${LIBRARY_NAME}DLLSpecifier.h @ONLY)
202  # # # message("current_src_dir" ${CMAKE_SOURCE_DIR})
203  # # # message("library_name" ${LIBRARY_NAME}DLLSpecifier.h)
204 
205  ADD_LIBRARY(${LIBRARY_NAME}Shared SHARED ${LIBRARY_SOURCES})
206  TARGET_LINK_LIBRARIES(${LIBRARY_NAME}Shared ${LIBRARY_LINK_LIBRARIES})
207  SET_TARGET_PROPERTIES(
208  ${LIBRARY_NAME}Shared PROPERTIES
209  ${COMPUCELL3D_LIBRARY_PROPERTIES})
210
211  SET_TARGET_PROPERTIES(${LIBRARY_NAME}Shared  PROPERTIES OUTPUT_NAME CC3D${LIBRARY_NAME}${LIBRARY_SUFFIX})
212  INSTALL_TARGETS(/lib/CompuCell3DPlugins RUNTIME_DIRECTORY /lib/CompuCell3DPlugins
213  ${LIBRARY_NAME}Shared)
214ENDMACRO(ADD_COMPUCELL3D_PLUGIN)
215
216
217MACRO(ADD_COMPUCELL3D_STEPPABLE)
218   PARSE_ARGUMENTS(LIBRARY
219    "LINK_LIBRARIES;DEPENDS;SUFFIX"
220    ""
221    ${ARGN}
222    )
223  CAR(LIBRARY_NAME ${LIBRARY_DEFAULT_ARGS})
224  CDR(LIBRARY_SOURCES ${LIBRARY_DEFAULT_ARGS})
225
226  #MESSAGE("*** NAME OF LIBRARY ${LIBRARY_NAME}")
227  #MESSAGE("Sources: ${LIBRARY_SOURCES}")
228  #MESSAGE("Link libraries: ${LIBRARY_LINK_LIBRARIES}")
229 
230  # # # #Automatically write a dll header file - used once during code rewriting
231  # # # set(LIBRARY_NAME_UPPERCASE ${LIBRARY_NAME})
232  # # # #note to replace "/" with "\" you need in fact use "escaped baskslash as a string literal". this is property of regex
233  # # # #for more info please see http://www.amk.ca/python/howto/regex/
234  # # # STRING(TOUPPER ${LIBRARY_NAME_UPPERCASE} LIBRARY_NAME_UPPERCASE )
235 
236  # # # configure_file(${CMAKE_SOURCE_DIR}/core/DLLSpecifier.h.in ${CMAKE_CURRENT_SOURCE_DIR}/${LIBRARY_NAME}DLLSpecifier.h @ONLY)
237  # # # message("current_src_dir" ${CMAKE_SOURCE_DIR})
238  # # # message("library_name" ${LIBRARY_NAME}DLLSpecifier.h)
239 
240
241  ADD_LIBRARY(${LIBRARY_NAME}Shared SHARED ${LIBRARY_SOURCES})
242  TARGET_LINK_LIBRARIES(${LIBRARY_NAME}Shared ${LIBRARY_LINK_LIBRARIES})
243  SET_TARGET_PROPERTIES(
244  ${LIBRARY_NAME}Shared PROPERTIES
245  ${COMPUCELL3D_LIBRARY_PROPERTIES})
246
247  SET_TARGET_PROPERTIES(${LIBRARY_NAME}Shared  PROPERTIES OUTPUT_NAME CC3D${LIBRARY_NAME}${LIBRARY_SUFFIX})
248  INSTALL_TARGETS(/lib/CompuCell3DSteppables RUNTIME_DIRECTORY /lib/CompuCell3DSteppables
249  ${LIBRARY_NAME}Shared)
250ENDMACRO(ADD_COMPUCELL3D_STEPPABLE)
251
252# setting up compilation environment for XML parser based on Expat library
253if(BUILD_CPP_ONLY_EXECUTABLE)
254
255
256    SET(EXPAT_INCLUDE_DIRECTORY  CACHE PATH "EXPAT include directory")
257    SET(EXPAT_LIBRARY_DIRECTORY  CACHE PATH "EXPAT library directory")
258
259    # MESSAGE("EXPAT_INCLUDE_DIR=",${EXPAT_INCLUDE_DIR}) 
260    # MESSAGE("EXPAT_INCLUDE_DIRECTORY=",${EXPAT_INCLUDE_DIRECTORY}) 
261
262    SET(EXPAT_INCLUDE_DIR ${EXPAT_INCLUDE_DIRECTORY})
263    SET(EXPAT_LIBRARY ${EXPAT_LIBRARY_DIRECTORY})
264
265     
266    INCLUDE(findEXPAT) 
267    MESSAGE("EXPAT_INCLUDE_DIRS=",${EXPAT_INCLUDE_DIRS}) 
268    MESSAGE("EXPAT_LIBRARIES=",${EXPAT_LIBRARIES}) 
269    MESSAGE("EXPAT_FOUND=",${EXPAT_FOUND}) 
270
271     
272    INCLUDE_DIRECTORIES (
273        ${EXPAT_INCLUDE_DIRS}
274        )
275    LINK_DIRECTORIES(${EXPAT_LIBRARY})         
276
277endif(BUILD_CPP_ONLY_EXECUTABLE)
278
279
280ADD_SUBDIRECTORY(core)
281ADD_SUBDIRECTORY(player)
Note: See TracBrowser for help on using the browser.