Commit graph

109 commits

Author SHA1 Message Date
jperkin
66b65774fc cmake: Apply different fix for Darwin/aarch64.
The previous patch was breaking cmake when running outside of the pkgsrc
environment.  Should fix NetBSD/pkgsrc#103.  Bump PKGREVISION.
2022-03-16 18:36:47 +00:00
schmonz
ab9b37da17 #include <memory> to fix Snow Leopard build. 2022-01-28 21:56:21 +00:00
adam
f45b9e7423 cmake cmake-gui: updated to 3.22.2
CMake 3.22.2
* VS: Remove the '/guard:cf' flag from v143 link flag table
* FortranCInterface: Fix compatibility with GCC gfortran 12 LTO
* FindBoost: Add support for Boost 1.78
* ci: Explicitly disable Java tests on Windows
* FindGLUT: Provide legacy GLUT_INCLUDE_DIR result in pkg-config code path
* FindBoost: Do not warn about now-supported version 1.78
* ci: Explicitly disable Java tests on VS builds
* file: Restore error capture in undocumented READ_ELF mode
* MSVC: Use -external:I flag without space to support Clang tools
* Help: Add missing 3.22.1 section to the release notes
* gitlab-ci: update macOS jobs to use Xcode 13.2
* ASM: Fix identification of armasm 6.17+
* FindBoost: Add support for Python 3.10
* XL: Detect default extensions mode for legacy compiler
* CMP0128: Prefix test names with mode
* CMP0128: Avoid test code duplication
* CMP0128: Add flag in OLD mode even when standard matches the default
* Android: Fix linking android_support for pre-21 system STL
* FindPython: Add support for Python 3.11
* VS: Fix detecting icx.exe with Intel Compiler toolsets newer than 2021
2022-01-25 21:18:08 +00:00
jperkin
4a8b3a3aa2 cmake: Don't add additional -arch flags on Darwin.
Fixes building on arm64 in an x86_64 chroot where it would append
"-arch x86_64" and then fail to link.  schmonz verified that this
change doesn't seem to affect non-chroot native builds.
2021-07-15 21:10:53 +00:00
adam
3629fc5f7e cmake: add patch 2021-03-31 07:44:29 +00:00
adam
862a501921 cmake cmake-gui: updated to 3.20.0
CMake 3.20 Release Notes
************************

Changes made since CMake 3.19 include the following.


New Features
============

Presets
-------

* "cmake-presets(7)" gained support for build and test presets.

Generators
----------

* Makefile Generators, for some toolchains, now use the compiler to
  extract implicit dependencies while compiling source files.

Languages
---------

* C++23 compiler modes may now be specified via the "CXX_STANDARD",
  "CUDA_STANDARD", or "OBJCXX_STANDARD" target properties, or via the
  "Compile Features" functionality’s "cxx_std_23" meta-feature.

* "CUDA" language support now works when "nvcc" is a symbolic link,
  for example due to a "ccache" or "colornvcc" wrapper script.

* The "CUDAARCHS" environment variable was added for initializing
  "CMAKE_CUDA_ARCHITECTURES". Useful in cases where the compiler
  default is unsuitable for the machine’s GPU.

Compilers
---------

* The NVIDIA HPC SDK compilers are now supported with compiler id
  "NVHPC".

* The Intel oneAPI NextGen LLVM compilers are now supported with
  compiler id "IntelLLVM":

  * The "icx"/"icpx" C/C++ compilers on Linux, and the "icx" C/C++
    compiler on Windows, are fully supported as of oneAPI 2021.1.

  * The "ifx" Fortran compiler on Linux is partially supported. As of
    oneAPI 2021.1, "ifx" does not define several identification
    macros, so CMake identifies it as the classic "Intel" compiler.
    This works in many cases because "ifx" accepts the same command
    line parameters as "ifort".  A future version of oneAPI may fix
    this.

  * The "ifx" Fortran compiler on Windows is not yet supported.

  The Intel oneAPI Classic compilers ("icc", "icpc", and "ifort")
  continue to be supported with compiler id "Intel".

* Support was added for the IAR STM8 compiler.

Platforms
---------

* CMake’s support for Cross Compiling for Android is now merged with
  the Android NDK’s toolchain file. They now have similar behavior,
  though some variable names differ. User-facing changes include:

  * "find_*" functions will search NDK ABI / API specific paths by
    default.

  * The default "CMAKE_BUILD_TYPE" for Android is now
    "RelWithDebInfo".

  * The "CMAKE_ANDROID_NDK_VERSION" variable was added to report the
    version of the NDK.

File-Based API
--------------

* The "cmake-file-api(7)" gained a new “toolchains” object kind that
  describes the compiler used for each enabled language.

Commands
--------

* "add_custom_command()" and "add_custom_target()" now support
  "generator expressions" in their "OUTPUT" and "BYPRODUCTS" options.

  Their "COMMAND", "WORKING_DIRECTORY", and "DEPENDS" options gained
  support for new generator expressions "<COMMAND_CONFIG:...>" and
  "<OUTPUT_CONFIG:...>" that control cross-config handling when using
  the "Ninja Multi-Config" generator.

* The "add_custom_command()" command gained "DEPFILE" support on
  Makefile Generators.

* The "add_library()" command previously prohibited imported object
  libraries when using potentially multi-architecture configurations.
  This mostly affected the "Xcode" generator, e.g. when targeting iOS
  or one of the other device platforms.  This restriction has now been
  removed.

* The "cmake_path()" command was added for operations on filesystem
  paths.

* The "configure_file()" command gained "USE_SOURCE_PERMISSIONS" and
  "FILE_PERMISSIONS" options to support copying of permissions of the
  source file and using specified permissions respectively.

* The "file(GENERATE)" command gained a "NEWLINE_STYLE" option to
  specify how newlines are handled for the generated file.

* The "file(GENERATE)" command gained "NO_SOURCE_PERMISSIONS",
  "USE_SOURCE_PERMISSIONS", and "FILE_PERMISSIONS" options for
  controlling the permissions of the generated file.

* The "install(FILES)" command "RENAME" option learned to support
  "generator expressions".

* The "target_include_directories()" command gained a new option
  "AFTER".

* The "target_sources()" command now supports targets created by the
  "add_custom_target()" command.

* The "try_run()" command gained a "WORKING_DIRECTORY" option to set
  the working directory in which to run the compiled check executable.

Variables
---------

* The "CMAKE_<LANG>_BYTE_ORDER" variable was added to provide the
  target architecture byte order detected from the toolchain.

* The "CMAKE_RUNTIME_OUTPUT_DIRECTORY",
  "CMAKE_LIBRARY_OUTPUT_DIRECTORY", and
  "CMAKE_ARCHIVE_OUTPUT_DIRECTORY" variables now support target-
  dependent generator expressions.

Properties
----------

* The "<LANG>_CLANG_TIDY" target property and the associated
  "CMAKE_<LANG>_CLANG_TIDY" variable learned to support the "OBJC" and
  "OBJCXX" languages.

* The "EXPORT_COMPILE_COMMANDS" target property was added for the
  associated "CMAKE_EXPORT_COMPILE_COMMANDS" variable to allow for
  configuration of exporting compile commands per target.

* The "GENERATED" source-file property is now visible from any
  directory scope, regardless of the scope in which it is set. See
  policy "CMP0118".

* The "UNITY_BUILD_UNIQUE_ID" target property was added to support
  generation of an identifier that is unique per source file in unity
  builds.  It can help to resolve duplicate symbol problems with
  anonymous namespaces.

* The "WIN32_EXECUTABLE" target property now works with Clang on
  Windows.

* The "XCODE_EMBED_FRAMEWORKS" target property was added to tell the
  "Xcode" generator to embed frameworks. Aspects of the embedding can
  be customized with the "XCODE_EMBED_FRAMEWORKS_PATH",
  "XCODE_EMBED_FRAMEWORKS_CODE_SIGN_ON_COPY", and
  "XCODE_EMBED_FRAMEWORKS_REMOVE_HEADERS_ON_COPY" target properties.

Modules
-------

* The "ExternalData" module "ExternalData_Add_Target()" function
  gained a "SHOW_PROGRESS <bool>" option for controlling whether or
  not to show progress output during the build.

* The "ExternalProject" module "ExternalProject_Add()" function gained
  a "CONFIGURE_HANDLED_BY_BUILD" option.  This can be used to make
  subsequent runs of the configure step be triggered by the build step
  when an external project dependency rebuilds instead of always re-
  running the configure step in such cases.

* The "FindBoost" module gained a "Boost_NO_WARN_NEW_VERSIONS" option
  to silence the warning about unknown dependencies for new Boost
  versions.

* The "FindCUDAToolkit" module gained support for finding CUDA
  toolkits when "nvcc" is a symbolic link, for example due to a
  "ccache" or "colornvcc" wrapper script.

* The "FindGDAL" module has been improved to document and mark as
  advanced its cache variables. There is a new
  "FindGDAL_SKIP_GDAL_CONFIG" variable which may be used to skip over
  the "gdal-config"-based search. Users may also set
  "GDAL_ADDITIONAL_LIBRARY_VERSIONS" to add additional versions to the
  library name search strategy.

* The "FindIntl" module now provides an imported target.

* The "FindOpenSSL" module learned to support a version range.

* The "FindPython3", "FindPython2" and "FindPython" modules gained
  options controlling how unversioned interpreter names are searched.

* The "UseJava" module "add_jar()" command’s "GENERATE_NATIVE_HEADERS"
  feature gained options to export the generated target.

* The "UseSWIG" module gained the capability, for Makefile and Ninja
  generators, to use the "swig" tool to generate implicit
  dependencies.

Autogen
-------

* The AUTOMOC feature now works with per-config sources.

CTest
-----

* "ctest(1)" gained a "--test-dir" option to specify the directory in
  which to look for tests.

CPack
-----

* "CPack" gained the "CPACK_THREADS" variable to control the number of
  threads used for parallelized operations, such as compressing the
  installer package.

* The "CPack DEB Generator" learned a new
  "CPACK_DEBIAN_PACKAGE_SHLIBDEPS_PRIVATE_DIRS" variable to specify
  additional search directories for resolving private library
  dependencies when using "dpkg-shlibdeps".

* The "CPack IFW Generator" gained a new
  "CPACK_IFW_PACKAGE_WIZARD_SHOW_PAGE_LIST" variable to control
  visibility of the widget listing installer pages on the left side of
  the wizard. This feature available only since QtIFW 4.0.

* The "CPack NSIS Generator" gained new "CPACK_NSIS_BRANDING_TEXT" and
  "CPACK_NSIS_BRANDING_TEXT_TRIM_POSITION" variables to change the
  text at the bottom of the install window and change its trim
  position

* The "CPack NSIS Generator" now correctly handles Unicode characters.
  If you want to have a "CPACK_RESOURCE_FILE_LICENSE" with UTF-8
  characters, it needs to be encoded in UTF-8 BOM.

* The "CPack NuGet Generator" gained options:

  * "CPACK_NUGET_PACKAGE_ICON" and
    "CPACK_NUGET_<compName>_PACKAGE_ICON" allow package icons to be
    specified by local files.

  * "CPACK_NUGET_PACKAGE_LICENSE_EXPRESSION" and
    "CPACK_NUGET_<compName>_PACKAGE_LICENSE_EXPRESSION" add support
    for specifying licenses recognized by the Software Package Data
    Exchange (SPDX).

  * "CPACK_NUGET_PACKAGE_LICENSE_FILE_NAME" and
    "CPACK_NUGET_<compName>_PACKAGE_LICENSE_FILE_NAME" allow licenses
    to be specified by local files.

  * "CPACK_NUGET_PACKAGE_LANGUAGE" and
    "CPACK_NUGET_<compName>_PACKAGE_LANGUAGE" allow the locale for a
    package to be specified, for example "en_CA".

Deprecated and Removed Features
===============================

* The "cmake-server(7)" mode has been removed. Clients should use the
  "cmake-file-api(7)" instead.

* The "WriteCompilerDetectionHeader" module has been deprecated via
  policy "CMP0120".  Projects should be ported away from it.

* The "TestBigEndian" module has been deprecated in favor of the
  "CMAKE_<LANG>_BYTE_ORDER" variable.

* The "AddFileDependencies" module is deprecated. Port projects to use
  "set_property()" directly.

* The "CPack NuGet Generator" deprecated some variables to reflect
  changes in the NuGet specification:

  * "CPACK_NUGET_PACKAGE_ICONURL" and
    "CPACK_NUGET_<compName>_PACKAGE_ICONURL" have been deprecated;
    replace with a reference to a local icon file.

  * "CPACK_NUGET_PACKAGE_LICENSEURL" and
    "CPACK_NUGET_<compName>_PACKAGE_LICENSEURL" have been deprecated;
    replace with a reference to the project’s license file or SPDX
    license expression.

Other Changes
=============

* Source file extensions must now be explicit. See policy "CMP0115"
  for details.

* The "LANGUAGE" source file property now forces compilation as the
  specified language.  See policy "CMP0119".

* On AIX, installation of XCOFF executables and shared libraries no
  longer requires relinking to change the runtime search path from the
  build-tree RPATH to the install-tree RPATH.  CMake now edits the
  XCOFF binaries directly during installation, as has long been done
  on ELF platforms.

* With MSVC-like compilers the value of "CMAKE_CXX_FLAGS" no longer
  contains the "/GR" flag for runtime type information by default. See
  policy "CMP0117".

* Ninja generators now transform the "DEPFILE" generated by an
  "add_custom_command()". See policy "CMP0116" for details.

* The precompiled Linux binaries provided on cmake.org have changed
  their naming pattern to "cmake-$ver-linux-$arch", where "$arch" is
  either "x86_64" or "aarch64".

* The precompiled Windows binaries provided on cmake.org have changed
  their naming pattern to "cmake-$ver-windows-$arch", where "$arch" is
  either "x86_64" or "i386".
