]> Creatis software - clitk.git/blob - superbuild/CMakeLists.txt
Merge branch 'master' of git.creatis.insa-lyon.fr:clitk
[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   INSTALL_COMMAND ""
66 )
67 SET(qmake_executable "${build_prefix}/QT/bin/qmake")
68 #=========================================================
69
70 #=========================================================
71 # VTK
72 SET(VTK_CMAKE_CXX_STANDARD_LIBRARIES "${VTK_CMAKE_CXX_STANDARD_LIBRARIES}")
73 IF(MSVC)
74   SET(VTK_CMAKE_CXX_STANDARD_LIBRARIES "${VTK_CMAKE_CXX_STANDARD_LIBRARIES} Imm32.lib Winmm.lib Ws2_32.lib")
75 ENDIF(MSVC)
76 ExternalProject_Add(
77   VTK 
78   DEPENDS QT
79   SOURCE_DIR ${source_prefix}/vtk
80   GIT_REPOSITORY git://vtk.org/VTK.git
81   GIT_TAG v5.10.0
82   INSTALL_COMMAND ""
83   CMAKE_ARGS
84     -DQT_QMAKE_EXECUTABLE:FILEPATH=${qmake_executable}
85     -DCMAKE_C_FLAGS_DEBUG:STRING=${CMAKE_C_FLAGS_DEBUG}
86     -DCMAKE_C_FLAGS_MINSIZEREL:STRING=${CMAKE_C_FLAGS_MINSIZEREL}
87     -DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE}
88     -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_C_FLAGS_RELWITHDEBINFO}
89     -DCMAKE_CXX_FLAGS_DEBUG:STRING=${CMAKE_CXX_FLAGS_DEBUG}
90     -DCMAKE_CXX_FLAGS_MINSIZEREL:STRING=${CMAKE_CXX_FLAGS_MINSIZEREL}
91     -DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE}
92     -DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_CXX_FLAGS_RELWITHDEBINFO}
93     -DCMAKE_INSTALL_PREFIX:PATH=${install_prefix}/${proj}
94     -DCMAKE_BUILD_TYPE:STRING=${build_type}
95     -DBUILD_SHARED_LIBS:BOOL=OFF
96     -DBUILD_EXAMPLES:BOOL=OFF
97     -DBUILD_TESTING:BOOL=OFF
98     -DVTK_USE_QT:BOOL=ON
99     -DVTK_USE_QVTK_QTOPENGL:BOOL=ON
100     -DCMAKE_CXX_STANDARD_LIBRARIES:STRING=${VTK_CMAKE_CXX_STANDARD_LIBRARIES}
101 )
102 SET(VTK_DIR ${build_prefix}/VTK)
103 #=========================================================
104
105 #=========================================================
106 # ITK
107 ExternalProject_Add(
108   ITK
109   SOURCE_DIR ${source_prefix}/itk
110   GIT_REPOSITORY git://itk.org/ITK.git
111   GIT_TAG v4.2.0
112   INSTALL_COMMAND ""
113   CMAKE_ARGS
114     -DCMAKE_C_FLAGS_DEBUG:STRING=${CMAKE_C_FLAGS_DEBUG}
115     -DCMAKE_C_FLAGS_MINSIZEREL:STRING=${CMAKE_C_FLAGS_MINSIZEREL}
116     -DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE}
117     -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_C_FLAGS_RELWITHDEBINFO}
118     -DCMAKE_CXX_FLAGS_DEBUG:STRING=${CMAKE_CXX_FLAGS_DEBUG}
119     -DCMAKE_CXX_FLAGS_MINSIZEREL:STRING=${CMAKE_CXX_FLAGS_MINSIZEREL}
120     -DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE}
121     -DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_CXX_FLAGS_RELWITHDEBINFO}
122     -DCMAKE_INSTALL_PREFIX:PATH=${install_prefix}/${proj}
123     -DCMAKE_BUILD_TYPE:STRING=${build_type}
124     -DBUILD_SHARED_LIBS:BOOL=OFF
125     -DBUILD_EXAMPLES:BOOL=OFF
126     -DBUILD_TESTING:BOOL=OFF
127 )
128 SET(ITK_DIR ${build_prefix}/ITK)
129 #=========================================================
130
131 #=========================================================
132 # VV
133 SET(VV_CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
134 if(MSVC)
135   SET(VV_CMAKE_CXX_FLAGS "${VV_CMAKE_CXX_FLAGS} /bigobj")
136 endif(MSVC)
137
138 SET(VV_CMAKE_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS})
139 if(CMAKE_COMPILER_IS_GNUCXX)
140   SET(VV_CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++")
141 endif(CMAKE_COMPILER_IS_GNUCXX)
142
143 ExternalProject_Add(
144   VV
145   DEPENDS QT VTK ITK
146   SOURCE_DIR ${source_prefix}/vv
147   GIT_REPOSITORY git://git.creatis.insa-lyon.fr/clitk
148   GIT_TAG HEAD
149   INSTALL_COMMAND ""
150   CMAKE_ARGS
151     -DQT_QMAKE_EXECUTABLE:FILEPATH=${qmake_executable}
152     -DITK_DIR:PATH=${ITK_DIR}
153     -DVTK_DIR:PATH=${VTK_DIR}
154     -DCMAKE_C_FLAGS_DEBUG:STRING=${CMAKE_C_FLAGS_DEBUG}
155     -DCMAKE_C_FLAGS_MINSIZEREL:STRING=${CMAKE_C_FLAGS_MINSIZEREL}
156     -DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE}
157     -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_C_FLAGS_RELWITHDEBINFO}
158     -DCMAKE_CXX_FLAGS_DEBUG:STRING=${CMAKE_CXX_FLAGS_DEBUG}
159     -DCMAKE_CXX_FLAGS_MINSIZEREL:STRING=${CMAKE_CXX_FLAGS_MINSIZEREL}
160     -DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE}
161     -DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_CXX_FLAGS_RELWITHDEBINFO}
162     -DCMAKE_CXX_FLAGS:STRING=${VV_CMAKE_CXX_FLAGS}
163     -DCMAKE_EXE_LINKER_FLAGS:STRING=${VV_CMAKE_EXE_LINKER_FLAGS}
164     -DCMAKE_INSTALL_PREFIX:PATH=${install_prefix}/${proj}
165     -DCMAKE_BUILD_TYPE:STRING=${build_type}
166     -DBUILD_SHARED_LIBS:BOOL=OFF
167     -DBUILD_TESTING:BOOL=OFF
168 )
169 #=========================================================
170