From 3a83700125e927b401e912c7efb78a04aa548133 Mon Sep 17 00:00:00 2001 From: Simon Rit Date: Mon, 24 Sep 2012 15:20:30 +0200 Subject: [PATCH] First version of the superbuild CMakeLists.txt. --- superbuild/CMakeLists.txt | 170 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100644 superbuild/CMakeLists.txt diff --git a/superbuild/CMakeLists.txt b/superbuild/CMakeLists.txt new file mode 100644 index 0000000..f4727a8 --- /dev/null +++ b/superbuild/CMakeLists.txt @@ -0,0 +1,170 @@ +cmake_minimum_required(VERSION 2.8) +cmake_policy(VERSION 2.8) + +# set a default build type if it is undefined, then make sure it goes in the cache +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE Release) +endif() +set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "Build configuration type" FORCE) +set(build_type ${CMAKE_BUILD_TYPE}) + +#========================================================= +MACRO (DD in) + MESSAGE(${in}=${${in}}) +ENDMACRO(DD) +#========================================================= + +project(SuperBuild_VV) + +if(MSVC) + set(CMAKE_C_FLAGS_DEBUG "/D_DEBUG /MTd /Zi /Ob0 /Od /RTC1" CACHE STRING "" FORCE) + set(CMAKE_C_FLAGS_MINSIZEREL "/MT /O1 /Ob1 /D NDEBUG" CACHE STRING "" FORCE) + set(CMAKE_C_FLAGS_RELEASE "/MT /O2 /Ob2 /D NDEBUG" CACHE STRING "" FORCE) + set(CMAKE_C_FLAGS_RELWITHDEBINFO "/MT /Zi /O2 /Ob1 /D NDEBUG" CACHE STRING "" FORCE) + + set(CMAKE_CXX_FLAGS_DEBUG "/D_DEBUG /MTd /Zi /Ob0 /Od /RTC1" CACHE STRING "" FORCE) + set(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O1 /Ob1 /D NDEBUG" CACHE STRING "" FORCE) + set(CMAKE_CXX_FLAGS_RELEASE "/MT /O2 /Ob2 /D NDEBUG" CACHE STRING "" FORCE) + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MT /Zi /O2 /Ob1 /D NDEBUG" CACHE STRING "" FORCE) +endif(MSVC) + +include(ExternalProject) + +set(base "${CMAKE_BINARY_DIR}") +set_property(DIRECTORY PROPERTY EP_BASE ${base}) +set(source_prefix ${base}/Source) +set(build_prefix ${base}/Build) +set(install_prefix ${base}/Install) + +find_package(Git REQUIRED) + +#========================================================= +# QT +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") +ExternalProject_Add( + QT + SOURCE_DIR ${source_prefix}/qt + GIT_REPOSITORY git://gitorious.org/qt/qt.git + GIT_TAG v4.8.3 + PATCH_COMMAND sed -i "s/\\-MD/-MT/g" ${QtWinSpecFiles} + CONFIGURE_COMMAND ${source_prefix}/qt/configure -confirm-license + -static + -fast + -opensource + -release + -prefix ${build_prefix}/QT + -nomake examples + -nomake demos + -qt-libpng + -no-libtiff + -no-libjpeg + -no-libmng + INSTALL_COMMAND "" +) +SET(qmake_executable "${build_prefix}/QT/bin/qmake") +#========================================================= + +#========================================================= +# VTK +SET(VTK_CMAKE_CXX_STANDARD_LIBRARIES "${VTK_CMAKE_CXX_STANDARD_LIBRARIES}") +IF(MSVC) + SET(VTK_CMAKE_CXX_STANDARD_LIBRARIES "${VTK_CMAKE_CXX_STANDARD_LIBRARIES} Imm32.lib Winmm.lib Ws2_32.lib") +ENDIF(MSVC) +ExternalProject_Add( + VTK + DEPENDS QT + SOURCE_DIR ${source_prefix}/vtk + GIT_REPOSITORY git://vtk.org/VTK.git + GIT_TAG v5.10.0 + INSTALL_COMMAND "" + CMAKE_ARGS + -DQT_QMAKE_EXECUTABLE:FILEPATH=${qmake_executable} + -DCMAKE_C_FLAGS_DEBUG:STRING=${CMAKE_C_FLAGS_DEBUG} + -DCMAKE_C_FLAGS_MINSIZEREL:STRING=${CMAKE_C_FLAGS_MINSIZEREL} + -DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE} + -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_C_FLAGS_RELWITHDEBINFO} + -DCMAKE_CXX_FLAGS_DEBUG:STRING=${CMAKE_CXX_FLAGS_DEBUG} + -DCMAKE_CXX_FLAGS_MINSIZEREL:STRING=${CMAKE_CXX_FLAGS_MINSIZEREL} + -DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE} + -DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_CXX_FLAGS_RELWITHDEBINFO} + -DCMAKE_INSTALL_PREFIX:PATH=${install_prefix}/${proj} + -DCMAKE_BUILD_TYPE:STRING=${build_type} + -DBUILD_SHARED_LIBS:BOOL=OFF + -DBUILD_EXAMPLES:BOOL=OFF + -DBUILD_TESTING:BOOL=OFF + -DVTK_USE_QT:BOOL=ON + -DVTK_USE_QVTK_QTOPENGL:BOOL=ON + -DCMAKE_CXX_STANDARD_LIBRARIES:STRING=${VTK_CMAKE_CXX_STANDARD_LIBRARIES} +) +SET(VTK_DIR ${build_prefix}/VTK) +#========================================================= + +#========================================================= +# ITK +ExternalProject_Add( + ITK + SOURCE_DIR ${source_prefix}/itk + GIT_REPOSITORY git://itk.org/ITK.git + GIT_TAG v4.2.0 + INSTALL_COMMAND "" + CMAKE_ARGS + -DCMAKE_C_FLAGS_DEBUG:STRING=${CMAKE_C_FLAGS_DEBUG} + -DCMAKE_C_FLAGS_MINSIZEREL:STRING=${CMAKE_C_FLAGS_MINSIZEREL} + -DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE} + -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_C_FLAGS_RELWITHDEBINFO} + -DCMAKE_CXX_FLAGS_DEBUG:STRING=${CMAKE_CXX_FLAGS_DEBUG} + -DCMAKE_CXX_FLAGS_MINSIZEREL:STRING=${CMAKE_CXX_FLAGS_MINSIZEREL} + -DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE} + -DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_CXX_FLAGS_RELWITHDEBINFO} + -DCMAKE_INSTALL_PREFIX:PATH=${install_prefix}/${proj} + -DCMAKE_BUILD_TYPE:STRING=${build_type} + -DBUILD_SHARED_LIBS:BOOL=OFF + -DBUILD_EXAMPLES:BOOL=OFF + -DBUILD_TESTING:BOOL=OFF +) +SET(ITK_DIR ${build_prefix}/ITK) +#========================================================= + +#========================================================= +# VV +SET(VV_CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) +if(MSVC) + SET(VV_CMAKE_CXX_FLAGS "${VV_CMAKE_CXX_FLAGS} /bigobj") +endif(MSVC) + +SET(VV_CMAKE_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS}) +if(CMAKE_COMPILER_IS_GNUCXX) + SET(VV_CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++") +endif(CMAKE_COMPILER_IS_GNUCXX) + +ExternalProject_Add( + VV + DEPENDS QT VTK ITK + SOURCE_DIR ${source_prefix}/vv + GIT_REPOSITORY git://git.creatis.insa-lyon.fr/clitk + GIT_TAG HEAD + INSTALL_COMMAND "" + CMAKE_ARGS + -DQT_QMAKE_EXECUTABLE:FILEPATH=${qmake_executable} + -DITK_DIR:PATH=${ITK_DIR} + -DVTK_DIR:PATH=${VTK_DIR} + -DCMAKE_C_FLAGS_DEBUG:STRING=${CMAKE_C_FLAGS_DEBUG} + -DCMAKE_C_FLAGS_MINSIZEREL:STRING=${CMAKE_C_FLAGS_MINSIZEREL} + -DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE} + -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_C_FLAGS_RELWITHDEBINFO} + -DCMAKE_CXX_FLAGS_DEBUG:STRING=${CMAKE_CXX_FLAGS_DEBUG} + -DCMAKE_CXX_FLAGS_MINSIZEREL:STRING=${CMAKE_CXX_FLAGS_MINSIZEREL} + -DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE} + -DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_CXX_FLAGS_RELWITHDEBINFO} + -DCMAKE_CXX_FLAGS:STRING=${VV_CMAKE_CXX_FLAGS} + -DCMAKE_EXE_LINKER_FLAGS:STRING=${VV_CMAKE_EXE_LINKER_FLAGS} + -DCMAKE_INSTALL_PREFIX:PATH=${install_prefix}/${proj} + -DCMAKE_BUILD_TYPE:STRING=${build_type} + -DBUILD_SHARED_LIBS:BOOL=OFF + -DBUILD_TESTING:BOOL=OFF +) +#========================================================= + -- 2.47.1