config method

Future<void> config()

Implementation

Future<void> config() async {
  final (os, arch) = _target(
    codeConfig.targetOS,
    codeConfig.targetArchitecture,
  );

  bool isCross =
      !(codeConfig.targetOS == OS.current &&
          codeConfig.targetArchitecture == Architecture.current);

  return call([
    'f',
    '-P',
    '.',
    '-v',
    '--plat=$os',
    '--arch=$arch',
    // dart format off
    ...switch (codeConfig.targetOS) {
      .android       => () {
                          final ndk = _androidTool.ndk;
                          final bin = _androidTool.bin;
                          return [
                            '--toolchain=ndk',
                            if (ndk != null) '--ndk=$ndk',
                            if (bin != null) '--bin=$bin',
                          ];
                        }(),
      .iOS           => [
                          if (codeConfig.iOS.targetSdk == .iPhoneSimulator)
                            '--appledev=simulator',
                        ],
      // desktop cross compile
      _ when isCross => [
                          '--toolchain=zigcc', // it's zigcc instead of zig !!!
                        ],
      _              => [],
    },
    // dart format on
    '--mode=release',
    '--kind=$kind',
    '-y',
  ]);
}