From 118c4334ecf3050ba882d9628abe4bef0b3e7777 Mon Sep 17 00:00:00 2001 From: David McFarland Date: Tue, 23 Sep 2025 10:24:56 -0300 Subject: [PATCH] cygwin.w32api: init as mingw_w64 derivative --- pkgs/os-specific/cygwin/default.nix | 3 +- pkgs/os-specific/cygwin/w32api/default.nix | 81 ++++++++++++++-------- 2 files changed, 56 insertions(+), 28 deletions(-) diff --git a/pkgs/os-specific/cygwin/default.nix b/pkgs/os-specific/cygwin/default.nix index 7ee8123e9c0b..66bc4dbb6f54 100644 --- a/pkgs/os-specific/cygwin/default.nix +++ b/pkgs/os-specific/cygwin/default.nix @@ -14,7 +14,8 @@ makeScopeWithSplicing' { callPackage = self.callPackage; in { - w32api-headers = callPackage ./w32api { }; + w32api = callPackage ./w32api { }; + w32api-headers = callPackage ./w32api { headersOnly = true; }; newlib-cygwin-headers = callPackage ./newlib-cygwin { }; }; diff --git a/pkgs/os-specific/cygwin/w32api/default.nix b/pkgs/os-specific/cygwin/w32api/default.nix index 792dbe8a1e33..4950da53116d 100644 --- a/pkgs/os-specific/cygwin/w32api/default.nix +++ b/pkgs/os-specific/cygwin/w32api/default.nix @@ -1,35 +1,62 @@ { lib, stdenvNoCC, + stdenvNoLibc, + autoreconfHook, windows, + + headersOnly ? false, }: -stdenvNoCC.mkDerivation (finalAttrs: { - pname = "w32api-headers"; - inherit (windows.mingw_w64_headers) - version - src - ; +(if headersOnly then stdenvNoCC else stdenvNoLibc).mkDerivation ( + { + pname = "w32api${lib.optionalString headersOnly "-headers"}"; - configureFlags = [ (lib.enableFeature true "w32api") ]; - - preConfigure = '' - cd mingw-w64-headers - ''; - - passthru = { - incdir = "/include/w32api/"; - libdir = "/lib/w32api/"; - }; - - meta = { - description = "MinGW w32api package for Cygwin"; - inherit (windows.mingw_w64_headers.meta) - homepage - downloadPage - license + inherit (windows.mingw_w64_headers) + version + src ; - platforms = lib.platforms.unix ++ lib.platforms.windows; - teams = [ lib.maintainers.corngood ]; - }; -}) + + outputs = [ + "out" + ] + ++ lib.optional (!headersOnly) "dev"; + + configureFlags = [ (lib.enableFeature true "w32api") ]; + + enableParallelBuilding = true; + + passthru = { + incdir = "/include/w32api/"; + libdir = "/lib/w32api/"; + }; + + meta = { + description = "MinGW w32api package for Cygwin"; + inherit (windows.mingw_w64_headers.meta) + homepage + downloadPage + license + ; + platforms = lib.platforms.unix ++ lib.platforms.windows; + teams = [ lib.maintainers.corngood ]; + }; + } + // ( + if headersOnly then + { + preConfigure = '' + cd mingw-w64-headers + ''; + } + else + { + nativeBuildInputs = [ autoreconfHook ]; + + hardeningDisable = [ + "stackprotector" + "fortify" + ]; + } + ) +)