55 lines
1.5 KiB
Nix
55 lines
1.5 KiB
Nix
|
|
||
|
{ buildGoPackage, go, gomobile, openjdk, xcodeWrapper, pkgs, stdenv }:
|
||
|
|
||
|
{ owner, repo, rev, version, goPackagePath, src, host,
|
||
|
goBuildFlags, goBuildLdFlags,
|
||
|
config } @ args':
|
||
|
|
||
|
with stdenv;
|
||
|
|
||
|
let
|
||
|
args = removeAttrs args' [ "config" "goBuildFlags" "goBuildLdFlags" ];
|
||
|
targetConfig = config;
|
||
|
buildStatusGo = pkgs.callPackage ./build-status-go.nix { inherit buildGoPackage go xcodeWrapper; };
|
||
|
|
||
|
buildStatusGoMobileLib = buildStatusGo (args // {
|
||
|
nativeBuildInputs = [ gomobile ] ++ lib.optional (targetConfig.name == "android") openjdk;
|
||
|
|
||
|
buildPhase = ''
|
||
|
runHook preBuild
|
||
|
|
||
|
runHook renameImports
|
||
|
|
||
|
# Build mobile libraries
|
||
|
# TODO: Manage to pass -s -w to -ldflags. Seems to only accept a single flag
|
||
|
echo
|
||
|
echo "Building mobile library for ${targetConfig.name}"
|
||
|
echo
|
||
|
GOPATH=${gomobile.dev}:$GOPATH \
|
||
|
PATH=${lib.makeBinPath [ gomobile.bin ]}:$PATH \
|
||
|
${lib.concatStringsSep " " targetConfig.envVars} \
|
||
|
gomobile bind ${goBuildFlags} -target=${targetConfig.name} ${lib.concatStringsSep " " targetConfig.gomobileExtraFlags} \
|
||
|
-o ${targetConfig.outputFileName} \
|
||
|
${goBuildLdFlags} \
|
||
|
${goPackagePath}/mobile
|
||
|
|
||
|
runHook postBuild
|
||
|
'';
|
||
|
|
||
|
installPhase = ''
|
||
|
runHook preInstall
|
||
|
|
||
|
mkdir -p $out/lib
|
||
|
mv ${targetConfig.outputFileName} $out/lib/
|
||
|
|
||
|
runHook postInstall
|
||
|
'';
|
||
|
|
||
|
outputs = [ "out" ];
|
||
|
|
||
|
meta = {
|
||
|
platforms = with lib.platforms; linux ++ darwin;
|
||
|
};
|
||
|
});
|
||
|
|
||
|
in buildStatusGoMobileLib
|