Release Notes
Release 3.3.1 (Feb 2, 2017)
- doc: Update Quickstart documentation
- fix: Support package names with dashes
- fix: Build of Python script with future statements
- fix: Ensure that order of basis_install arguments does not matter
- fix: Use BASIS_GE_CONFIG instead of (deprecated) $<CONFIGURATION>
- fix: BASIS_DIR used to configure test projects
- fix: Consider $<CONFIG> subdirectory in executable target info path
- fix: Use per-configuration Doxygen configuration file with $<CONFIG> replaced
- fix: Have Doxygen ignore script target <target_build_tmp>.dir/build/ directories
- fix: Build of Python script with future statements
- fix: Skip list(REMOVE_ITEMS) in basis_finalize_targets when TARGETS list empty
- fix: Make [PROJECT_]OTHER_DIRS absolute
- fix: Duplicate ‘lib’ target issue
- fix: When looking for multiple package versions, look in user DEPENDS path first
- del: Remove obsolete FindOpenCV module
Release 3.3.0 (Apr 19, 2016)
- Changed license to standard BSD 2-clause License without SBIA specific terms.
- Moved project to new GitHub repositories with big objects from history removed.
- Moved SBIA project template to separate repository.
- CMake BASIS Modules and Find modules available in separate Git repositories.
- Enhanced project modularization support.
- Add C++11 compiler flags by specifying
LANGUAGES CXX-11
in BasisProject.cmake
file.
- Added Find modules for: TBB, ARPACK, UMFPACK, Eigen3, FLANN, Python, Jython.
- Added
basis_project
attributes: SOVERSION
, DEFAULT_MODULES
, TOOLS_DIR
, OTHER_DIRS
.
- Support separate
CODE_DIR
and TOOLS_DIR
for library and application code.
- Added
BUILD_APPLICATIONS
option when TOOLS_DIR/CMakeLists.txt
exists.
- Added
HAVE_<Package>
and HAVE_<Package>_<Module>
defines.
- Replace
USE_<Package>
by more common WITH_<Package>
options.
- Changed order of dependencies discovery and inclusion of
Depends.cmake
file
- Use file of other module included when declared as dependency of a module.
- Modified
basis_add_subdirectory
to support specification of module directory.
- Added
basis_find_package
option: OPTIONAL_COMPONENTS
.
- Modified
basis_find_package
to add DEPENDS_<Package>_DIR
cache entry
instead of <Package>_DIR
for either root installation directory or location of
<Package>Config.cmake
file. Allow alternative cmake
command-line arguments
such as <Package>_ROOT
and <Package>_DIR
to initialize package search paths.
- Support specification of alternative package versions of dependencies.
- Declare dependencies on other modules using
<Package>{<Module1>,<Module2>}
syntax.
- Enable use of system installation of Sphinx extensions.
- The
ImportTools
module is by default no longer included to reduce configure time.
- New
basis_add_doc
Doxygen options: PREDEFINED
, EXCLUDE_BASIS_MODULES
, EXCLUDE_BASIS_UTILITIES
.
- Allow generator expressions in list of source files and include directories.
- Updated included GTest and GMock source files.
- Download release packages from GitHub directly during bootstrapping.
- Fixed import of project modules from project configuration file.
- Fixed update of script configuration cache and build script.
- Fixed re-inclusion of package use file when additional components are needed/discovered.
- Fixed missing dependencies in module dependency DAG analysis.
- Removed warning about missing
CTestConfig.cmake
file.
Release 3.2.0 (Oct 16, 2015)
- Compatibility with CMake 3.
- Compatibility with Python 3.
- Enable build of shared libraries from MATLAB source files.
- Bug fixes.
Release 3.1.0 (Mar 28, 2014)
- Custom project layout by overriding the default directory names.
- Revised concept of project modules vs. subprojects.
- Enable build of each module by default.
- Enhanced documentation of project modularization.
- Added project configuraton how-to detailing the various configuration files.
- Allow - and _ in project name.
- Allow use of characters -, _, and + in target names.
- Various improvements to reduce build configuration time.
- Require explicit declaration of link dependency to BASIS Utilities.
- Make RPATH setting optional.
- Root documentation files such as README and COPYING file are now optional.
- Conversion of target name to UID is now disabled by default.
- Added shell script which performs the Quick Start steps.
- Default CMakeList.txt template bootstraps BASIS if no installation found.
- Fixed addition of shared libraries.
- Fixed basis_set_project_property(APPEND PROJECT OtherModule ...).
- Fixed TEST property used by basis_build_script_library.
- Fixed help output of basisproject command.
Release 3.0.0 (Jan 15, 2014)
- Slight project name change to “CMake BASIS” (yet usually just referred to as BASIS).
- Generalized templates allow any organization to use BASIS.
- All SBIA specific functionality has been separated out and is now optional.
- Customizable project templates and substitution parameters.
- Default project template configurable during installation using the
DEFAULT_TEMPLATE
CMake option.
- Support for binary project template files.
- Multiple new Sphinx themes available for HTML documentation.
- Updated and improved introductory presentation slides.
- Improved and easier to read documentation.
- Hosting new web site of Open Source CMake BASIS project on GitHub.
Release 2.1.4 (Apr 20, 2013)
- Fixed issue with non-existent
PROJECT_SUBDIRS
, in particular, the default data
subdirectory.
- Fixed paths to executable targets imported from BASIS when it is part of the same “bundle” build.
- Increase timeout for determining MATLAB version as MATLAB starts up very slow the first time.
- Modify
basis_get_matlab_version()
to also set MATLAB_RELEASE
if called with no argument.
Release 2.1.3 (Mar 1, 2013)
- Make import of
basis.utilities
Bash/Python modules more robust against filesystem changes.
- Support direct submission of Bash executables to Oracle Grid Engine (SGE).
- Added CMake Find module for AFNI programs.
- Added
PROJECT_SUBDIRS
CMake variable whichs allows developers to specify additional root subdirectories.
- Set
CPACK_PACKAGE_CONTACT
by default to PROJECT_CONTACT
.
- Fixed paths to bundled modules to be absolute.
- Fixed possible infinite recursion in
basis_get_target_link_libraries
.
- Fixed minor bug in
basistest-master
which wrote file “2” when an error occurred.
Release 2.1.2 (Oct 31, 2012)
- Modified
basisproject
tool to only update template version in root CMakeLists.txt
if called with -u
.
- Modified error message of
basisproject
tool to not mislead user.
- Fixed endless loop in Bash
import()
function when module not found.
- Fixed readonly warning of
COPYRIGHT
, LICENSE
, or CONTACT
Bash variables.
- Fixed relative path of executable target info maps of Bash, Perl, and Python utilities.
- Fixed base directory used to make such relative paths absolute.
- Fixed target name of Python which command used by C++ utilities.
- Fixed Doxygen comments to avoid warnings during build of API documentation.
- Fixed installation of API documentation as part of nightly test.
Release 2.1.1 (Oct 25, 2012)
- Modified
FindOpenCV.cmake
module to still find OpenCV 2 even if CMake configuration file missing.
- Reset cached, non-internal
<PKG>_*
variables if <PKG>_DIR
changed.
- Determine MATLAB version again after
MATLAB_EXECUTABLE
changed.
- Changed output directory of MatlabVersion.txt file in build tree.
- Fixed issue with build of MEX-files which link to libraries with filenames such as
.so.1
.
- Modified basisproject tool and project templates to only store “differences” of templates.
- Changed SBIA Sphinx style of search box in sidebar of web pages.
- Changed PDF names in template
doc/CMakeLists.txt
and revised CMake code further.
- Renamed documentation files.
- Added template file for ChangeLog.
- Documented changes of BASIS itself.
- Updated BASIS project files to latest project template.
Release 2.1.0 (Sep 20, 2012)
- Changed SBIA Sphinx theme for software web pages.
- Extended project template by template files for web site.
- Added
--[no]doc-rst
option to basisproject
tool.
- Added separate
ModuleConfig.cmake.in
and ModuleUse.cmake.in
template files.
- Added
FindSVMTorch.cmake
module.
- Modified
FindSphinx.cmake
module to set Sphinx_DIR
which is saved to BASISConfig.cmake
.
- Modified generated executable target info to use relative paths only to executables of same package/bundle.
- Fixed problem of missing Python
basis.py
module if used as <package>.basis
in script.
- Fixed visibility of
ITK_DIR
inherited from BASIS if ITK used by other project.
- Modified
basis_find_packages()
to find configuration files of other modules or bundled packages again.
- Fixed
basis_use_package()
to use the <Package>_USE_FILE
variable.
- Fixed CMake package configuration variable prefix (
NS
) for modules.
- Fixed
install(EXPORT)
error when project/module does not install any target.
Release 2.0.1 (Sep 17, 2012)
- Added
bundle
installation scheme.
- Extended C++ function
splitext()
to optionally do a case insensitive comparison to the given extensions.
- Modified C++ function
splitext()
to only consider the specified extensions if any.
- Modified default Sphinx configuration to use arabic page numbers in PDF.
- Install Sphinx themes and extensions only if Sphinx found or
USE_Sphinx
set to ON
, respectively.
- Fixed
basis_get_last_changed_revision()
for the case where repository is just initialized (r0).
- Fixed
basis_install_directory()
to account for DESTDIR
environment variable.
- Fixed problem with file/directory named “a” in current working directory and Bash function
_basis_executabletargetinfo_sanitize()
.
- Fixed compilation of Python modules for Jython.
- Fixed setting of
<Package>_FOUND
to FALSE
if USE_<Package>
is OFF
.
Release 2.0.0 (Aug 28, 2012)
- Added support for Jyhton.
- Enabled use of BASIS utilities for scripting outside the scope of a project.
- Add code of
BASIS_*_UTILITIES
macros automatically without macro.
- During configuration, generate single BASIS utilities module for scripting
- Support
lib/
directory for scripted modules.
- Extended
basis_add_library()
to add single build target for entire scripted package.
- Enabled build of MATLAB wrapper executable if MCC not available.
- Add paths of module libraries via
basis_target_link_libraries()
to default search path of executable scripts.
- Added generic
FindPythonModules.cmake
module.
- Allow namespace identifier of project that differs from project name.
- Set
RPATH
of executables and shared libraries.
- Added
import()
function for Bash.
- Use wrapper for
sphinx-build
which unsets PYTHONHOME
if set.
- Converted Doxygen pages to reStructuredText.
- Added remaining C++ utility functions to proper Doxygen group.
- Added hint regarding M-file shadowing MEX-file error message of MCC.
- Documented
BASIS_SITE_DIRS
option and installation of public modules.
- Updated installation guide.
- Do not add
<Pkg>_DIR
variables set in config file to cache if package is not used.
- Leading dot (.) for hidden files no longer falsly interpreted by C++ utility functions as file extension.
- Remove “sbia” or “SBIA” from namespace of BASIS Utilities.
- Change namespace of project-specific C++ utilities to project-namespace without “basis” subnamespace.
- Print help of optional positional arguments last in usage generated by C++ CmdLine object.
- Mark
<Module>_DIR
variables as advanced.
- Fixed issue of suppressed MCC errors in mccBuild.log.
- Look for required dependencies first, then for optional packages.
- Fixed bug regarding
OUTPUT_NAME
argument to basis_add_doc()
.
- Fixed compilation of Jython modules.
- Look also for additional components of already found package/dependency.
- Compile Python modules also for use with Jython if
BASIS_COMPILE_SCRIPTS
is enabled.
Release 1.3.0 (Jun 5, 2012)
- Updated project template files. Version of new template files is 1.4.
- Extended and improved build and installation instructions.
- Improved finding of other packages using
CMAKE_PATH_PREFIX
and CMake’s package registry.
- Updated compatibility with Slicer version 4.1 and current trunk.
- Revised CMake modules
FindBLAS.cmake
, FindMATLAB.cmake
, FindMOSEK.cmake
, and FindOpenCV.cmake
.
- Added
FindPythonInterp.cmake
module copied from CMake 2.8.6.
- Added BASH module script
path.sh
. Implemented get_real_path()
and clean_path()
functions.
- Added dependencies among BASIS Utilities and other build targets.
- Added
stdio.h
C++ module which can be used to output text in terminal automatically wrapped at width of terminal.
- Modified C++ implementation of
get_executable_path()
to look for executable on PATH
if not known.
- Modified main Doxygen filter to process MATLAB scripts as well.
- Modified
BASIS_<LANG>_UTILITIES
variables to expand to a single line only.
- Modified overwritten
find_package()
function to reset CMAKE_FIND_LIBRARY_SUFFIXES
each time.
- Added support for documentation generation from reStructuredText sources using Sphinx.
- Added Sphinx extensions breathe and doxylink which can be used to link to Doxygen documentation.
- Added Sphinx theme for use at SBIA.
- Added
cRelease
to config.h
which shall replace the now deprecated cVersionAndRevision
constant.
- Renamed
PROJECT_VERSION_AND_REVISION
to PROJECT_RELEASE
.
- Changed return value of
execute_process()
implementations in Python and Perl.
- Changed name of uninstaller from
uninstall_<package>
to uninstall-<package>
.
- Changed
BASIS_DOXYGEN_ALL
to BASIS_ALL_DOC
.
- Changed default name of Doxygen build targets from
api
to apidoc
.
- Fixed use of
WINDOWS
instead of WIN32
in CMake code.
- Fixed exclude patterns used for source package generation.
- Fixed bug in
basis_get_target_location()
.
- Fixed exclusion of
config.h
from installation if unused.
- Fixed Windows Command file generation to allow for space characters in script file path.
- Fixed order of positional arguments in help output generated by C++ command-line parsing library.
- Fixed bug in C++ implementation of
split_path()
.
- Fixed
basisproject
command to avoid conflicts due to update of template version in root CMakeLists.txt
file.
- Fixed bug in
basis_add_(executable|library|mcc|mex)_target()
functions in case of source file specified as first argument.
- Fixed deinstallation of
__init__.py
files that are yet in use by other packages.
- Fixed BASH function
basis_array_to_quoted_string()
.
Release 1.2.3 (Apr 12, 2012)
- Uninstall previously installed project as part of Nightly tests before new installation.
- Modified
basisproject
tool to avoid conflicts upon update of an existing project.
- Added separate target to generate
__init__.py
modules.
- Added
PYTHON_EXECUTABLE
, PERL_EXECUTABLE
, and BASH_EXECUTABLE
to BASIS configuration file.
- Rewrote
INSTALL-basis.txt
as how-to guide which is part of generated BASIS documentation.
- Documented advanced CMake options/variables in installation how-to guide.
- Replaced obsolete
BASIS_CMD_*
constants.
- Fixed Perl implementation of
get_executable_path()
to simplify paths.
- Fixed “use lib” statements of
BASIS_PERL_UTILITIES
macro.
Release 1.2.2 (Apr 4, 2012)
- Fixed search path of Python modules in Python utilities. This bug affected the
basis.execute_process()
function if the build tree versions of the executables should be used.
- Fixed CMake function
basis_install_directory()
to actually make relative source path absolute and changed it to check arguments to identify user mistakes.
- Documented dependency on ITK in INSTALL file.
- Detailed error message of
basistest-driver
when built without ITK.
Release 1.2.1 (Mar 21, 2012)
- Exclude directories of header files and libraries imported from dependent packages from CMake package configuration (file
<Package>Config.cmake
).
- Fixed implementation of C++ function
get_real_path()
to resolve all symbolic links encountered in file path.
- Fixed bug in C++ function
executing_in_build_tree()
in case the path of the build directory contains a symbolic link.
Release 1.2.0 (Feb 29, 2012)
- Includes new project template version 1.2.
- Add
FindOpenCV.cmake
module and fix issues with cv.h
file which is part of PerlLibs.
- Modify
FindBoostNumericBindings.cmake
module to look for header files in boost-numeric-bindings
subdirectory.
- Change link to public BASIS project page. Do not use SourceForge project page any more.
- Fixed use of CMake’s
execute_process()
command to install documentation in basistest.ctest
script.
- Fixed Doxygen warning regarding references in
.dox
files which refer to the BASIS documentation.
- Fixed issue with use of
STREQUAL
instead of MATCHES
for string comparison in CMake function basis_set_target_properties()
.
Release 1.0.0 (Feb 18, 2012)
- Allow developers to disable configuration of public header files.
- Modified basistest script to allow for manual execution in existing build tree.
- Added functions
make_directory()
/remove_directory()
to C++ utilities.
- Changed build configuration
Coverage
, and added MemCheck
build configuration.
- Extended basistest CTest script.
- Optionally perform installation step after successful test.
- Do not run tests if configuration or build failed.
- Fixed removal of obsolete public header files from build tree.
- Fixed bugs in
subprocess.cxx
module of C++ utilities.
- Fixed value of
CMAKE_PROJECT_NAME
variable in CMake cache.
Release 1.0.0rc1 (Dec 16, 2011)
- Added uninstaller script which is independent of build tree.
- Support version numbers as used for release candidates (e.g.
1.0rc1
).
- Allow modules to declare top-level project as dependency.
- Allow package dependency specifications which include minimum version (e.g.
Boost-1.45
).
- Added test driver based on either ITK 3 or ITK 4 intended for image regression tests.
- Changed namespace of all C++ utilities from
sbia::<project>
to sbia::basis
.
- Modified help output of C++ command-line parsing library to standard output.
- Added
is_file()
, is_dir()
, and exists()
functions to path
module of C++ utilities.
- Modified style of API documentation generated by Doxygen.
- Minor changes of generated API documentation.
- Converted plain text documentation files to Doxygen pages.
- Revised handling of root documentation files
AUTHORS.txt
, COPYING.txt
, README.txt
, INSTALL.txt
, and WELCOME.txt
.
- Modified Python utilities to ensure compatibility with Python 2.4.
- Modified
basis_add_test()
CMake function to support signature of CMake’s add_test()
.
- Added
basis_dump_variables()
CMake function which dumps all currently defined CMake variables to a CMake script.
- Added import target to
FindNiftiCLib.cmake
module.
- Fixed
ExecutableTargetInfo
module of C++ utilities when build inside an IDE such as Visual Studio.
- Fixed installation of symbolic links for modules.
- Fixed test coverage extra glob and exclude expressions.
- Fixed bug in
schedule_date()
function of basistest-master
script.
- Fixed
FindMOSEK.cmake
module.
Pre-Release 0.3.0 (Nov 22, 2011)
- Implemented support for project modularization following the example of the ITK 4 project.
- Added support for implementation of Slicer Extension.
Pre-Release 0.2.2 (Nov 4, 2011)
- Fixed installation of API documentation.
- Fixed Python and Perl module paths in CMake package configuration of BASIS installation.
Pre-Release 0.2.1 (Nov 3, 2011)
- Fixed
basis_configure_sources()
function to account for already pre-configured sources in the build tree.
Pre-Release 0.2.0 (Nov 2, 2011)
- Fixed problems regarding creation of symbolic links when executable name is identical to project name.
- Changed default installation path sinfix to
sbia/<project>
and added advanced BASIS_INSTALL_SINFIX
CMake variable.
- Changed default installation path of auxiliary data files to
<prefix>/share/<sinfix>/data/
.
- Fixed and extended package Find modules.
- Added
BUILD_EXAMPLE
option to build configuration of BASIS projects.
- Added
basis_get_relative_path()
function.
- Enabled configuration of
.in
source files passed to basis_add_executable()
and basis_add_library()
.
- Enabled optional use of target UIDs and added the advanced option
BASIS_USE_TARGET_UIDS
which is OFF
by default.
- Removed
BASIS_CONFIG_PREFIX
constant.
- Removed obsolete
find_basis_package()
macro.
- Fixed installation path of package configuration files to
<prefix>/lib/cmake/<project>/
.
- Changed namespace of project-specific BASIS C++ utilities to
sbia::<project>::basis
.
- Fixed bug in implementation of
executabletargetinfo.sh
module for BASH.
- Improved
uninstall
target used for Makefile-based deinstallation.
Pre-Release 0.1.8 (Oct 31, 2011)
- Fixed bug in
basis_target_uid()
which caused a failure when configuring a project that uses ITK 4.
Pre-Release 0.1.7 (Oct 31, 2011)
- Fixed build of executables using the MATLAB Compiler in MATLAB mode. Bug introduced in Pre-Release 0.1.5 (Oct 18, 2011).
- Moved definition of
BUILD_*_UTILITIES
options to root CMakeLists.txt
to fix build of tests.
Pre-Release 0.1.6 (Oct 31, 2011)
- Enabled build on Windows.
- Added
BUILD_*_UTILITIES
options.
- Fixed bugs in
basisproject
: Remove trailing slashes from specified root directory.
- Modified project tool to enable
--force
of removal of non-empty directories.
- Modified project tool to no longer make use of the
.basis/cache
file.
- Added
--useopt
option to basisproject
tool. Kept deprecated --optuse
option to maintain backwards compatibility.
- Added
--[no]config*
options to project tool. Kept deprecated --[no]conf-*
options to maintain backwards compatibility.
- Removed configuration files from standard project template.
- Added Getting Started tutorial and corresponding example source files.
Pre-Release 0.1.5 (Oct 18, 2011)
- Modified
INSTALL_SINFIX
from string to boolean switch. The <sinfix>
is now either not used or corresponds to the project name in lowercase.
- Added missing
--[no]include
option to basisproject
tool.
- By default,
basisproject
uses project template corresponding to --standard
option.
- Modified
basis_include_directories()
and basis_link_directories()
to make relative paths absolute using the current source directory.
- Fixed
basis_find_package()
.
- Fixed bugs related to build of targets using MATLAB Compiler or MEX script.
- Extended
FindMATLAB.cmake
module to also look for matlab
, mcc
, mex
, and mexext
executables.
basis_add_mcc_target()
does not accept link dependencies as arguments any more. These should be given using basis_target_link_libraries()
.
- Added
MFILE
property to MEX-file targets which allows the specification of a MATLAB source file containing a function prototype with documentation.
- Added overwrite’s of CMake’s
include_directories()
and link_directories()
commands. Otherwise, BASIS would not know about directories added by so-called external use files (e.g., UseITK.cmake
).
- Updated documentation.
Pre-Release 0.1.4 (Oct 14, 2011)
- Added yet another missing include statement.
- Fixed issue with CMake’s
FindPerlLibs.cmake
module on Ubuntu 11.10 and Mac OS X Lion.
- Fixed linker error of C++ unit tests regarding undefined pthread references on Ubuntu 11.10.
- Do not cause compiler error if
HAVE_SSTREAM
is already set to a different value. Fixed build of test project on Ubuntu 11.10.
Pre-Release 0.1.3 (Oct 13, 2011)
- Modified
basisproject
tool to store template files only in top level .basis/
directory.
Pre-Release 0.1.2 (Oct 13, 2011)
- Fixed bug regarding
BASIS_LIBRARY_DIR
which affected the build of BASIS itself.
Pre-Release 0.1.1 (Oct 12, 2011)
- Added missing include statements.
- Fixed implementation of
Subprocess::split()
and Subprocess::to_string()
.
- Completed README, COPYING, and INSTALL documents.
- Removed obsolete Doxygen filters.
- Reorganized documentation files.
Pre-Release 0.1.0 (Oct 5, 2011)
- First pre-release for internal use at SBIA.