.. This file is formatted using reStructuredText (reST) and included by doc/changelog.rst !

.. _v3.2.0:

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.


.. _v3.1.0:

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.


.. _v3.0.0:

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.

.. _v2.1.4:

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.


.. _v2.1.3:

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.


.. _v2.1.2:

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.


.. _v2.1.1:

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.


.. _v2.1.0:

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.


.. _v2.0.1:

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``.


.. _v2.0.0:

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.


.. _v1.3.0:

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()``.


.. _v1.2.3:

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.


.. _v1.2.2:

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.


.. _v1.2.1:

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.


.. _v1.2.0:

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()``.


.. _v1.0.0:

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.


.. _v1.0.0rc1:

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.


.. raw:: html

    <br />


.. _v0.3.0:

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.


.. _v0.2.2:

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.


.. _v0.2.1:

Pre-Release 0.2.1 (Nov 3, 2011)
-------------------------------

- Fixed ``basis_configure_sources()`` function to account for already pre-configured sources in the build tree.


.. _v0.2.0:

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.


.. _v0.1.8:

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.


.. _v0.1.7:

Pre-Release 0.1.7 (Oct 31, 2011)
--------------------------------

- Fixed build of executables using the MATLAB Compiler in MATLAB mode. Bug introduced in :ref:`v0.1.5`.
- Moved definition of ``BUILD_*_UTILITIES`` options to root ``CMakeLists.txt`` to fix build of tests.


.. _v0.1.6:

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.


.. _v0.1.5:

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.


.. _v0.1.4:

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.


.. _v0.1.3:

Pre-Release 0.1.3 (Oct 13, 2011)
--------------------------------

- Modified ``basisproject`` tool to store template files only in top level ``.basis/`` directory.


.. _v0.1.2:

Pre-Release 0.1.2 (Oct 13, 2011)
--------------------------------

- Fixed bug regarding ``BASIS_LIBRARY_DIR`` which affected the build of BASIS itself.


.. _v0.1.1:

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.


.. _v0.1.0:

Pre-Release 0.1.0 (Oct 5, 2011)
-------------------------------

- First pre-release for internal use at SBIA.



.. _reStructuredText: http://docutils.sourceforge.net/rst.html
.. _Sphinx: http://sphinx.pocoo.org/
.. _breathe: https://github.com/michaeljones/breathe
.. _doxylink: http://packages.python.org/sphinxcontrib-doxylink/
