uboot: (firmwareOdroidC2/C4) don't invoke patch tool, use patches = [] instead
https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/setup.sh#L948 this can do it nicely. Signed-off-by: Anton Arapov <anton@deadbeef.mx>
This commit is contained in:
commit
56de2bcd43
30691 changed files with 3076956 additions and 0 deletions
74
pkgs/development/tools/xcbuild/default.nix
Normal file
74
pkgs/development/tools/xcbuild/default.nix
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
{ lib, stdenv, cmake, fetchFromGitHub, zlib, libxml2, libpng
|
||||
, CoreServices, CoreGraphics, ImageIO, ninja }:
|
||||
|
||||
let
|
||||
googletest = fetchFromGitHub {
|
||||
owner = "google";
|
||||
repo = "googletest";
|
||||
rev = "43359642a1c16ad3f4fc575c7edd0cb935810815";
|
||||
sha256 = "0y4xaah62fjr3isaryc3vfz3mn9xflr00vchdimj8785milxga4q";
|
||||
};
|
||||
|
||||
linenoise = fetchFromGitHub {
|
||||
owner = "antirez";
|
||||
repo = "linenoise";
|
||||
rev = "c894b9e59f02203dbe4e2be657572cf88c4230c3";
|
||||
sha256 = "0wasql7ph5g473zxhc2z47z3pjp42q0dsn4gpijwzbxawid71b4w";
|
||||
};
|
||||
in stdenv.mkDerivation {
|
||||
pname = "xcbuild";
|
||||
|
||||
# Once a version is released that includes
|
||||
# https://github.com/facebook/xcbuild/commit/183c087a6484ceaae860c6f7300caf50aea0d710,
|
||||
# we can stop doing this -pre thing.
|
||||
version = "0.1.2-pre";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "facebook";
|
||||
repo = "xcbuild";
|
||||
rev = "32b9fbeb69bfa2682bd0351ec2f14548aaedd554";
|
||||
sha256 = "1xxwg2849jizxv0g1hy0b1m3i7iivp9bmc4f5pi76swsn423d41m";
|
||||
};
|
||||
|
||||
patches = [ ./includes.patch ];
|
||||
|
||||
prePatch = ''
|
||||
rmdir ThirdParty/*
|
||||
cp -r --no-preserve=all ${googletest} ThirdParty/googletest
|
||||
cp -r --no-preserve=all ${linenoise} ThirdParty/linenoise
|
||||
'';
|
||||
|
||||
postPatch = lib.optionalString (!stdenv.isDarwin) ''
|
||||
# Avoid a glibc >= 2.25 deprecation warning that gets fatal via -Werror.
|
||||
sed 1i'#include <sys/sysmacros.h>' \
|
||||
-i Libraries/xcassets/Headers/xcassets/Slot/SystemVersion.h
|
||||
'' + lib.optionalString stdenv.isDarwin ''
|
||||
# Apple Open Sourced LZFSE, but not libcompression, and it isn't
|
||||
# part of an impure framework we can add
|
||||
substituteInPlace Libraries/libcar/Sources/Rendition.cpp \
|
||||
--replace "#if HAVE_LIBCOMPRESSION" "#if 0"
|
||||
'';
|
||||
|
||||
# TODO: instruct cmake not to put it in /usr, rather than cleaning up
|
||||
postInstall = ''
|
||||
mv $out/usr/* $out
|
||||
rmdir $out/usr
|
||||
cp liblinenoise.* $out/lib/
|
||||
'';
|
||||
|
||||
NIX_CFLAGS_COMPILE = "-Wno-error";
|
||||
|
||||
cmakeFlags = [ "-GNinja" ];
|
||||
|
||||
nativeBuildInputs = [ cmake ninja ];
|
||||
buildInputs = [ zlib libxml2 libpng ]
|
||||
++ lib.optionals stdenv.isDarwin [ CoreServices CoreGraphics ImageIO ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Xcode-compatible build tool";
|
||||
homepage = "https://github.com/facebook/xcbuild";
|
||||
platforms = platforms.unix;
|
||||
maintainers = with maintainers; [ copumpkin matthewbauer ];
|
||||
license = with licenses; [ bsd2 bsd3 ];
|
||||
};
|
||||
}
|
||||
10
pkgs/development/tools/xcbuild/includes.patch
Normal file
10
pkgs/development/tools/xcbuild/includes.patch
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
--- a/Libraries/plist/Sources/Format/Encoding.cpp
|
||||
+++ b/Libraries/plist/Sources/Format/Encoding.cpp
|
||||
@@ -11,6 +11,7 @@
|
||||
#include <plist/Format/unicode.h>
|
||||
|
||||
#include <cassert>
|
||||
+#include <cstdlib> /* abort() */
|
||||
|
||||
#if defined(__linux__)
|
||||
#include <endian.h>
|
||||
301
pkgs/development/tools/xcbuild/platforms.nix
Normal file
301
pkgs/development/tools/xcbuild/platforms.nix
Normal file
|
|
@ -0,0 +1,301 @@
|
|||
{ stdenv, runCommand, lib, sdks, xcodePlatform, writeText }:
|
||||
|
||||
let
|
||||
|
||||
inherit (lib.generators) toPlist;
|
||||
|
||||
Info = {
|
||||
CFBundleIdentifier = "com.apple.platform.${lib.toLower xcodePlatform}";
|
||||
Type = "Platform";
|
||||
Name = lib.toLower xcodePlatform;
|
||||
};
|
||||
|
||||
Version = {
|
||||
ProjectName = "OSXPlatformSupport";
|
||||
};
|
||||
|
||||
# These files are all based off of Xcode spec fies found in
|
||||
# /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Xcode/PrivatePlugIns/IDEOSXSupportCore.ideplugin/Contents/Resources.
|
||||
|
||||
# Based off of the "MacOSX Architectures.xcspec" file. All i386 stuff
|
||||
# is removed because NixPkgs only supports darwin-x86_64 and darwin-arm64.
|
||||
Architectures = [
|
||||
{
|
||||
Identifier = "Standard";
|
||||
Type = "Architecture";
|
||||
Name = "Standard Architectures (Apple Silicon, 64-bit Intel)";
|
||||
RealArchitectures = [ "arm64" "x86_64" ];
|
||||
ArchitectureSetting = "ARCHS_STANDARD";
|
||||
}
|
||||
{
|
||||
Identifier = "Universal";
|
||||
Type = "Architecture";
|
||||
Name = "Universal (Apple Silicon, 64-bit Intel)";
|
||||
RealArchitectures = [ "arm64" "x86_64" ];
|
||||
ArchitectureSetting = "ARCHS_STANDARD_32_64_BIT";
|
||||
}
|
||||
{
|
||||
Identifier = "Native";
|
||||
Type = "Architecture";
|
||||
Name = "Native Architecture of Build Machine";
|
||||
ArchitectureSetting = "NATIVE_ARCH_ACTUAL";
|
||||
}
|
||||
{
|
||||
Identifier = "Standard64bit";
|
||||
Type = "Architecture";
|
||||
Name = "Apple Silicon, 64-bit Intel";
|
||||
RealArchitectures = [ "arm64" "x86_64" ];
|
||||
ArchitectureSetting = "ARCHS_STANDARD_64_BIT";
|
||||
}
|
||||
{
|
||||
Identifier = if stdenv.isAarch64 then "arm64" else "x86_64";
|
||||
Type = "Architecture";
|
||||
Name = "Apple Silicon or Intel 64-bit";
|
||||
}
|
||||
{
|
||||
Identifier = "Standard_Including_64_bit";
|
||||
Type = "Architecture";
|
||||
Name = "Standard Architectures (including 64-bit)";
|
||||
RealArchitectures = [ "arm64" "x86_64" ];
|
||||
ArchitectureSetting = "ARCHS_STANDARD_INCLUDING_64_BIT";
|
||||
}
|
||||
];
|
||||
|
||||
# Based off of the "MacOSX Package Types.xcspec" file. Only keep the
|
||||
# bare minimum needed.
|
||||
PackageTypes = [
|
||||
{
|
||||
Identifier = "com.apple.package-type.mach-o-executable";
|
||||
Type = "PackageType";
|
||||
Name = "Mach-O Executable";
|
||||
DefaultBuildSettings = {
|
||||
EXECUTABLE_NAME = "$(EXECUTABLE_PREFIX)$(PRODUCT_NAME)$(EXECUTABLE_VARIANT_SUFFIX)$(EXECUTABLE_SUFFIX)";
|
||||
EXECUTABLE_PATH = "$(EXECUTABLE_NAME)";
|
||||
};
|
||||
ProductReference = {
|
||||
FileType = "compiled.mach-o.executable";
|
||||
Name = "$(EXECUTABLE_NAME)";
|
||||
};
|
||||
}
|
||||
{
|
||||
Identifier = "com.apple.package-type.mach-o-objfile";
|
||||
Type = "PackageType";
|
||||
Name = "Mach-O Object File";
|
||||
DefaultBuildSettings = {
|
||||
EXECUTABLE_NAME = "$(EXECUTABLE_PREFIX)$(PRODUCT_NAME)$(EXECUTABLE_VARIANT_SUFFIX)$(EXECUTABLE_SUFFIX)";
|
||||
EXECUTABLE_PATH = "$(EXECUTABLE_NAME)";
|
||||
};
|
||||
ProductReference = {
|
||||
FileType = "compiled.mach-o.objfile";
|
||||
Name = "$(EXECUTABLE_NAME)";
|
||||
};
|
||||
}
|
||||
{
|
||||
Identifier = "com.apple.package-type.mach-o-dylib";
|
||||
Type = "PackageType";
|
||||
Name = "Mach-O Dynamic Library";
|
||||
DefaultBuildSettings = {
|
||||
EXECUTABLE_NAME = "$(EXECUTABLE_PREFIX)$(PRODUCT_NAME)$(EXECUTABLE_VARIANT_SUFFIX)$(EXECUTABLE_SUFFIX)";
|
||||
EXECUTABLE_PATH = "$(EXECUTABLE_NAME)";
|
||||
};
|
||||
ProductReference = {
|
||||
FileType = "compiled.mach-o.dylib";
|
||||
Name = "$(EXECUTABLE_NAME)";
|
||||
};
|
||||
}
|
||||
{
|
||||
Identifier = "com.apple.package-type.static-library";
|
||||
Type = "PackageType";
|
||||
Name = "Mach-O Static Library";
|
||||
DefaultBuildSettings = {
|
||||
EXECUTABLE_PREFIX = "lib";
|
||||
EXECUTABLE_SUFFIX = ".a";
|
||||
EXECUTABLE_NAME = "$(EXECUTABLE_PREFIX)$(PRODUCT_NAME)$(EXECUTABLE_VARIANT_SUFFIX)$(EXECUTABLE_SUFFIX)";
|
||||
EXECUTABLE_PATH = "$(EXECUTABLE_NAME)";
|
||||
};
|
||||
ProductReference = {
|
||||
FileType = "archive.ar";
|
||||
Name = "$(EXECUTABLE_NAME)";
|
||||
IsLaunchable = "NO";
|
||||
};
|
||||
}
|
||||
{
|
||||
Identifier = "com.apple.package-type.wrapper";
|
||||
Type = "PackageType";
|
||||
Name = "Wrapper";
|
||||
DefaultBuildSettings = {
|
||||
WRAPPER_SUFFIX = ".bundle";
|
||||
WRAPPER_NAME = "$(WRAPPER_PREFIX)$(PRODUCT_NAME)$(WRAPPER_SUFFIX)";
|
||||
CONTENTS_FOLDER_PATH = "$(WRAPPER_NAME)/Contents";
|
||||
EXECUTABLE_NAME = "$(EXECUTABLE_PREFIX)$(PRODUCT_NAME)$(EXECUTABLE_VARIANT_SUFFIX)$(EXECUTABLE_SUFFIX)";
|
||||
EXECUTABLE_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/MacOS";
|
||||
EXECUTABLE_PATH = "$(EXECUTABLE_FOLDER_PATH)/$(EXECUTABLE_NAME)";
|
||||
INFOPLIST_PATH = "$(CONTENTS_FOLDER_PATH)/Info.plist";
|
||||
INFOSTRINGS_PATH = "$(LOCALIZED_RESOURCES_FOLDER_PATH)/InfoPlist.strings";
|
||||
PKGINFO_PATH = "$(CONTENTS_FOLDER_PATH)/PkgInfo";
|
||||
PBDEVELOPMENTPLIST_PATH = "$(CONTENTS_FOLDER_PATH)/pbdevelopment.plist";
|
||||
VERSIONPLIST_PATH = "$(CONTENTS_FOLDER_PATH)/version.plist";
|
||||
PUBLIC_HEADERS_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/Headers";
|
||||
PRIVATE_HEADERS_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/PrivateHeaders";
|
||||
EXECUTABLES_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/Executables";
|
||||
FRAMEWORKS_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/Frameworks";
|
||||
SHARED_FRAMEWORKS_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/SharedFrameworks";
|
||||
SHARED_SUPPORT_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/SharedSupport";
|
||||
UNLOCALIZED_RESOURCES_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/Resources";
|
||||
LOCALIZED_RESOURCES_FOLDER_PATH = "$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/$(DEVELOPMENT_LANGUAGE).lproj";
|
||||
DOCUMENTATION_FOLDER_PATH = "$(LOCALIZED_RESOURCES_FOLDER_PATH)/Documentation";
|
||||
PLUGINS_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/PlugIns";
|
||||
SCRIPTS_FOLDER_PATH = "$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/Scripts";
|
||||
};
|
||||
ProductReference = {
|
||||
FileType = "wrapper.cfbundle";
|
||||
Name = "$(WRAPPER_NAME)";
|
||||
IsLaunchable = "NO";
|
||||
};
|
||||
}
|
||||
{
|
||||
Identifier = "com.apple.package-type.wrapper.application";
|
||||
Type = "PackageType";
|
||||
BasedOn = "com.apple.package-type.wrapper";
|
||||
Name = "Application Wrapper";
|
||||
DefaultBuildSettings = {
|
||||
GENERATE_PKGINFO_FILE = "YES";
|
||||
};
|
||||
ProductReference = {
|
||||
FileType = "wrapper.application";
|
||||
Name = "$(WRAPPER_NAME)";
|
||||
IsLaunchable = "YES";
|
||||
};
|
||||
}
|
||||
];
|
||||
|
||||
# Based off of the "MacOSX Product Types.xcspec" file. All
|
||||
# bundles/wrapper are removed, because we prefer dynamic products in
|
||||
# NixPkgs.
|
||||
ProductTypes = [
|
||||
{
|
||||
Identifier = "com.apple.product-type.tool";
|
||||
Type = "ProductType";
|
||||
Name = "Command-line Tool";
|
||||
PackageTypes = [ "com.apple.package-type.mach-o-executable" ];
|
||||
}
|
||||
{
|
||||
Identifier = "com.apple.product-type.objfile";
|
||||
Type = "ProductType";
|
||||
Name = "Object File";
|
||||
PackageTypes = [ "com.apple.package-type.mach-o-objfile" ];
|
||||
}
|
||||
{
|
||||
Identifier = "com.apple.product-type.library.dynamic";
|
||||
Type = "ProductType";
|
||||
Name = "Dynamic Library";
|
||||
PackageTypes = [ "com.apple.package-type.mach-o-dylib" ];
|
||||
DefaultBuildProperties = {
|
||||
FULL_PRODUCT_NAME = "$(EXECUTABLE_NAME)";
|
||||
MACH_O_TYPE = "mh_dylib";
|
||||
REZ_EXECUTABLE = "YES";
|
||||
EXECUTABLE_SUFFIX = ".$(EXECUTABLE_EXTENSION)";
|
||||
EXECUTABLE_EXTENSION = "dylib";
|
||||
DYLIB_COMPATIBILITY_VERSION = "1";
|
||||
DYLIB_CURRENT_VERSION = "1";
|
||||
FRAMEWORK_FLAG_PREFIX = "-framework";
|
||||
LIBRARY_FLAG_PREFIX = "-l";
|
||||
LIBRARY_FLAG_NOSPACE = "YES";
|
||||
STRIP_STYLE = "debugging";
|
||||
GCC_INLINES_ARE_PRIVATE_EXTERN = "YES";
|
||||
CODE_SIGNING_ALLOWED = "YES";
|
||||
CODE_SIGNING_REQUIRED = "NO";
|
||||
};
|
||||
}
|
||||
{
|
||||
Identifier = "com.apple.product-type.library.static";
|
||||
Type = "ProductType";
|
||||
Name = "Static Library";
|
||||
PackageTypes = [ "com.apple.package-type.static-library" ];
|
||||
DefaultBuildProperties = {
|
||||
FULL_PRODUCT_NAME = "$(EXECUTABLE_NAME)";
|
||||
MACH_O_TYPE = "staticlib";
|
||||
REZ_EXECUTABLE = "YES";
|
||||
EXECUTABLE_PREFIX = "lib";
|
||||
EXECUTABLE_SUFFIX = ".$(EXECUTABLE_EXTENSION)";
|
||||
EXECUTABLE_EXTENSION = "a";
|
||||
FRAMEWORK_FLAG_PREFIX = "-framework";
|
||||
LIBRARY_FLAG_PREFIX = "-l";
|
||||
LIBRARY_FLAG_NOSPACE = "YES";
|
||||
STRIP_STYLE = "debugging";
|
||||
SEPARATE_STRIP = "YES";
|
||||
CLANG_ENABLE_MODULE_DEBUGGING = "NO";
|
||||
};
|
||||
}
|
||||
{
|
||||
Type = "ProductType";
|
||||
Identifier = "com.apple.product-type.bundle";
|
||||
Name = "Bundle";
|
||||
DefaultBuildProperties = {
|
||||
FULL_PRODUCT_NAME = "$(WRAPPER_NAME)";
|
||||
MACH_O_TYPE = "mh_bundle";
|
||||
WRAPPER_PREFIX = "";
|
||||
WRAPPER_SUFFIX = ".$(WRAPPER_EXTENSION)";
|
||||
WRAPPER_EXTENSION = "bundle";
|
||||
WRAPPER_NAME = "$(WRAPPER_PREFIX)$(PRODUCT_NAME)$(WRAPPER_SUFFIX)";
|
||||
FRAMEWORK_FLAG_PREFIX = "-framework";
|
||||
LIBRARY_FLAG_PREFIX = "-l";
|
||||
LIBRARY_FLAG_NOSPACE = "YES";
|
||||
STRIP_STYLE = "non-global";
|
||||
};
|
||||
PackageTypes = [ "com.apple.package-type.wrapper" ];
|
||||
IsWrapper = "YES";
|
||||
HasInfoPlist = "YES";
|
||||
HasInfoPlistStrings = "YES";
|
||||
}
|
||||
{
|
||||
Identifier = "com.apple.product-type.application";
|
||||
Type = "ProductType";
|
||||
BasedOn = "com.apple.product-type.bundle";
|
||||
Name = "Application";
|
||||
DefaultBuildProperties = {
|
||||
MACH_O_TYPE = "mh_execute";
|
||||
WRAPPER_SUFFIX = ".$(WRAPPER_EXTENSION)";
|
||||
WRAPPER_EXTENSION = "app";
|
||||
};
|
||||
PackageTypes = [ "com.apple.package-type.wrapper.application" ];
|
||||
}
|
||||
{
|
||||
Type = "ProductType";
|
||||
Identifier = "com.apple.product-type.framework";
|
||||
Name = "Bundle";
|
||||
DefaultBuildProperties = {
|
||||
FULL_PRODUCT_NAME = "$(WRAPPER_NAME)";
|
||||
MACH_O_TYPE = "mh_bundle";
|
||||
WRAPPER_PREFIX = "";
|
||||
WRAPPER_SUFFIX = ".$(WRAPPER_EXTENSION)";
|
||||
WRAPPER_EXTENSION = "bundle";
|
||||
WRAPPER_NAME = "$(WRAPPER_PREFIX)$(PRODUCT_NAME)$(WRAPPER_SUFFIX)";
|
||||
FRAMEWORK_FLAG_PREFIX = "-framework";
|
||||
LIBRARY_FLAG_PREFIX = "-l";
|
||||
LIBRARY_FLAG_NOSPACE = "YES";
|
||||
STRIP_STYLE = "non-global";
|
||||
};
|
||||
PackageTypes = [ "com.apple.package-type.wrapper" ];
|
||||
IsWrapper = "YES";
|
||||
HasInfoPlist = "YES";
|
||||
HasInfoPlistStrings = "YES";
|
||||
}
|
||||
];
|
||||
|
||||
in
|
||||
|
||||
runCommand "Platforms" {} ''
|
||||
platform=$out/${xcodePlatform}.platform
|
||||
|
||||
install -D ${writeText "Info.plist" (toPlist {} Info)} $platform/Info.plist
|
||||
install -D ${writeText "version.plist" (toPlist {} Version)} $platform/version.plist
|
||||
install -D ${writeText "Architectures.xcspec" (toPlist {} Architectures)} $platform/Developer/Library/Xcode/Specifications/Architectures.xcspec
|
||||
install -D ${writeText "PackageTypes.xcspec" (toPlist {} PackageTypes)} $platform/Developer/Library/Xcode/Specifications/PackageTypes.xcspec
|
||||
install -D ${writeText "ProductTypes.xcspec" (toPlist {} ProductTypes)} $platform/Developer/Library/Xcode/Specifications/ProductTypes.xcspec
|
||||
|
||||
ln -s $platform $platform/usr
|
||||
|
||||
mkdir -p $platform/Developer
|
||||
ln -s ${sdks} $platform/Developer/SDKs
|
||||
''
|
||||
29
pkgs/development/tools/xcbuild/sdks.nix
Normal file
29
pkgs/development/tools/xcbuild/sdks.nix
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
{ runCommand, lib, toolchainName, sdkName
|
||||
, writeText, version, xcodePlatform }:
|
||||
|
||||
let
|
||||
inherit (lib.generators) toPlist;
|
||||
|
||||
SDKSettings = {
|
||||
CanonicalName = sdkName;
|
||||
DisplayName = sdkName;
|
||||
Toolchains = [ toolchainName ];
|
||||
Version = version;
|
||||
MaximumDeploymentTarget = version;
|
||||
isBaseSDK = "YES";
|
||||
};
|
||||
|
||||
SystemVersion = {
|
||||
ProductName = "Mac OS X";
|
||||
ProductVersion = version;
|
||||
};
|
||||
in
|
||||
|
||||
runCommand "SDKs" {} ''
|
||||
sdk=$out/${sdkName}.sdk
|
||||
install -D ${writeText "SDKSettings.plist" (toPlist {} SDKSettings)} $sdk/SDKSettings.plist
|
||||
install -D ${writeText "SystemVersion.plist" (toPlist {} SystemVersion)} $sdk/System/Library/CoreServices/SystemVersion.plist
|
||||
ln -s $sdk $sdk/usr
|
||||
|
||||
ln -s $sdk $out/${xcodePlatform}.sdk
|
||||
''
|
||||
29
pkgs/development/tools/xcbuild/setup-hook.sh
Normal file
29
pkgs/development/tools/xcbuild/setup-hook.sh
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
xcbuildBuildPhase() {
|
||||
export DSTROOT=$out
|
||||
|
||||
runHook preBuild
|
||||
|
||||
echo "running xcodebuild"
|
||||
|
||||
xcodebuild SYMROOT=$PWD/Products OBJROOT=$PWD/Intermediates $xcbuildFlags build
|
||||
|
||||
runHook postBuild
|
||||
}
|
||||
|
||||
xcbuildInstallPhase () {
|
||||
runHook preInstall
|
||||
|
||||
# not implemented
|
||||
# xcodebuild install
|
||||
|
||||
runHook postInstall
|
||||
}
|
||||
|
||||
buildPhase=xcbuildBuildPhase
|
||||
if [ -z "${installPhase-}" ]; then
|
||||
installPhase=xcbuildInstallPhase
|
||||
fi
|
||||
|
||||
# if [ -d "*.xcodeproj" ]; then
|
||||
# buildPhase=xcbuildPhase
|
||||
# fi
|
||||
73
pkgs/development/tools/xcbuild/toolchains.nix
Normal file
73
pkgs/development/tools/xcbuild/toolchains.nix
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
{ runCommand, toolchainName, fetchurl, stdenv
|
||||
, buildPackages, lib, writeText }:
|
||||
|
||||
let
|
||||
|
||||
inherit (lib) getBin optionalString;
|
||||
inherit (lib.generators) toPlist;
|
||||
|
||||
ToolchainInfo = {
|
||||
Identifier = toolchainName;
|
||||
};
|
||||
|
||||
# We could pull this out of developer_cmds but it adds an annoying
|
||||
# loop if we want to bootstrap and this is just a tiny script so I'm
|
||||
# not going to bother.
|
||||
mkdep-darwin-src = fetchurl {
|
||||
url = "https://opensource.apple.com/source/developer_cmds/developer_cmds-63/mkdep/mkdep.sh";
|
||||
sha256 = "0n4wpqfslfjs5zbys5yri8pfi2awyhlmknsf6laa5jzqbzq9x541";
|
||||
executable = true;
|
||||
};
|
||||
in
|
||||
|
||||
runCommand "Toolchains" {} (''
|
||||
toolchain=$out/XcodeDefault.xctoolchain
|
||||
mkdir -p $toolchain
|
||||
|
||||
install -D ${writeText "ToolchainInfo.plist" (toPlist {} ToolchainInfo)} $toolchain/ToolchainInfo.plist
|
||||
|
||||
ln -s $toolchain $toolchain/usr
|
||||
|
||||
mkdir -p $toolchain/include
|
||||
mkdir -p $toolchain/lib
|
||||
mkdir -p $toolchain/libexec
|
||||
mkdir -p $toolchain/share
|
||||
mkdir -p $toolchain/bin
|
||||
|
||||
for bin in ${getBin stdenv.cc}/bin/*; do
|
||||
ln -s $bin $toolchain/bin
|
||||
done
|
||||
|
||||
for bin in ${getBin stdenv.cc.bintools.bintools}/bin/*; do
|
||||
if ! [ -e "$toolchain/bin/$(basename $bin)" ]; then
|
||||
ln -s $bin $toolchain/bin
|
||||
fi
|
||||
done
|
||||
|
||||
ln -s ${buildPackages.bison}/bin/yacc $toolchain/bin/yacc
|
||||
ln -s ${buildPackages.bison}/bin/bison $toolchain/bin/bison
|
||||
ln -s ${buildPackages.flex}/bin/flex $toolchain/bin/flex
|
||||
ln -s ${buildPackages.flex}/bin/flex++ $toolchain/bin/flex++
|
||||
ln -s $toolchain/bin/flex $toolchain/bin/lex
|
||||
|
||||
ln -s ${buildPackages.m4}/bin/m4 $toolchain/bin/m4
|
||||
ln -s $toolchain/bin/m4 $toolchain/bin/gm4
|
||||
|
||||
ln -s ${buildPackages.unifdef}/bin/unifdef $toolchain/bin/unifdef
|
||||
ln -s ${buildPackages.unifdef}/bin/unifdefall $toolchain/bin/unifdefall
|
||||
|
||||
ln -s ${buildPackages.gperf}/bin/gperf $toolchain/bin/gperf
|
||||
ln -s ${buildPackages.indent}/bin/indent $toolchain/bin/indent
|
||||
ln -s ${buildPackages.ctags}/bin/ctags $toolchain/bin/ctags
|
||||
'' + optionalString stdenv.isDarwin ''
|
||||
for bin in ${getBin buildPackages.darwin.cctools}/bin/*; do
|
||||
if ! [ -e "$toolchain/bin/$(basename $bin)" ]; then
|
||||
ln -s $bin $toolchain/bin
|
||||
fi
|
||||
done
|
||||
|
||||
ln -s ${buildPackages.darwin.bootstrap_cmds}/bin/mig $toolchain/bin
|
||||
mkdir -p $toolchain/libexec
|
||||
ln -s ${buildPackages.darwin.bootstrap_cmds}/libexec/migcom $toolchain/libexec
|
||||
ln -s ${mkdep-darwin-src} $toolchain/bin/mkdep
|
||||
'')
|
||||
142
pkgs/development/tools/xcbuild/wrapper.nix
Normal file
142
pkgs/development/tools/xcbuild/wrapper.nix
Normal file
|
|
@ -0,0 +1,142 @@
|
|||
{ stdenv, makeWrapper, writeText, runCommand
|
||||
, CoreServices, ImageIO, CoreGraphics
|
||||
, runtimeShell, callPackage
|
||||
, xcodePlatform ? stdenv.targetPlatform.xcodePlatform or "MacOSX"
|
||||
, xcodeVer ? stdenv.targetPlatform.xcodeVer or "9.4.1"
|
||||
, sdkVer ? stdenv.targetPlatform.darwinSdkVersion or "10.12" }:
|
||||
|
||||
let
|
||||
|
||||
toolchainName = "com.apple.dt.toolchain.XcodeDefault";
|
||||
sdkName = "${xcodePlatform}${sdkVer}";
|
||||
|
||||
# TODO: expose MACOSX_DEPLOYMENT_TARGET in nix so we can use it here.
|
||||
sdkBuildVersion = "17E189";
|
||||
xcodeSelectVersion = "2349";
|
||||
|
||||
xcbuild = callPackage ./default.nix {
|
||||
inherit CoreServices ImageIO CoreGraphics stdenv;
|
||||
};
|
||||
|
||||
toolchains = callPackage ./toolchains.nix {
|
||||
inherit toolchainName stdenv;
|
||||
};
|
||||
|
||||
sdks = callPackage ./sdks.nix {
|
||||
inherit toolchainName sdkName xcodePlatform;
|
||||
version = sdkVer;
|
||||
};
|
||||
|
||||
platforms = callPackage ./platforms.nix {
|
||||
inherit sdks xcodePlatform stdenv;
|
||||
};
|
||||
|
||||
xcconfig = writeText "nix.xcconfig" ''
|
||||
SDKROOT=${sdkName}
|
||||
'';
|
||||
|
||||
xcode-select = writeText "xcode-select" ''
|
||||
#!${runtimeShell}
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
-h | --help) ;; # noop
|
||||
-s | --switch) shift;; # noop
|
||||
-r | --reset) ;; # noop
|
||||
-v | --version) echo xcode-select version ${xcodeSelectVersion} ;;
|
||||
-p | -print-path | --print-path) echo @DEVELOPER_DIR@ ;;
|
||||
--install) ;; # noop
|
||||
esac
|
||||
shift
|
||||
done
|
||||
'';
|
||||
|
||||
xcrun = writeText "xcrun" ''
|
||||
#!${runtimeShell}
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
--sdk | -sdk) shift ;;
|
||||
--find | -find)
|
||||
shift
|
||||
command -v $1 ;;
|
||||
--log | -log) ;; # noop
|
||||
--verbose | -verbose) ;; # noop
|
||||
--no-cache | -no-cache) ;; # noop
|
||||
--kill-cache | -kill-cache) ;; # noop
|
||||
--show-sdk-path | -show-sdk-path)
|
||||
echo ${sdks}/${sdkName}.sdk ;;
|
||||
--show-sdk-platform-path | -show-sdk-platform-path)
|
||||
echo ${platforms}/${xcodePlatform}.platform ;;
|
||||
--show-sdk-version | -show-sdk-version)
|
||||
echo ${sdkVer} ;;
|
||||
--show-sdk-build-version | -show-sdk-build-version)
|
||||
echo ${sdkBuildVersion} ;;
|
||||
*) break ;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
if ! [[ -z "$@" ]]; then
|
||||
exec "$@"
|
||||
fi
|
||||
'';
|
||||
|
||||
in
|
||||
|
||||
runCommand "xcodebuild-${xcbuild.version}" {
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
inherit (xcbuild) meta;
|
||||
|
||||
# ensure that the toolchain goes in PATH
|
||||
propagatedBuildInputs = [ "${toolchains}/XcodeDefault.xctoolchain" ];
|
||||
|
||||
passthru = {
|
||||
inherit xcbuild;
|
||||
toolchain = "${toolchains}/XcodeDefault.xctoolchain";
|
||||
sdk = "${sdks}/${sdkName}";
|
||||
platform = "${platforms}/${xcodePlatform}.platform";
|
||||
};
|
||||
|
||||
preferLocalBuild = true;
|
||||
} ''
|
||||
mkdir -p $out/bin
|
||||
|
||||
ln -s $out $out/usr
|
||||
|
||||
mkdir -p $out/Library/Xcode
|
||||
ln -s ${xcbuild}/Library/Xcode/Specifications $out/Library/Xcode/Specifications
|
||||
|
||||
ln -s ${platforms} $out/Platforms
|
||||
ln -s ${toolchains} $out/Toolchains
|
||||
|
||||
mkdir -p $out/Applications/Xcode.app/Contents
|
||||
ln -s $out $out/Applications/Xcode.app/Contents/Developer
|
||||
|
||||
# The native xcodebuild command supports an invocation like "xcodebuild -version -sdk" without specifying the specific SDK, so we simulate this by
|
||||
# detecting this case and simulating the output; printing the header and appending the normal output via appending the sdk version to the positional
|
||||
# arguments we pass through to the wrapped xcodebuild.
|
||||
makeWrapper ${xcbuild}/bin/xcodebuild $out/bin/xcodebuild \
|
||||
--add-flags "-xcconfig ${xcconfig}" \
|
||||
--add-flags "DERIVED_DATA_DIR=." \
|
||||
--set DEVELOPER_DIR "$out" \
|
||||
--set SDKROOT ${sdkName} \
|
||||
--run '[ "$#" -eq 2 ] && [ "$1" = "-version" ] && [ "$2" = "-sdk" ] && echo ${sdkName}.sdk - macOS ${sdkVer} \(macosx${sdkVer}\) && set -- "$@" "${sdkName}"' \
|
||||
--run '[ "$1" = "-version" ] && [ "$#" -eq 1 ] && (echo Xcode ${xcodeVer}; echo Build version ${sdkBuildVersion}) && exit 0' \
|
||||
--run '[ "$1" = "-license" ] && exit 0'
|
||||
|
||||
substitute ${xcode-select} $out/bin/xcode-select \
|
||||
--subst-var-by DEVELOPER_DIR $out/Applications/Xcode.app/Contents/Developer
|
||||
chmod +x $out/bin/xcode-select
|
||||
|
||||
substitute ${xcrun} $out/bin/xcrun
|
||||
chmod +x $out/bin/xcrun
|
||||
|
||||
for bin in PlistBuddy actool builtin-copy builtin-copyPlist \
|
||||
builtin-copyStrings builtin-copyTiff \
|
||||
builtin-embeddedBinaryValidationUtility \
|
||||
builtin-infoPlistUtility builtin-lsRegisterURL \
|
||||
builtin-productPackagingUtility builtin-validationUtility \
|
||||
lsbom plutil; do
|
||||
ln -s ${xcbuild}/bin/$bin $out/bin/$bin
|
||||
done
|
||||
|
||||
fixupPhase
|
||||
''
|
||||
Loading…
Add table
Add a link
Reference in a new issue