# HG changeset patch # User Administrator@jodogne-w01 # Date 1342779241 -7200 # Node ID c38716a8a146ad6c033528164f9656efd2335fc7 # Parent 09f1eceaccec31903d43fe36184d22378ce000a4 static link against MSVC CRT diff -r 09f1eceaccec -r c38716a8a146 CMakeLists.txt --- a/CMakeLists.txt Fri Jul 20 11:46:52 2012 +0200 +++ b/CMakeLists.txt Fri Jul 20 12:14:01 2012 +0200 @@ -1,175 +1,191 @@ -cmake_minimum_required(VERSION 2.8) - -project(Palantir) -include(${CMAKE_SOURCE_DIR}/Resources/CMake/AutoGeneratedCode.cmake) -include(${CMAKE_SOURCE_DIR}/Resources/CMake/DownloadPackage.cmake) -include(CheckIncludeFiles) - -SET(STATIC_BUILD ON CACHE BOOL "Static build of the third-party libraries (necessary for Windows)") -SET(RELEASE_BUILD OFF CACHE BOOL "Release build") - -if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") - CHECK_INCLUDE_FILES(rpc.h HAVE_UUID_H) -else() - CHECK_INCLUDE_FILES(uuid/uuid.h HAVE_UUID_H) -endif() - -if ("${HAVE_UUID_H}" STREQUAL "") - message(FATAL_ERROR "Please install the uuid-dev package") -endif() - - -SET(THIRD_PARTY_SOURCES) -include(${CMAKE_SOURCE_DIR}/Resources/CMake/BoostConfiguration.cmake) -include(${CMAKE_SOURCE_DIR}/Resources/CMake/DcmtkConfiguration.cmake) -include(${CMAKE_SOURCE_DIR}/Resources/CMake/GoogleTestConfiguration.cmake) -include(${CMAKE_SOURCE_DIR}/Resources/CMake/MongooseConfiguration.cmake) -include(${CMAKE_SOURCE_DIR}/Resources/CMake/ZlibConfiguration.cmake) -include(${CMAKE_SOURCE_DIR}/Resources/CMake/SQLiteConfiguration.cmake) -include(${CMAKE_SOURCE_DIR}/Resources/CMake/JsonCppConfiguration.cmake) -include(${CMAKE_SOURCE_DIR}/Resources/CMake/LibCurlConfiguration.cmake) -include(${CMAKE_SOURCE_DIR}/Resources/CMake/LibPngConfiguration.cmake) - - -if (${CMAKE_COMPILER_IS_GNUCXX}) - set(CMAKE_C_FLAGS "-Wall -pedantic -Wno-implicit-function-declaration") # --std=c99 makes libcurl not to compile - set(CMAKE_CXX_FLAGS "-Wall -pedantic -Wno-long-long -Wno-variadic-macros") -elseif (${MSVC}) - add_definitions( - -D_CRT_SECURE_NO_WARNINGS=1 - -D_CRT_SECURE_NO_DEPRECATE=1 - ) - include_directories(${CMAKE_SOURCE_DIR}/Resources/VisualStudio) - link_libraries(netapi32) -endif() - - -if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") - add_definitions( - -D_LARGEFILE64_SOURCE=1 - -D_FILE_OFFSET_BITS=64 - ) - set(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed") - set(CMAKE_MODULE_LINKER_FLAGS "-Wl,--no-undefined") - set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined") - - # http://www.mail-archive.com/cmake@cmake.org/msg08837.html - set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "") - link_libraries(uuid pthread rt) - -elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") - add_definitions( - -DWINVER=0x0501 - -D_CRT_SECURE_NO_WARNINGS=1 - ) - link_libraries(rpcrt4 ws2_32) -endif() - - -if (${STATIC_BUILD}) - add_definitions(-DPALANTIR_STATIC=1) -else() - add_definitions(-DPALANTIR_STATIC=0) -endif() - -if (${RELEASE_BUILD}) - add_definitions( - -DPALANTIR_RELEASE=1 - ) - - EmbedResources( - PREPARE_DATABASE PalantirServer/PrepareDatabase.sql - PALANTIR_EXPLORER PalantirExplorer - ) - -else() - add_definitions( - -DPALANTIR_RELEASE=0 - -DPALANTIR_PATH=\"${CMAKE_SOURCE_DIR}\" - ) - - EmbedResources( - PREPARE_DATABASE PalantirServer/PrepareDatabase.sql - ) -endif() - - -add_library(CoreLibrary - STATIC - ${AUTOGENERATED_SOURCES} - ${THIRD_PARTY_SOURCES} - - Core/ChunkedBuffer.cpp - Core/Compression/BufferCompressor.cpp - Core/Compression/ZlibCompressor.cpp - Core/PalantirException.cpp - Core/DicomFormat/DicomArray.cpp - Core/DicomFormat/DicomMap.cpp - Core/DicomFormat/DicomTag.cpp - Core/FileStorage.cpp - Core/HttpServer/EmbeddedResourceHttpHandler.cpp - Core/HttpServer/FilesystemHttpHandler.cpp - Core/HttpServer/HttpHandler.cpp - Core/HttpServer/HttpOutput.cpp - Core/HttpServer/MongooseServer.cpp - Core/MultiThreading/BagOfRunnablesBySteps.cpp - Core/PngWriter.cpp - Core/SQLite/Connection.cpp - Core/SQLite/FunctionContext.cpp - Core/SQLite/Statement.cpp - Core/SQLite/StatementId.cpp - Core/SQLite/StatementReference.cpp - Core/SQLite/Transaction.cpp - Core/Toolbox.cpp - Core/Uuid.cpp - - PalantirCppClient/HttpClient.cpp - PalantirCppClient/HttpException.cpp - ) - -add_library(ServerLibrary - PalantirServer/DicomIntegerPixelAccessor.cpp - PalantirServer/DicomProtocol/DicomFindAnswers.cpp - PalantirServer/DicomProtocol/DicomServer.cpp - PalantirServer/DicomProtocol/DicomUserConnection.cpp - PalantirServer/FromDcmtkBridge.cpp - PalantirServer/Internals/CommandDispatcher.cpp - PalantirServer/Internals/FindScp.cpp - PalantirServer/Internals/MoveScp.cpp - PalantirServer/Internals/StoreScp.cpp - PalantirServer/PalantirInitialization.cpp - PalantirServer/PalantirRestApi.cpp - PalantirServer/ServerIndex.cpp - PalantirServer/ToDcmtkBridge.cpp - PalantirServer/ToDcmtkBridge.cpp - PalantirServer/DicomIntegerPixelAccessor.cpp - ) - -add_executable(Palantir - PalantirServer/main.cpp - ) - -add_executable(UnitTests - ${GTEST_SOURCES} - UnitTests/main.cpp - UnitTests/SQLite.cpp - UnitTests/SQLiteChromium.cpp - UnitTests/Versions.cpp - ) - -TARGET_LINK_LIBRARIES(Palantir ServerLibrary CoreLibrary) -TARGET_LINK_LIBRARIES(UnitTests ServerLibrary CoreLibrary) - - -find_package(Doxygen) -if (DOXYGEN_FOUND) - configure_file( - ${CMAKE_SOURCE_DIR}/Resources/Palantir.doxygen - ${CMAKE_CURRENT_BINARY_DIR}/Palantir.doxygen - @ONLY) - add_custom_target(doc - ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Palantir.doxygen - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMENT "Generating API documentation with Doxygen" VERBATIM - ) -endif(DOXYGEN_FOUND) +cmake_minimum_required(VERSION 2.8) + +project(Palantir) +include(${CMAKE_SOURCE_DIR}/Resources/CMake/AutoGeneratedCode.cmake) +include(${CMAKE_SOURCE_DIR}/Resources/CMake/DownloadPackage.cmake) +include(CheckIncludeFiles) + +SET(STATIC_BUILD ON CACHE BOOL "Static build of the third-party libraries (necessary for Windows)") +SET(RELEASE_BUILD OFF CACHE BOOL "Release build") + +if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") + CHECK_INCLUDE_FILES(rpc.h HAVE_UUID_H) +else() + CHECK_INCLUDE_FILES(uuid/uuid.h HAVE_UUID_H) +endif() + +if ("${HAVE_UUID_H}" STREQUAL "") + message(FATAL_ERROR "Please install the uuid-dev package") +endif() + + +SET(THIRD_PARTY_SOURCES) +include(${CMAKE_SOURCE_DIR}/Resources/CMake/BoostConfiguration.cmake) +include(${CMAKE_SOURCE_DIR}/Resources/CMake/DcmtkConfiguration.cmake) +include(${CMAKE_SOURCE_DIR}/Resources/CMake/GoogleTestConfiguration.cmake) +include(${CMAKE_SOURCE_DIR}/Resources/CMake/MongooseConfiguration.cmake) +include(${CMAKE_SOURCE_DIR}/Resources/CMake/ZlibConfiguration.cmake) +include(${CMAKE_SOURCE_DIR}/Resources/CMake/SQLiteConfiguration.cmake) +include(${CMAKE_SOURCE_DIR}/Resources/CMake/JsonCppConfiguration.cmake) +include(${CMAKE_SOURCE_DIR}/Resources/CMake/LibCurlConfiguration.cmake) +include(${CMAKE_SOURCE_DIR}/Resources/CMake/LibPngConfiguration.cmake) + + +if (${CMAKE_COMPILER_IS_GNUCXX}) + set(CMAKE_C_FLAGS "-Wall -pedantic -Wno-implicit-function-declaration") # --std=c99 makes libcurl not to compile + set(CMAKE_CXX_FLAGS "-Wall -pedantic -Wno-long-long -Wno-variadic-macros") +elseif (${MSVC}) + # http://stackoverflow.com/a/6510446 + foreach(flag_var + CMAKE_C_FLAGS_DEBUG + CMAKE_CXX_FLAGS_DEBUG + CMAKE_C_FLAGS_RELEASE + CMAKE_CXX_FLAGS_RELEASE + CMAKE_C_FLAGS_MINSIZEREL + CMAKE_CXX_FLAGS_MINSIZEREL + CMAKE_C_FLAGS_RELWITHDEBINFO + CMAKE_CXX_FLAGS_RELWITHDEBINFO) + string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") + string(REGEX REPLACE "/MDd" "/MTd" ${flag_var} "${${flag_var}}") + endforeach(flag_var) + add_definitions( + -D_CRT_SECURE_NO_WARNINGS=1 + -D_CRT_SECURE_NO_DEPRECATE=1 + ) + include_directories(${CMAKE_SOURCE_DIR}/Resources/VisualStudio) + link_libraries(netapi32) +endif() + + +if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") + add_definitions( + -D_LARGEFILE64_SOURCE=1 + -D_FILE_OFFSET_BITS=64 + ) + set(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed") + set(CMAKE_MODULE_LINKER_FLAGS "-Wl,--no-undefined") + set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined") + + # http://www.mail-archive.com/cmake@cmake.org/msg08837.html + set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "") + link_libraries(uuid pthread rt) + +elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") + add_definitions( + -DWINVER=0x0501 + -D_CRT_SECURE_NO_WARNINGS=1 + ) + link_libraries(rpcrt4 ws2_32) +endif() + + +if (${STATIC_BUILD}) + add_definitions(-DPALANTIR_STATIC=1) +else() + add_definitions(-DPALANTIR_STATIC=0) +endif() + +if (${RELEASE_BUILD}) + add_definitions( + -DPALANTIR_RELEASE=1 + ) + + EmbedResources( + PREPARE_DATABASE PalantirServer/PrepareDatabase.sql + PALANTIR_EXPLORER PalantirExplorer + ) + +else() + add_definitions( + -DPALANTIR_RELEASE=0 + -DPALANTIR_PATH=\"${CMAKE_SOURCE_DIR}\" + ) + + EmbedResources( + PREPARE_DATABASE PalantirServer/PrepareDatabase.sql + ) +endif() + + +add_library(CoreLibrary + STATIC + ${AUTOGENERATED_SOURCES} + ${THIRD_PARTY_SOURCES} + + Core/ChunkedBuffer.cpp + Core/Compression/BufferCompressor.cpp + Core/Compression/ZlibCompressor.cpp + Core/PalantirException.cpp + Core/DicomFormat/DicomArray.cpp + Core/DicomFormat/DicomMap.cpp + Core/DicomFormat/DicomTag.cpp + Core/FileStorage.cpp + Core/HttpServer/EmbeddedResourceHttpHandler.cpp + Core/HttpServer/FilesystemHttpHandler.cpp + Core/HttpServer/HttpHandler.cpp + Core/HttpServer/HttpOutput.cpp + Core/HttpServer/MongooseServer.cpp + Core/MultiThreading/BagOfRunnablesBySteps.cpp + Core/PngWriter.cpp + Core/SQLite/Connection.cpp + Core/SQLite/FunctionContext.cpp + Core/SQLite/Statement.cpp + Core/SQLite/StatementId.cpp + Core/SQLite/StatementReference.cpp + Core/SQLite/Transaction.cpp + Core/Toolbox.cpp + Core/Uuid.cpp + + PalantirCppClient/HttpClient.cpp + PalantirCppClient/HttpException.cpp + ) + +add_library(ServerLibrary + PalantirServer/DicomIntegerPixelAccessor.cpp + PalantirServer/DicomProtocol/DicomFindAnswers.cpp + PalantirServer/DicomProtocol/DicomServer.cpp + PalantirServer/DicomProtocol/DicomUserConnection.cpp + PalantirServer/FromDcmtkBridge.cpp + PalantirServer/Internals/CommandDispatcher.cpp + PalantirServer/Internals/FindScp.cpp + PalantirServer/Internals/MoveScp.cpp + PalantirServer/Internals/StoreScp.cpp + PalantirServer/PalantirInitialization.cpp + PalantirServer/PalantirRestApi.cpp + PalantirServer/ServerIndex.cpp + PalantirServer/ToDcmtkBridge.cpp + PalantirServer/ToDcmtkBridge.cpp + PalantirServer/DicomIntegerPixelAccessor.cpp + ) + +# Ensure autogenerated code is built before building ServerLibrary +add_dependencies(ServerLibrary CoreLibrary) + +add_executable(Palantir + PalantirServer/main.cpp + ) + +add_executable(UnitTests + ${GTEST_SOURCES} + UnitTests/main.cpp + UnitTests/SQLite.cpp + UnitTests/SQLiteChromium.cpp + UnitTests/Versions.cpp + ) + +TARGET_LINK_LIBRARIES(Palantir ServerLibrary CoreLibrary) +TARGET_LINK_LIBRARIES(UnitTests ServerLibrary CoreLibrary) + + +find_package(Doxygen) +if (DOXYGEN_FOUND) + configure_file( + ${CMAKE_SOURCE_DIR}/Resources/Palantir.doxygen + ${CMAKE_CURRENT_BINARY_DIR}/Palantir.doxygen + @ONLY) + add_custom_target(doc + ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Palantir.doxygen + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Generating API documentation with Doxygen" VERBATIM + ) +endif(DOXYGEN_FOUND) diff -r 09f1eceaccec -r c38716a8a146 PalantirServer/main.cpp --- a/PalantirServer/main.cpp Fri Jul 20 11:46:52 2012 +0200 +++ b/PalantirServer/main.cpp Fri Jul 20 12:14:01 2012 +0200 @@ -107,8 +107,9 @@ try { - ServerIndex index("server"); - MyDicomStoreFactory storeScp(index, "server"); + std::string storageDirectory = GetGlobalStringParameter("StorageDirectory", "PalantirStorage"); + ServerIndex index(storageDirectory); + MyDicomStoreFactory storeScp(index, storageDirectory); { // DICOM server @@ -128,7 +129,7 @@ httpServer.RegisterHandler(new FilesystemHttpHandler("/app", PALANTIR_PATH "/PalantirExplorer")); #endif - httpServer.RegisterHandler(new PalantirRestApi(index, "server")); + httpServer.RegisterHandler(new PalantirRestApi(index, storageDirectory)); // GO !!! httpServer.Start(); diff -r 09f1eceaccec -r c38716a8a146 Resources/Configuration.json --- a/Resources/Configuration.json Fri Jul 20 11:46:52 2012 +0200 +++ b/Resources/Configuration.json Fri Jul 20 12:14:01 2012 +0200 @@ -1,11 +1,12 @@ -{ - "HttpPort" : 8000, - - "DicomAet" : "ANY-SCP", - "DicomPort" : 4242, - "DicomModalities" : { - }, - - "PalantirPeers" : { - } -} +{ + "StorageDirectory" : "PalantirStorage", + "HttpPort" : 8000, + + "DicomAet" : "ANY-SCP", + "DicomPort" : 4242, + "DicomModalities" : { + }, + + "PalantirPeers" : { + } +}