Mercurial > hg > orthanc-stone
diff Resources/CMake/OrthancStone.cmake @ 0:351ab0da0150
initial commit
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 14 Oct 2016 15:34:11 +0200 |
parents | |
children | b1eb80ca0d2b |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Resources/CMake/OrthancStone.cmake Fri Oct 14 15:34:11 2016 +0200 @@ -0,0 +1,208 @@ +##################################################################### +## Parameters of the build +##################################################################### + +# Generic parameters +SET(STATIC_BUILD OFF CACHE BOOL "Static build of the third-party libraries (necessary for Windows)") +SET(ALLOW_DOWNLOADS OFF CACHE BOOL "Allow CMake to download packages") + +# Optional components +SET(ENABLE_CURL ON CACHE BOOL "Include support for libcurl") +SET(ENABLE_SSL OFF CACHE BOOL "Include support for SSL") +SET(ENABLE_SDL ON CACHE BOOL "Include support for SDL") +SET(ENABLE_LOGGING ON CACHE BOOL "Enable logging facilities from Orthanc") + +# Advanced parameters to fine-tune linking against system libraries +SET(USE_SYSTEM_BOOST ON CACHE BOOL "Use the system version of Boost") +SET(USE_SYSTEM_JSONCPP ON CACHE BOOL "Use the system version of JsonCpp") +SET(USE_SYSTEM_ZLIB ON CACHE BOOL "Use the system version of ZLib") +SET(USE_SYSTEM_CAIRO ON CACHE BOOL "Use the system version of Cairo") +SET(USE_SYSTEM_PIXMAN ON CACHE BOOL "Use the system version of Pixman") +SET(USE_SYSTEM_LIBPNG ON CACHE BOOL "Use the system version of libpng") +SET(USE_SYSTEM_LIBJPEG ON CACHE BOOL "Use the system version of libjpeg") +SET(USE_SYSTEM_CURL ON CACHE BOOL "Use the system version of LibCurl") +SET(USE_SYSTEM_OPENSSL ON CACHE BOOL "Use the system version of OpenSSL") +SET(USE_SYSTEM_SDL ON CACHE BOOL "Use the system version of SDL2") + + +##################################################################### +## Configure mandatory third-party components +##################################################################### + +SET(ORTHANC_STONE_DIR ${CMAKE_CURRENT_LIST_DIR}/../..) +SET(ORTHANC_ROOT ${ORTHANC_STONE_DIR}/Framework/Orthanc) + +include(CheckIncludeFiles) +include(CheckIncludeFileCXX) +include(CheckLibraryExists) +include(FindPythonInterp) +include(FindPkgConfig) + +include(${ORTHANC_ROOT}/Resources/CMake/Compiler.cmake) +include(${ORTHANC_ROOT}/Resources/CMake/AutoGeneratedCode.cmake) +include(${ORTHANC_ROOT}/Resources/CMake/DownloadPackage.cmake) + +include(${ORTHANC_ROOT}/Resources/CMake/JsonCppConfiguration.cmake) +include(${ORTHANC_ROOT}/Resources/CMake/ZlibConfiguration.cmake) +include(${ORTHANC_ROOT}/Resources/CMake/LibPngConfiguration.cmake) +include(${ORTHANC_ROOT}/Resources/CMake/LibJpegConfiguration.cmake) + +include(${CMAKE_CURRENT_LIST_DIR}/BoostExtendedConfiguration.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/CairoConfiguration.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/PixmanConfiguration.cmake) + + +##################################################################### +## Configure optional third-party components +##################################################################### + +if (ENABLE_LOGGING) + add_definitions(-DORTHANC_ENABLE_LOGGING=1) +else() + add_definitions(-DORTHANC_ENABLE_LOGGING=0) +endif() + +if (ENABLE_SDL) + include(${CMAKE_CURRENT_LIST_DIR}/SdlConfiguration.cmake) + add_definitions(-DORTHANC_ENABLE_SDL=1) +else() + add_definitions(-DORTHANC_ENABLE_SDL=0) +endif() + +if (ENABLE_CURL) + add_definitions(-DORTHANC_ENABLE_CURL=1) + include(${ORTHANC_ROOT}/Resources/CMake/LibCurlConfiguration.cmake) + + if (ENABLE_SSL) + set(ENABLE_PKCS11 OFF) + add_definitions(-DORTHANC_SSL_ENABLED=1) + include(${ORTHANC_ROOT}/Resources/CMake/OpenSslConfiguration.cmake) + else() + add_definitions(-DORTHANC_SSL_ENABLED=0) + endif() +else() + add_definitions( + -DORTHANC_SSL_ENABLED=0 + -DORTHANC_ENABLE_CURL=0 + ) +endif() + +add_definitions( + -DORTHANC_ENABLE_MD5=0 + -DORTHANC_ENABLE_BASE64=1 + -DORTHANC_PUGIXML_ENABLED=0 + -DORTHANC_PKCS11_ENABLED=0 + ) + + +##################################################################### +## Link the colormaps into the binaries +##################################################################### + +EmbedResources( + COLORMAP_HOT ${ORTHANC_STONE_DIR}/Resources/Colormaps/hot.lut + COLORMAP_JET ${ORTHANC_STONE_DIR}/Resources/Colormaps/jet.lut + COLORMAP_RED ${ORTHANC_STONE_DIR}/Resources/Colormaps/red.lut + COLORMAP_GREEN ${ORTHANC_STONE_DIR}/Resources/Colormaps/green.lut + COLORMAP_BLUE ${ORTHANC_STONE_DIR}/Resources/Colormaps/blue.lut + ) + + +##################################################################### +## System-specific patches +##################################################################### + +if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows" AND + NOT MSVC AND + ENABLE_SDL) + # This is necessary when compiling EXE for Windows using MinGW + link_libraries(mingw32) +endif() + + + +##################################################################### +## All the source files required to build Stone of Orthanc +##################################################################### + +list(APPEND ORTHANC_STONE_SOURCES + ${ORTHANC_STONE_DIR}/Framework/Applications/BasicApplicationContext.cpp + ${ORTHANC_STONE_DIR}/Framework/Applications/IBasicApplication.cpp + ${ORTHANC_STONE_DIR}/Framework/Applications/Sdl/SdlBuffering.cpp + ${ORTHANC_STONE_DIR}/Framework/Applications/Sdl/SdlEngine.cpp + ${ORTHANC_STONE_DIR}/Framework/Applications/Sdl/SdlWindow.cpp + ${ORTHANC_STONE_DIR}/Framework/Layers/CircleMeasureTracker.cpp + ${ORTHANC_STONE_DIR}/Framework/Layers/ColorFrameRenderer.cpp + ${ORTHANC_STONE_DIR}/Framework/Layers/DicomStructureSetRendererFactory.cpp + ${ORTHANC_STONE_DIR}/Framework/Layers/FrameRenderer.cpp + ${ORTHANC_STONE_DIR}/Framework/Layers/GrayscaleFrameRenderer.cpp + ${ORTHANC_STONE_DIR}/Framework/Layers/LineLayerRenderer.cpp + ${ORTHANC_STONE_DIR}/Framework/Layers/LineMeasureTracker.cpp + ${ORTHANC_STONE_DIR}/Framework/Layers/RenderStyle.cpp + ${ORTHANC_STONE_DIR}/Framework/Layers/SeriesFrameRendererFactory.cpp + ${ORTHANC_STONE_DIR}/Framework/Layers/SiblingSliceLocationFactory.cpp + ${ORTHANC_STONE_DIR}/Framework/Layers/SingleFrameRendererFactory.cpp + ${ORTHANC_STONE_DIR}/Framework/Messaging/CurlOrthancConnection.cpp + ${ORTHANC_STONE_DIR}/Framework/Messaging/MessagingToolbox.cpp + ${ORTHANC_STONE_DIR}/Framework/Toolbox/BinarySemaphore.cpp + ${ORTHANC_STONE_DIR}/Framework/Toolbox/DicomDataset.cpp + ${ORTHANC_STONE_DIR}/Framework/Toolbox/DicomFrameConverter.cpp + ${ORTHANC_STONE_DIR}/Framework/Toolbox/DicomStructureSet.cpp + ${ORTHANC_STONE_DIR}/Framework/Toolbox/DownloadStack.cpp + ${ORTHANC_STONE_DIR}/Framework/Toolbox/GeometryToolbox.cpp + ${ORTHANC_STONE_DIR}/Framework/Toolbox/OrthancSeriesLoader.cpp + ${ORTHANC_STONE_DIR}/Framework/Toolbox/ParallelSlices.cpp + ${ORTHANC_STONE_DIR}/Framework/Toolbox/ParallelSlicesCursor.cpp + ${ORTHANC_STONE_DIR}/Framework/Toolbox/SliceGeometry.cpp + ${ORTHANC_STONE_DIR}/Framework/Toolbox/ViewportGeometry.cpp + ${ORTHANC_STONE_DIR}/Framework/Viewport/CairoContext.cpp + ${ORTHANC_STONE_DIR}/Framework/Viewport/CairoFont.cpp + ${ORTHANC_STONE_DIR}/Framework/Viewport/CairoSurface.cpp + ${ORTHANC_STONE_DIR}/Framework/Viewport/WidgetViewport.cpp + ${ORTHANC_STONE_DIR}/Framework/Volumes/ImageBuffer3D.cpp + ${ORTHANC_STONE_DIR}/Framework/Volumes/VolumeImage.cpp + ${ORTHANC_STONE_DIR}/Framework/Volumes/VolumeImagePolicyBase.cpp + ${ORTHANC_STONE_DIR}/Framework/Volumes/VolumeImageProgressivePolicy.cpp + ${ORTHANC_STONE_DIR}/Framework/Volumes/VolumeImageSimplePolicy.cpp + ${ORTHANC_STONE_DIR}/Framework/Widgets/CairoWidget.cpp + ${ORTHANC_STONE_DIR}/Framework/Widgets/EmptyWidget.cpp + ${ORTHANC_STONE_DIR}/Framework/Widgets/LayeredSceneWidget.cpp + ${ORTHANC_STONE_DIR}/Framework/Widgets/LayoutWidget.cpp + ${ORTHANC_STONE_DIR}/Framework/Widgets/TestCairoWidget.cpp + ${ORTHANC_STONE_DIR}/Framework/Widgets/TestWorldSceneWidget.cpp + ${ORTHANC_STONE_DIR}/Framework/Widgets/WidgetBase.cpp + ${ORTHANC_STONE_DIR}/Framework/Widgets/WorldSceneWidget.cpp + + ${ORTHANC_ROOT}/Core/ChunkedBuffer.cpp + ${ORTHANC_ROOT}/Core/Compression/DeflateBaseCompressor.cpp + ${ORTHANC_ROOT}/Core/Compression/GzipCompressor.cpp + ${ORTHANC_ROOT}/Core/Enumerations.cpp + ${ORTHANC_ROOT}/Core/HttpClient.cpp + ${ORTHANC_ROOT}/Core/Images/Image.cpp + ${ORTHANC_ROOT}/Core/Images/ImageAccessor.cpp + ${ORTHANC_ROOT}/Core/Images/ImageBuffer.cpp + ${ORTHANC_ROOT}/Core/Images/ImageProcessing.cpp + ${ORTHANC_ROOT}/Core/Images/JpegErrorManager.cpp + ${ORTHANC_ROOT}/Core/Images/JpegReader.cpp + ${ORTHANC_ROOT}/Core/Images/PngReader.cpp + ${ORTHANC_ROOT}/Core/Logging.cpp + ${ORTHANC_ROOT}/Core/Toolbox.cpp + ${ORTHANC_ROOT}/Core/WebServiceParameters.cpp + ${ORTHANC_ROOT}/Resources/ThirdParty/base64/base64.cpp + + ${AUTOGENERATED_SOURCES} + + # Mandatory components + ${BOOST_SOURCES} + ${CAIRO_SOURCES} + ${JSONCPP_SOURCES} + ${PIXMAN_SOURCES} + ${ZLIB_SOURCES} + ${LIBPNG_SOURCES} + ${LIBJPEG_SOURCES} + + # Optional components + ${OPENSSL_SOURCES} + ${CURL_SOURCES} + ${SDL_SOURCES} + )