]> Creatis software - clitk.git/blob - superbuild/CMakeLists.txt
Add to VV superbuild gdcm option.
[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";
44                    "${source_prefix}/qt/mkspecs/win32-msvc2005/qmake.conf";
45                    "${source_prefix}/qt/mkspecs/win32-msvc2008/qmake.conf";
46                    "${source_prefix}/qt/mkspecs/win32-msvc2010/qmake.conf")
47 ExternalProject_Add(
48   QT
49   SOURCE_DIR ${source_prefix}/qt
50   GIT_REPOSITORY git://gitorious.org/qt/qt.git
51   GIT_TAG v4.8.3
52   PATCH_COMMAND sed -i "s/\\-MD/-MT/g" ${QtWinSpecFiles}
53   CONFIGURE_COMMAND ${source_prefix}/qt/configure -confirm-license
54                                                   -static 
55                                                   -fast
56                                                   -opensource
57                                                   -release
58                                                   -prefix ${build_prefix}/QT
59                                                   -nomake examples
60                                                   -nomake demos
61                                                   -qt-libpng
62                                                   -no-libtiff
63                                                   -no-libjpeg
64                                                   -no-libmng
65                                                   -no-glib
66   INSTALL_COMMAND ""
67 )
68 SET(qmake_executable "${build_prefix}/QT/bin/qmake")
69 #=========================================================
70
71 #=========================================================
72 # VTK
73 SET(VTK_CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES}")
74 IF(MSVC)
75   SET(VTK_CMAKE_CXX_STANDARD_LIBRARIES "${VTK_CMAKE_CXX_STANDARD_LIBRARIES} Imm32.lib Winmm.lib Ws2_32.lib")
76 ENDIF(MSVC)
77 ExternalProject_Add(
78   VTK 
79   DEPENDS QT
80   SOURCE_DIR ${source_prefix}/vtk
81   GIT_REPOSITORY git://vtk.org/VTK.git
82   GIT_TAG v5.10.0
83   INSTALL_COMMAND ""
84   CMAKE_ARGS
85     -DQT_QMAKE_EXECUTABLE:FILEPATH=${qmake_executable}
86     -DCMAKE_C_FLAGS_DEBUG:STRING=${CMAKE_C_FLAGS_DEBUG}
87     -DCMAKE_C_FLAGS_MINSIZEREL:STRING=${CMAKE_C_FLAGS_MINSIZEREL}
88     -DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE}
89     -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_C_FLAGS_RELWITHDEBINFO}
90     -DCMAKE_CXX_FLAGS_DEBUG:STRING=${CMAKE_CXX_FLAGS_DEBUG}
91     -DCMAKE_CXX_FLAGS_MINSIZEREL:STRING=${CMAKE_CXX_FLAGS_MINSIZEREL}
92     -DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE}
93     -DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_CXX_FLAGS_RELWITHDEBINFO}
94     -DCMAKE_INSTALL_PREFIX:PATH=${install_prefix}/${proj}
95     -DCMAKE_BUILD_TYPE:STRING=${build_type}
96     -DBUILD_SHARED_LIBS:BOOL=OFF
97     -DBUILD_EXAMPLES:BOOL=OFF
98     -DBUILD_TESTING:BOOL=OFF
99     -DVTK_USE_QT:BOOL=ON
100     -DVTK_USE_QVTK_QTOPENGL:BOOL=ON
101     -DCMAKE_CXX_STANDARD_LIBRARIES:STRING=${VTK_CMAKE_CXX_STANDARD_LIBRARIES}
102 )
103 SET(VTK_DIR ${build_prefix}/VTK)
104 #=========================================================
105
106 #=========================================================
107 # GDCM
108    ExternalProject_Add(
109    GDCM
110    SOURCE_DIR ${source_prefix}/gdcm
111    GIT_REPOSITORY git://git.code.sf.net/p/gdcm/gdcm 
112    GIT_TAG v2.2.3
113    INSTALL_COMMAND ""
114    CMAKE_ARGS
115    -DQT_QMAKE_EXECUTABLE:FILEPATH=${qmake_executable}
116    -DCMAKE_C_FLAGS_DEBUG:STRING=${CMAKE_C_FLAGS_DEBUG}
117    -DCMAKE_C_FLAGS_MINSIZEREL:STRING=${CMAKE_C_FLAGS_MINSIZEREL}
118    -DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE}
119    -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_C_FLAGS_RELWITHDEBINFO}
120    -DCMAKE_CXX_FLAGS_DEBUG:STRING=${CMAKE_CXX_FLAGS_DEBUG}
121    -DCMAKE_CXX_FLAGS_MINSIZEREL:STRING=${CMAKE_CXX_FLAGS_MINSIZEREL}
122    -DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE}
123    -DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_CXX_FLAGS_RELWITHDEBINFO}
124    -DCMAKE_INSTALL_PREFIX:PATH=${INSTALL_PREFIX}
125    -DCMAKE_BUILD_TYPE:STRING=${build_type}
126 )
127 SET(GDCM_DIR ${build_prefix}/GDCM)
128 #=========================================================
129
130 #=========================================================
131 # ITK
132 ExternalProject_Add(
133   ITK
134   SOURCE_DIR ${source_prefix}/itk
135   GIT_REPOSITORY git://itk.org/ITK.git
136   GIT_TAG v4.4.0
137   INSTALL_COMMAND ""
138   CMAKE_ARGS
139     -DCMAKE_C_FLAGS_DEBUG:STRING=${CMAKE_C_FLAGS_DEBUG}
140     -DCMAKE_C_FLAGS_MINSIZEREL:STRING=${CMAKE_C_FLAGS_MINSIZEREL}
141     -DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE}
142     -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_C_FLAGS_RELWITHDEBINFO}
143     -DCMAKE_CXX_FLAGS_DEBUG:STRING=${CMAKE_CXX_FLAGS_DEBUG}
144     -DCMAKE_CXX_FLAGS_MINSIZEREL:STRING=${CMAKE_CXX_FLAGS_MINSIZEREL}
145     -DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE}
146     -DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_CXX_FLAGS_RELWITHDEBINFO}
147     -DCMAKE_INSTALL_PREFIX:PATH=${install_prefix}/${proj}
148     -DCMAKE_BUILD_TYPE:STRING=${build_type}
149     -DBUILD_SHARED_LIBS:BOOL=OFF
150     -DBUILD_EXAMPLES:BOOL=OFF
151     -DBUILD_TESTING:BOOL=OFF
152 )
153 SET(ITK_DIR ${build_prefix}/ITK)
154 #=========================================================
155
156 #=========================================================
157 # VV
158 SET(VV_CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
159 if(MSVC)
160   SET(VV_CMAKE_CXX_FLAGS "${VV_CMAKE_CXX_FLAGS} /bigobj")
161 endif(MSVC)
162
163 SET(VV_CMAKE_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS})
164 if(CMAKE_COMPILER_IS_GNUCXX)
165   SET(VV_CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++")
166 endif(CMAKE_COMPILER_IS_GNUCXX)
167
168 SET(MAKE_COMMAND "make")
169 if(MSVC)
170   SET(MAKE_COMMAND "nmake")
171 endif(MSVC)
172
173 ExternalProject_Add(
174   VV
175   DEPENDS QT VTK ITK GDCM
176   SOURCE_DIR ${source_prefix}/vv
177   GIT_REPOSITORY git://git.creatis.insa-lyon.fr/clitk
178   INSTALL_COMMAND ${MAKE_COMMAND} package
179   CMAKE_ARGS
180     -DQT_QMAKE_EXECUTABLE:FILEPATH=${qmake_executable}
181     -DGDCM_DIR:PATH=${GDCM_DIR}
182     -DITK_DIR:PATH=${ITK_DIR}
183     -DVTK_DIR:PATH=${VTK_DIR}
184     -DCMAKE_C_FLAGS_DEBUG:STRING=${CMAKE_C_FLAGS_DEBUG}
185     -DCMAKE_C_FLAGS_MINSIZEREL:STRING=${CMAKE_C_FLAGS_MINSIZEREL}
186     -DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE}
187     -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_C_FLAGS_RELWITHDEBINFO}
188     -DCMAKE_CXX_FLAGS_DEBUG:STRING=${CMAKE_CXX_FLAGS_DEBUG}
189     -DCMAKE_CXX_FLAGS_MINSIZEREL:STRING=${CMAKE_CXX_FLAGS_MINSIZEREL}
190     -DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE}
191     -DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_CXX_FLAGS_RELWITHDEBINFO}
192     -DCMAKE_CXX_FLAGS:STRING=${VV_CMAKE_CXX_FLAGS}
193     -DCMAKE_EXE_LINKER_FLAGS:STRING=${VV_CMAKE_EXE_LINKER_FLAGS}
194     -DCMAKE_INSTALL_PREFIX:PATH=${install_prefix}/${proj}
195     -DCMAKE_BUILD_TYPE:STRING=${build_type}
196     -DBUILD_SHARED_LIBS:BOOL=OFF
197     -DBUILD_TESTING:BOOL=OFF
198 )
199 #=========================================================
200