return list;
}
+static bool cmdOptionExists(char** begin, char** end, const std::string& option)
+{
+ return std::find(begin, end, option) != end;
+}
+
static void help(const char *argv0)
{
const char* helpDesc =
- "Usage: %s [args] <root paths or pkg name>\n"
- " --help - Display this screen\n"
- " --system - Create NI under System DLLs\n"
- " --dll - Create NI for DLL\n"
- " --pkg - Create NI for package\n"
- " --dir - Create NI for directory\n"
- " --r2r - Use ready-to-run option (default: FNV)\n"
- " (This option should be used with other options)\n"
- " --reset-system - Remove System NI files\n"
- " --reset-pkg - Remove App NI files\n"
- " --regen-all-app - Re-generate All App NI files\n"
- "\n"
+ "%s is deprecated. Please use dotnettool instead.\n"
"Example:\n"
- "1. Create native image for dlls and exes under platform directories\n"
- " # %s --system\n"
- "2. Create native image for dll\n"
- " # %s --dll /usr/bin/Tizen.Runtime.dll\n"
- "3. Create native image under the package's bin and lib directory\n"
- " # %s --pkg org.tizen.FormsGallery\n"
- "4. Regenerate native images for all installed .net packages with ready-to-run option\n"
- " # %s --r2r --regen-all-app\n\n";
- printf(helpDesc, argv0, argv0, argv0, argv0, argv0);
+ " # dotnettool --help\n\n";
+ printf(helpDesc, argv0);
}
int main(int argc, char* argv[])
{
+ DWORD flags = 0;
bool pkgMode = false;
bool dllMode = false;
bool dirMode = false;
bool rmPkgMode = false;
- bool enableR2R = false;
bool pkgDllMode = false;
- NiCommonOption option = {std::string(), std::string(), std::string()};
+ NICommonOption option = {std::string(), std::string(), std::string()};
if (initNICommon(&option) != NI_ERROR_NONE) {
- fprintf(stderr, "Fail to initialize NI Common\n");
return -1;
}
+ // Parse optional switches first.
if (cmdOptionExists(argv, argv+argc, "--r2r")) {
- enableR2R = true;
+ flags |= NI_FLAGS_ENABLER2R;
+ }
+ if (cmdOptionExists(argv, argv+argc, "--compatibility")) {
+ flags |= NI_FLAGS_COMPATIBILITY;
+ }
+ if (cmdOptionExists(argv, argv+argc, "--instrument")) {
+ flags |= NI_FLAGS_INSTRUMENT;
+ }
+ if (cmdOptionExists(argv, argv+argc, "--verbose")) {
+ flags |= NI_FLAGS_VERBOSE;
}
+ // The following commands are mutually exclusive.
if (cmdOptionExists(argv, argv+argc, "--help")) {
help(argv[0]);
return 0;
} else if (cmdOptionExists(argv, argv+argc, "--system")) {
- createNiPlatform(enableR2R);
+ createNIPlatform(flags);
return 0;
} else if (cmdOptionExists(argv, argv+argc, "--dll")) {
dllMode = true;
} else if (cmdOptionExists(argv, argv+argc, "--dir")) {
dirMode = true;
} else if (cmdOptionExists(argv, argv+argc, "--reset-system")) {
- removeNiPlatform();
+ removeNIPlatform();
return 0;
} else if (cmdOptionExists(argv, argv+argc, "--reset-pkg")) {
rmPkgMode = true;
} else if (cmdOptionExists(argv, argv+argc, "--regen-all-app")) {
- regenerateAppNI(enableR2R);
+ regenerateAppNI(flags);
return 0;
} else if (cmdOptionExists(argv, argv+argc, "--pkg-dll")) {
pkgDllMode = true;
if (args.size() < 1) {
if (pkgMode)
- fprintf(stderr, "Package name is missed\n");
+ fprintf(stderr, "Package name is missing.\n");
else if (dllMode)
- fprintf(stderr, "DLL path is missed\n");
+ fprintf(stderr, "DLL path is missing.\n");
help(argv[0]);
- return 1;
+ return -1;
}
if (pkgMode) {
for (const std::string pkg : args) {
// if there is AOTed dlls under package root, that is skiped.
- int ret = createNiUnderPkgRoot(pkg, enableR2R);
+ int ret = createNIUnderPkgRoot(pkg, flags);
if (ret == NI_ERROR_INVALID_PACKAGE) {
fprintf(stderr, "Failed to get root path from [%s]\n", pkg.c_str());
return -1;
} else if (ret != NI_ERROR_NONE) {
- fprintf(stderr, "Failed to generate NI file [%s]\n", args[1].c_str());
+ fprintf(stderr, "Failed to generate NI file [%s]\n", pkg.c_str());
return -1;
}
}
} else if (pkgDllMode) {
- int ret = createNiDllUnderPkgRoot(args[0], args[1], enableR2R);
+ int ret = createNIDllUnderPkgRoot(args[0], args[1], flags);
if (ret == NI_ERROR_INVALID_PACKAGE) {
fprintf(stderr, "Failed to get root path from [%s]\n", args[0].c_str());
return -1;
}
} else if (rmPkgMode) {
for (const std::string pkg : args) {
- int ret = removeNiUnderPkgRoot(pkg);
+ int ret = removeNIUnderPkgRoot(pkg);
if (ret == NI_ERROR_INVALID_PACKAGE) {
fprintf(stderr, "Failed to get root path from [%s]\n", pkg.c_str());
return -1;
// donot return error code for generation failure.
// we have to run crossgen for all input dlls.
for (const std::string dll : args) {
- int ret = createNiDll(dll, enableR2R);
+ int ret = createNIDll(dll, flags);
if (ret == NI_ERROR_ALREADY_EXIST) {
// skip for already exist case
} else if (ret != NI_ERROR_NONE) {
}
}
} else if (dirMode) {
- createNiUnderDirs(args.data(), args.size(), enableR2R);
+ createNIUnderDirs(args.data(), args.size(), flags);
}
return 0;