2021-03-31 07:43:39 +00:00
adam
a4427c5041 cmake: updated to 3.19.3
CMake 3.19.3
* cmSystemTools: Revert use of MOVEFILE_WRITE_THROUGH by RenameFile on Windows
* Tests: Fix ConfigSources test with empty CMAKE_BUILD_TYPE
* gitlab-ci: consolidate Linux release package job spec for x86_64
* Help: Add 3.19.3 release note for Linux aarch64 binary
* gitlab-ci: update macOS jobs to use Xcode 12.3
* cmGlobalXCodeGenerator: Adopt pbxproj object id generation
* cmGlobalXCodeGenerator: Add infrastructure for deterministic object ids
* Xcode: Use deterministic object ids for script build phases
* gitlab-ci: update upload jobs to go to cmake.org
* cmake-gui: Fix macOS styling for binaries distributed with Qt 5.10+
* Utilities/Release: Fix macOS Qt 5.9 build script umask
* Utilities/Release: Add script to build Qt 5.15.2 macOS universal binaries
* ci: build separate macOS packages for macOS 10.13+ and macOS 10.10+
* Help: Fix Sphinx not recognising list in XCODE_LINK_BUILD_PHASE_MODE
* FetchContent: Relative SOURCE_DIR override cannot be a hard error
* FindMPI: remove single quotes from include path
* Utilities/Release: Add docker specs for Linux aarch64 binaries
* gitlab-ci: add jobs to make Linux release packages for aarch64 on 3.19 branch
* FindHDF5: Fix finding both debug and release libs
* cmake-gui: Restore linking of Qt resources
* cmMakefile: Don't expand bracket arguments in --trace-expand
2021-01-16 11:16:25 +00:00
adam
0d78d30991 cmake: updated to 3.19.2
CMake 3.19.2
* Compiler/TI: Fix C standard flags in C-only project
* execute_process: Improve COMMAND_ERROR_IS_FATAL error capture scenarios
* FindHDF5: improve error messages when a location variable isn't known
* FindHDF5: support the hdf5hl_fortran-based variable names
* FindPython2: avoid doubling the extension in CPython2 SOABI
* Tests: Add CMake_TEST_Java option to control Java tests
* Tests: Teach RunCMake to ignore Xcode install_name_tool signature warnings
* gitlab-ci: update macOS jobs to use Xcode 12.2
* Tests: Fix RunCMake.Check* conditions for enabling Fortran
* Check*: Tolerate variables set with names of languages
* Ninja: Clean metadata after regen during build on Windows with 1.10.2+
* ci: update to use ninja 1.10.2
* Tests: Look for Visual Studio only on Windows hosts
* CMakeDetermineCompilerId: Filter IAR-AVR format INFO strings earlier
* CMakeDetermineCompilerId: Add whitespace to clarify logic
* CMakeDetermineCompilerId: Tolerate stray text around INFO strings
* Revert "Intel: Add Intel Clang compiler identification"
* Revert "Intel: Add Intel DPC++ compiler identification"
* Tests: Add cache entry to control XCTest deployment target
* Tests: Remove outdated exclusion of tests on OS X 10.3
* ci: Hard-code XCTest deployment target to 10.15
* Utilities/Release: Add script to build Qt 5.9.9 macOS universal binaries
* ci: update to pre-built Qt 5.9.9 universal binaries for macOS packages
* ci: do not use sccache for macOS packaging
* ci: update macOS package to produce universal binaries
* macOS: Offer control over host architecture on Apple Silicon hosts
* Tests: Cover macOS host architecture selection on Apple Silicon hosts
* cmake: Clear INSTALL file properties between runs
* macOS: Add /opt/homebrew to CMAKE_SYSTEM_PREFIX_PATH on Apple Silicon
* Ninja: Remove cleandead on regeneration
* Utilities/Release: Update macOS Qt 5.9 build for platform versioning
* cmake-gui: Restore completion during path editing
* Help: xref variable that cmake_minimum_required() sets
* Help: Mention how OPTIMIZE_DEPENDENCIES is initialized
* Help: Re-sort indexes in the manuals
* Help: Clarify scope details of deferred call ids for cmake_language()
* PCH: Fix compiler errors on iOS multi-arch using Ninja Multi-Config
* export: Do not fail generation for separate namelink only case
* Cray: Fix Cray compiler detection on new platforms
* FPHSA: ensure it can be used outside 'find_package'
* Clang on Windows: 'LINKER:' prefix must be honored
* CMakePackageConfigHelpers: Relax restrictions on version range
* CUDA: Fix user-set architectures during detection with Visual Studio
* macOS: Add architecture flags only for native ASM dialect
* Modules: Rename Internal/CMake{CheckCompiler => TryCompilerOrLinker}Flag
* ISPC: Ninja properly compute ISPC_HEADER_DIRECTORY location
* ISPC: Handle OBJECT sources in different directories
* Document CMP0112 covers $
* ISPC: Treat system includes as '-I' includes
* FindGLUT: Handle Mojave and Big Sur 'tbd' framework files
* ISPC: Generated Headers suffix configurable with a better default
* Help: Fix presets typo (longDescription to displayName)
* QNX: Do not disable compiler extensions for CMake itself
* llvm-rc: Force C language for the clang gnu frontend
* llvm-rc: Add CMAKE_VFS_OVERLAY to the preprocessing flags
2020-12-17 12:14:35 +00:00
adam
6e9e0d2ce9 cmake cmake-gui: updated to 3.19.1
CMake 3.19.1

ci: update to use CMake 3.19.0
gitlab-ci: update macOS jobs to use Xcode 12.0
Revert “specify language flag when source LANGUAGE property is set”
FindGTest: Revert “Allow either “Debug” or “Release” configurations.”
Makefiles: Fix CMAKE_EXPORT_COMPILE_COMMANDS crash with custom compile rule
Xcode: Fix custom command work-dir placeholders in “new build system”
Tests: Match RunCMake.CMP0111 stderr more strictly
cmTarget: Do not enforce CMP0111 on imported INTERFACE libraries
cmVisualStudio10TargetGenerator: Avoid GetFullPath on INTERFACE library
cmGlobalGenerator: FindMakeProgram() at a generator-specific time
cmFileTime: Fix overflow on time computation
Help: Fix ‘… versionadded’ directives for CTEST_CUSTOM_* variables
CUDA: Clang CUDA 11.1 support
CUDA: Error if can’t determine toolkit library root


CMake 3.19 Release Notes
************************

Changes made since CMake 3.18 include the following.


New Features
============


Presets
-------

* "cmake(1)" and "cmake-gui(1)" now recognize "CMakePresets.json" and
  "CMakeUserPresets.json" files (see "cmake-presets(7)").


Generators
----------

* The "Xcode" generator now uses the Xcode “new build system” when
  generating for Xcode 12.0 or higher. See the
  "CMAKE_XCODE_BUILD_SYSTEM" variable. One may use "-T buildsystem=1"
  to switch to the legacy build system.

* The "Xcode" generator gained support for linking libraries and
  frameworks via the *Link Binaries With Libraries* build phase
  instead of always by embedding linker flags directly.  This behavior
  is controlled by a new "XCODE_LINK_BUILD_PHASE_MODE" target
  property, which is initialized by a new
  "CMAKE_XCODE_LINK_BUILD_PHASE_MODE" variable.

* The Visual Studio Generators for VS 2015 and above gained support
  for the Visual Studio Tools for Android.  One may now set
  "CMAKE_SYSTEM_NAME" to "Android" to generate ".vcxproj" files for
  the Android tools.


Languages
---------

* CMake learned to support "ISPC" as a first-class language that can
  be enabled via the "project()" and "enable_language()" commands.
  "ISPC" is currently supported by the Makefile Generators and the
  "Ninja" generator on Linux, macOS, and Windows using the Intel ISPC
  compiler.

* "CUDA" language support for Clang now includes:

  * separable compilation ("CUDA_SEPARABLE_COMPILATION"), and

  * finding scattered toolkit installations when cross-compiling.


File-Based API
--------------

* The "cmake-file-api(7)" “codemodel” version 2 "version" field has
  been updated to 2.2.

* The "cmake-file-api(7)" “codemodel” version 2 “target” object gained
  a new "languageStandard" field in the "compileGroups" objects.


Command-Line
------------

* The "cmake(1)" command-line tool’s "--install" mode gained a "--
  default-directory-permissions" option.

* "cmake(1)" gained a "-E create_hardlink" command-line tool that can
  be used to create hardlinks between files.


GUI
---

* The "CMake GUI" now has an environment variable editor.


Commands
--------

* The "add_test()" command now (officially) supports whitespace and
  other special characters in the name for the test it creates. See
  policy "CMP0110".

* The "cmake_language()" command gained a "DEFER" mode to schedule
  command calls to occur at the end of processing a directory.

* The "configure_file()" command gained a "NO_SOURCE_PERMISSIONS"
  option to suppress copying the input file’s permissions to the
  output file.

* The "execute_process()" command gained a "COMMAND_ERROR_IS_FATAL"
  option to specify a fatal error.

* The "file(ARCHIVE_CREATE)" command gained a "COMPRESSION_LEVEL"
  option to specify the compression level.

* The "file(CHMOD)" and "file(CHMOD_RECURSE)" subcommands were added
  to set permissions of files and directories.

* The "file(DOWNLOAD)" command "" argument is now optional.  If
  it is not specified, the file is not saved.

* The "file(GENERATE)" command gained a new "TARGET" keyword to
  support resolving target-dependent generator expressions.

* The "file()" command gained a new "REAL_PATH" sub-command to compute
  a path with symlinks resolved.

* The "find_package()" command learned to handle a version range.

* The "separate_arguments()" command gained a new "PROGRAM" option. It
  allows the arguments to be treated as a program invocation and will
  resolve the executable to a full path if it can be found.

* The "DIRECTORY" option of the "set_property()", "get_property()",
  and "get_directory_property()" commands now accepts references to
  binary directory paths, such as the value of
  "CMAKE_CURRENT_BINARY_DIR".

* The "string()" command gained a set of new "JSON" sub commands that
  provide JSON parsing capabilities.


Variables
---------

* The "CMAKE_CLANG_VFS_OVERLAY" variable was added to tell Clang to
  use a VFS overlay to support the Windows SDK when cross-compiling
  from hosts with case-sensitive filesystems.

* The "CMAKE_MFC_FLAG" variable now supports generator expressions.

* The "CMAKE_OPTIMIZE_DEPENDENCIES" variable was added to initialize
  the new "OPTIMIZE_DEPENDENCIES" target property and avoid
  unnecessarily building dependencies for a static library.

* The "CMAKE_PCH_INSTANTIATE_TEMPLATES" variable was added to
  initialize the new "PCH_INSTANTIATE_TEMPLATES" target property.

* The "CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM" variable was
  added to tell the Visual Studio Generators what maximum version of
  the Windows SDK to choose.


Properties
----------

* The "EXCLUDE_FROM_ALL" target property now supports "generator
  expressions".

* The "OPTIMIZE_DEPENDENCIES" target property was added to avoid
  unnecessarily building dependencies for a static library.

* The "PCH_INSTANTIATE_TEMPLATES" target property was added to enable
  template instantiation in the precompiled header. This is enabled by
  default and may significantly improve compile times. Currently only
  supported for Clang (version 11 or later).

* The "WIN32_EXECUTABLE" target property now supports "generator
  expressions".


Modules
-------

* The "CheckCompilerFlag" module has been added to generalize
  "CheckCCompilerFlag" and "CheckCXXCompilerFlag" to more languages.
  It also supports the "CUDA" and "ISPC" languages.

* The "CheckLinkerFlag" module now supports the "CUDA" language.

* The "CheckSourceCompiles" module has been added to generalize
  "CheckCSourceCompiles" and "CheckCXXSourceCompiles" to more
  languages. It also supports the "CUDA" and "ISPC" languages.

* The "CheckSourceRuns" module has been added to generalize
  "CheckCSourceRuns" and "CheckCXXSourceRuns" to more languages. It
  also supports the "CUDA" language.

* The "CMakePackageConfigHelpers" module gained support for version
  ranges.

* The "FindCUDAToolkit" module gained support for finding CUDA
  toolkits that do not contain "nvcc", as well as for finding
  scattered toolkit installations when cross-compiling.

* The "FindPackageHandleStandardArgs" module learned to handle version
  ranges. It also gained the "find_package_check_version()" command to
  check the validity of a version against version-related arguments of
  "find_package()" command.

* The "FindPython3", "FindPython2" and "FindPython" modules gained the
  ability to handle a version range.

* The "FindPython3", "FindPython2" and "FindPython" modules provide,
  respectively, the variable "Python3_LINK_OPTIONS",
  "Python2_LINK_OPTIONS" and "Python_LINK_OPTIONS" for link options.

* The "FindSDL" module now provides:

  * An imported target "SDL::SDL".

  * Result variables "SDL_LIBRARIES" and "SDL_INCLUDE_DIRS".

  * Version variables "SDL_VERSION", "SDL_VERSION_MAJOR",
    "SDL_VERSION_MINOR", and "SDL_VERSION_PATCH".

* The "FindSWIG" module gained the ability to handle a version range.

* The "FindTIFF" module gained a "CXX" component to find the "tiffxx"
  library containing C++ bindings.

* The "FindVulkan" module now provides a "Vulkan::glslc" imported
  target and associated "Vulkan_GLSLC_EXECUTABLE" variable which
  contain the path to the GLSL SPIR-V compiler.

* The "UseSWIG" module gained support for new source file properties
  "OUTPUT_DIR" and "OUTFILE_DIR" to manage output directories on a
  per-source basis.


CTest
-----

* "ctest(1)" now supports the CUDA "compute-sanitizer" checker
  (previously known as "cuda-memcheck") as the
  "CTEST_MEMORYCHECK_COMMAND". The different tools ("memcheck",
  "racecheck", "synccheck" and "initcheck") supported by "compute-
  sanitizer" can be selected by adding appropriate flags to the
  "CTEST_MEMORYCHECK_COMMAND_OPTIONS" variable.  The default flags are
  "--tool memcheck --leak-check full".


CPack
-----

* CPack gained the "CPACK_PRE_BUILD_SCRIPTS",
  "CPACK_POST_BUILD_SCRIPTS", and "CPACK_PACKAGE_FILES" variables.

* The "CPack External Generator" gained the
  "CPACK_EXTERNAL_BUILT_PACKAGES" variable.

* The "CPack WIX Generator" gained a "CPACK_WIX_CUSTOM_XMLNS" option
  to specify custom XML namespaces.


Other
-----

* Interface Libraries may now have source files added via
  "add_library()" or "target_sources()".  Those with sources will be
  generated as part of the build system.


Deprecated and Removed Features
===============================

* Compatibility with versions of CMake older than 2.8.12 is now
  deprecated and will be removed from a future version.  Calls to
  "cmake_minimum_required()" or "cmake_policy()" that set the policy
  version to an older value now issue a deprecation diagnostic.

* An explicit deprecation diagnostic was added for policy "CMP0071"
  ("CMP0071" and below were already deprecated). The "cmake-
  policies(7)" manual explains that the OLD behaviors of all policies
  are deprecated and that projects should port to the NEW behaviors.

* macOS SDKs older than 10.5 are no longer supported.

* "cmake-gui(1)" now requires Qt5. Support for compiling with Qt4 has
  been removed.

* The "cmake(1)" command-line option "--warn-unused-vars" has been
  removed and is now silently ignored.  The option has not worked
  correctly since CMake 3.3.


Documentation
=============

The following guides have been added:

* "IDE Integration Guide"

