]> Creatis software - clitk.git/blob - superbuild/CMakeLists.txt
df237735199d9f4b85e38aecd2708c94bdd79ea8
[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 # ITK
108 ExternalProject_Add(
109   ITK
110   SOURCE_DIR ${source_prefix}/itk
111   GIT_REPOSITORY git://itk.org/ITK.git
112   GIT_TAG v4.2.0
113   INSTALL_COMMAND ""
114   CMAKE_ARGS
115     -DCMAKE_C_FLAGS_DEBUG:STRING=${CMAKE_C_FLAGS_DEBUG}
116     -DCMAKE_C_FLAGS_MINSIZEREL:STRING=${CMAKE_C_FLAGS_MINSIZEREL}
117     -DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE}
118     -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_C_FLAGS_RELWITHDEBINFO}
119     -DCMAKE_CXX_FLAGS_DEBUG:STRING=${CMAKE_CXX_FLAGS_DEBUG}
120     -DCMAKE_CXX_FLAGS_MINSIZEREL:STRING=${CMAKE_CXX_FLAGS_MINSIZEREL}
121     -DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE}
122     -DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_CXX_FLAGS_RELWITHDEBINFO}
123     -DCMAKE_INSTALL_PREFIX:PATH=${install_prefix}/${proj}
124     -DCMAKE_BUILD_TYPE:STRING=${build_type}
125     -DBUILD_SHARED_LIBS:BOOL=OFF
126     -DBUILD_EXAMPLES:BOOL=OFF
127     -DBUILD_TESTING:BOOL=OFF
128 )
129 SET(ITK_DIR ${build_prefix}/ITK)
130 #=========================================================
131
132 #=========================================================
133 # VV
134 SET(VV_CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
135 if(MSVC)
136   SET(VV_CMAKE_CXX_FLAGS "${VV_CMAKE_CXX_FLAGS} /bigobj")
137 endif(MSVC)
138
139 SET(VV_CMAKE_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS})
140 if(CMAKE_COMPILER_IS_GNUCXX)
141   SET(VV_CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++")
142 endif(CMAKE_COMPILER_IS_GNUCXX)
143
144 SET(MAKE_COMMAND "make")
145 if(MSVC)
146   SET(MAKE_COMMAND "nmake")
147 endif(MSVC)
148
149 ExternalProject_Add(
150   VV
151   DEPENDS QT VTK ITK
152   SOURCE_DIR ${source_prefix}/vv
153   GIT_REPOSITORY git://git.creatis.insa-lyon.fr/clitk
154   INSTALL_COMMAND ${MAKE_COMMAND} package
155   CMAKE_ARGS
156     -DQT_QMAKE_EXECUTABLE:FILEPATH=${qmake_executable}
157     -DITK_DIR:PATH=${ITK_DIR}
158     -DVTK_DIR:PATH=${VTK_DIR}
159     -DCMAKE_C_FLAGS_DEBUG:STRING=${CMAKE_C_FLAGS_DEBUG}
160     -DCMAKE_C_FLAGS_MINSIZEREL:STRING=${CMAKE_C_FLAGS_MINSIZEREL}
161     -DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE}
162     -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_C_FLAGS_RELWITHDEBINFO}
163     -DCMAKE_CXX_FLAGS_DEBUG:STRING=${CMAKE_CXX_FLAGS_DEBUG}
164     -DCMAKE_CXX_FLAGS_MINSIZEREL:STRING=${CMAKE_CXX_FLAGS_MINSIZEREL}
165     -DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE}
166     -DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_CXX_FLAGS_RELWITHDEBINFO}
167     -DCMAKE_CXX_FLAGS:STRING=${VV_CMAKE_CXX_FLAGS}
168     -DCMAKE_EXE_LINKER_FLAGS:STRING=${VV_CMAKE_EXE_LINKER_FLAGS}
169     -DCMAKE_INSTALL_PREFIX:PATH=${install_prefix}/${proj}
170     -DCMAKE_BUILD_TYPE:STRING=${build_type}
171     -DBUILD_SHARED_LIBS:BOOL=OFF
172     -DBUILD_TESTING:BOOL=OFF
173 )
174 #=========================================================
175