Hello,

To engage the SimpleITK user community in improving, guiding and evolving 
SimpleITK important changes will be proposed on the mailing list and on the 
Wiki for feedback.

The first one has already begun, which is refactoring Superbuild structure of 
SimpleITK.

http://www.itk.org/Wiki/SimpleITK/Design_And_Proposals/SIP_001


= SIP 001 - Refactor Superbuild for More External Projects =

== Introduction ==

We wish to add additional external projects to the SimpleITK Superbuild to 
reduce inclusion of third party packages in the source tree, as well as to 
improve the build time and build configuration flexibility. This is based on 
the requests of system packagers to utilize the system packages and reduce the 
third-party libraries included in SimpleITK's source code. Additionally, we 
wish to build the SimpleITK common libraries once and then wrapping them 
multiple times. Specifically, we want to be able to wrap for multiple versions 
of Python without having to do a "dirty" build in the same build directory.

== Remove Third-Parties Libraries ==

The third-party libraries of Lua and GTest are currently included in the 
SimpleITK source tree and distribution. These libraries shall be removed from 
the repository and become a dependency for the actual ( not Superbuild ) 
SimpleITK project.

The requirements for Lua may come as a surprise to users who are currently not 
using the Superbuild. These users need to be encouraged to switch to using the 
SimpleITK Superbuild to provide the required dependencies. The Slicer 3D 
external project 
[https://github.com/Slicer/Slicer/blob/master/SuperBuild/External_SimpleITK.cmake
 script] for SimpleITK should serve as an example of how a build can be updated 
to use the Superbuild. 

Note: This item is already completed. JIRA Issue: 
[https://issues.itk.org/jira/browse/SIMPLEITK-652 SIMPLEITK-652]

== Refactoring Wrapping for Modularity == 

The goal is to refactor the SWIG wrapping so that each wrapped language can be 
an independent project built against the SimpleITK project. Doing so will 
enable the Swig wrapping to occur either in the Superbuild level or in an 
additional project dependent on SimpleITK common libraries. This would enable 
wrapping for multiple versions of a language.

The current CMake options for the wrapped languages will be maintained as part 
of the SimpleITK project, but it will not be enabled by default when the 
Superbuild is used. Instead they will be separate Superbuild projects.

This new layout matches the installation and packaging pieces needed for system 
packagers because it has a clear separation of the SimpleITK common libraries 
and the wrapped languages. This separation enables the use of CMake/CPack 
install facility to install and package the SimpleITK common libraries and 
headers. The wrappings will have to be install and packaged according to the 
language conventions. 

Another benefit of this separation is that it should make work on a specific 
language more efficient. The SimpleITK common libraries will not need to be 
rebuilt at the wrapping level.

This work be done in three phases:

# Refractor the current ''Wrapping'' directory so that each language is in a 
separate sub-directory.
# Revise each language so that it is a CMake "Project" which will depend on and 
''use'' SimpleITK.
# Refactor the code generation of the SimpleITK tests so that it can be used by 
the Wrapped language projects.
# Update the Superbuild to disable wrapping in the SimpleITK project but create 
additional external projects for each wrapped language.

_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html

Kitware offers ITK Training Courses, for more information visit:
http://kitware.com/products/protraining.php

Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/insight-developers

Reply via email to