* "Importing and Exporting Guide"


Other Changes
=============

* Building for macOS will now use the latest SDK available on the
  system, unless the user has explicitly chosen a SDK using
  "CMAKE_OSX_SYSROOT".  The deployment target or system macOS version
  will not affect the choice of SDK.

* The "CMAKE_<LANG>_COMPILER" variable may now be used to store
  “mandatory” compiler flags like the "CC" and other environment
  variables.

* The "CMAKE_<LANG>_FLAGS_INIT" variable will now be considered during
  the compiler identification check if other sources like
  "CMAKE_<LANG>_FLAGS" or "CFLAGS" are not set.

* The "find_program()" command now requires permission to execute but
  not to read the file found.  See policy "CMP0109".

* An imported target missing its location property fails during
  generation if the location is used.  See policy "CMP0111".

* The following target-based generator expressions that query for
  directory or file name components no longer add a dependency on the
  evaluated target. See policy "CMP0112".

  * "TARGET_FILE_DIR"

  * "TARGET_LINKER_FILE_BASE_NAME"

  * "TARGET_LINKER_FILE_NAME"

  * "TARGET_LINKER_FILE_DIR"

  * "TARGET_SONAME_FILE_NAME"

  * "TARGET_SONAME_FILE_DIR"

  * "TARGET_PDB_FILE_NAME"

  * "TARGET_PDB_FILE_DIR"

  * "TARGET_BUNDLE_DIR"

  * "TARGET_BUNDLE_CONTENT_DIR"

* Makefile Generators no longer repeat custom commands from target
  dependencies.  See policy "CMP0113".

* The "ExternalProject" module handling of step target dependencies
  has been revised.  See policy "CMP0114".

* The "OSX_ARCHITECTURES" target property is now respected for the
  "ASM" language.

* If "CUDA" compiler detection fails with user-specified
  "CMAKE_CUDA_ARCHITECTURES" or "CMAKE_CUDA_HOST_COMPILER", an error
  is raised.
2020-11-25 10:33:28 +00:00
markd
fd4d8f3add cmake: patch another instance where should only find pkgsrc selected python 2020-11-01 10:54:06 +00:00
adam
efe4dddea8 cmake: on Darwin, prefer pkgsrc over system provided libraries 2020-07-31 16:03:13 +00:00
adam
c858362fde cmake: libarchive from PkgSrc currenty does not support ZSTD 2020-07-31 09:42:10 +00:00
wiz
4ebae05855 cmake: update to 3.18.1.
Some of the more significant changes in CMake 3.18 are:

* The “CUDA” language can now be compiled using Clang on non-Windows platforms.
  Separable compilation is not yet supported on any platform.
* “cmake(1)” gained support for profiling of CMake scripts through the
  parameters “–profiling-output” and “–profiling-format”.
* The “add_library()” and “add_executable()” commands learned to
  create Alias Targets referencing non-“GLOBAL” Imported Targets.
* The “cmake_language()” command was added for meta-operations on
  scripted or built-in commands, starting with a mode to “CALL” other
  commands, and “EVAL CODE” to inplace evaluate a CMake script.
* The “file(CONFIGURE)” subcommand was created in order to replicate
  the “configure_file()” functionality without resorting to a pre-
  existing file on disk as input. The content is instead passed as a
  string.
* The “find_program()”, “find_library()”, “find_path()” and
  “find_file()” commands gained a new “REQUIRED” option that will stop
  processing with an error message if nothing is found.
* A “CMAKE_CUDA_ARCHITECTURES” variable was added to specify CUDA
  output architectures. Users are encouraged to use this instead of
  specifying options manually, as this approach is compiler-agnostic.
  The variable is initialized automatically when
  “CMAKE_CUDA_COMPILER_ID” is “NVIDIA”. The variable is used to
  initialize the new “CUDA_ARCHITECTURES” target property. See policy
  “CMP0104”.
* The “UNITY_BUILD_MODE” target property was added to tell generators
  which algorithm (“BATCH”, “GROUP”) to use for grouping included source
  files.
* The “CheckLinkerFlag” module has been added to provide a facility to
  check validity of link flags.
* The “$<DEVICE_LINK:…>” and “$<HOST_LINK:…>” “generator
  expressions” were added to manage device and host link steps.
* The “$<LINK_LANGUAGE:…>” and “$<LINK_LANG_AND_ID:…>” “generator expressions” were added.
* “ctest(1)” gained a new “CTEST_RESOURCE_SPEC_FILE” variable, which
  can be used to specify a resource specification file.
* “ccmake(1)” learned to read a “CCMAKE_COLORS” environment variable
  to customize colors.
* On Windows, the “Ninja” and “Ninja Multi-Config” generators, when a
  compiler is not explicitly specified, now select the first compiler
  (of any name) found in directories listed by the “PATH” environment
  variable.
2020-07-31 09:02:31 +00:00
kamil
f2c5280b7e cmake: Remove not needed patch for libarchive
According to comment:
https://gitlab.kitware.com/cmake/cmake/-/merge_requests/4833#note_769729
the libarchive 3.3.3 is required for CMake build.
It is already contain Zstd support.

Patch by <gang65>

Closes https://github.com/NetBSD/pkgsrc/pull/61
2020-06-08 12:00:59 +00:00
joerg
26a44fce0b Fix a number of long-standing race conditions in cmake's autogen
handling. Bump revision.
2020-05-19 13:52:10 +00:00
adam
210ad5d136 cmake: updated to 3.17.0
Some of the more significant changes in CMake 3.17 are:

“cmake(1)” gained a “Ninja Multi-Config” generator, which is similar to the “Ninja” generator but can be used to build multiple configurations at once.
Visual Studio Generators learned to support per-config sources. Previously only Command-Line Build Tool Generators supported them.
The “Compile Features” functionality now offers meta-features for the CUDA language standard levels (e.g. “cuda_std_03”, “cuda_std_14”). See “CMAKE_CUDA_KNOWN_FEATURES”.
The “CMAKE_CUDA_RUNTIME_LIBRARY” variable and “CUDA_RUNTIME_LIBRARY” target property were introduced to select the CUDA runtime library used when linking targets that use CUDA.
The “FindCUDAToolkit” module was added to find the CUDA Toolkit without enabling CUDA as a language.
“cmake(1)” gained a “–debug-find” command-line option to enable additional human-readable output on where find commands search.
The “CMAKE_FIND_DEBUG_MODE” variable was introduced to print extra find call information during the cmake run to standard error. Output is designed for human consumption and not for parsing.
The “FindCURL” module learned to find CURL using the “CURLConfig.cmake” package configuration file generated by CURL’s cmake buildsystem. It also gained a new “CURL_NO_CURL_CMAKE” option to disable this behavior.
The “FindPython” module has learned to find Python components in active virtual environments managed by “conda”.
The “ctest(1)” tool gained a “–no-tests=<[error|ignore]>” option to explicitly set and unify the behavior between direct invocation and script mode if no tests were found.
The “ctest(1)” tool gained a “–repeat :” option to specify conditions in which to repeat tests. This generalizes the existing “–repeat-until-fail ” option to add modes for “until-pass” and “after-timeout”.
Target link properties “INTERFACE_LINK_OPTIONS”, “INTERFACE_LINK_DIRECTORIES” and “INTERFACE_LINK_DEPENDS” are now transitive over private dependencies on static libraries. See policy “CMP0099”.
When using MinGW tools, the “find_library()” command no longer finds “.dll” files by default. Instead it expects “.dll.a” import libraries to be available.
The “Ninja” generator now prefers the first ninja build tool to appear in the “PATH” no matter whether it is called “ninja-build”, “ninja”, or “samu”. Previously the first of those names to appear anywhere in the “PATH” would be preferred.
“cmake(1)” gained a “-E rm” command-line tool that can be used to remove directories and files. This supersedes the existing “-E remove” and “-E remove_directory” tools and has better semantics.
2020-03-21 12:58:00 +00:00
wiz
550ddf384e cmake: remove patch that was removed from distinfo during update 2019-11-28 10:16:12 +00:00
adam
b555c5d4b1 cmake: updated to 3.16.0
3.16.0:

New Features
============


Languages
---------

* CMake learned to support the Objective C ("OBJC") and Objective
  C++ ("OBJCXX") languages.  They may be enabled via the "project()"
  and "enable_language()" commands.  When "OBJC" or "OBJCXX" is
  enabled, source files with the ".m" or ".mm", respectively, will be
  compiled as Objective C or C++.  Otherwise they will be treated as
  plain C++ sources as they were before.


Compilers
---------

* The "Clang" compiler is now supported on "Solaris".


Platforms
---------

* On AIX, executables using the "ENABLE_EXPORTS" target property now
  produce a linker import file with a ".imp" extension in addition to
  the executable file.  Plugins (created via "add_library()" with the
  "MODULE" option) that use "target_link_libraries()" to link to the
  executable for its symbols are now linked using the import file. The
  "install(TARGETS)" command now installs the import file as an
  "ARCHIVE" artifact.

* On AIX, runtime linking is no longer enabled by default.  CMake
  provides the linker enough information to resolve all symbols up
  front. One may manually enable runtime linking for shared libraries
  and/or loadable modules by adding "-Wl,-G" to their link flags (e.g.
  in the "CMAKE_SHARED_LINKER_FLAGS" or "CMAKE_MODULE_LINKER_FLAGS"
  variable). One may manually enable runtime linking for executables
  by adding "-Wl,-brtl" to their link flags (e.g. in the
  "CMAKE_EXE_LINKER_FLAGS" variable).


Command-Line
------------

* "cmake(1)" "-E" now supports "true" and "false" commands, which do
  nothing while returning exit codes of 0 and 1, respectively.

* "cmake(1)" gained a "--trace-redirect=" command line option
  that can be used to redirect "--trace" output to a file instead of
  "stderr".

* The "cmake(1)" "--loglevel" command line option has been renamed
  to "--log-level" to make it consistent with the naming of other
  command line options.  The "--loglevel" option is still supported to
  preserve backward compatibility.


Commands
--------

* The "add_test()" command learned the option "COMMAND_EXPAND_LISTS"
  which causes lists in the "COMMAND" argument to be expanded,
  including lists created by generator expressions.

* The "file()" command learned a new sub-command,
  "GET_RUNTIME_DEPENDENCIES", which allows you to recursively get the
  list of libraries linked by an executable or library. This sub-
  command is intended as a replacement for "GetPrerequisites".

* The "find_file()", "find_library()", "find_path()",
  "find_package()", and "find_program()" commands have learned to
  check the following variables to control searching

  * "CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH" - Controls the searching
    the cmake-specific environment variables.

  * "CMAKE_FIND_USE_CMAKE_PATH" - Controls the searching the cmake-
    specific cache variables.

  * "CMAKE_FIND_USE_CMAKE_SYSTEM_PATH" - Controls the searching
    cmake platform specific variables.

  * "CMAKE_FIND_USE_PACKAGE_ROOT_PATH" - Controls the searching of
    "_ROOT" variables.

  * "CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH" - Controls the
    searching the standard system environment variables.

* The "find_package()" command has learned to check the following
  variables to control searching

  * "CMAKE_FIND_USE_PACKAGE_REGISTRY" - Controls the searching the
    cmake user registry.

* The "message()" command learned indentation control with the new
  "CMAKE_MESSAGE_INDENT" variable.

* The "target_precompile_headers()" command was added to specify a
  list of headers to precompile for faster compilation times.


Variables
---------

* The "CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS" variable has been
  introduced to optionally initialize the
  "CUDA_RESOLVE_DEVICE_SYMBOLS" target property.

* The "CMAKE_ECLIPSE_RESOURCE_ENCODING" variable was added to
  specify the resource encoding for the the "Eclipse CDT4" extra
  generator.


Properties
----------

* The "BUILD_RPATH" and "INSTALL_RPATH" target properties now
  support "generator expressions".

* The "INSTALL_REMOVE_ENVIRONMENT_RPATH" target property was added
  to remove compiler-defined "RPATH" entries from a target. This
  property is initialized by the
  "CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH" variable.

* The "PRECOMPILE_HEADERS" target property was added to specify a
  list of headers to precompile for faster compilation times. Set it
  using the "target_precompile_headers()" command.

* The "UNITY_BUILD" target property was added to tell generators to
  batch include source files for faster compilation times.

* The "VS_CONFIGURATION_TYPE" target property now supports
  "generator expressions".

* The "VS_DPI_AWARE" target property was added to tell Visual Studio
  Generators to set the "EnableDpiAwareness" property in ".vcxproj"
  files.

* The "XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING" target property was
  added to tell the "Xcode" generator to set the value of the "Allow
  debugging when using document Versions Browser" schema option.


Modules
-------

* The "FindDoxygen" module "doxygen_add_docs()" command gained a new
  "USE_STAMP_FILE" option.  When this option present, the custom
  target created by the command will only re-run Doxygen if any of the
  source files have changed since the last successful run.

* The "FindGnuTLS" module now provides an imported target.

* The "FindPackageHandleStandardArgs" module
  "find_package_handle_standard_args()" command gained a new
  "REASON_FAILURE_MESSAGE" option to specify a message giving the
  reason for the failure.

* The "FindPkgConfig" module "pkg_search_module()" macro now defines
  a "_MODULE_NAME" result variable containing the first
  matching module name.

* The "FindPython3" and "FindPython" modules gained options to
  control which "ABIs" will be searched.

* The "FindPython3", "FindPython2", and "FindPython" modules now
  support direct specification of artifacts via cache entries.


Autogen
-------

* When using "AUTOMOC", CMake now generates the "-p" path prefix
  option for "moc".  This ensures that "moc" output files are
  identical on different build setups (given, that the headers
  compiled by "moc" are in an "include directory"). Also it ensures
  that "moc" output files will compile correctly when the source
  and/or build directory is a symbolic link.

  The "moc" path prefix generation behavior can be configured by
  setting the new "CMAKE_AUTOMOC_PATH_PREFIX" variable and/or
  "AUTOMOC_PATH_PREFIX" target property.


CTest
-----

* "ctest(1)" now has the ability to serialize tests based on
  resource requirements for each test. See Resource Allocation for
  details.

* A new test property, "SKIP_REGULAR_EXPRESSION", has been added.
  This property is similar to "FAIL_REGULAR_EXPRESSION" and
  "PASS_REGULAR_EXPRESSION", but with the same meaning as
  "SKIP_RETURN_CODE". This is useful, for example, in cases where the
  user has no control over the return code of the test. For example,
  in Catch2, the return value is the number of assertion failed,
  therefore it is impossible to use it for "SKIP_RETURN_CODE".


CPack
-----

* "cpack(1)" learned support for multiple configurations for "-C"
 option.

