diff --git a/CMakeExternals/ANN.cmake b/CMakeExternals/ANN.cmake index c377faba2a..bf8810c01d 100644 --- a/CMakeExternals/ANN.cmake +++ b/CMakeExternals/ANN.cmake @@ -1,35 +1,38 @@ #----------------------------------------------------------------------------- # ANN #----------------------------------------------------------------------------- # Sanity checks if(DEFINED ANN_DIR AND NOT EXISTS ${ANN_DIR}) message(FATAL_ERROR "ANN_DIR variable is defined but corresponds to non-existing directory") endif() set(proj ANN) set(proj_DEPENDENCIES ) set(ANN_DEPENDS ${proj}) if(NOT DEFINED ANN_DIR) + set(patch_cmd ${CMAKE_COMMAND} -Dproj:STRING=${proj} -Dproj_target:STRING=ann -P ${CMAKE_CURRENT_LIST_DIR}/GenerateDefaultCMakeBuildSystem.cmake) + ExternalProject_Add(${proj} SOURCE_DIR ${CMAKE_BINARY_DIR}/${proj}-src BINARY_DIR ${proj}-build PREFIX ${proj}-cmake - URL ${MITK_THIRDPARTY_DOWNLOAD_PREFIX_URL}/ann-cmake-1.1.2.tar.gz - URL_MD5 d9bbbc9e6fd6f29312a7c2bee48430e4 + URL ${MITK_THIRDPARTY_DOWNLOAD_PREFIX_URL}/ann_1.1.2.tar.gz + URL_MD5 7ffaacc7ea79ca39d4958a6378071365 + PATCH_COMMAND ${patch_cmd} INSTALL_COMMAND "" CMAKE_GENERATOR ${gen} CMAKE_ARGS ${ep_common_args} DEPENDS ${proj_DEPENDENCIES} ) set(ANN_DIR ${CMAKE_CURRENT_BINARY_DIR}/${proj}-build) else() mitkMacroEmptyExternalProject(${proj} "${proj_DEPENDENCIES}") endif() diff --git a/CMakeExternals/ANNCMakeLists.txt b/CMakeExternals/ANNCMakeLists.txt new file mode 100644 index 0000000000..af7c6aad3e --- /dev/null +++ b/CMakeExternals/ANNCMakeLists.txt @@ -0,0 +1,54 @@ +cmake_minimum_required(VERSION 2.8.4) + +project(ANN) + +set(${PROJECT_NAME}_MAJOR_VERSION 1) +set(${PROJECT_NAME}_MINOR_VERSION 1) +set(${PROJECT_NAME}_PATCH_VERSION 2) +set(${PROJECT_NAME}_VERSION ${${PROJECT_NAME}_MAJOR_VERSION}.${${PROJECT_NAME}_MINOR_VERSION}.${${PROJECT_NAME}_PATCH_VERSION}) + +set(ANN_HEADERS + include/ANN/ANN.h + include/ANN/ANNperf.h + include/ANN/ANNx.h +) + +set(ANN_SOURCES + src/ANN.cpp + src/bd_fix_rad_search.cpp + src/bd_pr_search.cpp + src/bd_search.cpp + src/bd_tree.cpp + src/brute.cpp + src/kd_dump.cpp + src/kd_fix_rad_search.cpp + src/kd_pr_search.cpp + src/kd_search.cpp + src/kd_split.cpp + src/kd_tree.cpp + src/kd_util.cpp + src/perf.cpp +) + +include_directories(${ANN_SOURCE_DIR}/include) +if(NOT BUILD_SHARED_LIBS) + add_definitions( -DANN_STATIC_LIB ) +endif() +add_library(ann ${ANN_HEADERS} ${ANN_SOURCES}) +set_target_properties(ann PROPERTIES + SOVERSION ${${PROJECT_NAME}_VERSION}) + +# Config files +set(${PROJECT_NAME}_LIBRARIES ann) +set(${PROJECT_NAME}_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/include) + +configure_file(${PROJECT_NAME}Config.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake @ONLY) +export(TARGETS ${${PROJECT_NAME}_LIBRARIES} FILE ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Exports.cmake) + +# Version information +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}ConfigVersion.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake + @ONLY + ) diff --git a/CMakeExternals/GLEW.cmake b/CMakeExternals/GLEW.cmake index 4aede9e500..7474f1e6fc 100644 --- a/CMakeExternals/GLEW.cmake +++ b/CMakeExternals/GLEW.cmake @@ -1,35 +1,38 @@ #----------------------------------------------------------------------------- # GLEW #----------------------------------------------------------------------------- # Sanity checks if(DEFINED GLEW_DIR AND NOT EXISTS ${GLEW_DIR}) message(FATAL_ERROR "GLEW_DIR variable is defined but corresponds to non-existing directory") endif() set(proj GLEW) set(proj_DEPENDENCIES ) set(GLEW_DEPENDS ${proj}) if(NOT DEFINED GLEW_DIR) + set(patch_cmd ${CMAKE_COMMAND} -Dproj:STRING=${proj} -Dproj_target:STRING=glew -P ${CMAKE_CURRENT_LIST_DIR}/GenerateDefaultCMakeBuildSystem.cmake) + ExternalProject_Add(${proj} SOURCE_DIR ${CMAKE_BINARY_DIR}/${proj}-src BINARY_DIR ${proj}-build PREFIX ${proj}-cmake - URL ${MITK_THIRDPARTY_DOWNLOAD_PREFIX_URL}/glew-cmake-1.10.0.tar.gz - URL_MD5 1e84666af239ee1ce14e2d0725764cc3 + URL ${MITK_THIRDPARTY_DOWNLOAD_PREFIX_URL}/glew-1.10.0.tgz + URL_MD5 2f09e5e6cb1b9f3611bcac79bc9c2d5d + PATCH_COMMAND ${patch_cmd} INSTALL_COMMAND "" CMAKE_GENERATOR ${gen} CMAKE_ARGS ${ep_common_args} DEPENDS ${proj_DEPENDENCIES} ) set(GLEW_DIR ${CMAKE_CURRENT_BINARY_DIR}/${proj}-build) else() mitkMacroEmptyExternalProject(${proj} "${proj_DEPENDENCIES}") endif() diff --git a/CMakeExternals/GLEWCMakeLists.txt b/CMakeExternals/GLEWCMakeLists.txt new file mode 100644 index 0000000000..72bcfb0ac0 --- /dev/null +++ b/CMakeExternals/GLEWCMakeLists.txt @@ -0,0 +1,37 @@ +cmake_minimum_required(VERSION 2.8.4) + +project(GLEW) + +set(${PROJECT_NAME}_MAJOR_VERSION 1) +set(${PROJECT_NAME}_MINOR_VERSION 10) +set(${PROJECT_NAME}_PATCH_VERSION 0) +set(${PROJECT_NAME}_VERSION ${${PROJECT_NAME}_MAJOR_VERSION}.${${PROJECT_NAME}_MINOR_VERSION}.${${PROJECT_NAME}_PATCH_VERSION}) + +find_package(OpenGL REQUIRED) + +include_directories(${OPENGL_INCLUDE_DIR} ${GLEW_SOURCE_DIR}/include) +if(BUILD_SHARED_LIBS) + add_definitions(-DGLEW_BUILD) +else() + add_definitions(-DGLEW_STATIC) +endif() + +add_library(glew src/glew.c) +target_link_libraries(glew ${OPENGL_gl_LIBRARY}) +set_target_properties(glew PROPERTIES + SOVERSION ${${PROJECT_NAME}_VERSION}) + +# Config files +set(${PROJECT_NAME}_LIBRARIES glew) +set(${PROJECT_NAME}_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/include) + +configure_file(${PROJECT_NAME}Config.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake @ONLY) +export(TARGETS ${${PROJECT_NAME}_LIBRARIES} FILE ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Exports.cmake) + +# Version information +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}ConfigVersion.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake + @ONLY + ) diff --git a/CMakeExternals/GenerateDefaultCMakeBuildSystem.cmake b/CMakeExternals/GenerateDefaultCMakeBuildSystem.cmake new file mode 100644 index 0000000000..4d7822e027 --- /dev/null +++ b/CMakeExternals/GenerateDefaultCMakeBuildSystem.cmake @@ -0,0 +1,53 @@ +set(ProjConfig.cmake.in " +set(${proj}_INCLUDE_DIRS @${proj}_INCLUDE_DIRS@) +set(${proj}_LIBRARIES @${proj}_LIBRARIES@) + +if(NOT TARGET ${proj_target}) + include(@${proj}_BINARY_DIR@/${proj}Exports.cmake) +endif() +") + +set(ProjConfigVersion.cmake.in " +# The created file sets PACKAGE_VERSION_EXACT if the current version string and +# the requested version string are exactly the same and it sets +# PACKAGE_VERSION_COMPATIBLE if the current version major number == requested version major number +# and the current version minor number >= requested version minor number + +set(PACKAGE_VERSION_MAJOR @${proj}_MAJOR_VERSION@) +set(PACKAGE_VERSION_MINOR @${proj}_MINOR_VERSION@) +set(PACKAGE_VERSION_PATCH @${proj}_PATCH_VERSION@) +set(PACKAGE_VERSION \"@${proj}_VERSION@\") + +if(PACKAGE_VERSION VERSION_EQUAL PACKAGE_FIND_VERSION) + set(PACKAGE_VERSION_EXACT TRUE) +else() + set(PACKAGE_VERSION_EXACT FALSE) + if(NOT PACKAGE_VERSION_MAJOR EQUAL PACKAGE_FIND_VERSION_MAJOR) + set(PACKAGE_VERSION_COMPATIBLE FALSE) + elseif(PACKAGE_VERSION_MINOR LESS PACKAGE_FIND_VERSION_MINOR) + set(PACKAGE_VERSION_COMPATIBLE FALSE) + else() + set(PACKAGE_VERSION_CcOMPATIBLE TRUE) + endif() +endif() + +# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it: +if(\"\${CMAKE_SIZEOF_VOID_P}\" STREQUAL \"\" OR \"@CMAKE_SIZEOF_VOID_P@\" STREQUAL \"\") + return() +endif() + +# check that the installed version has the same 32/64bit-ness as the one which is currently searching: +if(NOT \"\${CMAKE_SIZEOF_VOID_P}\" STREQUAL \"@CMAKE_SIZEOF_VOID_P@\") + math(EXPR installedBits \"@CMAKE_SIZEOF_VOID_P@ * 8\") + set(PACKAGE_VERSION \"\${PACKAGE_VERSION} (\${installedBits}bit)\") + set(PACKAGE_VERSION_UNSUITABLE TRUE) +endif() +") + +message("${CMAKE_CURRENT_LIST_DIR}/${proj}CMakeLists.txt ${CMAKE_CURRENT_BINARY_DIR}/CMakeLists.txt") + + +configure_file(${CMAKE_CURRENT_LIST_DIR}/${proj}CMakeLists.txt "${CMAKE_CURRENT_BINARY_DIR}/CMakeLists.txt" COPYONLY) + +file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${proj}Config.cmake.in "${ProjConfig.cmake.in}") +file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${proj}ConfigVersion.cmake.in "${ProjConfigVersion.cmake.in}") diff --git a/CMakeExternals/Patchtinyxml-2.6.2.cmake b/CMakeExternals/Patchtinyxml-2.6.2.cmake new file mode 100644 index 0000000000..058bf87612 --- /dev/null +++ b/CMakeExternals/Patchtinyxml-2.6.2.cmake @@ -0,0 +1,15 @@ +# Called by tinyxml.cmake (ExternalProject_Add) as a patch for tinyxml. +# Adds #define TIXML_USE_STL to enable STL string support + +# read whole file +file(STRINGS tinyxml.h sourceCode NEWLINE_CONSUME) + +# Add the TIXML_USE_STL define +string(REGEX REPLACE "#define TINYXML_INCLUDED" "#define TINYXML_INCLUDED\n\n#ifndef TIXML_USE_STL\n #define TIXML_USE_STL\n#endif" sourceCode ${sourceCode}) + +# set variable CONTENTS, which is substituted in TEMPLATE_FILE +set(CONTENTS ${sourceCode}) +configure_file(${CMAKE_CURRENT_LIST_DIR}/EmptyFileForPatching.dummy tinyxml.h @ONLY) + +# Add the default CMake build system +include(${CMAKE_CURRENT_LIST_DIR}/GenerateDefaultCMakeBuildSystem.cmake) diff --git a/CMakeExternals/Qwt.cmake b/CMakeExternals/Qwt.cmake index 5fe2e1c953..e7a2d5c1be 100644 --- a/CMakeExternals/Qwt.cmake +++ b/CMakeExternals/Qwt.cmake @@ -1,36 +1,39 @@ #----------------------------------------------------------------------------- # Qwt #----------------------------------------------------------------------------- # Sanity checks if(DEFINED Qwt_DIR AND NOT EXISTS ${Qwt_DIR}) message(FATAL_ERROR "Qwt_DIR variable is defined but corresponds to non-existing directory") endif() set(proj Qwt) set(proj_DEPENDENCIES ) set(${proj}_DEPENDS ${proj}) if(NOT DEFINED ${proj}_DIR) + set(patch_cmd ${CMAKE_COMMAND} -Dproj:STRING=${proj} -Dproj_target:STRING=qwt -P ${CMAKE_CURRENT_LIST_DIR}/GenerateDefaultCMakeBuildSystem.cmake) + ExternalProject_Add(${proj} SOURCE_DIR ${CMAKE_BINARY_DIR}/${proj}-src BINARY_DIR ${proj}-build PREFIX ${proj}-cmake - URL ${MITK_THIRDPARTY_DOWNLOAD_PREFIX_URL}/qwt-cmake-6.1.0.tar.gz - URL_MD5 0f6e5c5221ffbbf7d0ba9a778f3e6f05 + URL ${MITK_THIRDPARTY_DOWNLOAD_PREFIX_URL}/qwt-6.1.0.tar.bz2 + URL_MD5 aef0437b37f191067a6a9dc01c30ba64 + PATCH_COMMAND ${patch_cmd} INSTALL_COMMAND "" CMAKE_GENERATOR ${gen} CMAKE_ARGS ${ep_common_args} -DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE} DEPENDS ${proj_DEPENDENCIES} ) set(${proj}_DIR ${CMAKE_CURRENT_BINARY_DIR}/${proj}-build) else() mitkMacroEmptyExternalProject(${proj} "${proj_DEPENDENCIES}") endif() diff --git a/CMakeExternals/QwtCMakeLists.txt b/CMakeExternals/QwtCMakeLists.txt new file mode 100644 index 0000000000..550f435484 --- /dev/null +++ b/CMakeExternals/QwtCMakeLists.txt @@ -0,0 +1,227 @@ + +cmake_minimum_required(VERSION 2.8.4) + +project(Qwt) + +set(${PROJECT_NAME}_MAJOR_VERSION 6) +set(${PROJECT_NAME}_MINOR_VERSION 1) +set(${PROJECT_NAME}_PATCH_VERSION 0) +set(${PROJECT_NAME}_VERSION ${${PROJECT_NAME}_MAJOR_VERSION}.${${PROJECT_NAME}_MINOR_VERSION}.${${PROJECT_NAME}_PATCH_VERSION}) + +set(QWT_MOC_HEADERS + + # General + qwt_dyngrid_layout.h + qwt_magnifier.h + qwt_panner.h + qwt_picker.h + qwt_text_label.h + + # QwtPlot + qwt_abstract_legend.h + qwt_legend.h + qwt_legend_label.h + qwt_plot.h + qwt_plot_renderer.h + qwt_plot_canvas.h + qwt_plot_panner.h + qwt_plot_picker.h + qwt_plot_zoomer.h + qwt_plot_magnifier.h + qwt_sampling_thread.h + qwt_scale_widget.h + + # QwtOpenGL + qwt_plot_glcanvas.h + + # QwtWidgets + qwt_abstract_slider.h + qwt_abstract_scale.h + qwt_analog_clock.h + qwt_compass.h + qwt_counter.h + qwt_dial.h + qwt_knob.h + qwt_slider.h + qwt_thermo.h + qwt_wheel.h +) + +set(QWT_SOURCES + + # General + qwt_abstract_scale_draw.cpp + qwt_clipper.cpp + qwt_color_map.cpp + qwt_column_symbol.cpp + qwt_date.cpp + qwt_date_scale_draw.cpp + qwt_date_scale_engine.cpp + qwt_dyngrid_layout.cpp + qwt_event_pattern.cpp + qwt_graphic.cpp + qwt_interval.cpp + qwt_interval_symbol.cpp + qwt_math.cpp + qwt_magnifier.cpp + qwt_null_paintdevice.cpp + qwt_painter.cpp + qwt_painter_command.cpp + qwt_panner.cpp + qwt_picker.cpp + qwt_picker_machine.cpp + qwt_pixel_matrix.cpp + qwt_point_3d.cpp + qwt_point_polar.cpp + qwt_round_scale_draw.cpp + qwt_scale_div.cpp + qwt_scale_draw.cpp + qwt_scale_map.cpp + qwt_spline.cpp + qwt_scale_engine.cpp + qwt_symbol.cpp + qwt_system_clock.cpp + qwt_text_engine.cpp + qwt_text_label.cpp + qwt_text.cpp + qwt_transform.cpp + qwt_widget_overlay.cpp + + # QwtPlot + qwt_curve_fitter.cpp + qwt_abstract_legend.cpp + qwt_legend.cpp + qwt_legend_data.cpp + qwt_legend_label.cpp + qwt_plot.cpp + qwt_plot_renderer.cpp + qwt_plot_xml.cpp + qwt_plot_axis.cpp + qwt_plot_curve.cpp + qwt_plot_dict.cpp + qwt_plot_directpainter.cpp + qwt_plot_grid.cpp + qwt_plot_histogram.cpp + qwt_plot_item.cpp + qwt_plot_abstract_barchart.cpp + qwt_plot_barchart.cpp + qwt_plot_multi_barchart.cpp + qwt_plot_intervalcurve.cpp + qwt_plot_zoneitem.cpp + qwt_plot_tradingcurve.cpp + qwt_plot_spectrogram.cpp + qwt_plot_spectrocurve.cpp + qwt_plot_scaleitem.cpp + qwt_plot_legenditem.cpp + qwt_plot_seriesitem.cpp + qwt_plot_shapeitem.cpp + qwt_plot_marker.cpp + qwt_plot_textlabel.cpp + qwt_plot_layout.cpp + qwt_plot_canvas.cpp + qwt_plot_panner.cpp + qwt_plot_rasteritem.cpp + qwt_plot_picker.cpp + qwt_plot_zoomer.cpp + qwt_plot_magnifier.cpp + qwt_plot_rescaler.cpp + qwt_point_mapper.cpp + qwt_raster_data.cpp + qwt_matrix_raster_data.cpp + qwt_sampling_thread.cpp + qwt_series_data.cpp + qwt_point_data.cpp + qwt_scale_widget.cpp + + # QwtSvg + qwt_plot_svgitem.cpp + + # QwtOpenGL + qwt_plot_glcanvas.cpp + + # QwtWidgets + qwt_abstract_slider.cpp + qwt_abstract_scale.cpp + qwt_arrow_button.cpp + qwt_analog_clock.cpp + qwt_compass.cpp + qwt_compass_rose.cpp + qwt_counter.cpp + qwt_dial.cpp + qwt_dial_needle.cpp + qwt_knob.cpp + qwt_slider.cpp + qwt_thermo.cpp + qwt_wheel.cpp + +) + +set(_qwt_moc_headers ) +foreach(_header ${QWT_MOC_HEADERS}) + list(APPEND _qwt_moc_headers src/${_header}) +endforeach() + +set(_qwt_sources ) +foreach(_source ${QWT_SOURCES}) + list(APPEND _qwt_sources src/${_source}) +endforeach() + +find_package(Qt4 REQUIRED) + +set(QT_USE_QTSVG 1) +set(QT_USE_QTOPENGL 1) +set(QT_USE_QTDESIGNER 1) +include(${QT_USE_FILE}) +qt4_wrap_cpp(_qwt_sources ${_qwt_moc_headers}) + +add_library(qwt SHARED ${_qwt_sources}) +target_link_libraries(qwt ${QT_LIBRARIES}) + +set_target_properties(qwt PROPERTIES + SOVERSION ${${PROJECT_NAME}_VERSION} + COMPILE_DEFINITIONS "QWT_DLL;QWT_MAKEDLL") + + + +# Build the designer plug-in + +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src) + +set(_qwt_designer_sources + designer/qwt_designer_plotdialog.cpp + designer/qwt_designer_plugin.cpp +) + +qt4_wrap_cpp(_qwt_designer_sources + designer/qwt_designer_plugin.h + designer/qwt_designer_plotdialog.h +) + +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/plugins/designer) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/plugins/designer) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/plugins/designer) + +qt4_add_resources(_qwt_designer_sources designer/qwt_designer_plugin.qrc) +add_library(qwt_designer_plugin SHARED ${_qwt_designer_sources}) +target_link_libraries(qwt_designer_plugin qwt ${QT_LIBRARIES}) + +set_target_properties(qwt_designer_plugin PROPERTIES + SOVERSION ${${PROJECT_NAME}_VERSION} + COMPILE_DEFINITIONS QWT_DLL) + + +# Config files +set(${PROJECT_NAME}_LIBRARIES qwt) +set(${PROJECT_NAME}_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/src) + +configure_file(${PROJECT_NAME}Config.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake @ONLY) +export(TARGETS ${${PROJECT_NAME}_LIBRARIES} FILE ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Exports.cmake) + +# Version information +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}ConfigVersion.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake + @ONLY + ) + diff --git a/CMakeExternals/Qxt.cmake b/CMakeExternals/Qxt.cmake index 2b863f359c..4eeb337e23 100644 --- a/CMakeExternals/Qxt.cmake +++ b/CMakeExternals/Qxt.cmake @@ -1,36 +1,39 @@ #----------------------------------------------------------------------------- # Qxt #----------------------------------------------------------------------------- # Sanity checks if(DEFINED Qxt_DIR AND NOT EXISTS ${Qxt_DIR}) message(FATAL_ERROR "Qxt_DIR variable is defined but corresponds to non-existing directory") endif() set(proj Qxt) set(proj_DEPENDENCIES ) set(${proj}_DEPENDS ${proj}) if(NOT DEFINED ${proj}_DIR) + set(patch_cmd ${CMAKE_COMMAND} -Dproj:STRING=${proj} -Dproj_target:STRING=QxtCore -P ${CMAKE_CURRENT_LIST_DIR}/GenerateDefaultCMakeBuildSystem.cmake) + ExternalProject_Add(${proj} SOURCE_DIR ${CMAKE_BINARY_DIR}/${proj}-src BINARY_DIR ${proj}-build PREFIX ${proj}-cmake - URL ${MITK_THIRDPARTY_DOWNLOAD_PREFIX_URL}/libqxt-cmake-0.6.2.tar.gz - URL_MD5 345d6282baf64c8a0c35eeb6e560c0b2 + URL ${MITK_THIRDPARTY_DOWNLOAD_PREFIX_URL}/libqxt-0.6.2-dadc327c2a6a-patched.tar.gz + URL_MD5 b0438b4c76793c35b606c8aba02748b8 + PATCH_COMMAND ${patch_cmd} INSTALL_COMMAND "" CMAKE_GENERATOR ${gen} CMAKE_ARGS ${ep_common_args} -DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE} DEPENDS ${proj_DEPENDENCIES} ) set(${proj}_DIR ${CMAKE_CURRENT_BINARY_DIR}/${proj}-build) else() mitkMacroEmptyExternalProject(${proj} "${proj_DEPENDENCIES}") endif() diff --git a/CMakeExternals/QxtCMakeLists.txt b/CMakeExternals/QxtCMakeLists.txt new file mode 100644 index 0000000000..81df051baf --- /dev/null +++ b/CMakeExternals/QxtCMakeLists.txt @@ -0,0 +1,474 @@ + +cmake_minimum_required(VERSION 2.8.4) + +project(Qxt) + +set(${PROJECT_NAME}_MAJOR_VERSION 0) +set(${PROJECT_NAME}_MINOR_VERSION 6) +set(${PROJECT_NAME}_PATCH_VERSION 2) +set(${PROJECT_NAME}_VERSION ${${PROJECT_NAME}_MAJOR_VERSION}.${${PROJECT_NAME}_MINOR_VERSION}.${${PROJECT_NAME}_PATCH_VERSION}) + +macro(QT4_GENERATE_MOCS) + foreach(file ${ARGN}) + get_filename_component(source_path ${file} PATH) + get_filename_component(source_name ${file} NAME_WE) + get_filename_component(source_ext ${file} EXT) + + set(moc_file ${CMAKE_CURRENT_BINARY_DIR}/${source_path}/moc_${source_name}.cpp) + QT4_GENERATE_MOC(${file} ${moc_file}) + set_property(SOURCE ${source_path}/${source_name}.cpp APPEND PROPERTY + OBJECT_DEPENDS ${moc_file}) + endforeach() +endmacro() + +set(${PROJECT_NAME}_LIBRARIES + QxtCore + QxtGui + QxtNetwork + QxtWeb +) + +set(QXT_CORE_MOC_HEADERS + qxtabstractconnectionmanager.h + qxtboundfunction.h + qxtcsvmodel.h + qxtdaemon.h + qxtdeplex.h + qxtdeplex_p.h + qxtfifo.h + qxtfilelock.h + qxtjob.h + qxtjob_p.h + qxtlinesocket.h + qxtlinesocket_p.h + qxtlocale.h + qxtlogger.h + qxtlogger_p.h + qxtmultisignalwaiter.h + qxtnamespace.h + qxtpipe.h + qxtpipe_p.h + qxtpointerlist.h + qxtsignalgroup.h + qxtsignalwaiter.h + qxtslotjob.h + qxtslotjob_p.h + qxtstdio.h + qxtstdio_p.h + qxtstdstreambufdevice.h + qxtrpcservice.h + qxtrpcservice_p.h +) + +set(QXT_GUI_MOC_HEADERS + qxtbasespinbox.h + qxtcheckcombobox.h + qxtcheckcombobox_p.h + qxtconfigdialog.h + qxtconfigdialog_p.h + qxtconfigwidget.h + qxtconfigwidget_p.h + qxtconfirmationmessage.h + qxtcountrycombobox.h + qxtcountrycombobox_p.h + qxtcountrymodel.h + qxtcountrymodel_p.h + qxtcrumbview.h + qxtcrumbview_p.h + qxtflowview.h + qxtflowview_p.h + qxtgroupbox.h + qxtheaderview.h + qxtitemdelegate.h + qxtitemdelegate_p.h + qxtlabel.h + qxtletterboxwidget.h + qxtletterboxwidget_p.h + qxtlineedit.h + qxtlistwidget.h + qxtlistwidget_p.h + qxtlanguagecombobox.h + qxtlanguagecombobox_p.h + qxtprogresslabel.h + qxtproxystyle.h + qxtpushbutton.h + qxtspanslider.h + qxtspanslider_p.h + qxtstars.h + qxtstringspinbox.h + qxtstringvalidator.h + qxttablewidget.h + qxttablewidget_p.h + qxttabwidget.h + qxttabwidget_p.h + qxttooltip_p.h + qxttreewidget.h + qxttreewidget_p.h + + qxtscheduleheaderwidget.h + qxtscheduleitemdelegate.h + qxtscheduleview.h + qxtscheduleviewheadermodel_p.h + qxtscheduleview_p.h + + qxtsortfilterproxymodel.h + qxtfilterdialog.h + qxtfilterdialog_p.h + qxtlookuplineedit.h + + # !qws:!symbian + qxtapplication.h + qxtglobalshortcut.h +) + +set(QXT_NETWORK_MOC_HEADERS + qxtjsonrpcclient.h + qxtsmtp.h + qxtrpcpeer.h + qxtsmtp_p.h + qxttcpconnectionmanager.h + qxttcpconnectionmanager_p.h + qxtxmlrpcclient.h +) + +set(QXT_WEB_MOC_HEADERS + qxtabstracthttpconnector.h + qxtabstractwebservice.h + qxtabstractwebsessionmanager.h + qxtabstractwebsessionmanager_p.h + qxthttpsessionmanager.h + qxtwebcontent.h + qxtwebservicedirectory.h + qxtwebservicedirectory_p.h + qxtwebslotservice.h + qxtwebcgiservice.h + qxtwebcgiservice_p.h +) + +set(QXT_NETWORK_MANUAL_MOC_HEADERS + qxtjsonrpccall.h + qxtxmlrpccall.h +) + +set(QXT_CORE_SOURCES + qxtabstractconnectionmanager.cpp + qxtabstractfileloggerengine.cpp + qxtabstractiologgerengine.cpp + qxtbasicfileloggerengine.cpp + qxtbasicstdloggerengine.cpp + qxtcommandoptions.cpp + qxtcsvmodel.cpp + qxtdaemon.cpp + qxtdatastreamsignalserializer.cpp + qxtdeplex.cpp + qxterror.cpp + qxtfifo.cpp + qxtfilelock.cpp + qxtglobal.cpp + qxthmac.cpp + qxtlocale.cpp + qxtjson.cpp + qxtjob.cpp + qxtlinesocket.cpp + qxtlinkedtree.cpp + qxtlogger.cpp + qxtloggerengine.cpp + qxtlogstream.cpp + qxtmetaobject.cpp + qxtmodelserializer.cpp + qxtmultisignalwaiter.cpp + qxtnull.cpp + qxtpipe.cpp + qxtpointerlist.cpp + qxtsignalgroup.cpp + qxtsignalwaiter.cpp + qxtslotjob.cpp + qxtslotmapper.cpp + qxtstdio.cpp + qxtstdstreambufdevice.cpp + qxttimer.cpp + qxtrpcservice.cpp + qxtxmlfileloggerengine.cpp +) + +set(QXT_GUI_SOURCES + qxtbasespinbox.cpp + qxtcheckcombobox.cpp + qxtconfigdialog.cpp + qxtconfigwidget.cpp + qxtconfirmationmessage.cpp + qxtcountrymodel.cpp + qxtcountrycombobox.cpp + qxtcrumbview.cpp + qxtflowview.cpp + qxtflowview_p.cpp + qxtgroupbox.cpp + qxtheaderview.cpp + qxtitemdelegate.cpp + qxtlabel.cpp + qxtletterboxwidget.cpp + qxtlineedit.cpp + qxtlistwidget.cpp + qxtlistwidgetitem.cpp + qxtlanguagecombobox.cpp + qxtprogresslabel.cpp + qxtproxystyle.cpp + qxtpushbutton.cpp + qxtspanslider.cpp + qxtstars.cpp + qxtstringspinbox.cpp + qxtstringvalidator.cpp + qxttablewidget.cpp + qxttablewidgetitem.cpp + qxttabwidget.cpp + qxttooltip.cpp + qxttreewidget.cpp + qxttreewidgetitem.cpp + + qxtscheduleitemdelegate.cpp + qxtscheduleview.cpp + qxtscheduleview_p.cpp + qxtscheduleviewheadermodel_p.cpp + qxtstyleoptionscheduleviewitem.cpp + qxtscheduleheaderwidget.cpp + + qxtsortfilterproxymodel.cpp + qxtfilterdialog.cpp + qxtlookuplineedit.cpp + + # !qws:!symbian + qxtapplication.cpp + qxtglobalshortcut.cpp + qxtscreen.cpp + qxtwindowsystem.cpp +) + +set(QXT_NETWORK_SOURCES + qxtjsonrpccall.cpp + qxtjsonrpcclient.cpp + qxtmailattachment.cpp + qxtmailmessage.cpp + qxtrpcpeer.cpp + qxtsmtp.cpp + qxttcpconnectionmanager.cpp + qxtxmlrpccall.cpp + qxtxmlrpcclient.cpp + qxtxmlrpc_p.cpp +) + +set(QXT_WEB_SOURCES + qxtabstracthttpconnector.cpp + qxtabstractwebservice.cpp + qxtabstractwebsessionmanager.cpp + qxthtmltemplate.cpp + qxthttpserverconnector.cpp + qxthttpsessionmanager.cpp + qxtscgiserverconnector.cpp + qxtwebcontent.cpp + qxtwebevent.cpp + qxtwebservicedirectory.cpp + qxtwebslotservice.cpp + qxtwebcgiservice.cpp +) + +if(UNIX) + list(APPEND QXT_CORE_MOC_HEADERS qxtserialdevice.h qxtserialdevice_p.h) + list(APPEND QXT_CORE_SOURCES + qxtfilelock_unix.cpp qxtserialdevice.cpp qxtserialdevice_unix.cpp) + if(APPLE) + list(APPEND QXT_GUI_SOURCES + qxtapplication_mac.cpp qxtglobalshortcut_mac.cpp + qxtscreen.cpp qxtwindowsystem.cpp) + else() + list(APPEND QXT_GUI_SOURCES + qxtapplication_x11.cpp qxtglobalshortcut_x11.cpp + qxtscreen_x11.cpp qxtwindowsystem_x11.cpp) + endif() +endif() + +if(WIN32) + list(APPEND QXT_CORE_SOURCES qxtfilelock_win.cpp) + list(APPEND QXT_GUI_SOURCES + qxtapplication_win.cpp qxtglobalshortcut_win.cpp + qxtscreen_win.cpp qxtwindowsystem_win.cpp) +endif() + +set(_qxt_core_moc_headers ) +foreach(_header ${QXT_CORE_MOC_HEADERS}) + list(APPEND _qxt_core_moc_headers src/core/${_header}) +endforeach() + +set(_qxt_gui_moc_headers ) +foreach(_header ${QXT_GUI_MOC_HEADERS}) + list(APPEND _qxt_gui_moc_headers src/gui/${_header}) +endforeach() + +set(_qxt_network_moc_headers ) +foreach(_header ${QXT_NETWORK_MOC_HEADERS}) + list(APPEND _qxt_network_moc_headers src/network/${_header}) +endforeach() + +set(_qxt_network_manual_moc_headers ) +foreach(_header ${QXT_NETWORK_MANUAL_MOC_HEADERS}) + list(APPEND _qxt_network_manual_moc_headers src/network/${_header}) +endforeach() + +set(_qxt_web_moc_headers ) +foreach(_header ${QXT_WEB_MOC_HEADERS}) + list(APPEND _qxt_web_moc_headers src/web/${_header}) +endforeach() + +set(_qxt_core_sources ) +foreach(_source ${QXT_CORE_SOURCES}) + list(APPEND _qxt_core_sources src/core/${_source}) +endforeach() + +set(_qxt_gui_sources ) +foreach(_source ${QXT_GUI_SOURCES}) + list(APPEND _qxt_gui_sources src/gui/${_source}) +endforeach() + +set(_qxt_network_sources ) +foreach(_source ${QXT_NETWORK_SOURCES}) + list(APPEND _qxt_network_sources src/network/${_source}) +endforeach() + +set(_qxt_web_sources ) +foreach(_source ${QXT_WEB_SOURCES}) + list(APPEND _qxt_web_sources src/web/${_source}) +endforeach() + +set(_qxt_gui_resources src/gui/resources.qrc) + +set(${PROJECT_NAME}_INCLUDE_DIRS + ${CMAKE_CURRENT_SOURCE_DIR}/src/core + ${CMAKE_CURRENT_SOURCE_DIR}/include/QxtCore + ${CMAKE_CURRENT_SOURCE_DIR}/src/gui + ${CMAKE_CURRENT_SOURCE_DIR}/include/QxtGui + ${CMAKE_CURRENT_SOURCE_DIR}/src/network + ${CMAKE_CURRENT_SOURCE_DIR}/include/QxtNetwork + ${CMAKE_CURRENT_SOURCE_DIR}/src/web + ${CMAKE_CURRENT_SOURCE_DIR}/include/QxtWeb + ) + +include_directories(${${PROJECT_NAME}_INCLUDE_DIRS}) + +find_package(Qt4 REQUIRED) + +set(QT_USE_QTNETWORK 1) +set(QT_USE_QTDESIGNER 1) +include(${QT_USE_FILE}) + +# Build the QxtCore library +qt4_wrap_cpp(_qxt_core_sources ${_qxt_core_moc_headers}) + +add_library(QxtCore SHARED ${_qxt_core_sources}) +target_link_libraries(QxtCore ${QT_LIBRARIES}) + +set_target_properties(QxtCore PROPERTIES + SOVERSION ${${PROJECT_NAME}_VERSION} + COMPILE_DEFINITIONS "BUILD_QXT_CORE") + +# Build the QxtGui library +qt4_wrap_cpp(_qxt_gui_sources ${_qxt_gui_moc_headers}) +qt4_add_resources(_qxt_gui_sources ${_qxt_gui_resources}) + +add_library(QxtGui SHARED ${_qxt_gui_sources}) +target_link_libraries(QxtGui QxtCore ${QT_LIBRARIES}) + +set_target_properties(QxtGui PROPERTIES + SOVERSION ${${PROJECT_NAME}_VERSION} + COMPILE_DEFINITIONS "BUILD_QXT_GUI") + +# Build the QxtNetwork library +qt4_wrap_cpp(_qxt_network_sources ${_qxt_network_moc_headers}) +qt4_add_resources(_qxt_network_sources ${_qxt_network_resources}) + +# The generate moc_* sources are included directly in .cpp files +QT4_GENERATE_MOCS(${_qxt_network_manual_moc_headers}) +include_directories(${CMAKE_CURRENT_BINARY_DIR}/src/network) + +add_library(QxtNetwork SHARED ${_qxt_network_sources}) +target_link_libraries(QxtNetwork QxtCore ${QT_LIBRARIES}) + +set_target_properties(QxtNetwork PROPERTIES + SOVERSION ${${PROJECT_NAME}_VERSION} + COMPILE_DEFINITIONS "BUILD_QXT_NETWORK") + +# Build the QxtWeb library +qt4_wrap_cpp(_qxt_web_sources ${_qxt_web_moc_headers}) + +add_library(QxtWeb SHARED ${_qxt_web_sources}) +target_link_libraries(QxtWeb QxtCore QxtNetwork ${QT_LIBRARIES}) + +set_target_properties(QxtWeb PROPERTIES + SOVERSION ${${PROJECT_NAME}_VERSION} + COMPILE_DEFINITIONS "BUILD_QXT_WEB") + + +# Build the designer plug-in + +set(_qxt_designer_sources + src/designer/qxtbasespinboxplugin.cpp + src/designer/qxtcheckcomboboxplugin.cpp + src/designer/qxtcountrycomboboxplugin.cpp + src/designer/qxtdesignerplugin.cpp + src/designer/qxtdesignerplugins.cpp + src/designer/qxtflowviewplugin.cpp + src/designer/qxtgroupboxplugin.cpp + src/designer/qxtlabelplugin.cpp + src/designer/qxtlanguagecomboboxplugin.cpp + src/designer/qxtletterboxwidgetplugin.cpp + src/designer/qxtlineeditplugin.cpp + src/designer/qxtlistwidgetplugin.cpp + src/designer/qxtprogresslabelplugin.cpp + src/designer/qxtpushbuttonplugin.cpp + src/designer/qxtspansliderplugin.cpp + src/designer/qxtstarsplugin.cpp + src/designer/qxtstringspinboxplugin.cpp + src/designer/qxttablewidgetplugin.cpp + src/designer/qxttreewidgetplugin.cpp +) + +qt4_wrap_cpp(_qxt_designer_sources + src/designer/qxtbasespinboxplugin.h + src/designer/qxtcheckcomboboxplugin.h + src/designer/qxtcountrycomboboxplugin.h + src/designer/qxtdesignerplugins.h + src/designer/qxtflowviewplugin.h + src/designer/qxtgroupboxplugin.h + src/designer/qxtlabelplugin.h + src/designer/qxtlanguagecomboboxplugin.h + src/designer/qxtletterboxwidgetplugin.h + src/designer/qxtlineeditplugin.h + src/designer/qxtlistwidgetplugin.h + src/designer/qxtprogresslabelplugin.h + src/designer/qxtpushbuttonplugin.h + src/designer/qxtspansliderplugin.h + src/designer/qxtstarsplugin.h + src/designer/qxtstringspinboxplugin.h + src/designer/qxttablewidgetplugin.h + src/designer/qxttreewidgetplugin.h + +) + +qt4_add_resources(_qxt_designer_sources src/designer/resources.qrc) +add_library(QxtDesignerPlugins SHARED ${_qxt_designer_sources}) +target_link_libraries(QxtDesignerPlugins QxtGui QxtCore ${QT_LIBRARIES}) + +set_target_properties(QxtDesignerPlugins PROPERTIES + SOVERSION ${${PROJECT_NAME}_VERSION} + COMPILE_DEFINITIONS BUILD_QXT_DESIGNER) + + +# Config files +configure_file(${PROJECT_NAME}Config.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake @ONLY) +export(TARGETS ${Qxt_LIBRARIES} FILE ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Exports.cmake) + +# Version information +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}ConfigVersion.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake + @ONLY + ) diff --git a/CMakeExternals/tinyxml.cmake b/CMakeExternals/tinyxml.cmake index af31f9c7bb..13b5105aa3 100644 --- a/CMakeExternals/tinyxml.cmake +++ b/CMakeExternals/tinyxml.cmake @@ -1,41 +1,44 @@ #----------------------------------------------------------------------------- # tinyxml #----------------------------------------------------------------------------- # Sanity checks if(DEFINED tinyxml_DIR AND NOT EXISTS ${tinyxml_DIR}) message(FATAL_ERROR "tinyxml_DIR variable is defined but corresponds to non-existing directory") endif() set(proj tinyxml) set(proj_DEPENDENCIES ) set(${proj}_DEPENDS ${proj}) if(NOT DEFINED tinyxml_DIR) set(additional_cmake_args ) if(WIN32) set(additional_cmake_args -DBUILD_SHARED_LIBS:BOOL=OFF) endif() + set(patch_cmd ${CMAKE_COMMAND} -Dproj=${proj} -Dproj_target:STRING=tinyxml -P ${MITK_SOURCE_DIR}/CMakeExternals/Patchtinyxml-2.6.2.cmake) + ExternalProject_Add(${proj} SOURCE_DIR ${CMAKE_BINARY_DIR}/${proj}-src BINARY_DIR ${proj}-build PREFIX ${proj}-cmake - URL ${MITK_THIRDPARTY_DOWNLOAD_PREFIX_URL}/tinyxml-cmake-2.6.2.tar.gz - URL_MD5 1ef1c3cf1f070ce57ab60a406a26a5c5 + URL ${MITK_THIRDPARTY_DOWNLOAD_PREFIX_URL}/tinyxml_2_6_2.tar.gz + URL_MD5 c1b864c96804a10526540c664ade67f0 + PATCH_COMMAND ${patch_cmd} INSTALL_COMMAND "" CMAKE_GENERATOR ${gen} CMAKE_ARGS ${ep_common_args} ${additional_cmake_args} DEPENDS ${proj_DEPENDENCIES} ) set(${proj}_DIR ${CMAKE_CURRENT_BINARY_DIR}/${proj}-build) else() mitkMacroEmptyExternalProject(${proj} "${proj_DEPENDENCIES}") endif() diff --git a/CMakeExternals/tinyxmlCMakeLists.txt b/CMakeExternals/tinyxmlCMakeLists.txt new file mode 100644 index 0000000000..9fb77293ab --- /dev/null +++ b/CMakeExternals/tinyxmlCMakeLists.txt @@ -0,0 +1,40 @@ +cmake_minimum_required(VERSION 2.8.4) + +project(tinyxml) + +set(${PROJECT_NAME}_MAJOR_VERSION 2) +set(${PROJECT_NAME}_MINOR_VERSION 6) +set(${PROJECT_NAME}_PATCH_VERSION 2) +set(${PROJECT_NAME}_VERSION ${${PROJECT_NAME}_MAJOR_VERSION}.${${PROJECT_NAME}_MINOR_VERSION}.${${PROJECT_NAME}_PATCH_VERSION}) + + +set(tinyxml_HEADERS + tinystr.h + tinyxml.h +) + +set(tinyxml_SOURCES + tinyxml.cpp + tinyxmlparser.cpp + tinyxmlerror.cpp + tinystr.cpp +) + +add_library(tinyxml ${tinyxml_HEADERS} ${tinyxml_SOURCES}) +set_target_properties(tinyxml PROPERTIES + SOVERSION ${${PROJECT_NAME}_VERSION}) + +# Config files +set(${PROJECT_NAME}_LIBRARIES tinyxml) +set(${PROJECT_NAME}_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}) + +configure_file(${PROJECT_NAME}Config.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake @ONLY) +export(TARGETS ${${PROJECT_NAME}_LIBRARIES} FILE ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Exports.cmake) + +# Version information +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}ConfigVersion.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake + @ONLY + )