Commit graph

275 commits

Author SHA1 Message Date
Michal Sojka 498b5e578a cmake: Add man and info outputs
By default, the cmake derivation contains the documentation in .rst
format. This format is not well suited for interactive use. Therefore,
we add both man and info outputs and convert the documentation to
these formats using Sphinx.

These formats are enabled by default only in cmake versions for
interactive use (ncurses, Qt), because using Sphinx in the basic
version leads to circular dependency (infinite recursion). Namely,
Sphinx has imagemagick in its checkInputs and imagemagick has several
transitive dependencies, which have cmake in nativeBuildInputs.
2021-06-06 21:49:41 +02:00
Alyssa Ross 02f013b8a4
cmakeWithQt4Gui: drop
Support for Qt 4 was removed in CMake 3.19.0:
https://cmake.org/cmake/help/latest/release/3.19.html#deprecated-and-removed-features
2021-05-12 11:31:12 +00:00
R. RyanTM 7eac452484 cmake: 3.19.6 -> 3.19.7 2021-03-22 21:07:11 +00:00
Sandro 9fe654a203
Merge pull request #112947 from SuperSandro2000/curl-brotli
curl: enable brotli by default
2021-03-08 02:30:32 +01:00
R. RyanTM 57047b485c cmake: 3.19.4 -> 3.19.6 2021-03-06 22:16:11 +01:00
Andrew Childs d16a8753d9 stdenv: set CMAKE_OSX_ARCHITECTURES appropriately 2021-03-02 17:21:07 +09:00
Ivan Babrou 5269ed23f2
cmake: remove obsolete substituteInPlace (#113843)
This `substituteInPlace` was introduced in 2016 when cmake was at v3.4:

* https://github.com/NixOS/nixpkgs/commit/5286c0aebb

In 2018 cmake v3.12.0 changed the code to make it not match anything:

* https://github.com/Kitware/CMake/commit/50b5e9ed13

```
substituteStream(): WARNING: pattern '${PYTHON_EXECUTABLE}' doesn't match anything in file 'Modules/FindCxxTest.cmake'
```

Having it around in 2021 with cmake v3.19.3 doesn't help,
and tests are disabled anyway.
2021-02-21 22:29:45 -05:00
Sandro Jäckel e3d19670a0
curl: enable brotli by default 2021-02-13 00:04:40 +01:00
R. RyanTM 1bfa781657 cmake: 3.19.3 -> 3.19.4 2021-02-11 10:26:17 +01:00
Thomas Tuegel 5590e365e4
qtbase: Check for wrapQtAppsHook in setupHook 2021-01-25 15:56:15 -06:00
Ryan Burns a761d5ed1b cmake: fix build on darwin
Fixes missing CoreFoundation declarations since bump to 3.19.3,
e.g. `error: unknown type name 'CFUUIDRef'`

ApplicationServices.h transitively includes CoreFoundation.h, but as we
patch ApplicationServices out of CMake, the CF symbols were not visible.
Previously this was not a concern, as they were not needed until
d250b67722
2021-01-24 08:45:10 +01:00
Jan Tojnar 01ee4ea574
Merge branch 'master' into staging-next 2021-01-24 00:09:45 +01:00
Ben Siraphob c522fec274 pkgs/development/tools: stdenv.lib -> lib 2021-01-23 20:30:03 +07:00
R. RyanTM 74c652e023 cmake: 3.19.2 -> 3.19.3 2021-01-22 21:33:15 +01:00
Jonathan Ringer 9bb3fccb5b treewide: pkgs.pkgconfig -> pkgs.pkg-config, move pkgconfig to alias.nix
continuation of #109595

pkgconfig was aliased in 2018, however, it remained in
all-packages.nix due to its wide usage. This cleans
up the remaining references to pkgs.pkgsconfig and
moves the entry to aliases.nix.

python3Packages.pkgconfig remained unchanged because
it's the canonical name of the upstream package
on pypi.
2021-01-19 01:16:25 -08:00
Linus Heckemann dfb2a526e3 cmake: 3.19.1 -> 3.19.2 2020-12-25 18:31:09 +01:00
Jonathan Ringer 8f02cddf30 cmake: patch namelink regression
see:
 - https://github.com/NixOS/nixpkgs/issues/106329
 - https://github.com/awslabs/aws-c-common/issues/734
2020-12-11 07:23:28 -08:00
Luke Granger-Brown 31dfbca2d7 cmake: 3.19.0 -> 3.19.1
This fixes issues with building LibreSSL, which is required for the
NixOS tests: https://cmake.org/cmake/help/latest/release/3.19.html#id1

> CMake 3.19.0 compiles source files with the `LANGUAGE` property by
> passing an explicit language flag such as -x c. This is consistent
> with the property’s documented meaning that the source file is written
> in the specified language. However, it can break projects that were
> using the property only to cause the specified language’s compiler to
> be used. This has been reverted to restore behavior from CMake 3.18
> and below.
2020-11-29 13:49:07 +01:00
R. RyanTM 91c6eb509b cmake: 3.18.4 -> 3.19.0 2020-11-26 12:28:45 -08:00
R. RyanTM fad425cfbb cmake: 3.18.2 -> 3.18.4 2020-11-11 15:58:37 +01:00
Vladimír Čunát 336bc8283b
Re-Revert "Merge #101508: libraw: 0.20.0 -> 0.20.2"
This reverts commit c778945806.

I believe this is exactly what brings the staging branch into
the right shape after the last merge from master (through staging-next);
otherwise part of staging changes would be lost
(due to being already reachable from master but reverted).
2020-10-26 08:19:17 +01:00
Vladimír Čunát c778945806
Revert "Merge #101508: libraw: 0.20.0 -> 0.20.2"
I'm sorry; I didn't notice it contained staging commits.

This reverts commit 17f5305b6c, reversing
changes made to a8a018ddc0.
2020-10-25 09:41:51 +01:00
John Ericson 5235a1e1fc Merge remote-tracking branch 'obsidian/cmake-nativeBuildInputs' into cmake-optional-openssl 2020-10-13 19:23:14 -04:00
John Ericson e6294cfb7e cmake: Tighten deps
- OpenSSL is evidentally an optional dep. I guess pkg-config found it
   before because it was a transitive dep?

 - `zstd` and cross-built CMake can get by with a `cmakeMinimal that we
   use during bootstrapping, so let's restrict to that.
2020-10-02 15:52:11 +00:00
John Ericson 54b7d5266b cmake: Don't be target sensative
pkg-config now has a target-sensative wrapper. We shouldn't rebuild
CMake because that wrapper changes. The setup hook should also be a
build time dep.

Fix #99325
2020-10-02 15:02:58 +00:00
Nikolay Korotkiy 3106c30903 cmake: fix CMAKE_FIND_FRAMEWORK 2020-08-29 13:37:56 +02:00
Michael Weiss b730ef35f1 cmake: 3.18.1 -> 3.18.2 2020-08-27 08:48:09 +02:00
R. RyanTM 4005fe7f55 cmake: 3.18.0 -> 3.18.1 2020-08-15 08:33:21 +02:00
Michael Weiss 57f0574595
cmake: Add a patch to fix a regression since CMake 3.18
This fixes all CMake builds that use target_precompile_headers() and
as a result fail since CMake 3.18 with e.g.:
g++: error: unrecognized command line option '-Xarch_x86_64'; did you mean '-march=x86-64'?

Fix #94905.

CMake references:
- https://gitlab.kitware.com/cmake/cmake/-/issues/21072
- https://gitlab.kitware.com/cmake/cmake/-/merge_requests/5118
2020-08-13 12:50:12 +02:00
Alyssa Ross cec26d6391
cmake: fix grep in setupHook
This produced a warning:

> grep: Invalid range end

In a [], - has to come last.

Reported-by: Daniël de Kok <me@danieldk.eu>
Fixes: 75fdc1ced6
2020-08-08 15:12:12 +00:00
Frederik Rietdijk cee7df4846 Merge staging-next into staging 2020-07-30 18:28:15 +02:00
Matthew Bauer 1a3b07cf8e Merge commit 'b53902f535f2c63d71e916b9de22dbcfeec9d99e' into staging 2020-07-29 18:24:08 -05:00
Nikolay Korotkiy b53902f535
cmake: fix CMAKE_FIND_FRAMEWORK 2020-07-28 19:05:43 +03:00
Ryan Burns 3a57356721 cmake: 3.17.3 -> 3.18.0 2020-07-26 18:57:06 +02:00
Jan Tojnar 75fdc1ced6
cmake.setupHook: define shareDocName
The docdir flag needs to include `PROJECT_NAME` according to [GNU guidelines]. We are passing
`-DCMAKE_INSTALL_DOCDIR=${!outputDoc}/share/doc/${shareDocName}` but `$shareDocName` was unset.

The `multiple-outputs.sh` setup hook actually only defines `shareDocName` as a local variable
so it was not available for cmake setup hook. Making it global would be of limited usability,
since it primarily tries to extract the project name from configure script.
Additionally, it would not be set because the setup hook defines `setOutputFlags=`,
preventing the function defining `shareDocName` from running. And lastly, the function
would not run for single-output derivations.

Previously, we tried [not disabling `setOutputFlags`] and passing the directory flags
only for multi-output derivations that do not disable `setOutputFlags` but that meant having
two different branches of code, making it harder to check correctness. The multi-output
one did in fact not work due to aforementioned undefined `shareDocName`. It also broke
derivations that set `setOutputFlags=` like [`qtModule` function does] (probably
because some Qt modules have configure scripts incompatible with `configureFlags` defined
by `multiple-outputs.sh` setup hook). For that reason, it was [reverted], putting us back to start.

Let’s try to extract the project name from CMake in the cmake setup hook.

CMake has a `-L` flag for dumping variables but `PROJECT_NAME` did not seem to be among them
when I tested, so I had to resort to parsing the `CMakeLists.txt` file.

The extraction function is limited, it does not deal with

* project name on different line from the `project(` command opening
    - that will just not get matched so we will fall back to
      using the derivation name
* variable interpolation
    - we will just fall back to using derivation name when the extracted
      `project_name` contains a dollar character
* multiple [`project`] commands
    - The command sets `PROJECT_NAME` variable anew with each call, so the
      last `project` call before `include(GNUInstallDirs)` command will be used
      when the included module would [cache the `CMAKE_INSTALL_DOCDIR` variable].
      We will just take the first discovered `project` command for simplicity.
      Hopefully, there are not many projects that use multiple `project` calls
      before including `GNUInstallDirs`.

In either case, we will have some subdirectory so the conflicts will be minimized.

[GNU guidelines]: https://www.gnu.org/prep/standards/html_node/Directory-Variables.html#index-docdir
[not disabling `setOutputFlags`]: be1b22538a
[`qtModule` function  does]: https://github.com/NixOS/nixpkgs/pull/12740
[reverted]: https://github.com/NixOS/nixpkgs/pull/92298
[`PROJECT_NAME`]: https://cmake.org/cmake/help/v3.18/variable/PROJECT_NAME.html
[`project`]: https://cmake.org/cmake/help/v3.18/command/project.html
[cache the `CMAKE_INSTALL_DOCDIR` variable]: 92e30d576d/Modules/GNUInstallDirs.cmake (L298-L299)
2020-07-16 04:38:07 +02:00
Jan Tojnar cfe7e12d38
Revert "cmake: only set output paths with multiple outputs"
This reverts commit be1b22538a.

The commit broke Qt modules using CMake because they disable setOutputFlags.

There is no need to have these flags limited to multiple output derivations since it
should just work. If it does not, it is a bug that should be fixed as per
https://github.com/jtojnar/cmake-snips#assuming-cmake_install_dir-is-relative-path
Likewise, having a variable to disable passing the flags is also unnecessary,
since CMake, unlike some configure scripts, ignores unknown flags. And if a person
does not like the values, they can just override them by passing the offending
flag with a different value to cmakeFlags.
2020-07-05 19:01:53 +02:00
Alyssa Ross be1b22538a cmake: only set output paths with multiple outputs
This brings cmake inline with the behaviour used for configure
scripts, defined in multiple-outputs.sh.  It's important because
that setup hook will only set shareDocName if multiple outputs are in
use (and setOutputFlags hasn't been disabled).  So previously,
CMAKE_INSTALL_DOCDIR would be set to $out/share/doc for single-output
derivations, instead of $out/share/doc/$shareDocName, which would
result in collisions.

Since this hook now uses the setOutputFlags variable, I had to remove
the empty assignment of it added in
a714284d8b.

Fixes: https://github.com/NixOS/nixpkgs/issues/82304
2020-06-29 13:56:27 +00:00
R. RyanTM 9757111825 cmake: 3.17.2 -> 3.17.3 2020-06-19 10:54:01 +02:00
Orivej Desh 16d7f7edae Merge branch 'master' into staging 2020-05-22 09:13:23 +00:00
Thomas Tuegel 694d80b170
Merge pull request #87704 from veprbl/pr/cmake_32bit_workaround
pkgsi686Linux.cmake: compile with _FILE_OFFSET_BITS=64 for 32-bit targets
2020-05-19 06:13:58 -05:00
Dmitry Kalinkin 467a87ba1d
cmake: compile with _FILE_OFFSET_BITS=64 for 32-bit targets 2020-05-12 18:16:03 -04:00
John Ericson 1ac5398589 *-wrapper; Switch from infixSalt to suffixSalt
I hate the thing too even though I made it, and rather just get rid of
it. But we can't do that yet. In the meantime, this brings us more
inline with autoconf and will make it slightly easier for me to write a
pkg-config wrapper, which we need.
2020-05-12 00:44:44 -04:00
R. RyanTM 27752d41e6 cmake: 3.17.0 -> 3.17.2 2020-05-08 06:56:59 +02:00
Jan Tojnar a04625379a
Merge branch 'master' into staging-next 2020-04-13 18:50:35 +02:00
Michael Reilly 84cf00f980
treewide: Per RFC45, remove all unquoted URLs 2020-04-10 17:54:53 +01:00
Daniel Șerbănescu b18e7e5b6a
cmake: 3.16.5 -> 3.17.0 2020-04-01 11:00:43 -05:00
R. RyanTM b3793e1181 cmake: 3.16.4 -> 3.16.5 2020-03-06 06:14:36 +00:00
Konrad Borowski 4bad7d67cd cmake_2_8: fix build 2020-02-20 16:09:14 +01:00
R. RyanTM f00bda0148 cmake: 3.16.3 -> 3.16.4 2020-02-12 09:07:49 +01:00
Daiderd Jordan 68513e4071
cmake: move CMAKE_OSX_ARCHITECTURES out of the stdenv
This was initially introduced in 92188d9d17,
not clear how relevant this still is but i686 isn't supported anymore so
disable it explicitly.
2020-01-31 21:52:13 +01:00