* The "CPack DEB Generator" is now able to format generic text
  (usually used as the description for multiple CPack generators)
  according to the Debian Policy Manual.  See the
  "CPACK_PACKAGE_DESCRIPTION_FILE" and
  "CPACK_DEBIAN__DESCRIPTION" variables.

* The "CPack Archive Generator" learned to generate ".tar.zst"
  packages with Zstandard compression.


Deprecated and Removed Features
===============================

* An explicit deprecation diagnostic was added for policy "CMP0067"
  ("CMP0066" and below were already deprecated). The "cmake-
  policies(7)" manual explains that the OLD behaviors of all policies
  are deprecated and that projects should port to the NEW behaviors.

* The "CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY" variable has been
  deprecated.  Use the "CMAKE_FIND_USE_PACKAGE_REGISTRY" variable
  instead.

* The "GetPrerequisites" module has been deprecated, as it has been
  superceded by "file(GET_RUNTIME_DEPENDENCIES)".

* The "CPACK_INSTALL_SCRIPT" variable has been deprecated in favor
  of the new, more accurately named "CPACK_INSTALL_SCRIPTS" variable.


Other Changes
=============

* The "cmake(1)" "-C " option now evaluates the
  initial cache script with "CMAKE_SOURCE_DIR" and "CMAKE_BINARY_DIR"
  set to the top-level source and build trees.

* The "cmake(1)" "-E remove_directory" command-line tool, when given
  the path to a symlink to a directory, now removes just the symlink.
  It no longer removes content of the linked directory.

* The "ctest(1)"  "--build-makeprogram" command-line option now
  specifies the make program used when configuring a project with the
  "Ninja" generator or the Makefile Generators.

* The "ExternalProject" module "ExternalProject_Add()" command has
  been updated so that "GIT_SUBMODULES """ initializes no submodules.
  See policy "CMP0097".

* The "FindGTest" module has been updated to recognize MSVC build
  trees generated by GTest 1.8.1.

* The "project()" command no longer strips leading zeros in version
  components.  See policy "CMP0096".

* The Qt Compressed Help file is now named "CMake.qch", which no
  longer contains the release version in the file name.  When CMake is
  upgraded in-place, the name and location of this file will remain
  constant. Tools such as IDEs, help viewers, etc. should now be able
  to refer to this file at a fixed location that remains valid across
  CMake upgrades.

* "RPATH" entries are properly escaped in the generated CMake
  scripts used for installation.  See policy "CMP0095".

* When using "CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS" on Windows the auto-
  generated exports are now updated only when the object files
  providing the symbols are updated.
2019-11-27 22:32:27 +00:00
adam
fab19f3ac0 cmake: updated to 3.15.0
3.15.0:

New Features
============


Generators
----------

* The "Xcode" generator now supports per-target schemes. See the
  "CMAKE_XCODE_GENERATE_SCHEME" variable and "XCODE_GENERATE_SCHEME"
  target property.

* The "Green Hills MULTI" generator has been updated:

  * It now supports the "add_custom_command()" and
    "add_custom_target()" commands.

  * It is now available on Linux.


Languages
---------

* Preliminary support for the "Swift" language was added to the
  "Ninja" generator:

  * Use the "SWIFTC" environment variable to specify a compiler.

  * The "Swift_DEPENDENCIES_FILE" target property and
    "Swift_DEPENDENCIES_FILE" source file property were added to
    customize dependency files.

  * The "Swift_MODULE_NAME" target property was added to customize
    the Swift module name.

  * The "Swift_DIAGNOSTICS_FILE" source property was added to
    indicate where to write the serialised Swift diagnostics.

  The Swift support is experimental, not considered stable, and may
  change in future releases of CMake.


Compilers
---------

* The "Clang" compiler variant on Windows that targets the MSVC ABI
  but has a GNU-like command line is now supported.

* Support for the Clang-based ARM compiler was added with compiler
  id "ARMClang".

* Support was added for the IAR compiler architectures Renesas RX,
  RL78, RH850 and Texas Instruments MSP430.

* Support was added for the IAR compilers built for Linux (IAR
  BuildLx).


Command-Line
------------

* The "CMAKE_GENERATOR" environment variable was added to specify a
  default generator to use when "cmake(1)" is run without a "-G"
  option.  Additionally, environment variables
  "CMAKE_GENERATOR_PLATFORM", "CMAKE_GENERATOR_TOOLSET", and
  "CMAKE_GENERATOR_INSTANCE" were created to configure the generator.

* The "cmake(1)" "--build" tool "--target" parameter gained support
  for multiple targets, e.g. "cmake --build . --target Library1
  Library2". It now also has a short form "-t" alias, e.g. "cmake
  --build . -t Library1 Library2".

* The "cmake(1)" command gained a new "--install" option. This may
  be used after building a project to run installation without using
  the generated build system or the native build tool.

* The "cmake(1)" command learned a new CLI option "--loglevel".

* The "cmake(1)" "-E remove_directory" command-line tool learned to
  support removing multiple directories.

* The "cmake(1)" "-E tar" tool has been improved:

  * It now continues adding files to an archive even if some of the
    files are not readable.  This behavior is more consistent with the
    classic "tar" tool.

  * It now parses all flags, and if an invalid flag was provided, a
    warning is issued.

  * It now displays an error if no action flag was specified, along
    with a list of possible actions: "t" (list), "c" (create) or "x"
    (extract).

  * It now supports extracting ("-x") or listing ("-t") only
    specific files or directories.

  * It now supports Zstandard compression with a "--zstd" option.
    Zstandard was designed to give a compression ratio comparable to
    that of the DEFLATE (zip) algorithm, but faster, especially for
    decompression.


Commands
--------

* The "add_custom_command()" and "add_custom_target()" commands
  gained a new "JOB_POOL" option that works with the "Ninja" generator
  to set the pool variable on the build statement.

* The "add_library()" command "ALIAS" option learned to support
  import libraries of the "UNKNOWN" type.

* The "cmake_parse_arguments()" command gained an additional
  "_KEYWORDS_MISSING_VALUES" output variable to report keyword
  arguments that were given by the caller with no values.

* The "execute_process()" command gained a "COMMAND_ECHO" option and
  supporting "CMAKE_EXECUTE_PROCESS_COMMAND_ECHO" variable to enable
  echoing of the command-line string before execution.

* The "file(INSTALL)" command learned a new argument,
  "FOLLOW_SYMLINK_CHAIN", which can be used to recursively resolve and
  install symlinks.

* "list()" learned new sub-commands: "PREPEND", "POP_FRONT" and
  "POP_BACK".

* The "message()" command learned new types: "NOTICE", "VERBOSE",
  "DEBUG" and "TRACE".

* The "string()" learned a new sub-command "REPEAT".


Variables
---------

* The "CMAKE_CROSSCOMPILING_EMULATOR" variable and corresponding
  "CROSSCOMPILING_EMULATOR" target property learned to support
  arguments to the emulator.

* The "CMAKE_FIND_PACKAGE_PREFER_CONFIG" variable was added to tell
  "find_package()" calls to look for a package configuration file
  first even if a find module is available.

* The "CMAKE_FRAMEWORK" variable was added to initialize the
  "FRAMEWORK" property on all targets.

* The "CMAKE_VS_JUST_MY_CODE_DEBUGGING" variable and
  "VS_JUST_MY_CODE_DEBUGGING" target property were added to enable the
  Just My Code feature of the Visual Studio Debugger when compiling
  with MSVC cl 19.05 and higher.

* The "CMAKE_MSVC_RUNTIME_LIBRARY" variable and
  "MSVC_RUNTIME_LIBRARY" target property were introduced to select the
  runtime library used by compilers targeting the MSVC ABI. See policy
  "CMP0091".

* The "CMAKE_PROJECT_INCLUDE" and "CMAKE_PROJECT_INCLUDE_BEFORE"
  variables were added to allow injection of custom code at the sites
  of "project()" calls without knowing the project name a priori.


Properties
----------

* The "ADDITIONAL_CLEAN_FILES" target property and
  "ADDITIONAL_CLEAN_FILES" directory property were added. They allow
  to register additional files that should be removed during the clean
  stage.

* The "PUBLIC_HEADER" and "PRIVATE_HEADER" properties may now be set
  on Interface Libraries. The headers specified by those properties
  can be installed using the "install(TARGETS)" command by passing the
  "PUBLIC_HEADER" and "PRIVATE_HEADER" arguments respectively.

* The "VS_PACKAGE_REFERENCES" target property was added to tell
  Visual Studio Generators to add references to "nuget" packages.

* The "VS_PROJECT_IMPORT" target property was added to allow managed
  Visual Studio project files to import external ".props" files.

* The "VS_NO_SOLUTION_DEPLOY" target property was added to tell
  Visual Studio Generators whether to deploy an artifact to the WinCE
  or Windows Phone target device.


Modules
-------

* The "FindBoost" module was reworked to expose a more consistent
  user experience between its “Config” and “Module” modes and with
  other find modules in general.

  * A new imported target "Boost::headers" is now defined (same as
    "Boost::boost").

  * New output variables "Boost_VERSION_MACRO",
    "Boost_VERSION_MAJOR", "Boost_VERSION_MINOR",
    "Boost_VERSION_PATCH", and "Boost_VERSION_COUNT" were added.

  * The "QUIET" argument passed to "find_package()" is no longer
    ignored in config mode.  Note that the CMake package shipped with
    Boost "1.70.0" ignores the "QUIET" argument passed to
    "find_package()".  This is fixed in the next Boost release.

  * The input switch "Boost_DETAILED_FAILURE_MSG" was removed.

  * "Boost_VERSION" now reports the version in "x.y.z" format in
    module mode.  See policy "CMP0093".

* The "FindCups" module now provides imported targets.

* The "FindEnvModules" module was added to use Lua- and TCL-based
  environment modules in CTest Scripts.

* The "FindGLEW" module now provides an interface more consistent
  with what upstream GLEW provides in its own CMake package files.

* The "FindPkgConfig" now populates "INTERFACE_LINK_OPTIONS"
  property of imported targets with other (non-library) linker flags.

* The "FindPostgreSQL" module learned to find debug and release
  variants separately.

* Modules "FindPython3", "FindPython2" and "FindPython" gained
  additional lookup strategies and controls, and a new default. See
  policy "CMP0094".

* Modules "FindPython", "FindPython2" and "FindPython3" gain a new
  target (respectively "Python::Module", "Python2::Module" and
  "Python3::Module") which can be used to develop Python modules.

* Modules "FindPython3", "FindPython2" and "FindPython" gain
  capability to control how virtual environments are handled.

* The "UseSWIG" module learned to manage alternate library names by
  passing "-interface       " for "python" language or
  "-dllimport       " for "CSharp" language to the "SWIG"
  compiler.


Generator Expressions
---------------------

* The "generator expressions" "C_COMPILER_ID", "CXX_COMPILER_ID",
  "CUDA_COMPILER_ID", "Fortran_COMPILER_ID", "COMPILE_LANGUAGE",
  "COMPILE_LANG_AND_ID", and "PLATFORM_ID" learned to support matching
  one value from a comma-separated list.


CTest
-----

* The "ctest_submit()" command learned a new option: "BUILD_ID".
  This can be used to store the ID assigned to this build by CDash to
  a variable.

* The "ctest_update()" command learned to honor a new variable:
  "CTEST_UPDATE_VERSION_OVERRIDE". This can be used to specify the
  current version of your source tree rather than using the update
  command to discover the current version that is checked out.

CPack
-----

* The "CPack IFW Generator" gained a new
  "CPACK_IFW_PACKAGE_STYLE_SHEET" variable to customize the installer
  stylesheet.

Deprecated and Removed Features
===============================

* The "cmake-server(7)" mode has been deprecated and will be removed
  from a future version of CMake.  Please port clients to use the
  "cmake-file-api(7)" instead.

* The "ADDITIONAL_MAKE_CLEAN_FILES" directory property is now
  deprecated.  Use the "ADDITIONAL_CLEAN_FILES" directory property
  instead.

* The variable "CMAKE_AUTOMOC_RELAXED_MODE" is considered
  deprecated. Support still exists but will be removed in future
  versions.

* The "export(PACKAGE)" command now does nothing unless enabled via
  "CMAKE_EXPORT_PACKAGE_REGISTRY". See policy "CMP0090".

* The "Xcode" generator now requires at least Xcode 5.

* An explicit deprecation diagnostic was added for policy "CMP0066"
  ("CMP0065" and below were already deprecated). The "cmake-
  policies(7)" manual explains that the OLD behaviors of all policies
  are deprecated and that projects should port to the NEW behaviors.

Other Changes
=============

* CMake learned how to compile C++14 with the IBM AIX XL compiler
  and the SunPro compiler and to compile C++20 with the AppleClang
  compiler.

* With MSVC-like compilers the value of "CMAKE__FLAGS" no
  longer contains warning flags like "/W3" by default. See policy
  "CMP0092".

* IBM Clang-based XL compilers that define "__ibmxl__" now use the
  compiler id "XLClang" instead of "XL".  See policy "CMP0089".

* The "file(REMOVE)" and "file(REMOVE_RECURSE)" commands were
  changed to ignore empty arguments with a warning instead of treating
  them as a relative path and removing the contents of the current
  directory.
2019-07-19 09:06:23 +00:00
adam
8119d99d1e cmake: updated to 3.14.0
3.14.0:
New Features
Generators
* The Visual Studio 16 2019 generator was added. This is experimental and based on “Visual Studio 2019 Preview 4” because this version of VS has not been released.
* The Green Hills MULTI generator has been updated:

File-Based API
* A file-based api for clients to get semantic buildsystem information has been added.

Platforms
* CMake now supports Cross Compiling for iOS, tvOS, or watchOS using simple toolchain files.

Command-Line
* The cmake(1) Build Tool Mode (cmake --build) gained --verbose and -v options to specify verbose build output. Some generators such as Xcode don’t support this option currently.
* The cmake(1) -E compare_files command learned a new --ignore-eol option to specify that end-of-line differences (e.g. LF vs CRLF) should be ignored when comparing files.
* The cmake-gui(1) dialog gained new -S and -B arguments to explicitly specify source and build directories.

