root/branch/3.4.0/CMakeLists.txt

Revision 829, 6.2 kB (checked in by dexity, 3 years ago)

The code is now compilable. Now I need to make it installable.

  • Property svn:mime-type set to text/plain
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# Should we build shared libraries
9OPTION(BUILD_SHARED_LIBS "Build shared libraries" ON)
10
11# Specify a version for all libs to use
12SET(COMPUCELL3D_MAJOR_VERSION 3)
13SET(COMPUCELL3D_MINOR_VERSION 4)
14SET(COMPUCELL3D_BUILD_VERSION 0)
15SET(COMPUCELL3D_VERSION
16  "${COMPUCELL3D_MAJOR_VERSION}.${COMPUCELL3D_MINOR_VERSION}.${COMPUCELL3D_BUILD_VERSION}")
17
18INCLUDE_DIRECTORIES (
19    ${COMPUCELL3D_SOURCE_DIR}/core
20    )
21   
22SET(COMPUCELL3D_LIBRARY_PROPERTIES ${COMPUCELL3D_LIBRARY_PROPERTIES}
23  VERSION "${COMPUCELL3D_VERSION}"
24  SOVERSION "${COMPUCELL3D_MAJOR_VERSION}.${COMPUCELL3D_MINOR_VERSION}"
25)
26
27# Enable Unit Testing
28OPTION(COMPUCELL3D_TEST "Unit testing of CompuCell3D" OFF)
29MARK_AS_ADVANCED(COMPUCELL3D_TEST)
30
31IF(COMPUCELL3D_TEST)
32        ENABLE_TESTING()
33        INCLUDE(FindCppUnit.cmake)
34        INCLUDE_DIRECTORIES(${CPPUNIT_INCLUDE_DIR})
35ENDIF(COMPUCELL3D_TEST)
36
37#if(COMMAND cmake_policy)
38#  cmake_policy(SET CMP0002 NEW)
39#endif(COMMAND cmake_policy)
40
41# Always include the top level source for compiles
42SET_DIRECTORY_PROPERTIES(PROPERTIES
43  INCLUDE_DIRECTORIES ${COMPUCELL3D_SOURCE_DIR})
44
45# Where to install files relative to prefix
46SET(COMPUCELL3D_INSTALL_LIB_DIR "/lib")
47SET(COMPUCELL3D_INSTALL_PLUGIN_DIR "/lib/CompuCell3DPlugins")
48SET(COMPUCELL3D_INSTALL_STEPPABLE_DIR "/lib/CompuCell3DSteppables")
49SET(COMPUCELL3D_INSTALL_INCLUDE_DIR "/include/CompuCell3D")
50
51# Find libz for use in the CompuCell/IO utils
52INCLUDE(FindZLIB)
53
54# Should we build wrappings
55OPTION(BUILD_PYINTERFACE "Build Python language wrappings" ON)
56
57SET(COMPUCELL3D_PLUGIN_PATH
58    /lib/CompuCell3DPlugins)
59#ENDIF(NOT COMPUCELL3D_PLUGIN_PATH)
60
61
62SET(COMPUCELL3D_STEPPABLE_PATH
63    /lib/CompuCell3DSteppables)
64
65#helpful macros
66MACRO(LIST_CONTAINS var value)
67  SET(${var})
68  FOREACH (value2 ${ARGN})
69    IF (${value} STREQUAL ${value2})
70      SET(${var} TRUE)
71    ENDIF (${value} STREQUAL ${value2})
72  ENDFOREACH (value2)
73ENDMACRO(LIST_CONTAINS)
74
75MACRO(PARSE_ARGUMENTS prefix arg_names option_names)
76  SET(DEFAULT_ARGS)
77  FOREACH(arg_name ${arg_names})
78    SET(${prefix}_${arg_name})
79  ENDFOREACH(arg_name)
80  FOREACH(option ${option_names})
81    SET(${prefix}_${option} FALSE)
82  ENDFOREACH(option)
83
84  SET(current_arg_name DEFAULT_ARGS)
85  SET(current_arg_list)
86  FOREACH(arg ${ARGN})
87    LIST_CONTAINS(is_arg_name ${arg} ${arg_names})
88    IF (is_arg_name)
89      SET(${prefix}_${current_arg_name} ${current_arg_list})
90      SET(current_arg_name ${arg})
91      SET(current_arg_list)
92    ELSE (is_arg_name)
93      LIST_CONTAINS(is_option ${arg} ${option_names})
94      IF (is_option)
95        SET(${prefix}_${arg} TRUE)
96      ELSE (is_option)
97        SET(current_arg_list ${current_arg_list} ${arg})
98      ENDIF (is_option)
99    ENDIF (is_arg_name)
100  ENDFOREACH(arg)
101  SET(${prefix}_${current_arg_name} ${current_arg_list})
102ENDMACRO(PARSE_ARGUMENTS)
103
104
105MACRO(CAR var)
106  SET(${var} ${ARGV1})
107ENDMACRO(CAR)
108
109
110MACRO(CDR var junk)
111  SET(${var} ${ARGN})
112ENDMACRO(CDR)
113
114
115MACRO(ADD_STATIC_LIBRARY)
116   PARSE_ARGUMENTS(LIBRARY
117    "LINK_LIBRARIES;DEPENDS;SUFFIX"
118    ""
119    ${ARGN}
120    )
121  CAR(LIBRARY_NAME ${LIBRARY_DEFAULT_ARGS})
122  CDR(LIBRARY_SOURCES ${LIBRARY_DEFAULT_ARGS})
123
124  #MESSAGE("*** NAME OF LIBRARY ${LIBRARY_NAME}")
125  #MESSAGE("Sources: ${LIBRARY_SOURCES}")
126  #MESSAGE("Link libraries: ${LIBRARY_LINK_LIBRARIES}")
127
128  ADD_LIBRARY(${LIBRARY_NAME}Static STATIC ${LIBRARY_SOURCES})
129  TARGET_LINK_LIBRARIES(${LIBRARY_NAME}Static ${LIBRARY_LINK_LIBRARIES})
130  SET_TARGET_PROPERTIES(
131  ${LIBRARY_NAME}Static PROPERTIES
132  ${COMPUCELL3D_LIBRARY_PROPERTIES})
133
134  SET_TARGET_PROPERTIES(${LIBRARY_NAME}Static  PROPERTIES OUTPUT_NAME CC3D${LIBRARY_NAME}${LIBRARY_SUFFIX})
135  INSTALL_TARGETS(/lib ${LIBRARY_NAME}Static)
136ENDMACRO(ADD_STATIC_LIBRARY)
137
138
139MACRO(ADD_SHARED_LIBRARY)
140   PARSE_ARGUMENTS(LIBRARY
141    "LINK_LIBRARIES;DEPENDS;SUFFIX"
142    ""
143    ${ARGN}
144    )
145  CAR(LIBRARY_NAME ${LIBRARY_DEFAULT_ARGS})
146  CDR(LIBRARY_SOURCES ${LIBRARY_DEFAULT_ARGS})
147
148  #MESSAGE("*** NAME OF LIBRARY ${LIBRARY_NAME}")
149  #MESSAGE("Sources: ${LIBRARY_SOURCES}")
150  #MESSAGE("Link libraries: ${LIBRARY_LINK_LIBRARIES}")
151
152  ADD_LIBRARY(${LIBRARY_NAME}Shared SHARED ${LIBRARY_SOURCES})
153  TARGET_LINK_LIBRARIES(${LIBRARY_NAME}Shared ${LIBRARY_LINK_LIBRARIES})
154  SET_TARGET_PROPERTIES(
155  ${LIBRARY_NAME}Shared PROPERTIES
156  ${COMPUCELL3D_LIBRARY_PROPERTIES})
157
158  SET_TARGET_PROPERTIES(${LIBRARY_NAME}Shared  PROPERTIES OUTPUT_NAME CC3D${LIBRARY_NAME}${LIBRARY_SUFFIX})
159  INSTALL_TARGETS(/lib ${LIBRARY_NAME}Shared)
160ENDMACRO(ADD_SHARED_LIBRARY)
161
162
163MACRO(ADD_COMPUCELL3D_PLUGIN)
164   PARSE_ARGUMENTS(LIBRARY
165    "LINK_LIBRARIES;DEPENDS;SUFFIX"
166    ""
167    ${ARGN}
168    )
169  CAR(LIBRARY_NAME ${LIBRARY_DEFAULT_ARGS})
170  CDR(LIBRARY_SOURCES ${LIBRARY_DEFAULT_ARGS})
171
172  #MESSAGE("*** NAME OF LIBRARY ${LIBRARY_NAME}")
173  #MESSAGE("Sources: ${LIBRARY_SOURCES}")
174  #MESSAGE("Link libraries: ${LIBRARY_LINK_LIBRARIES}")
175
176  ADD_LIBRARY(${LIBRARY_NAME}Shared SHARED ${LIBRARY_SOURCES})
177  TARGET_LINK_LIBRARIES(${LIBRARY_NAME}Shared ${LIBRARY_LINK_LIBRARIES})
178  SET_TARGET_PROPERTIES(
179  ${LIBRARY_NAME}Shared PROPERTIES
180  ${COMPUCELL3D_LIBRARY_PROPERTIES})
181
182  SET_TARGET_PROPERTIES(${LIBRARY_NAME}Shared  PROPERTIES OUTPUT_NAME CC3D${LIBRARY_NAME}${LIBRARY_SUFFIX})
183  INSTALL_TARGETS(/lib/CompuCell3DPlugins RUNTIME_DIRECTORY /lib/CompuCell3DPlugins
184  ${LIBRARY_NAME}Shared)
185ENDMACRO(ADD_COMPUCELL3D_PLUGIN)
186
187
188MACRO(ADD_COMPUCELL3D_STEPPABLE)
189   PARSE_ARGUMENTS(LIBRARY
190    "LINK_LIBRARIES;DEPENDS;SUFFIX"
191    ""
192    ${ARGN}
193    )
194  CAR(LIBRARY_NAME ${LIBRARY_DEFAULT_ARGS})
195  CDR(LIBRARY_SOURCES ${LIBRARY_DEFAULT_ARGS})
196
197  #MESSAGE("*** NAME OF LIBRARY ${LIBRARY_NAME}")
198  #MESSAGE("Sources: ${LIBRARY_SOURCES}")
199  #MESSAGE("Link libraries: ${LIBRARY_LINK_LIBRARIES}")
200
201  ADD_LIBRARY(${LIBRARY_NAME}Shared SHARED ${LIBRARY_SOURCES})
202  TARGET_LINK_LIBRARIES(${LIBRARY_NAME}Shared ${LIBRARY_LINK_LIBRARIES})
203  SET_TARGET_PROPERTIES(
204  ${LIBRARY_NAME}Shared PROPERTIES
205  ${COMPUCELL3D_LIBRARY_PROPERTIES})
206
207  SET_TARGET_PROPERTIES(${LIBRARY_NAME}Shared  PROPERTIES OUTPUT_NAME CC3D${LIBRARY_NAME}${LIBRARY_SUFFIX})
208  INSTALL_TARGETS(/lib/CompuCell3DSteppables RUNTIME_DIRECTORY /lib/CompuCell3DSteppables
209  ${LIBRARY_NAME}Shared)
210ENDMACRO(ADD_COMPUCELL3D_STEPPABLE)
211
212ADD_SUBDIRECTORY(core)
213ADD_SUBDIRECTORY(player)
Note: See TracBrowser for help on using the browser.