Skip to content
  • jcfr's avatar
    COMP: Support Slicer_USE_SYSTEM_* option. Fixes #1739 · 8c5fd778
    jcfr authored
    This commit implements four main changes:
    
      (1) it updates Slicer build system to support configuring Slicer passing
          Slicer_USE_SYSTEM_* CMake variables
    
      (2) it updates to a newer version of CTK able to understand CTK_USE_SYSTEM_*
          options. List of CTK contribution associated with this update are
          reported below.
    
      (3) it changes curl library from "slicerlibcurl/cmcurl/curl" v7.12.1
          to the more recent official CMake'ified curl v7.33.0. This has the
          benefit of making it easier to build against the corresponding
          system library.
    
      (4) It implements workaround allowing some CLIs to built on Debian-like
          distribution that is providing DCMTK 3.6.0.
          See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=637687
          EMSegment project has also been updated to implement a similar
          workaround.
    
    The macro "SlicerMacroCheckExternalProjectDependency" allowing to
    recursively traverse the external project dependency tree has been
    updated.
    
    The traversal is now done in two passes. The first pass traverses the
    complete tree to set the value of Slicer_USE_SYSTEM_*.
    
    The second pass invokes the "ExternalProject_Add" function and displays
    informative messages. In addition to the usual "[OK]" and "[INCLUDED]"
    suffixes, an additional text "(SYSTEM)" is displayed. It means the
    corresponding libraries (and headers) installed on the system will be
    used.
    
    On Ubuntu 13.10, support for the following options have been
    tested simultaneously:
      -DSlicer_USE_PYTHONQT_WITH_OPENSSL:BOOL=ON
      -DSlicer_USE_SYSTEM_python:BOOL=ON
      -DSlicer_USE_SYSTEM_DCMTK:BOOL=ON
      -DSlicer_USE_SYSTEM_LibArchive:BOOL=ON
      -DSlicer_USE_SYSTEM_curl:BOOL=ON
      -DSlicer_USE_SYSTEM_teem:BOOL=ON
      -DSlicer_USE_SYSTEM_OpenIGTLink:BOOL=ON
      -DSlicer_USE_SYSTEM_OpenSSL:BOOL=ON # Implicitly set because python depends
                                          # on OpenSSL.
      -DSlicer_BUILD_OpenIGTLinkIF:BOOL=OFF # Only openigtlink version1 are available
                                            # and code does NOT supports only v2.
    
    To successfully build Slicer against system libraries, the corresponding
    packages have been installed:
      sudo apt-get install libssl-dev \
        libdcmtk-dev \
        libarchive-dev \
        libpython2.7-dev \
        python-numpy \
        libcurl4-openssl-dev \
        libteem-dev \
        tk-dev \
        tcl-dev \
        itcl3-dev \
        libopenigtlink1-dev
    
    While not tested, support for the following option has also been
    implemented:
      -DSlicer_USE_SYSTEM_ITKv4:BOOL=ON
      -DSlicer_USE_SYSTEM_VTK:BOOL=ON
    
    CTK updates:
    
    $ git shortlog  91cdf9e0f...02ecc27d0
    
    Jean-Christophe Fillion-Robin (39):
          Ensure CTK_INSTALL_QTPLUGIN_DIR is properly set
          Ensure "CMAKE_INSTALL_PREFIX" is properly passed to inner project.
          By default, do not install application headers
          Install CTK's *.cmake files
          Merge branch '65-packaging-support' into 403-relocatable-ctkconfig-usectk
          Set plugin install rules for target and include files
          Remove commented code and unused vars from CTKConfig / CTKGenerateCTKConfig
          Explicitly set default value for CTK_INSTALL_QTPLUGIN_DIR
          Remove explicit setting of CMake policies.
          Improve FindDCMTK.cmake documentation
          Add DCMTK 3.6.0 support to ctkDICOMUtil.cpp
          Ensure DCMTK libraries can be found on system without setting DCMTK_DIR
          FindDCMTK - Workaround bug in packaging of DCMTK 3.6.0 on Debian.
          Add support for install-able and relocatable package.
          Merge branch '382-fix-find-dcmtk-issue'
          Merge branch '403-relocatable-ctkconfig-usectk'
          Merge branch '405-support-dcmtk-360'
          Fix -Wunused-but-set-variable in transfer function tests
          Merge branch '209-fix-vtk-transfer-function-test-warnings'
          Fix linking of VTKCoreCppTest by adding a check for linker capabilities
          Merge branch 'fix-vtk-core-test-link-error'
          COMP: FindDCMTK - Exclude -D from DCMTK_DEFINITIONS for easier re-use
          Merge branch '382-fix-find-dcmtk-issue'
          Associate DCMTK_DEFINITIONS to CTKDICOMCore
          Merge branch '413-associated-dcmtk-definitions-to-ctkdicomcore'
          Merge pull request #410 from NifTK/409-widgets-on-ctkPopupWidget-do-not-get-keyboard-focus
          Add DCMTK 3.6.0 support to CTK application.
          Merge branch '405-support-dcmtk-360'
          Fix configuration of CTKConfig based on DCMTK_HAVE_CONFIG_H_OPTIONAL value
          Merge branch '413-associated-dcmtk-definitions-to-ctkdicomcore'
          Add convenience function "ctk_list_to_string"
          Automatically reformat list passed to "CTK" inner build.
          COMP: Add support for CTK_USE_SYSTEM_* options
          Merge branch '418-support-use-system-option'
          FindDCMTK - Do not explicitly set DCMTK_DEFINITIONS
          FindDCMTK - Clean white spaces
          Merge branch '382-fix-find-dcmtk-issue' into 413-associated-dcmtk-definitions-to-ctkdicomcore
          Associate CTKDICOMCore with DCMTK_DEFINITIONS in build and install tree
          Merge branch '413-associated-dcmtk-definitions-to-ctkdicomcore'
    
    Miklos Espak (1):
          Active window flag transferred on RequestSoftwareInputPanel event
    
    Steve Pieper (2):
          Put all tags for a given instance into a list for a single batch insert
          Merge pull request #415 from pieper/414-batch-insert-tags
    
    See #1739
    
    git-svn-id: http://svn.slicer.org/Slicer4/trunk@22724 3bd1e089-480b-0410-8dfb-8563597acbee
    8c5fd778