anchor.diff:  { lib, stdenv, fetchFromGitHub, cmake
  -, boost, python3, eigen
  +, boost, python3, eigen, python3Packages
   , icestorm, trellis
   , llvmPackages
   
  
positive.code:     wrapQtApp $out/bin/nextpnr-generic
      wrapQtApp $out/bin/nextpnr-ice40
      wrapQtApp $out/bin/nextpnr-ecp5
    '';
  
    meta = with lib; {
  
negative.code:      = [ cmake ]
      ++ (lib.optional enableGui wrapQtAppsHook);
    buildInputs
       = [ boostPython python3 eigen python3Packages.apycula ]
      ++ (lib.optional enableGui qtbase)
      ++ (lib.optional stdenv.cc.isClang llvmPackages.openmp);
  
    cmakeFlags =
      [ "-DCURRENT_GIT_VERSION=${lib.substring 0 7 (lib.elemAt srcs 0).rev}"
        "-DARCH=generic;ice40;ecp5;gowin"
        "-DBUILD_TESTS=ON"
        "-DICESTORM_INSTALL_PREFIX=${icestorm}"
        "-DTRELLIS_INSTALL_PREFIX=${trellis}"
        "-DTRELLIS_LIBDIR=${trellis}/lib/trellis"
        "-DGOWIN_BBA_EXECUTABLE=${python3Packages.apycula}/bin/gowin_bba"
        "-DUSE_OPENMP=ON"
        # warning: high RAM usage
        "-DSERIALIZE_CHIPDBS=OFF"
  