Automatic conversion of the NetBSD pkgsrc CVS module, use with care
Find a file
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
archivers py-lz4: updated to 3.1.1 2020-11-19 10:37:24 +00:00
audio qsynth: Update to 0.6.3 2020-11-24 17:39:57 +00:00
benchmarks *: Recursive revbump from textproc/icu-68.1 2020-11-05 09:07:25 +00:00
biology *: Recursive revbump from textproc/icu-68.1 2020-11-05 09:07:25 +00:00
bootstrap Bootstrap: Fix bootstrap on FreeBSD 12.1, likely broken by an issue in lld. 2020-10-28 16:52:43 +00:00
cad *: Recursive revbump from textproc/icu-68.1 2020-11-05 09:07:25 +00:00
chat mautrix-telegram: Add py-test-runner to TOOL_DEPENDS 2020-11-25 08:00:19 +00:00
comms *: Recursive revbump from textproc/icu-68.1 2020-11-05 09:07:25 +00:00
converters sratom: Update to 0.6.6 2020-11-24 13:52:37 +00:00
cross (cross/avr-libc) Adapt to doxygen 1.8.20, PKGREVISION++ 2020-10-06 02:06:05 +00:00
databases postgis: Update to 3.0.3 2020-11-25 01:04:53 +00:00
devel cmake cmake-gui: updated to 3.19.1 2020-11-25 10:33:28 +00:00
distfiles
doc doc: Updated databases/postgresql-postgis2 to 3.0.3 2020-11-25 01:05:00 +00:00
editors nvi2: Update to 2.2.0 2020-11-24 18:27:00 +00:00
emulators stella: Update to 6.4 2020-11-24 14:05:22 +00:00
filesystems fuse-exfat: Update HOMEPAGE 2020-11-24 15:03:22 +00:00
finance ledger2beancount: Update to 2.5 2020-11-18 22:39:15 +00:00
fonts unifont: update to 13.0.04. 2020-11-23 16:03:52 +00:00
games xscorch: Needs pkg-config 2020-11-25 08:05:29 +00:00
geography (geography/geoclue) Fix build problem: msgfmt: unknown option -- desktop 2020-11-15 14:53:24 +00:00
graphics scrot: Update to 1.4 2020-11-24 17:13:08 +00:00
ham chirp: update to 20201121 2020-11-25 01:01:15 +00:00
inputmethod *: Recursive revbump from textproc/icu-68.1 2020-11-05 09:07:25 +00:00
lang mozjs78: fix builds on some 32-bit architectures 2020-11-25 00:40:16 +00:00
licenses Add evilwm-license 2020-10-11 08:53:28 +00:00
mail Fix RCS Id. 2020-11-23 18:17:22 +00:00
math *: recursive bump for poppler 20.11.0 2020-11-21 09:34:53 +00:00
mbone *: bump PKGREVISION for perl-5.32. 2020-08-31 18:06:29 +00:00
meta-pkgs gnome3: Needs accountsservice 2020-11-11 19:23:05 +00:00
misc libreoffice: Fix comments about security/gpgme 2020-11-24 14:33:22 +00:00
mk Run without errors when LICENSE is undefined. 2020-11-19 09:16:38 +00:00
multimedia ssr: Update to 0.4.2 2020-11-24 14:18:29 +00:00
net mitmproxy: Update to 5.3.0 2020-11-24 17:06:50 +00:00
news sfeed: Update to 0.9.20 2020-11-20 14:38:52 +00:00
packages
parallel parallel: Update to 20201122 2020-11-24 18:14:20 +00:00
pkgtools Revbump all Go packages after go115 update 2020-11-13 19:26:03 +00:00
print *: recursive bump for poppler 20.11.0 2020-11-21 09:34:53 +00:00
regress *: bump PKGREVISION for perl-5.32. 2020-08-31 18:06:29 +00:00
security gnome-keyring: Add docbook-xsl so this works without a 'net connection 2020-11-25 08:12:35 +00:00
shells Update to 6.7.1. From the git log: 2020-10-26 10:21:47 +00:00
sysutils shmux: Update to 1.0.3 2020-11-24 14:24:39 +00:00
templates
textproc serd: Update to 0.30.6 2020-11-24 14:29:06 +00:00
time wmtime: Update to 1.4 2020-11-24 11:36:31 +00:00
wm fvwm3: Update to 1.0.1 2020-11-23 13:43:52 +00:00
www nginx-devel: Update to 1.19.5 2020-11-24 20:11:07 +00:00
x11 ratmen: Update to 2.2.3 2020-11-24 17:33:29 +00:00
Makefile Makefile: fix outdated documentation 2020-02-12 15:04:51 +00:00
pkglocate
README.md stray comma 2020-11-04 14:39:49 +00:00

pkgsrc

pkgsrc is a framework for building software for a variety of UNIX-like systems.

It produces binary packages, which can be managed with tools such as pkgin. pkgsrc is highly configurable, supporting building packages for an arbitrary installation prefix (the default is /usr/pkg), allowing multiple branches to coexist on one machine, a build options framework, and a compiler trasformation framework, among other advanced features. Unprivileged use and installation is also supported.

pkgsrc is the default package manager for NetBSD and SmartOS. It's also supported as a first-class option in OmniOS CE and Oasis Linux.

Bootstrapping

To use pkgsrc on operating systems other than NetBSD, you first need to bootstrap:

cd pkgsrc/bootstrap
./bootstrap

Note that this is only for the most simple case, using pkgsrc's defaults.

Please consult bootstrap/README and bootstrap/README.OS for detailed information about bootstrapping.

Building packages

cd pkgsrc/category/package-name
$PREFIX/bin/bmake install

Where $PREFIX is where you've chosen to install packages (typically /usr/pkg)

On NetBSD, bmake is simply the built-in make tool.

To build packages in bulk, tools such as pkgtools/pbulk and pkgtools/pkg_comp can be used.

Troubleshooting

Latest sources

To fetch the main CVS repository:

cvs -d anoncvs@anoncvs.NetBSD.org:/cvsroot checkout -P pkgsrc

To work in the Git mirror, which is updated every few hours from CVS:

git clone https://github.com/NetBSD/pkgsrc.git