Commands
* The file() command learned a new sub-command, CREATE_LINK, which can be used to create hard or symbolic links.
* The file() command learned a new sub-command, READ_SYMLINK, which can be used to determine the path that a symlink points to.
* The file() command gained a SIZE mode to get the size of a file on disk.
* The find_package() command learned to optionally resolve symbolic links in the paths to package configuration files. See the CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS variable.
* The get_filename_component() command gained new LAST_EXT and NAME_WLE variants to work with the extension after the last . in the name.
* The if() command gained support for checking if cache variables are defined with the DEFINED CACHE{VAR} syntax.
* The install(CODE) and install(SCRIPT) commands learned to support generator expressions. See policy CMP0087.
* The install(TARGETS) command learned how to install to an appropriate default directory for a given target type, based on variables from the GNUInstallDirs module and built-in defaults, in lieu of a DESTINATION argument.
* The install(FILES) and install(DIRECTORY) commands learned a new set of parameters for installing files as a file type, setting the destination based on the appropriate variables from GNUInstallDirs and built-in defaults, in lieu of a DESTINATION argument.
* The list() operations REMOVE_ITEM, REMOVE_DUPLICATES, SORT, REVERSE, and FILTER all now accept a non-existent variable as the list since these operations on empty lists is also the empty list.
* The list() operation REMOVE_AT now indicates that the given indices are invalid for a non-existent variable or empty list.
* The try_compile() and try_run() commands gained a new LINK_OPTIONS option.

Variables
* A CMAKE_BUILD_RPATH_USE_ORIGIN variable and corresponding BUILD_RPATH_USE_ORIGIN target property were added to enable use of relative runtime paths (RPATHs). This helps achieving relocatable and reproducible builds that are invariant of the build directory.

Properties
* A CMAKE_ROLE global property was added to allow scripts to determine whether they’re running in project mode, script mode, find-package mode, CTest, or CPack.
* The CUDA_RESOLVE_DEVICE_SYMBOLS target property is now supported on shared library, module library, and executable targets. Previously it was only honored on static libraries.
* The EXCLUDE_FROM_ALL target property was created to override the setting of its directory. A target will now be built as part of “all” if its EXCLUDE_FROM_ALL property is set to OFF, even if its containing directory is marked as EXCLUDE_FROM_ALL.
* INTERFACE_POSITION_INDEPENDENT_CODE target property gains the support of generator expressions.
2019-03-18 09:05:59 +00:00
maya
defa127edf cmake: specifically test for some C++17 features.
In case the compiler used advertises C++17 but uses a C++ library that
lacks some features, we'll need specific testing.

Unbreaks the build for: libstdc++ from 5.4 and clang 7.0
Submitted upstream: https://gitlab.kitware.com/cmake/cmake/merge_requests/3030/diffs
(No response yet)

