]> Creatis software - clitk.git/blob - superbuild/CMakeLists.txt
COMP: Update ITK and VTK
[clitk.git] / superbuild / CMakeLists.txt
1 cmake_minimum_required(VERSION 2.8)
2 cmake_policy(VERSION 2.8)
3
4 # set a default build type if it is undefined, then make sure it goes in the cache
5 if(NOT CMAKE_BUILD_TYPE)
6   set(CMAKE_BUILD_TYPE Release)
7 endif()
8 set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "Build configuration type" FORCE)
9 set(build_type ${CMAKE_BUILD_TYPE})
10
11 #=========================================================
12 MACRO (DD in)
13     MESSAGE(${in}=${${in}})
14 ENDMACRO(DD)
15 #=========================================================
16
17 project(SuperBuild_VV)
18
19 if(MSVC)
20   set(CMAKE_C_FLAGS_DEBUG          "/D_DEBUG /MTd /Zi /Ob0 /Od /RTC1" CACHE STRING "" FORCE)
21   set(CMAKE_C_FLAGS_MINSIZEREL     "/MT /O1 /Ob1 /D NDEBUG" CACHE STRING "" FORCE)
22   set(CMAKE_C_FLAGS_RELEASE        "/MT /O2 /Ob2 /D NDEBUG" CACHE STRING "" FORCE)
23   set(CMAKE_C_FLAGS_RELWITHDEBINFO "/MT /Zi /O2 /Ob1 /D NDEBUG" CACHE STRING "" FORCE)
24
25   set(CMAKE_CXX_FLAGS_DEBUG          "/D_DEBUG /MTd /Zi /Ob0 /Od /RTC1" CACHE STRING "" FORCE)
26   set(CMAKE_CXX_FLAGS_MINSIZEREL     "/MT /O1 /Ob1 /D NDEBUG" CACHE STRING "" FORCE)
27   set(CMAKE_CXX_FLAGS_RELEASE        "/MT /O2 /Ob2 /D NDEBUG" CACHE STRING "" FORCE)
28   set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MT /Zi /O2 /Ob1 /D NDEBUG" CACHE STRING "" FORCE)
29 endif(MSVC)
30
31 include(ExternalProject)
32
33 set(base "${CMAKE_BINARY_DIR}")
34 set_property(DIRECTORY PROPERTY EP_BASE ${base})
35 set(source_prefix ${base}/Source)
36 set(build_prefix ${base}/Build)
37 set(install_prefix ${base}/Install)
38
39 find_package(Git REQUIRED)
40
41 #=========================================================
42 # QT
43 SET(QtWinSpecFiles "${source_prefix}/qt/mkspecs/win32-msvc2003/qmake.conf;${source_prefix}/qt/mkspecs/win32-msvc2005/qmake.conf;${source_prefix}/qt/mkspecs/win32-msvc2008/qmake.conf;${source_prefix}/qt/mkspecs/win32-msvc2010/qmake.conf")
44 ExternalProject_Add(
45   QT
46   SOURCE_DIR ${source_prefix}/qt
47   GIT_REPOSITORY git://gitorious.org/qt/qt.git
48   GIT_TAG v4.8.3
49   PATCH_COMMAND sed -i "s/\\-MD/-MT/g" ${QtWinSpecFiles}
50   CONFIGURE_COMMAND ${source_prefix}/qt/configure -confirm-license
51                                                   -static 
52                                                   -fast
53                                                   -opensource
54                                                   -release
55                                                   -prefix ${build_prefix}/QT
56                                                   -nomake examples
57                                                   -nomake demos
58                                                   -qt-libpng
59                                                   -no-libtiff
60                                                   -no-libjpeg
61                                                   -no-libmng
62                                                   -no-glib
63   INSTALL_COMMAND ""
64 )
65 SET(qmake_executable "${build_prefix}/QT/bin/qmake")
66 #=========================================================
67
68 #=========================================================
69 # VTK
70 SET(VTK_CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES}")
71 IF(MSVC)
72   SET(VTK_CMAKE_CXX_STANDARD_LIBRARIES "${VTK_CMAKE_CXX_STANDARD_LIBRARIES} Imm32.lib Winmm.lib Ws2_32.lib")
73 ENDIF(MSVC)
74 ExternalProject_Add(
75   VTK 
76   DEPENDS QT
77   SOURCE_DIR ${source_prefix}/vtk
78   GIT_REPOSITORY git://vtk.org/VTK.git
79   GIT_TAG v5.10.1
80   INSTALL_COMMAND ""
81   CMAKE_ARGS
82     -DQT_QMAKE_EXECUTABLE:FILEPATH=${qmake_executable}
83     -DCMAKE_C_FLAGS_DEBUG:STRING=${CMAKE_C_FLAGS_DEBUG}
84     -DCMAKE_C_FLAGS_MINSIZEREL:STRING=${CMAKE_C_FLAGS_MINSIZEREL}
85     -DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE}
86     -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_C_FLAGS_RELWITHDEBINFO}
87     -DCMAKE_CXX_FLAGS_DEBUG:STRING=${CMAKE_CXX_FLAGS_DEBUG}
88     -DCMAKE_CXX_FLAGS_MINSIZEREL:STRING=${CMAKE_CXX_FLAGS_MINSIZEREL}
89     -DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE}
90     -DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_CXX_FLAGS_RELWITHDEBINFO}
91     -DCMAKE_INSTALL_PREFIX:PATH=${install_prefix}/${proj}
92     -DCMAKE_BUILD_TYPE:STRING=${build_type}
93     -DBUILD_SHARED_LIBS:BOOL=OFF
94     -DBUILD_EXAMPLES:BOOL=OFF
95     -DBUILD_TESTING:BOOL=OFF
96     -DVTK_USE_QT:BOOL=ON
97     -DVTK_USE_QVTK_QTOPENGL:BOOL=ON
98     -DCMAKE_CXX_STANDARD_LIBRARIES:STRING=${VTK_CMAKE_CXX_STANDARD_LIBRARIES}
99 )
100 SET(VTK_DIR ${build_prefix}/VTK)
101 #=========================================================
102
103 #=========================================================
104 # GDCM
105    ExternalProject_Add(
106    GDCM
107    SOURCE_DIR ${source_prefix}/gdcm
108    GIT_REPOSITORY git://git.code.sf.net/p/gdcm/gdcm 
109    GIT_TAG v2.2.4
110    INSTALL_COMMAND ""
111    CMAKE_ARGS
112    -DCMAKE_C_FLAGS_DEBUG:STRING=${CMAKE_C_FLAGS_DEBUG}
113    -DCMAKE_C_FLAGS_MINSIZEREL:STRING=${CMAKE_C_FLAGS_MINSIZEREL}
114    -DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE}
115    -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_C_FLAGS_RELWITHDEBINFO}
116    -DCMAKE_CXX_FLAGS_DEBUG:STRING=${CMAKE_CXX_FLAGS_DEBUG}
117    -DCMAKE_CXX_FLAGS_MINSIZEREL:STRING=${CMAKE_CXX_FLAGS_MINSIZEREL}
118    -DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE}
119    -DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_CXX_FLAGS_RELWITHDEBINFO}
120    -DCMAKE_INSTALL_PREFIX:PATH=${INSTALL_PREFIX}
121    -DCMAKE_BUILD_TYPE:STRING=${build_type}
122 )
123 SET(GDCM_DIR ${build_prefix}/GDCM)
124 #=========================================================
125
126 #=========================================================
127 # ITK
128 ExternalProject_Add(
129   ITK
130   SOURCE_DIR ${source_prefix}/itk
131   GIT_REPOSITORY git://itk.org/ITK.git
132   GIT_TAG v4.5.2
133   INSTALL_COMMAND ""
134   CMAKE_ARGS
135     -DCMAKE_C_FLAGS_DEBUG:STRING=${CMAKE_C_FLAGS_DEBUG}
136     -DCMAKE_C_FLAGS_MINSIZEREL:STRING=${CMAKE_C_FLAGS_MINSIZEREL}
137     -DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE}
138     -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_C_FLAGS_RELWITHDEBINFO}
139     -DCMAKE_CXX_FLAGS_DEBUG:STRING=${CMAKE_CXX_FLAGS_DEBUG}
140     -DCMAKE_CXX_FLAGS_MINSIZEREL:STRING=${CMAKE_CXX_FLAGS_MINSIZEREL}
141     -DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE}
142     -DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_CXX_FLAGS_RELWITHDEBINFO}
143     -DCMAKE_INSTALL_PREFIX:PATH=${install_prefix}/${proj}
144     -DCMAKE_BUILD_TYPE:STRING=${build_type}
145     -DBUILD_SHARED_LIBS:BOOL=OFF
146     -DBUILD_EXAMPLES:BOOL=OFF
147     -DBUILD_TESTING:BOOL=OFF
148 )
149 SET(ITK_DIR ${build_prefix}/ITK)
150 #=========================================================
151
152 #=========================================================
153 # VV
154 SET(VV_CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
155 if(MSVC)
156   SET(VV_CMAKE_CXX_FLAGS "${VV_CMAKE_CXX_FLAGS} /bigobj")
157 endif(MSVC)
158
159 SET(VV_CMAKE_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS})
160 if(CMAKE_COMPILER_IS_GNUCXX)
161   SET(VV_CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++")
162 endif(CMAKE_COMPILER_IS_GNUCXX)
163
164 SET(MAKE_COMMAND "make")
165 if(MSVC)
166   SET(MAKE_COMMAND "nmake")
167 endif(MSVC)
168
169 ExternalProject_Add(
170   VV
171   DEPENDS QT VTK ITK GDCM
172   SOURCE_DIR ${source_prefix}/vv
173   GIT_REPOSITORY git://git.creatis.insa-lyon.fr/clitk
174   INSTALL_DIR ${install_prefix}
175   INSTALL_COMMAND  make install 
176   CMAKE_ARGS
177     -DQT_QMAKE_EXECUTABLE:FILEPATH=${qmake_executable}
178     -DGDCM_DIR:PATH=${GDCM_DIR}
179     -DITK_DIR:PATH=${ITK_DIR}
180     -DVTK_DIR:PATH=${VTK_DIR}
181     -DCMAKE_C_FLAGS_DEBUG:STRING=${CMAKE_C_FLAGS_DEBUG}
182     -DCMAKE_C_FLAGS_MINSIZEREL:STRING=${CMAKE_C_FLAGS_MINSIZEREL}
183     -DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE}
184     -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_C_FLAGS_RELWITHDEBINFO}
185     -DCMAKE_CXX_FLAGS_DEBUG:STRING=${CMAKE_CXX_FLAGS_DEBUG}
186     -DCMAKE_CXX_FLAGS_MINSIZEREL:STRING=${CMAKE_CXX_FLAGS_MINSIZEREL}
187     -DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE}
188     -DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_CXX_FLAGS_RELWITHDEBINFO}
189     -DCMAKE_CXX_FLAGS:STRING=${VV_CMAKE_CXX_FLAGS}
190     -DCMAKE_EXE_LINKER_FLAGS:STRING=${VV_CMAKE_EXE_LINKER_FLAGS}
191     -DCMAKE_INSTALL_PREFIX:PATH=${install_prefix}/${proj}
192     -DCMAKE_BUILD_TYPE:STRING=${build_type}
193     -DBUILD_SHARED_LIBS:BOOL=OFF
194     -DBUILD_TESTING:BOOL=OFF
195 )
196 #=========================================================
197