blob: 2dd923d4e11ec1179c057835fa4f229c7af38ae5 [file] [log] [blame]
// Copyright (c) 2021, 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.
/// @description Utils for co19 ffi tests
/// @author sgrekhov@unipro.ru
import 'dart:ffi';
import 'dart:io' show Platform;
const TEST_DYNAMIC_LIB = "ffi_test_dynamic_library";
const TEST_FUNCTIONS_LIB = "ffi_test_functions";
String libPath(String libName, {String path = ""}) {
if (Platform.isLinux || Platform.isAndroid || Platform.isFuchsia)
return path + "lib" + libName + ".so";
if (Platform.isMacOS) return path + "lib" + libName + ".dylib";
if (Platform.isWindows) return path + libName + ".dll";
throw Exception("Platform not implemented");
}
String libPathAbsolute(String libName, {String path = ""}) {
String p = libPath(libName, path: path);
String exPath = Platform.resolvedExecutable;
String out = Platform.pathSeparator + "out" + Platform.pathSeparator;
int ind = exPath.indexOf(out);
if (ind < 0) {
throw Exception("Unable to resolve absolute path to the library '${libName}'");
}
int ind2 = exPath.indexOf(Platform.pathSeparator, ind + out.length);
return exPath.substring(0, ind2) + Platform.pathSeparator + p;
}