From wizermil.
2019-02-27 13:18:01 +00:00
triaxx
9d83a80450 Fix PR pkg/53816.
* Fix from upstream: https://gitlab.kitware.com/cmake/cmake/issues/17614
* Patch comment to appease pkglint
* Bump revision
2019-01-04 17:47:12 +00:00
adam
424829f8da cmake: updated to 3.13.0
CMake 3.13.0:
The Visual Studio Generators for VS 2010 and above learned to
support the “INTERPROCEDURAL_OPTIMIZATION” target property and
supporting “CheckIPOSupported” module.
The “Green Hills MULTI” generator has been updated to include
support for platform, architecture, and toolset selection.
The “cmake” command gained the “-S <source_dir>” command line
option to specify the location of the source directory. This option
can be used independently of “-B”.
The “cmake” command gained the “-B <build_dir>” command line
option to specify the location of the build directory. This option
can be used independently of “-S”.
The “cmake” “-E create_symlink” command can now be used on
Windows.
The “target_link_directories()” command was created to specify
link directories for targets and their dependents.
The “target_link_options()” command was created to specify link
options for targets and their dependents.
The “target_link_libraries()” command may now be called to modify
targets created outside the current directory. See policy “CMP0079”.
The “install(TARGETS)” command learned to install targets created
outside the current directory.
A “VS_DEBUGGER_COMMAND_ARGUMENTS” target property was created to
set the debugging command line arguments with Visual Studio
Generators for VS 2010 and above.
A “VS_DEBUGGER_ENVIRONMENT” target property was created to set the
debugging environment with Visual Studio Generators for VS 2010 and
above.
The “option()” command now honors an existing normal variable of
the same name and does nothing instead of possibly creating a cache
entry (or setting its type) and removing the normal variable. See
policy “CMP0077”.
The “target_sources()” command now interprets relative source file
paths as relative to the current source directory. This simplifies
incrementally building up a target’s sources from subdirectories.
The “CMP0076” policy was added to provide backward compatibility
with the old behavior where required.
2018-11-21 16:58:52 +00:00
leot
1502f8f063 cmake: Use NetBSD curses(3) when possible
ccmake needs wsyncup(3) and since NetBSD 8.0 it is present on NetBSD.
Handle that via `USE_CURSES= wsyncup' and remove enforcements about
ncurses in CMakeLists.txt and Source/Checks/Curses/CMakeLists.txt.

Bump PKGREVISION
2018-10-16 16:37:21 +00:00
adam
b76286466b cmake: updated to 3.12.2
Changes in 3.12.2 since 3.12.1:
* Android: Add support for NDK r18
* CheckIPOSupported: Simplify result reporting logic
* CheckIPOSupported: Tolerate backslashes in output of failed checks
* VS: Restore CMakeLists.txt references in each target
* EXPORT_PROPERTIES: Add test for an undefined property
* EXPORT_PROPERTIES: Prevent null dereference for undefined property
* Help: Fix typo in clang-tidy example -checks option
* FindBoost: Fix context discovery for 1.60 and below
* FindCUDA: Do not find cublas_device on CUDA >= 9.2
* FindMatlab: Remove erroneous duplicate code
* CUDA: Avoid using deprecated cublas_device to identify device lib dirs
* cmState: Clear GlobVerificationManager state on Reset
2018-09-08 06:55:51 +00:00
ryoon
189b03ccc2 Fix curses detection under NetBSD 8 and current at least
Fix PR pkg/53469
2018-07-24 12:14:38 +00:00
ryoon
79f5b7199c Update to 3.12.0
Changelog:
Changes made since CMake 3.11 include the following.

New Features

Generators

  * The Visual Studio Generators for VS 2017 learned to support a version=14.##
    option in the CMAKE_GENERATOR_TOOLSET value (e.g. via the cmake(1) -T
    option) to specify a toolset version number.

Command-Line

  * The cmake(1) Build Tool Mode (cmake --build) gained --parallel [<jobs>] and
    -j [<jobs>] options to specify a parallel build level. They map to
    corresponding options of the native build tool.

Commands

  * The add_compile_definitions() command was added to set preprocessor
    definitions at directory level. This supersedes add_definitions().
  * The cmake_minimum_required() and cmake_policy(VERSION) commands now accept
    a version range using the form <min>[...<max>]. The <min> version is
    required but policies are set based on the older of the running CMake
    version and the version specified by <max>. This allows projects to specify
    a range of versions for which they have been updated and avoid explicit
    policy settings.
  * The file(GLOB) and file(GLOB_RECURSE) commands learned a new flag
    CONFIGURE_DEPENDS which enables expression of build system dependency on
    globbed directory’s contents.
  * The file(TOUCH) and file(TOUCH_NOCREATE) commands were added to expose
    TOUCH functionality without having to use CMake’s command-line tool mode
    with execute_process().
  * The find_package() command now searches a prefix specified by a
    PackageName_ROOT CMake or environment variable. Package roots are
    maintained as a stack so nested calls to all find_* commands inside find
    modules also search the roots as prefixes. See policy CMP0074.
  * The install() command learned an optional NAMELINK_COMPONENT parameter,
    which allows you to change the component for a shared library’s namelink.
    If none is specified, the value of COMPONENT is used by default.
  * The list() command learned a JOIN sub-command to concatenate list’s
    elements separated by a glue string.
  * The list() command learned a SUBLIST sub-command to get a sublist of the
    list.
  * The list() command learned a TRANSFORM sub-command to apply various string
    transformation to list’s elements.
  * The project() command learned an optional HOMEPAGE_URL parameter which has
    the effect of setting variables like PROJECT_HOMEPAGE_URL, <PROJECT-NAME>
    _HOMEPAGE_URL and CMAKE_PROJECT_HOMEPAGE_URL.
  * The string() command learned a JOIN sub-command to concatenate input
    strings separated by a glue string.
  * target_compile_options() and add_compile_options() commands gained a SHELL:
    prefix to specify a group of related options using shell-like quoting.
  * The target_link_libraries() command now supports Object Libraries. Linking
    to an object library uses its object files in direct dependents and also
    propagates usage requirements.

Variables

  * The CMAKE_FOLDER variable was added to initialize the FOLDER property on
    all targets.
  * The CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION variable was defined to
    initialize all DOTNET_TARGET_FRAMEWORK_VERSION target properties.
  * CMAKE_PROJECT_VERSION* variables have been introduced:
      + CMAKE_PROJECT_VERSION
      + CMAKE_PROJECT_VERSION_MAJOR
      + CMAKE_PROJECT_VERSION_MINOR
      + CMAKE_PROJECT_VERSION_PATCH
      + CMAKE_PROJECT_VERSION_TWEAK
  * The CMAKE_SUPPRESS_REGENERATION variable was extended to support the Ninja
    and Makefile Generators. It is also now documented.
  * CMAKE_VS_SDK_*_DIRECTORIES variables were defined to tell Visual Studio
    Generators for VS 2010 and above how to populate fields in .vcxproj files
    that specify SDK directories. The variables are:
      + CMAKE_VS_SDK_EXCLUDE_DIRECTORIES
      + CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES
      + CMAKE_VS_SDK_INCLUDE_DIRECTORIES
      + CMAKE_VS_SDK_LIBRARY_DIRECTORIES
      + CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES
      + CMAKE_VS_SDK_REFERENCE_DIRECTORIES
      + CMAKE_VS_SDK_SOURCE_DIRECTORIES
  * A MSVC_TOOLSET_VERSION variable was added to provide the MSVC toolset
    version associated with the current MSVC compiler version in MSVC_VERSION.

Properties

  * The COMMON_LANGUAGE_RUNTIME target property was introduced to configure the
    use of managed C++ for Visual Studio Generators for VS 2010 and above. A
    corresponding IMPORTED_COMMON_LANGUAGE_RUNTIME target property was added to
    support C++/CLI for imported targets.
  * The DOTNET_TARGET_FRAMEWORK_VERSION target property was introduced as
    replacement for VS_DOTNET_TARGET_FRAMEWORK_VERSION, which is considered
    deprecated now.
  * An EXPORT_PROPERTIES target property was added to specify a custom list of
    target properties to include in targets exported by the install(EXPORT) and
    export() commands.
  * The PDB_OUTPUT_DIRECTORY property learned to support generator expressions.
  * A TESTS directory property was added to hold the list of tests defined by
    the add_test() command.
  * A VS_DEBUGGER_COMMAND target property was created to set the debugging
    command line with Visual Studio Generators for VS 2010 and above.
  * HLSL source file properties VS_SHADER_DISABLE_OPTIMIZATIONS and
    VS_SHADER_ENABLE_DEBUG gained support for generator expressions.
  * HLSL source file property VS_SHADER_OBJECT_FILE_NAME has been added to the
    Visual Studio Generators for VS 2010 and above. The property specifies the
    file name of the compiled shader object.

Modules

  * The FindALSA module now provides imported targets.
  * The FindCURL module now provides imported targets.
  * The FindJPEG module now provides imported targets.
  * The FindLibXml2 module now provides imported targets.
  * The FindMatlab module now supports the Matlab Runtime Compiler (MCR) for
    compiling and linking matlab extensions.
  * A FindODBC module was added to find an Open Database Connectivity (ODBC)
    library.
  * The FindPkgConfig module has learned to export the found libraries with
    full path for direct consumption with the target_link_libraries() command.
  * New FindPython3 and FindPython2 modules, as well as a new FindPython
    module, have been added to provide a new way to locate python environments.
  * The UseSWIG module gained a whole refresh and is now more consistent with
    standard CMake commands to generate libraries and is fully configurable
    through properties.
  * The UseSWIG module learned to manage multiple behaviors through
    UseSWIG_MODULE_VERSION variable to ensure legacy support as well as more
    robust handling of SWIG advanced features (like %template).
  * The UseSWIG module learned to support CSHARP variant wrapper files.
  * The WriteCompilerDetectionHeader module gained a BARE_FEATURES option to
    add a compatibility define for the exact keyword of a new language feature.

Generator Expressions

  * A new $<GENEX_EVAL:...> and $<TARGET_GENEX_EVAL:target,...> generator
    expression has been added to enable consumption of generator expressions
    whose evaluation results itself in generator expressions.
  * A new $<IN_LIST:...> generator expression has been added.
  * A new $<TARGET_EXISTS:...> generator expression has been added.
  * A new $<TARGET_NAME_IF_EXISTS:...> generator expression has been added.

CTest

  * The ctest_start() command has been reworked so that you can simply call
    ctest_start(APPEND) and it will read all the needed information from the
    TAG file. The argument parsing has also been relaxed so that the order of
    the arguments is less significant.
  * A PROCESSOR_AFFINITY test property was added to request that CTest run a
    test with CPU affinity for a set of processors disjoint from other
    concurrently running tests with the property set.

CPack

  * The CPack module now uses variables CMAKE_PROJECT_VERSION_MAJOR,
    CMAKE_PROJECT_VERSION_MINOR and CMAKE_PROJECT_VERSION_PATCH to initialize
    corresponding CPack variables.
  * cpack(1) gained basic support for NuGet. See the CPackNuGet module.

Other

  * The Compile Features functionality is now aware of C++ 20. No specific
    features are yet enumerated besides the cxx_std_20 meta-feature.
  * The Compile Features functionality is now aware of the availability of C
    features in MSVC since VS 2010.
  * The Compile Features functionality is now aware of C language standards
    supported by Texas Instruments C compilers.

Deprecated and Removed Features

  * The Visual Studio 8 2005 generator has been removed.
  * CMake no longer produces <tgt>_LIB_DEPENDS cache entries for library
    targets. See policy CMP0073.

Other Changes

  * Include flags for directories marked as SYSTEM are now moved after
    non-system directories. The -isystem flag does this automatically, so
    moving them explicitly to the end makes the behavior consistent on
    compilers that do not have any -isystem flag.
  * Fortran dependency scanning now supports dependencies implied by Fortran
    Submodules.
  * The existence and functionality of the file ${CMAKE_BINARY_DIR}/
    cmake_install.cmake has now been documented in the install() documentation
    so that external packaging software can take advantage of CPack-style
    component installs.
  * The CheckIncludeFile module check_include_file macro learned to honor the
    CMAKE_REQUIRED_LIBRARIES variable. See policy CMP0075.
  * The CheckIncludeFileCXX module check_include_file_cxx macro learned to
    honor the CMAKE_REQUIRED_LIBRARIES variable. See policy CMP0075.
  * The CheckIncludeFiles module check_include_files macro learned to honor the
    CMAKE_REQUIRED_LIBRARIES variable. See policy CMP0075.
  * The cmake(1) -E copy_directory tool now fails when the source directory
    does not exist. Previously it succeeded by creating an empty destination
    directory.
  * The UseSWIG module swig_add_library() command (and legacy swig_add_module
    command) now set the prefix of Java modules to "" for MINGW, MSYS, and
    CYGWIN environments.
2018-07-21 06:52:55 +00:00
adam
4260058753 cmake: updated to 3.11.4
3.11.4:
Windows: Restore support for running CMake through a symlink
ExternalProject: Fix cache generation when args end with "-NOTFOUND"
ExternalProject: Improve URL_HASH argument description
2018-06-24 09:13:22 +00:00
tron
c475d9398a cmake: Fix build under macOS with Xcode 9.4
Xcode 9.4 triggers linker warnings that the C++ feature detection
code considers fatal. Simply ignore these warning by adding an entry
to the existing filter table.
2018-06-11 17:33:51 +00:00
jperkin
bbc35837ef cmake: Fix build on illumos with C++17 header issues. 2018-05-11 13:39:57 +00:00
minskim
72e385973c devel/cmake: -lcrypto should appear later in the command
This fixes PR pkg/53117.
2018-04-26 17:30:36 +00:00
chuck
dfb93e88b9 add CMAKE_PKGSRC_BUILD_FLAGS for pkgsrc build to set opts
With pkgsrc built packages, the goal is to have the user's compiler
optimization flags set by the user using CFLAGS, etc.   To that end,
the cmake Makefile has subst.mk code to "sed -e 's,-O.,,'" out opt.
flags in Modules/Compiler/*.cmake for cmake compiles with the
CMAKE_BUILD_TYPE set (e.g. to Release).

Unfortunately, this sed-based approach has two drawbacks: First, it
gets applied to packages build with cmake outside of pkgsrc (changing
the semantics of -DCMAKE_BUILD_TYPE=Release in an unexpected way by
remove -O flags from it).   Second, the sed expression damages some
of the Modules/Compiler/*.cmake as not all opt flags match the "-O."
regular expression.

To address this we:
  1. remove the subst.mk sed operation on Modules/Compiler/*.cmake
  2. add a new config variable CMAKE_PKGSRC_BUILD_FLAGS that should
     be set for pkgsrc-based cmake builds (e.g. in mk/configure/cmake.mk)
  3. we add a patch for Modules/Compiler/GNU.cmake to look for
     CMAKE_PKGSRC_BUILD_FLAGS and choose a set of non-opt compiler
     flags when this is set (to provide the desired behavior under pksrc).
     note that the GNU.cmake file is also used by clang.   We can
     make the corresponding changes to other compilers if desired.

The result is that cmake compiles under pkgsrc set CMAKE_PKGSRC_BUILD_FLAGS
and follow CFLAGS, etc. (bypassing CMAKE_BUILD_TYPE), but cmake compiles
outside of pkgsrc follow the standard cmake semantics for CMAKE_BUILD_TYPE.
Also, we no longer damage Modules/Compiler/*.cmake with sed.
2018-04-08 19:09:45 +00:00
adam
a332869c3e cmake: updated to 3.11.0
Some of the more significant changes in CMake 3.11 are:

The Makefile Generators and the “Ninja” generator learned to add
compiler launcher tools along with the compiler for the “Fortran”
language (“C”, “CXX”, and “CUDA” were supported previously). See the
“CMAKE_<LANG>_COMPILER_LAUNCHER” variable and
“<LANG>_COMPILER_LAUNCHER” target property for details.

Visual Studio Generators learned to support the “COMPILE_LANGUAGE”
“generator expression” in target-wide “COMPILE_DEFINITIONS”,
“INCLUDE_DIRECTORIES”, “COMPILE_OPTIONS”, and “file(GENERATE)”. See
generator expression documentation for caveats.

The “Xcode” Generator learned to support the “COMPILE_LANGUAGE”
“generator expression” in target-wide “COMPILE_DEFINITIONS” and
“INCLUDE_DIRECTORIES”. It previously supported only
“COMPILE_OPTIONS” and “file(GENERATE)”. See generator expression
documentation for caveats.

“add_library()” and “add_executable()” commands can now be called
without any sources and will not complain as long as sources are
added later via the “target_sources()” command.

The “target_compile_definitions()” command learned to set the
“INTERFACE_COMPILE_DEFINITIONS” property on Imported Targets.

The “target_compile_features()” command learned to set the
“INTERFACE_COMPILE_FEATURES” property on Imported Targets.

The “target_compile_options()” command learned to set the
“INTERFACE_COMPILE_OPTIONS” property on Imported Targets.

The “target_include_directories()” command learned to set the
“INTERFACE_INCLUDE_DIRECTORIES” property on Imported Targets.

The “target_sources()” command learned to set the
“INTERFACE_SOURCES” property on Imported Targets.

The “target_link_libraries()” command learned to set the
“INTERFACE_LINK_LIBRARIES” property on Imported Targets.

The “COMPILE_DEFINITIONS” source file property learned to support
“generator expressions”.

A “COMPILE_OPTIONS” source file property was added to manage list
of options to pass to the compiler.

When using “AUTOMOC” or “AUTOUIC”, CMake now starts multiple
parallel “moc” or “uic” processes to reduce the build time. A new
“CMAKE_AUTOGEN_PARALLEL” variable and “AUTOGEN_PARALLEL” target
property may be set to specify the number of parallel “moc” or “uic”
processes to start. The default is derived from the number of CPUs
on the host.
2018-04-02 19:36:44 +00:00
minskim
00dd09f872 devel/cmake: Add the upstream patch to support boost-libs-1.66
Bump PKGREVISION.
2018-01-15 18:12:41 +00:00
adam
2c2374c4a2 cmake: updated to 3.10.1
3.10.1:
bootstrap: Check support for unordered_map from compiler mode
CPack: Fix macOS PKG component dependency information
CUDA: Treat /usr/include as an implicit include directory
server: Revert "Report backtraces in codemodel response"
CMake 3.10.1
FindMPI: Correct legacy variable handling
FindMPI: Fix multiple configure runs
FindMPI: Fix various legacy problems
IRSL: Fix MSVC variable deferencing
IAR: FindBinUtils should work for CXX as well as C
GoogleTest: Fix multiple discovery on same target
GoogleTest: Improve gtest_discover_tests messages
GoogleTest: Add timeout to discovery
GoogleTest: Add test for missing test executable
CUDA: Shared libraries on Darwin properly setup @rpath install_names
Autogen: Fix for AUTOMOC on macOS frameworks in CMake 3.10
Autogen: Tests: Add test for MacOS frameworks
Clang: Do not mistake clang-cl 6.0 for GNU-like clang
2017-12-14 22:13:34 +00:00
adam
39f3019f8f cmake: updated to 3.10.0
CMake 3.10 are:

The flang Fortran compiler is now supported, with compiler id
“Flang”.

Support for the MSVC ARM64 architecture was added. Visual Studio
2017 Update 4 and above offer an ARM64 toolchain.

The “include_guard()” command was introduced to allow guarding
CMake scripts from being included more than once. The command
supports “DIRECTORY” and “GLOBAL” options to adjust the
corresponding include guard scope. If no options given, include
guard is similar to basic variable-based check.

“FindMPI” received a major overhaul. It now features language specific
components, better Fortran support, and support for statically linked
MPI implementations.

A “FindOpenACC” module was added to detect compiler support for
OpenACC. Currently only supports PGI, GNU and Cray compilers.
The “FindOpenGL” module underwent numerous improvements. It has gained
support for GLVND and EGL on Linux. It now has import targets that
separate the OpenGL library and OpenGL contexts.

The “GoogleTest” module gained a new command
“gtest_discover_tests()” implementing dynamic (build-time) test
discovery.

When using “AUTOMOC” or “AUTOUIC”, source files that are
“GENERATED” will be processed as well. They were ignored by
“AUTOMOC” and “AUTOUIC” in earlier releases. See policy “CMP0071”.

A “CTEST_LABELS_FOR_SUBPROJECTS” CTest module variable and CTest
script variable were added to specify a list of labels that should
be treated as subprojects by CDash. To use this value in both the
CTest module and the ctest command line Dashboard Client mode (e.g.
“ctest -S”) set it in the “CTestConfig.cmake” config file.
CPack gained a “FREEBSD” generator for FreeBSD “pkg(8)”,
configured by the “CPackFreeBSD” module.

The CPack “DEB” generator, configured by the “CPackDeb” module,
was enabled on Windows. While not fully featured (due to the lack
of external UNIX tools) this will allow building basic cross-
platform Debian packages.

The “cmake(1)” “-E” mode gained support for “sha1sum”,
“sha224sum”, “sha256sum”, “sha384sum”, and “sha512sum”.

The “file(GENERATE)” command now interprets relative paths given
to its “OUTPUT” and “INPUT” arguments with respect to the caller’s
current binary and source directories, respectively. See policy
“CMP0070”.
2017-11-30 15:41:17 +00:00
adam
8cb9a9ee6a cmake: update to 3.9.3
Changes in 3.9.3 since 3.9.2:
* VS: Do not consider MAP_IMPORTED_CONFIG_ on non-imported targets
  bootstrap: Fix running multiple times in-source
* vim: Remove default setting of expandtab
* FindBoost: Add support for Boost 1.65.0 and 1.65.1 to CMake 3.9
* CTest: fix crash if source file for coverage cannot be found
* Autogen: Backport autogen target dependency as file dependency fix
* Autogen: Tests: Backport tests for _autogen target dependencies
2017-09-26 04:50:50 +00:00
prlw1
e929b31a9a Patch cmake to find boost version 1.65 (i.e., the one in pkgsrc) 2017-09-19 15:58:21 +00:00
adam
2d6987fab9 3.9.0:
* The “Visual Studio 14 2015” generator has been taught about a
change to the “v140” toolset made by a VS 2015 update. VS changed
the set of values it understands for the “GenerateDebugInformation”
linker setting that produces the “-DEBUG” linker flag variants.

* “CUDA” is now supported by the Visual Studio Generators for VS
2010 and above. This complements the existing support by the
Makefile Generators and the “Ninja” generator. CUDA 8.0.61 or higher
is recommended due to known bugs in the VS integration by earlier
versions.

* CMake is now aware of the “C++ standards” and “C standards” and
their associated meta-features for the following “compiler ids”:
“Cray”, “PGI”, and “XL”.

* The “add_library()” command “IMPORTED” option learned to support
Object Libraries.

* All “find_” commands now have a “PACKAGE_ROOT” search path group
that is first in the search heuristics. If a “find_” command is
called from inside a find module, then the CMake variable and
environment variable named “_ROOT” are used as prefixes
and are the first set of paths to be searched.

* The “install(TARGETS)” command learned a new “OBJECTS” option to
specify where to install Object Libraries.

* The “install(EXPORT)” command learned how to export Object
Libraries.

* A “BUILD_WITH_INSTALL_NAME_DIR” target property and corresponding
“CMAKE_BUILD_WITH_INSTALL_NAME_DIR” variable were added to control
whether to use the “INSTALL_NAME_DIR” target property value for
binaries in the build tree. This is for macOS “install_name” as
“BUILD_WITH_INSTALL_RPATH” is for “RPATH”.
* A “CUDA_PTX_COMPILATION” target property was added to Object
Libraries to support compiling to “.ptx” files instead of host
object files.

* A new “GoogleTest” module was added to provide the
“gtest_add_tests()” function independently of the “FindGTest”
module. The function was also updated to support keyword arguments,
with functionality expanded to allow a test name prefix and suffix
to be specified, the dependency on the source files to be optional
and the list of discovered test cases to be returned to the caller.

* The “Ninja” generator has loosened the dependencies of object
compilation. Object compilation now depends only on custom targets
and custom commands associated with libraries on which the object’s
target depends and no longer depends on the libraries themselves.
Source files in dependent targets may now compile without waiting
for their targets’ dependencies to link.
* Interprocedural optimization (IPO) is now supported for GNU and
Clang compilers using link time optimization (LTO) flags. See the
“INTERPROCEDURAL_OPTIMIZATION” target property and
“CheckIPOSupported” module.

* The “TARGET_OBJECTS” “generator expression” is now supported by
the “add_custom_command()” and “file(GENERATE)” commands.
2017-07-19 17:44:34 +00:00
maya
e8d9e0511e cmake: revise netbsd-6 build fix patch as suggested by Brad King
TagRunPath = 0 may cause client code such as cmSystemTools::RemoveRPath
to misbehave.

Define DT_RUNPATH to the expected value (29) instead.

bump pkgrevision
2017-04-26 18:19:31 +00:00
maya
e98959c3c8 cmake: fix build under netbsd-6
don't use DT_RUNPATH if it's not defined
include cstdlib as our patch uses exit

from yancm via pkgsrc-users
2017-04-24 22:48:48 +00:00
adam
5cac68417e Changes 3.8.0:
CMake learned to support CSharp (C#) as a first-class language that can be enabled via the project() and enable_language() commands. It is currently supported by the Visual Studio Generators for VS 2010 and above.

C# assemblies and programs can be added just like common C++ targets using the add_library() and add_executable() commands. References between C# targets in the same source tree may be specified by target_link_libraries() like for C++. References to system or 3rd-party assemblies may be specified by the target properties VS_DOTNET_REFERENCE_<refname> and VS_DOTNET_REFERENCES.

More fine tuning of C# targets may be done using target and source file properties. Specifically the target properties related to Visual Studio (VS_*) are worth a look (for setting toolset versions, root namespaces, assembly icons, ...).

CMake learned to support CUDA as a first-class language that can be enabled via the project() and enable_language() commands.
CUDA is currently supported by the Makefile Generators and the Ninja generator on Linux, macOS, and Windows. Support for the Visual Studio IDE is under development but not included in this release.
The NVIDIA CUDA Toolkit compiler (nvcc) is supported.

The Compile Features functionality now offers meta-features that request compiler modes for specific language standard levels (e.g. cxx_std_11). See CMAKE_C_KNOWN_FEATURES and CMAKE_CXX_KNOWN_FEATURES.
The Compile Features functionality is now aware of C++ 17. No specific features are yet enumerated besides the cxx_std_17 meta-feature.
The Compile Features functionality is now aware of the availability of C99 in gcc since version 3.4.

A new minimal platform file for Fuchsia was added.

The CodeBlocks extra generator may now be used to generate with NMake Makefiles JOM.
The Visual Studio Generators for VS 2013 and above learned to support a host=x64 option in the CMAKE_GENERATOR_TOOLSET value (e.g. via the cmake(1) -T option) to request use of a VS 64-bit toolchain on 64-bit hosts.
The Visual Studio Generators learned to treat files passed to target_link_libraries() whose names end in .targets as MSBuild “targets” files to be imported into generated project files.

...more...
2017-04-11 20:18:54 +00:00
joerg
479bd052ee Recognize libgnuform as valid implementation of a form library to match
devel/ncurses. This is necessary due to cmake's insistance of scanning
PREFIX/lib directly. Bump revision.
2017-01-05 22:34:25 +00:00
adam
82895362e0 Some of the more significant changes in CMake 3.7 are:
CMake now supports Cross Compiling for Android with simple toolchain files.
The “Ninja” generator learned to conditionally support Fortran when using a “ninja” tool that has the necessary features. See generator documentation for details.
The “if()” command gained new boolean comparison operations “LESS_EQUAL”, “GREATER_EQUAL”, “STRLESS_EQUAL”, “STRGREATER_EQUAL”, “VERSION_LESS_EQUAL”, and “VERSION_GREATER_EQUAL”.
The “try_compile()” command source file signature now honors configuration-specific flags (e.g. “CMAKE_<LANG>_FLAGS_DEBUG”) in the generated test project. Previously only the default such flags for the current toolchain were used. See policy “CMP0066”.
“Toolchain files” may now set “CMAKE_EXE_LINKER_FLAGS_INIT”, “CMAKE_SHARED_LINKER_FLAGS_INIT”, and “CMAKE_MODULE_LINKER_FLAGS_INIT” variables to initialize the “CMAKE_EXE_LINKER_FLAGS”, “CMAKE_SHARED_LINKER_FLAGS”, and “CMAKE_MODULE_LINKER_FLAGS” cache entries the first time a language is enabled in a build tree.
CTest now supports test fixtures through the new “FIXTURES_SETUP”, “FIXTURES_CLEANUP” and “FIXTURES_REQUIRED” test properties. When using regular expressions or “–rerun-failed” to limit the tests to be run, a fixture’s setup and cleanup tests will automatically be added to the execution set if any test requires that fixture.
We no longer provide Linux i386 binaries for download from “cmake.org” for new versions of CMake.
Vim support files “cmake-indent.vim”, “cmake-syntax.vim”, and “cmake-help.vim” have been removed in favor of the files now provided from the vim-cmake-syntax project.
Support for building CMake itself with some compilers was dropped:
Visual Studio 7.1 and 2005 — superseded by VS 2008 and above
MinGW.org mingw32 — superseded by MSYS2 mingw32 and mingw64
CMake still supports generating build systems for other projects using these compilers.
2016-11-12 07:49:18 +00:00
prlw1
825c535bd6 According to Brad King, cmake developer, who kindly reviewed our patches:
The SIZEOF_VOID_P macro is defined by code in CMakeLists.txt using
the value of CMAKE_SIZEOF_VOID_P.  The former is a C++ preprocessor
macro.  The latter is only visible in CMake code.
2016-08-03 15:53:38 +00:00
prlw1
d95561844a Update cmake to 3.6.1
CMake 3.6 Release Notes
***********************

Changes made since CMake 3.5 include the following.

New Features
============

Generators
----------

* The :generator:`Ninja` generator learned to produce phony targets
  of the form ``sub/dir/all`` to drive the build of a subdirectory.
  This is equivalent to ``cd sub/dir; make all`` with
  :ref:`Makefile Generators`.

* The :generator:`Ninja` generator now includes system header files in build
  dependencies to ensure correct re-builds when system packages are updated.

* The :generator:`Visual Studio 14 2015` generator learned to support the
  Clang/C2 toolsets, e.g. with the ``-T v140_clang_3_7`` option.
  This feature is experimental.

Commands
--------

* The :command:`add_custom_command` and :command:`add_custom_target` commands
  learned how to use the :prop_tgt:`CROSSCOMPILING_EMULATOR` executable
  target property.

* The :command:`install` command learned a new ``EXCLUDE_FROM_ALL`` option
  to leave installation rules out of the default installation.

* The :command:`list` command gained a ``FILTER`` sub-command to filter
  list elements by regular expression.

* The :command:`string(TIMESTAMP)` and :command:`file(TIMESTAMP)`
  commands gained support for the ``%s`` placeholder.  This is
  the number of seconds since the UNIX Epoch.

Variables
---------

* A :variable:`CMAKE_DEPENDS_IN_PROJECT_ONLY` variable was introduced
  to tell :ref:`Makefile Generators` to limit dependency scanning only
  to files in the project source and build trees.

* A new :variable:`CMAKE_HOST_SOLARIS` variable was introduced to
  indicate when CMake is running on an Oracle Solaris host.

* A :variable:`CMAKE_<LANG>_STANDARD_INCLUDE_DIRECTORIES` variable was
  added for use by toolchain files to specify system include directories
  to be appended to all compiler command lines.

* The :variable:`CMAKE_<LANG>_STANDARD_LIBRARIES` variable is now documented.
  It is intended for use by toolchain files to specify system libraries to be
  added to all linker command lines.

* A :variable:`CMAKE_NINJA_OUTPUT_PATH_PREFIX` variable was introduced
  to tell the :generator:`Ninja` generator to configure the generated
  ``build.ninja`` file for use as a ``subninja``.

* A :variable:`CMAKE_TRY_COMPILE_PLATFORM_VARIABLES` variable was
  added for use by toolchain files to specify platform-specific
  variables that must be propagated by the :command:`try_compile`
  command into test projects.

* A :variable:`CMAKE_TRY_COMPILE_TARGET_TYPE` variable was added
  to optionally tell the :command:`try_compile` command to build
  a static library instead of an executable.  This is useful for
  cross-compiling toolchains that cannot link binaries without
  custom flags or scripts.

Properties
----------

* A :prop_tgt:`DEPLOYMENT_REMOTE_DIRECTORY` target property was introduced
  to tell the :generator:`Visual Studio 9 2008` and
  :generator:`Visual Studio 8 2005` generators to generate the "remote
  directory" for WinCE project deployment and debugger settings.

* A :prop_tgt:`<LANG>_CLANG_TIDY` target property and supporting
  :variable:`CMAKE_<LANG>_CLANG_TIDY` variable were introduced to tell the
  :ref:`Makefile Generators` and the :generator:`Ninja` generator to run
  ``clang-tidy`` along with the compiler for ``C`` and ``CXX`` languages.

* A :prop_test:`TIMEOUT_AFTER_MATCH` test property was introduced to
  optionally tell CTest to enforce a secondary timeout after matching
  certain output from a test.

* A :prop_tgt:`VS_CONFIGURATION_TYPE` target property was introduced
  to specify a custom project file type for :ref:`Visual Studio Generators`
  supporting VS 2010 and above.

* A :prop_dir:`VS_STARTUP_PROJECT` directory property was introduced
  to specify for :ref:`Visual Studio Generators` the default startup
  project for generated solutions (``.sln`` files).

Modules
-------

* The :module:`CMakePushCheckState` module now pushes/pops/resets the variable
  ``CMAKE_EXTRA_INCLUDE_FILE`` used in :module:`CheckTypeSize`.

* The :module:`ExternalProject` module leared the ``GIT_SHALLOW 1``
  option to perform a shallow clone of a Git repository.

* The :module:`ExternalProject` module learned to initialize Git submodules
  recursively and also to initialize new submodules on updates.  Use the
  ``GIT_SUBMODULES`` option to restrict which submodules are initalized and
  updated.

* The :module:`ExternalProject` module leared the ``DOWNLOAD_NO_EXTRACT 1``
  argument to skip extracting the file that is downloaded (e.g., for
  self-extracting shell installers or ``.msi`` files).

* The :module:`ExternalProject` module now uses ``TLS_VERIFY`` when fetching
  from git repositories.

* The :module:`FindBLAS` and :module:`FindLAPACK` modules learned to
  support `OpenBLAS <http://www.openblas.net>`__.

