Skip to content
Snippets Groups Projects
Select Git revision
  • 5e34909a12b15a8edab45c9f8f0915e2abb23b76
  • wip-bootstrap default
  • dualcore
  • ch3/leds
  • ch3/time
  • master
6 results

main.c

Blame
  • default.nix 1.42 KiB
    let
      mozillaOverlay = import (builtins.fetchTarball https://github.com/mozilla/nixpkgs-mozilla/archive/master.tar.gz);
      pkgs = import <nixpkgs> { overlays = [ mozillaOverlay ]; };
    in
    with pkgs;
    let
      openocd = callPackage ./openocd.nix {};
      rust = rustChannelOfTargets "nightly" null [ "thumbv7em-none-eabi" ];
      rustPlatform = makeRustPlatform {
        rustc = rust;
        cargo = rust;
      };
      epic-stubs = stdenv.mkDerivation {
        name = "epic-stubs";
        src = ./c;
        buildInputs = [ gcc python3 ];
        buildPhase = ''
          ${python3}/bin/python epicardium/api/genapi.py -H epicardium/epicardium.h -c client.c -s server.c
        '';
        installPhase = ''
          mkdir $out
          cp client.c server.c $out/
        '';
      };
      firmware = rustPlatform.buildRustPackage rec {
        name = "rust-card10";
        version = "0.0.0";
        src = ./.;
        cargoSha256 = "10qv30p3kr570glnyn37b6r8pgx48zj0mr9qf84m4wk4sjp3wxsd";
        buildInputs = [ pkgsCross.arm-embedded.stdenv.cc glibc_multi ];
        prePatch = ''
          cp ${epic-stubs}/client.c l0dable/src/
        '';
        preBuild = ''
          export LIBCLANG_PATH=${llvmPackages.libclang}/lib
          export CPATH=${glibc_multi.dev}/include
          export CARGO_HOME=$(mktemp -d cargo-home.XXX)
          cd example
        '';
        doCheck = false;
        installPhase = ''
          mkdir -p $out/lib
          cp target/thumbv7em-none-eabi/release/example $out/lib/example.elf
        '';
      };
    in {
      inherit rust rustPlatform firmware epic-stubs;
    }