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