blob: 3336747d2b30b005c3f069470826944d0239b2db [file] [log] [blame]
// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
@TestOn('linux')
library;
import 'dart:io';
import 'package:native_toolchain_c/src/native_toolchain/gcc.dart';
import 'package:native_toolchain_c/src/tool/tool.dart';
import 'package:native_toolchain_c/src/tool/tool_requirement.dart';
import 'package:native_toolchain_c/src/tool/tool_resolver.dart';
import 'package:test/test.dart';
import '../helpers.dart';
void main() {
if (!Platform.isLinux) {
// Avoid needing status files on Dart SDK CI.
return;
}
void testToolSet(String name, List<Tool> tools) {
test('gcc cross compilation $name smoke test', () async {
final resolver = ToolResolvers([
for (final tool in tools) tool.defaultResolver!,
]);
final resolved = await resolver.resolve(systemContext);
printOnFailure(resolved.toString());
expect(resolved.isNotEmpty, true);
final requirement = RequireAll([
for (final tool in tools) ToolRequirement(tool),
]);
final satisfied = requirement.satisfy(resolved);
printOnFailure(tools.toString());
printOnFailure(satisfied.toString());
expect(satisfied?.length, tools.length);
});
}
testToolSet('aarch64LinuxGnuGcc', [
aarch64LinuxGnuGcc,
aarch64LinuxGnuGccAr,
aarch64LinuxGnuLd,
]);
testToolSet('armLinuxGnueabihfGcc', [
armLinuxGnueabihfGcc,
armLinuxGnueabihfGccAr,
armLinuxGnueabihfLd,
]);
testToolSet('i686LinuxGnuGcc', [
i686LinuxGnuGcc,
i686LinuxGnuGccAr,
i686LinuxGnuLd,
]);
testToolSet('x86_64LinuxGnuGcc', [
x86_64LinuxGnuGcc,
x86_64LinuxGnuGccAr,
x86_64LinuxGnuLd,
]);
testToolSet('riscv64LinuxGnuGcc', [
riscv64LinuxGnuGcc,
riscv64LinuxGnuGccAr,
riscv64LinuxGnuLd,
]);
}