* The :module:`FindCUDA` module learned to find the ``cublas_device`` library.

* The :module:`FindGTest` module ``gtest_add_tests`` function now causes
  CMake to automatically re-run when test sources change so that they
  can be re-scanned.

* The :module:`FindLTTngUST` module was introduced to find the LTTng-UST
  library.

* The :module:`FindPkgConfig` module learned to optionally create imported
  targets for the libraries it has found.

* The :module:`FindProtobuf` module learned to provide a ``Protobuf_VERSION``
  variable and check the version number requested in a :command:`find_package`
  call.

* The :module:`InstallRequiredSystemLibraries` module learned a new
  ``CMAKE_INSTALL_UCRT_LIBRARIES`` option to enable app-local deployment
  of the Windows Universal CRT libraries with Visual Studio 2015.

Platforms
---------

* The Clang compiler is now supported on CYGWIN.

* Support was added for the Bruce C Compiler with compiler id ``Bruce``.

CTest
-----

* The :command:`ctest_update` command now looks at the
  :variable:`CTEST_GIT_INIT_SUBMODULES` variable to determine whether
  submodules should be updated or not before updating.

* The :command:`ctest_update` command will now synchronize submodules on an
  update. Updates which add submodules or change a submodule's URL will now be
  pulled properly.

CPack
-----

* The :module:`CPackDeb` module learned how to handle ``$ORIGIN``
  in ``CMAKE_INSTALL_RPATH`` when :variable:`CPACK_DEBIAN_PACKAGE_SHLIBDEPS`
  is used for dependency auto detection.

* The :module:`CPackDeb` module learned how to generate ``DEBIAN/shlibs``
  contorl file when package contains shared libraries.

* The :module:`CPackDeb` module learned how to generate ``DEBIAN/postinst`` and
  ``DEBIAN/postrm`` files if the package installs libraries in
  ldconfig-controlled locations (e.g. ``/lib/``, ``/usr/lib/``).

* The :module:`CPackDeb` module learned how to generate dependencies between
  Debian packages if multi-component setup is used and
  :variable:`CPACK_COMPONENT_<compName>_DEPENDS` variables are set.
  For backward compatibility this feature is disabled by default.
  See :variable:`CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS`.

* The :module:`CPackDeb` module learned how to set custom package file names
  including how to generate properly-named Debian packages::

    <PackageName>_<VersionNumber>-<DebianRevisionNumber>_<DebianArchitecture>.deb

  For backward compatibility this feature is disabled by default. See
  :variable:`CPACK_DEBIAN_FILE_NAME` and
  :variable:`CPACK_DEBIAN_<COMPONENT>_FILE_NAME`.

* The :module:`CPackDeb` module learned how to set the package release number
  (``DebianRevisionNumber`` in package file name when used in combination with
  ``DEB-DEFAULT`` value set by :variable:`CPACK_DEBIAN_FILE_NAME`).  See
  :variable:`CPACK_DEBIAN_PACKAGE_RELEASE`.

