mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-10-30 14:11:21 +00:00
Merge pull request #48602 from matthewbauer/cmake-cross
Set CMAKE_SYSTEM_* for cross compiling
This commit is contained in:
commit
d97e5e1115
@ -46,6 +46,25 @@ rec {
|
||||
# Misc boolean options
|
||||
useAndroidPrebuilt = false;
|
||||
useiOSPrebuilt = false;
|
||||
|
||||
# Output from uname
|
||||
uname = {
|
||||
# uname -s
|
||||
system = {
|
||||
"linux" = "Linux";
|
||||
"windows" = "Windows";
|
||||
"darwin" = "Darwin";
|
||||
"netbsd" = "NetBSD";
|
||||
"freebsd" = "FreeBSD";
|
||||
"openbsd" = "OpenBSD";
|
||||
}.${final.parsed.kernel.name} or null;
|
||||
|
||||
# uname -p
|
||||
processor = final.parsed.cpu.name;
|
||||
|
||||
# uname -r
|
||||
release = null;
|
||||
};
|
||||
} // mapAttrs (n: v: v final.parsed) inspect.predicates
|
||||
// args;
|
||||
in assert final.useAndroidPrebuilt -> final.isAndroid;
|
||||
|
@ -15,6 +15,8 @@ let
|
||||
|
||||
"x86_64-cygwin" "x86_64-darwin" "x86_64-freebsd" "x86_64-linux"
|
||||
"x86_64-netbsd" "x86_64-openbsd" "x86_64-solaris"
|
||||
|
||||
"x86_64-windows" "i686-windows"
|
||||
];
|
||||
|
||||
allParsed = map parse.mkSystemFromString all;
|
||||
@ -37,12 +39,13 @@ in rec {
|
||||
darwin = filterDoubles predicates.isDarwin;
|
||||
freebsd = filterDoubles predicates.isFreeBSD;
|
||||
# Should be better, but MinGW is unclear.
|
||||
gnu = filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnu; });
|
||||
gnu = filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnu; }) ++ filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnueabi; }) ++ filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnueabihf; });
|
||||
illumos = filterDoubles predicates.isSunOS;
|
||||
linux = filterDoubles predicates.isLinux;
|
||||
netbsd = filterDoubles predicates.isNetBSD;
|
||||
openbsd = filterDoubles predicates.isOpenBSD;
|
||||
unix = filterDoubles predicates.isUnix;
|
||||
windows = filterDoubles predicates.isWindows;
|
||||
|
||||
mesaPlatforms = ["i686-linux" "x86_64-linux" "x86_64-darwin" "armv5tel-linux" "armv6l-linux" "armv7l-linux" "aarch64-linux" "powerpc64le-linux"];
|
||||
}
|
||||
|
@ -12,20 +12,21 @@ let
|
||||
expected = lib.sort lib.lessThan y;
|
||||
};
|
||||
in with lib.systems.doubles; lib.runTests {
|
||||
all = assertTrue (mseteq all (linux ++ darwin ++ cygwin ++ freebsd ++ openbsd ++ netbsd ++ illumos));
|
||||
testall = mseteq all (linux ++ darwin ++ freebsd ++ openbsd ++ netbsd ++ illumos ++ windows);
|
||||
|
||||
arm = assertTrue (mseteq arm [ "armv5tel-linux" "armv6l-linux" "armv7l-linux" ]);
|
||||
i686 = assertTrue (mseteq i686 [ "i686-linux" "i686-freebsd" "i686-netbsd" "i686-openbsd" "i686-cygwin" ]);
|
||||
mips = assertTrue (mseteq mips [ "mipsel-linux" ]);
|
||||
x86_64 = assertTrue (mseteq x86_64 [ "x86_64-linux" "x86_64-darwin" "x86_64-freebsd" "x86_64-openbsd" "x86_64-netbsd" "x86_64-cygwin" "x86_64-solaris" ]);
|
||||
testarm = mseteq arm [ "armv5tel-linux" "armv6l-linux" "armv7l-linux" ];
|
||||
testi686 = mseteq i686 [ "i686-linux" "i686-freebsd" "i686-netbsd" "i686-openbsd" "i686-cygwin" "i686-windows" ];
|
||||
testmips = mseteq mips [ "mipsel-linux" ];
|
||||
testx86_64 = mseteq x86_64 [ "x86_64-linux" "x86_64-darwin" "x86_64-freebsd" "x86_64-openbsd" "x86_64-netbsd" "x86_64-cygwin" "x86_64-solaris" "x86_64-windows" ];
|
||||
|
||||
cygwin = assertTrue (mseteq cygwin [ "i686-cygwin" "x86_64-cygwin" ]);
|
||||
darwin = assertTrue (mseteq darwin [ "x86_64-darwin" ]);
|
||||
freebsd = assertTrue (mseteq freebsd [ "i686-freebsd" "x86_64-freebsd" ]);
|
||||
gnu = assertTrue (mseteq gnu (linux /* ++ kfreebsd ++ ... */));
|
||||
illumos = assertTrue (mseteq illumos [ "x86_64-solaris" ]);
|
||||
linux = assertTrue (mseteq linux [ "i686-linux" "x86_64-linux" "armv5tel-linux" "armv6l-linux" "armv7l-linux" "aarch64-linux" "mipsel-linux" ]);
|
||||
netbsd = assertTrue (mseteq netbsd [ "i686-netbsd" "x86_64-netbsd" ]);
|
||||
openbsd = assertTrue (mseteq openbsd [ "i686-openbsd" "x86_64-openbsd" ]);
|
||||
unix = assertTrue (mseteq unix (linux ++ darwin ++ freebsd ++ openbsd ++ netbsd ++ illumos));
|
||||
testcygwin = mseteq cygwin [ "i686-cygwin" "x86_64-cygwin" ];
|
||||
testdarwin = mseteq darwin [ "x86_64-darwin" ];
|
||||
testfreebsd = mseteq freebsd [ "i686-freebsd" "x86_64-freebsd" ];
|
||||
testgnu = mseteq gnu (linux /* ++ kfreebsd ++ ... */);
|
||||
testillumos = mseteq illumos [ "x86_64-solaris" ];
|
||||
testlinux = mseteq linux [ "i686-linux" "x86_64-linux" "armv5tel-linux" "armv6l-linux" "armv7l-linux" "aarch64-linux" "mipsel-linux" ];
|
||||
testnetbsd = mseteq netbsd [ "i686-netbsd" "x86_64-netbsd" ];
|
||||
testopenbsd = mseteq openbsd [ "i686-openbsd" "x86_64-openbsd" ];
|
||||
testwindows = mseteq windows [ "i686-cygwin" "x86_64-cygwin" "i686-windows" "x86_64-windows" ];
|
||||
testunix = mseteq unix (linux ++ darwin ++ freebsd ++ openbsd ++ netbsd ++ illumos ++ cygwin);
|
||||
}
|
||||
|
@ -101,21 +101,17 @@ stdenv.mkDerivation {
|
||||
|
||||
inherit src;
|
||||
|
||||
patchFlags = optionalString (stdenv.hostPlatform.libc == "msvcrt") "-p0";
|
||||
patchFlags = "";
|
||||
|
||||
patches = patches
|
||||
++ optional stdenv.isDarwin ./darwin-no-system-python.patch
|
||||
++ optional (stdenv.hostPlatform.libc == "msvcrt") (fetchurl {
|
||||
url = "https://svn.boost.org/trac/boost/raw-attachment/tickaet/7262/"
|
||||
+ "boost-mingw.patch";
|
||||
sha256 = "0s32kwll66k50w6r5np1y5g907b7lcpsjhfgr7rsw7q5syhzddyj";
|
||||
});
|
||||
++ optional stdenv.isDarwin ./darwin-no-system-python.patch;
|
||||
|
||||
meta = {
|
||||
homepage = http://boost.org/;
|
||||
description = "Collection of C++ libraries";
|
||||
license = stdenv.lib.licenses.boost;
|
||||
|
||||
platforms = (if versionOlder version "1.59" then remove "aarch64-linux" else id) platforms.unix;
|
||||
platforms = (if versionOlder version "1.59" then remove "aarch64-linux" else id) (platforms.unix ++ platforms.windows);
|
||||
maintainers = with maintainers; [ peti wkennington ];
|
||||
};
|
||||
|
||||
@ -139,7 +135,8 @@ stdenv.mkDerivation {
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
nativeBuildInputs = [ which buildPackages.stdenv.cc ];
|
||||
nativeBuildInputs = [ which ];
|
||||
depsBuildBuild = [ buildPackages.stdenv.cc ];
|
||||
buildInputs = [ expat zlib bzip2 libiconv ]
|
||||
++ optional (stdenv.hostPlatform == stdenv.buildPlatform) icu
|
||||
++ optional stdenv.isDarwin fixDarwinDylibNames
|
||||
|
@ -9,6 +9,8 @@ stdenv.mkDerivation rec {
|
||||
sha256 = "0vnwmbvymw677k780kpb6sb8i3szdp89rzy8mz1fwg1657yw3ls5";
|
||||
};
|
||||
|
||||
configureFlags = if stdenv.hostPlatform.isWindows then [ "--disable-shared" "--enable-static" ] else null;
|
||||
|
||||
# ares_android.h header is missing
|
||||
# see issue https://github.com/c-ares/c-ares/issues/216
|
||||
postPatch = if stdenv.hostPlatform.isAndroid then ''
|
||||
|
@ -15,8 +15,6 @@ stdenv.mkDerivation rec {
|
||||
cmakeFlags = []
|
||||
++ stdenv.lib.optional (stdenv.hostPlatform != stdenv.buildPlatform)
|
||||
"-DMSGPACK_BUILD_EXAMPLES=OFF"
|
||||
++ stdenv.lib.optional (stdenv.hostPlatform.libc == "msvcrt")
|
||||
"-DCMAKE_SYSTEM_NAME=Windows"
|
||||
;
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
|
@ -6,6 +6,7 @@
|
||||
, enableAsioLib ? false, boost ? null
|
||||
, enableGetAssets ? false, libxml2 ? null
|
||||
, enableJemalloc ? false, jemalloc ? null
|
||||
, enableApp ? !stdenv.hostPlatform.isWindows
|
||||
}:
|
||||
|
||||
assert enableHpack -> jansson != null;
|
||||
@ -35,8 +36,12 @@ stdenv.mkDerivation rec {
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
configureFlags = [ "--with-spdylay=no" "--disable-examples" "--disable-python-bindings" "--enable-app" ]
|
||||
++ optional enableAsioLib "--enable-asio-lib --with-boost-libdir=${boost}/lib";
|
||||
configureFlags = [
|
||||
"--with-spdylay=no"
|
||||
"--disable-examples"
|
||||
"--disable-python-bindings"
|
||||
(stdenv.lib.enableFeature enableApp "app")
|
||||
] ++ optional enableAsioLib "--enable-asio-lib --with-boost-libdir=${boost}/lib";
|
||||
|
||||
#doCheck = true; # requires CUnit ; currently failing at test_util_localtime_date in util_test.cc
|
||||
|
||||
|
@ -18,8 +18,6 @@ stdenv.mkDerivation rec {
|
||||
|
||||
cmakeFlags = [
|
||||
"-DBuildTests=${if doCheck then "ON" else "OFF"}"
|
||||
] ++ stdenv.lib.optionals (stdenv.hostPlatform.libc == "msvcrt") [
|
||||
"-DCMAKE_SYSTEM_NAME=Windows"
|
||||
];
|
||||
|
||||
doCheck = stdenv.hostPlatform == stdenv.buildPlatform;
|
||||
|
@ -79,6 +79,6 @@ stdenv.mkDerivation rec {
|
||||
homepage = http://www.sqlite.org/;
|
||||
license = licenses.publicDomain;
|
||||
maintainers = with maintainers; [ eelco np ];
|
||||
platforms = platforms.unix;
|
||||
platforms = platforms.unix ++ platforms.windows;
|
||||
};
|
||||
}
|
||||
|
@ -82,4 +82,6 @@ stdenv.mkDerivation (rec {
|
||||
preConfigure = ''
|
||||
export CHOST=${stdenv.hostPlatform.config}
|
||||
'';
|
||||
} // stdenv.lib.optionalAttrs (stdenv.hostPlatform.libc == "msvcrt") {
|
||||
configurePhase = ":";
|
||||
})
|
||||
|
@ -41,6 +41,7 @@ rec {
|
||||
|
||||
# Configure Phase
|
||||
, configureFlags ? []
|
||||
, cmakeFlags ? []
|
||||
, # Target is not included by default because most programs don't care.
|
||||
# Including it then would cause needless mass rebuilds.
|
||||
#
|
||||
@ -225,6 +226,17 @@ rec {
|
||||
inherit doCheck doInstallCheck;
|
||||
|
||||
inherit outputs;
|
||||
} // lib.optionalAttrs (stdenv.hostPlatform != stdenv.buildPlatform) {
|
||||
cmakeFlags =
|
||||
(/**/ if lib.isString cmakeFlags then [cmakeFlags]
|
||||
else if cmakeFlags == null then []
|
||||
else cmakeFlags)
|
||||
++ lib.optional (stdenv.hostPlatform.uname.system != null) "-DCMAKE_SYSTEM_NAME=${stdenv.hostPlatform.uname.system}"
|
||||
++ lib.optional (stdenv.hostPlatform.uname.processor != null) "-DCMAKE_SYSTEM_PROCESSOR=${stdenv.hostPlatform.uname.processor}"
|
||||
++ lib.optional (stdenv.hostPlatform.uname.release != null) "-DCMAKE_SYSTEM_VERSION=${stdenv.hostPlatform.release}"
|
||||
++ lib.optional (stdenv.buildPlatform.uname.system != null) "-DCMAKE_HOST_SYSTEM_NAME=${stdenv.buildPlatform.uname.system}"
|
||||
++ lib.optional (stdenv.buildPlatform.uname.processor != null) "-DCMAKE_HOST_SYSTEM_PROCESSOR=${stdenv.buildPlatform.uname.processor}"
|
||||
++ lib.optional (stdenv.buildPlatform.uname.release != null) "-DCMAKE_HOST_SYSTEM_VERSION=${stdenv.buildPlatform.uname.release}";
|
||||
} // lib.optionalAttrs (attrs.enableParallelBuilding or false) {
|
||||
enableParallelChecking = attrs.enableParallelChecking or true;
|
||||
} // lib.optionalAttrs (hardeningDisable != [] || hardeningEnable != []) {
|
||||
|
@ -15,8 +15,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
||||
cmakeFlags = stdenv.lib.optional
|
||||
(stdenv.hostPlatform.libc == "msvcrt") "-DCMAKE_SYSTEM_NAME=Windows";
|
||||
cmakeFlags = [];
|
||||
|
||||
outputs = [ "out" "dev" "lib" ];
|
||||
|
||||
@ -59,4 +58,3 @@ stdenv.mkDerivation rec {
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -77,7 +77,11 @@ stdenv.mkDerivation rec {
|
||||
++ stdenv.lib.optional gssSupport "--with-gssapi=${kerberos.dev}"
|
||||
# For the 'urandom', maybe it should be a cross-system option
|
||||
++ stdenv.lib.optional (stdenv.hostPlatform != stdenv.buildPlatform)
|
||||
"--with-random=/dev/urandom";
|
||||
"--with-random=/dev/urandom"
|
||||
++ stdenv.lib.optionals stdenv.hostPlatform.isWindows [
|
||||
"--disable-shared"
|
||||
"--enable-static"
|
||||
];
|
||||
|
||||
CXX = "${stdenv.cc.targetPrefix}c++";
|
||||
CXXCPP = "${stdenv.cc.targetPrefix}c++ -E";
|
||||
|
@ -81,7 +81,11 @@ stdenv.mkDerivation rec {
|
||||
++ stdenv.lib.optional gssSupport "--with-gssapi=${kerberos.dev}"
|
||||
# For the 'urandom', maybe it should be a cross-system option
|
||||
++ stdenv.lib.optional (stdenv.hostPlatform != stdenv.buildPlatform)
|
||||
"--with-random=/dev/urandom";
|
||||
"--with-random=/dev/urandom"
|
||||
++ stdenv.lib.optionals stdenv.hostPlatform.isWindows [
|
||||
"--disable-shared"
|
||||
"--enable-static"
|
||||
];
|
||||
|
||||
CXX = "${stdenv.cc.targetPrefix}c++";
|
||||
CXXCPP = "${stdenv.cc.targetPrefix}c++ -E";
|
||||
|
@ -13,8 +13,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
nativeBuildInputs = [ cmake libxslt/*manpage*/ ];
|
||||
|
||||
cmakeFlags = stdenv.lib.optional
|
||||
(stdenv.hostPlatform.libc or null == "msvcrt") "-DCMAKE_SYSTEM_NAME=Windows";
|
||||
cmakeFlags = [];
|
||||
|
||||
# ATM bin/tidy is statically linked, as upstream provides no other option yet.
|
||||
# https://github.com/htacg/tidy-html5/issues/326#issuecomment-160322107
|
||||
|
@ -2077,7 +2077,7 @@ with pkgs;
|
||||
zlibSupport = true;
|
||||
sslSupport = zlibSupport;
|
||||
scpSupport = zlibSupport && !stdenv.isSunOS && !stdenv.isCygwin;
|
||||
gssSupport = true;
|
||||
gssSupport = !stdenv.hostPlatform.isWindows;
|
||||
};
|
||||
|
||||
curl = callPackage ../tools/networking/curl rec {
|
||||
@ -2086,7 +2086,7 @@ with pkgs;
|
||||
zlibSupport = true;
|
||||
sslSupport = zlibSupport;
|
||||
scpSupport = zlibSupport && !stdenv.isSunOS && !stdenv.isCygwin;
|
||||
gssSupport = true;
|
||||
gssSupport = !stdenv.hostPlatform.isWindows;
|
||||
};
|
||||
|
||||
curl_unix_socket = callPackage ../tools/networking/curl-unix-socket rec { };
|
||||
|
Loading…
Reference in New Issue
Block a user