* The :module:`CPackDeb` module learned how to set the package architecture
  per-component.  See :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_ARCHITECTURE`.

* The :module:`CPackDMG` module learned a new option to tell the CPack
  ``DragNDrop`` generaor to skip the ``/Applications`` symlink.
  See the :variable:`CPACK_DMG_DISABLE_APPLICATIONS_SYMLINK` variable.

* The :module:`CPackIFW` module gained a new
  :command:`cpack_ifw_update_repository` command to update a QtIFW-specific
  repository from a remote repository.

* The :module:`CPackRPM` module learned how to set RPM ``dist`` tag as part of
  RPM ``Release:`` tag when enabled (mandatory on some Linux distributions for
  e.g. on Fedora).
  See :variable:`CPACK_RPM_PACKAGE_RELEASE_DIST`.

* The :module:`CPackRPM` module learned how to set default values for owning
  user/group and file/directory permissions of package content.
  See :variable:`CPACK_RPM_DEFAULT_USER`, :variable:`CPACK_RPM_DEFAULT_GROUP`,
  :variable:`CPACK_RPM_DEFAULT_FILE_PERMISSIONS`,
  :variable:`CPACK_RPM_DEFAULT_DIR_PERMISSIONS` and their per component
  counterparts.

* The :module:`CPackRPM` module learned how to set user defined package file
  names, how to specify that rpmbuild should decide on file name format as
  well as handling of multiple rpm packages generated by a single user defined
  spec file.
  See :variable:`CPACK_RPM_PACKAGE_NAME` and
  :variable:`CPACK_RPM_<component>_PACKAGE_NAME`.

* The :module:`CPackRPM` module learned how to correctly handle symlinks
  that are pointing outside generated packages.

Other
-----

* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
  is now aware of features supported by Intel C++ compilers versions 12.1
  through 16.0 on UNIX platforms.

Deprecated and Removed Features
===============================

* The :module:`CMakeForceCompiler` module and its macros are now deprecated.
  See module documentation for an explanation.

* The :command:`find_library`, :command:`find_path`, and :command:`find_file`
  commands no longer search in installation prefixes derived from the ``PATH``
  environment variable on non-Windows platforms.  This behavior was added in
  CMake 3.3 to support Windows hosts but has proven problematic on UNIX hosts.
  Users that keep some ``<prefix>/bin`` directories in the ``PATH`` just for
  their tools do not necessarily want any supporting ``<prefix>/lib``
  directories searched.  One may set the ``CMAKE_PREFIX_PATH`` environment
  variable with a :ref:`;-list <CMake Language Lists>` of prefixes that are
  to be searched.

* The :generator:`Visual Studio 7 .NET 2003` generator is now
  deprecated and will be removed in a future version of CMake.

* The :generator:`Visual Studio 7` generator (for VS .NET 2002) has been
  removed.  It had been deprecated since CMake 3.3.

* The :generator:`Visual Studio 6` generator has been removed.
  It had been deprecated since CMake 3.3.

Other Changes
=============

* The precompiled OS X binary provided on ``cmake.org`` now requires
  OS X 10.7 or newer.

* On Linux and FreeBSD platforms, when building CMake itself from source and
  not using a system-provided libcurl, OpenSSL is now used by default if it is
  found on the system.  This enables SSL/TLS support for commands supporting
  network communication via ``https``, such as :command:`file(DOWNLOAD)`,
  :command:`file(UPLOAD)`, and :command:`ctest_submit`.

* The :manual:`cmake(1)` ``--build`` command-line tool now rejects multiple
  ``--target`` options with an error instead of silently ignoring all but the
  last one.

* :prop_tgt:`AUTOMOC` now diagnoses name collisions when multiple source
  files in different directories use ``#include <moc_foo.cpp>`` with the
  same name (because the generated ``moc_foo.cpp`` files would collide).

* The :module:`FindBISON` module ``BISON_TARGET`` macro now supports
  special characters by passing the ``VERBATIM`` option to internal
  :command:`add_custom_command` calls.  This may break clients that
  added escaping manually to work around the bug.

* The :module:`FindFLEX` module ``FLEX_TARGET`` macro now supports
  special characters by passing the ``VERBATIM`` option to internal
  :command:`add_custom_command` calls.  This may break clients that
  added escaping manually to work around the bug.

* The :module:`FindProtobuf` module input and output variables were all renamed
  from ``PROTOBUF_`` to ``Protobuf_`` for consistency with other find modules.
  Input variables of the old case will be honored if provided, and output
  variables of the old case are always provided.

* The :module:`CPackRPM` module now supports upper cased component
  names in per component CPackRPM specific variables.
  E.g. component named ``foo`` now expects component specific
  variable to be ``CPACK_RPM_FOO_PACKAGE_NAME`` while before
  it expected ``CPACK_RPM_foo_PACKAGE_NAME``.
  Upper cased component name part in variables is compatible
  with convention used for other CPack variables.
  For back compatibility old format of variables is still valid
  and preferred if both versions of variable are set, but the
  preferred future use is upper cased component names in variables.
  New variables that will be added to CPackRPM in later versions
  will only support upper cased component variable format.

* The CPack NSIS generator's configuration file template was fixed to
  quote the path to the uninstaller tool used by the
  :variable:`CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL` option.
  This avoids depending on an insecure Windows feature to run an
  uninstaller tool with a space in the path.
2016-07-28 17:44:43 +00:00
adam
9ae0b14ba5 Changes 3.5.0:
The cmake-gui(1) gained options to control warnings about deprecated functionality.
The cmake-gui(1) learned an option to set the toolset to be used with VS IDE and Xcode generators, much like the existing -T option to cmake(1).
The cmake-gui(1) gained a Regular Expression Explorer which may be used to create and evaluate regular expressions in real-time. The explorer window is available via the Tools menu.
The -Wdev and -Wno-dev cmake(1) options now also enable and suppress the deprecated warnings output by default.
The suppression of developer warnings as errors can now be controlled with the new -Werror=dev and -Wno-error=dev cmake(1) options.
The cmake(1) -E command-line tools copy, copy_if_different, copy_directory, and make_directory learned to support multiple input files or directories.
The cmake_parse_arguments() command is now implemented natively. The CMakeParseArguments module remains as an empty placeholder for compatibility.
The install(DIRECTORY) command learned to support generator expressions in the list of directories.
The CMAKE_ERROR_DEPRECATED variable can now be set using the -Werror=deprecated and -Wno-error=deprecated cmake(1) options.
The CMAKE_WARN_DEPRECATED variable can now be set using the -Wdeprecated and -Wno-deprecated cmake(1) options.
The VS_GLOBAL_<variable> target property is now implemented for VS 2010 and above. Previously it worked only in VS 2008 and below.
The ExternalProject module learned a new GIT_REMOTE_NAME option to control the git clone --origin value.
The FindBoost module now provides imported targets such as Boost::boost and Boost::filesystem.
The FindFLEX module FLEX_TARGET macro learned a new DEFINES_FILE option to specify a custom output header to be generated.
The FindGTest module now provides imported targets.
The FindGTK2 module, when GTK2_USE_IMPORTED_TARGETS is enabled, now sets GTK2_LIBRARIES to contain the list of imported targets instead of the paths to the libraries. Moreover it now sets a new GTK2_TARGETS variable containing all the targets imported.
The FindOpenMP module learned to support Clang.
The FindOpenSSL module gained a new OPENSSL_MSVC_STATIC_RT option to search for libraries using the MSVC static runtime.
The FindPNG module now provides imported targets.
The FindTIFF module now provides imported targets.
A FindXalanC module was introduced to find the Apache Xalan-C++ XSL transform processing library.
The FindXercesC module now provides imported targets.
2016-03-14 10:49:55 +00:00
joerg
dd74775634 initscr is supposed to return NULL on error. Some versions of ncurses at
least like to play nanny and error out internally, but catch those
errors explicitly. Stops segfault when using NetBSD curses with invalid
TERM settings.
2015-12-11 19:23:22 +00:00
wiz
f2268ee5bf Update cmake to 3.4.0:
CMake 3.4 Release Notes
***********************

Changes made since CMake 3.3 include the following.

New Features
============

Generators
----------

* The :generator:`Visual Studio 14 2015` generator learned to select
  a Windows 10 SDK based on the value of the :variable:`CMAKE_SYSTEM_VERSION`
  variable and the SDKs available on the host.

* CMake learned rudimentary support for the Apple Swift language.  When using
  the :generator:`Xcode` generator with Xcode 6.1 or higher, one may enable
  the ``Swift`` language with the :command:`enable_language` command or the
  :command:`project` command (this is an error with other generators or when
  Xcode is too old).  Then one may list ``.swift`` source files in targets
  for compilation.

Commands
--------

* The :command:`find_program` command learned a ``NAMES_PER_DIR``
  option to consider all given ``NAMES`` in each directory before
  moving on to the next directory.

* The :command:`get_filename_component` command learned a new ``BASE_DIR``
  subcommand.  This is used to specify a base directory when calculating an
  absolute path from a relative path.

* The :command:`if` command learned a new ``TEST`` operator that evaluates
  to true if a given test name has been defined by the :command:`add_test`
  command.  See policy :policy:`CMP0064`.

* The :command:`install(DIRECTORY)` command ``DESTINATION`` option learned to
  support :manual:`generator expressions <cmake-generator-expressions(7)>`.

* The :command:`install(FILES)` command ``DESTINATION`` option learned to
  support :manual:`generator expressions <cmake-generator-expressions(7)>`.

* The :command:`string` command learned a new ``APPEND`` subcommand.

Variables
---------

* The :ref:`Makefile Generators` and the :generator:`Ninja` generator
  learned to add compiler launcher tools like distcc and ccache along
  with the compiler for ``C`` and ``CXX`` languages.  See the
  :variable:`CMAKE_<LANG>_COMPILER_LAUNCHER` variable and
  :prop_tgt:`<LANG>_COMPILER_LAUNCHER` target property for details.

* New :variable:`CMAKE_LINK_SEARCH_START_STATIC` and
  :variable:`CMAKE_LINK_SEARCH_END_STATIC` variables were
  introduced to initialize the
  :prop_tgt:`LINK_SEARCH_START_STATIC` and
  :prop_tgt:`LINK_SEARCH_END_STATIC` target properties,
  respectively.

Properties
----------

* :ref:`Visual Studio Generators` learned to support additonal
  target properties to customize projects for NVIDIA Nsight
  Tegra Visual Studio Edition:

  * :prop_tgt:`ANDROID_ANT_ADDITIONAL_OPTIONS`
  * :prop_tgt:`ANDROID_ARCH`
  * :prop_tgt:`ANDROID_ASSETS_DIRECTORIES`
  * :prop_tgt:`ANDROID_JAR_DEPENDENCIES`
  * :prop_tgt:`ANDROID_JAR_DIRECTORIES`
  * :prop_tgt:`ANDROID_JAVA_SOURCE_DIR`
  * :prop_tgt:`ANDROID_NATIVE_LIB_DEPENDENCIES`
  * :prop_tgt:`ANDROID_NATIVE_LIB_DIRECTORIES`
  * :prop_tgt:`ANDROID_PROCESS_MAX`
  * :prop_tgt:`ANDROID_PROGUARD`
  * :prop_tgt:`ANDROID_PROGUARD_CONFIG_PATH`
  * :prop_tgt:`ANDROID_SECURE_PROPS_PATH`
  * :prop_tgt:`ANDROID_SKIP_ANT_STEP`
  * :prop_tgt:`ANDROID_STL_TYPE`

* The :prop_tgt:`ARCHIVE_OUTPUT_DIRECTORY`,
  :prop_tgt:`LIBRARY_OUTPUT_DIRECTORY`, and
  :prop_tgt:`RUNTIME_OUTPUT_DIRECTORY` target properties learned to
  support :manual:`generator expressions <cmake-generator-expressions(7)>`.

* The :prop_tgt:`SOURCE_DIR` and :prop_tgt:`BINARY_DIR` target properties
  were introduced to allow project code to query where a target is defined.

* The :prop_tgt:`OUTPUT_NAME` target property and its variants learned to
  support :manual:`generator expressions <cmake-generator-expressions(7)>`.

* A :prop_gbl:`TARGET_MESSAGES` global property was added to tell the
  :ref:`Makefile Generators` whether to generate commands to print output
  after each target is completed.

* On Windows with MS-compatible tools, CMake learned to optionally
  generate a module definition (``.def``) file for ``SHARED`` libraries.
  See the :prop_tgt:`WINDOWS_EXPORT_ALL_SYMBOLS` target property.

Modules
-------

* The :module:`ExternalProject` module :command:`ExternalProject_Add`
  function ``GIT_SUBMODULES`` option now also limits the set of
  submodules that are initialized in addition to the prior behavior
  of limiting the set of submodules that are updated.

* The :module:`ExternalProject` module learned new ``USES_TERMINAL``
  arguments for giving steps exclusive terminal access.  This is
  useful with the :generator:`Ninja` generator to monitor CMake
  superbuild progress and prevent CPU oversubscription.

* The :module:`FindBISON` module ``BISON_TARGET`` macro learned a
  new ``DEFINES_FILE`` option to specify a custom output header
  to be generated.

* The :module:`FindHDF5` module learend a new ``HDF5_PREFER_PARALLEL``
  option allowing users to specify that a parallel HDF5 tool is
  preferred if both are available.

* The :module:`FindIce` module now provides imported targets.

* The :module:`FindJava` module learned to optionally find
  the ``idlj`` and ``jarsigner`` tools.

* The :module:`FindOpenSSL` module now provides imported targets.

* The :module:`FindOpenSSL` module learned a new ``OPENSSL_USE_STATIC_LIBS``
  option to search only for static libraries.

* The :module:`FindPkgConfig` learned a new :command:`pkg_get_variable`
  command which may be used to query for arbitrary variables from a package
  (such as for related tools or data and plugin install paths).

* The :module:`FindProtobuf` module gained a new
  :command:`protobuf_generate_python` function to generate python
  sources from ``.proto`` files.

* The :module:`FindTIFF` module learned to search separately for
  debug and release variants.

* The :module:`FindwxWidgets` module learned to support version requests.

* The :module:`FindXercesC` module learned to search separately for
  debug and release variants.

* The :module:`FindZLIB` module learned to search separately for
  debug and release variants.

* The :module:`GNUInstallDirs` module learned special default values
  for certain installation prefixes according to the `GNU Coding
  Standards`_ and the `Filesystem Hierarchy Standard`_.

* The :module:`UseJava` module ``add_jar`` function learned
  to support response files (e.g. ``@srcs.txt``) for source
  specification.

* The :module:`UseJava` module ``install_jar`` function learned
  new ``DESTINATION`` and ``COMPONENT`` options to specify
  the corresponding :command:`install` command options.

* The :module:`UseJava` module gained a new ``create_javah``
  function to create C headers from Java classes.

.. _`GNU Coding Standards`: https://www.gnu.org/prep/standards/html_node/Directory-Variables.html
.. _`Filesystem Hierarchy Standard`: https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html

Generator Expressions
---------------------

* A new ``$<SHELL_PATH:...>``
  :manual:`generator expression <cmake-generator-expressions(7)>`
  has been added.

CTest
-----

* CTest learned to optionally measure the CPU load during parallel
  testing and avoid starting tests that may cause the load to exceed
  a given threshold.  See the :manual:`ctest(1)` command ``--test-load``
  option, the ``TestLoad`` setting of the :ref:`CTest Test Step`,
  the :variable:`CTEST_TEST_LOAD` variable, and the ``TEST_LOAD``
  option of the :command:`ctest_test` command.

* :manual:`ctest(1)` learned options
  ``--test-output-size-passed`` and ``--test-output-size-failed``
  to customize the limit on test output size submitted when
  running as a :ref:`Dashboard Client`.

CPack
-----

* The :module:`CPackDeb` module learned to set package dependencies
  per component.  See variables:

  * :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_BREAKS`
  * :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_CONFLICTS`
  * :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_ENHANCES`
  * :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_PREDEPENDS`
  * :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_PROVIDES`
  * :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_RECOMMENDS`
  * :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_REPLACES`
  * :variable:`CPACK_DEBIAN_<COMPONENT>_PACKAGE_SUGGESTS`

* The :module:`CPack` module learned to package empty directories.

* The :module:`CPack` module gained a new setting, ``CPACK_VERBATIM_VARIABLES``,
  which can be used to ensure the cpack program receives the settings' values
  exactly as they were set, even if they contain CMake-special characters.
  For compatibility, it's off by default.

Other
-----

* The :manual:`Compile Features <cmake-compile-features(7)>` functionality
  is now aware of features supported by GNU C compilers on Windows.

* CMake learned to honor ``*.manifest`` source files with MSVC tools.
  Manifest files named as sources of ``.exe`` and ``.dll`` targets
  will be merged with linker-generated manifests and embedded in the
  binary.

* The `Concurrent Fortran 77 <https://ccur.com>`__ compiler is now supported.
  Its :variable:`compiler id <CMAKE_<LANG>_COMPILER_ID>` is ``CCur``.

* :manual:`cmake(1)` gained a new ``--trace-expand`` command line option
  that is like ``--trace`` but expands variable references in the output.

Deprecated and Removed Features
===============================

* The :module:`CMakeExpandImportedTargets` module is now documented
  as deprecated.  See module documentation for an explanation.

* The :variable:`CMAKE_USE_RELATIVE_PATHS` variable no longer has any
  effect.  Previously it was partially implemented and unreliable.

Other Changes
=============

* The :module:`CheckFunctionExists`, :module:`CheckLibraryExists`,
  :module:`CheckSymbolExists`, and :module:`FindThreads` modules learned to
  work in environments where only CXX is enabled.

* The :module:`CPackDeb` module now correctly excludes symlinks during package
  checksum calculation.

* The :module:`CPackDeb` no longer uses fakeroot and system tar program for
  packaging.

* The :module:`CPack` module no longer mangles settings with CMake-special
  characters when they're used as defaults for other settings. The macro
  ``cpack_set_if_not_set``, which was responsible for this, is now deprecated.

* CMake no longer links executables with flags to export symbols
  unless the :prop_tgt:`ENABLE_EXPORTS` target property is set.
  See policy :policy:`CMP0065`.

* The ``SONAME`` field is no longer set for ``MODULE`` libraries
  created with the :command:`add_library` command.  ``MODULE``
  libraries are meant for explicit dynamic loading at runtime.
  They cannot be linked so ``SONAME`` is not useful.

* The internal :variable:`CMAKE_<LANG>_COMPILE_OBJECT` rule variable now
  substitutes compiler include flags in a separate ``<INCLUDES>`` placeholder
  instead of the main ``<FLAGS>`` placeholder.
2015-11-17 12:12:11 +00:00
joerg
78268fcbb7 Depend on ncurses for !NetBSD and NetBSD before 6.0. Do not force
ncurses on the cmake side. Avoids picking up ncurses from pkgsrc when it
is installed, but not intended to be used by cmake.
2015-09-15 13:08:37 +00:00