return false;
}
+static int appAotCb(pkgmgrinfo_appinfo_h handle, void *userData)
+{
+ char *pkgId = NULL;
+ int ret = 0;
+
+ ret = pkgmgrinfo_appinfo_get_pkgid(handle, &pkgId);
+ if (ret != PMINFO_R_OK) {
+ _DBG("Failed to get pkgid");
+ return -1;
+ }
+
+ // When you create native image with pkgid, ni file is generated even though already ni file exist.
+ if (createNiUnderPkgRoot(pkgId) != 0) {
+ _ERR("Failed to get root path from [%s]", pkgId);
+ return -1;
+ } else {
+ _DBG("Complete make application to native image");
+ }
+
+ return 0;
+}
+
+int regenerateAppNI()
+{
+ int ret = 0;
+ pkgmgrinfo_appinfo_metadata_filter_h handle;
+
+ ret = pkgmgrinfo_appinfo_metadata_filter_create(&handle);
+ if (ret != PMINFO_R_OK)
+ return -1;
+
+ ret = pkgmgrinfo_appinfo_metadata_filter_add(handle, "http://tizen.org/metadata/prefer_dotnet_aot", "true");
+ if (ret != PMINFO_R_OK) {
+ pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
+ return -1;
+ }
+
+ ret = pkgmgrinfo_appinfo_metadata_filter_foreach(handle, appAotCb, NULL);
+ if (ret != PMINFO_R_OK) {
+ _DBG("Failed pkgmgrinfo_appinfo_metadata_filter_foreach");
+ pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
+ return -1;
+ }
+
+ _DBG("Success pkgmgrinfo_appinfo_metadata_filter_foreach");
+
+ pkgmgrinfo_appinfo_metadata_filter_destroy(handle);
+ return 0;
+}
+
static void createCoreLibNI()
{
std::string coreLib = concatPath(__RUNTIME_DIR, "System.Private.CoreLib.dll");
#include <functional>
typedef std::function<void (const char*)> afterCreate;
+int regenerateAppNI();
void createNiUnderDirs(const char* rootPaths[], int count, const char* ignores[], int igcount, afterCreate cb, bool update);
void createNiUnderDirs(const char* rootPaths[], int count, afterCreate cb, bool update);
void createNiUnderDirs(const char* rootPaths[], int count, bool update);
{
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"
- " --reset-system - Remove System NI files\n"
- " --reset-pkg - Remove App NI files\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"
+ " --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"
"Example:\n"
"Create native image for dlls and exes under platform directories\n"
return 0;
} else if (cmdOptionExists(argv, argv+argc, "--reset-pkg")) {
rmPkgMode = true;
+ } else if (cmdOptionExists(argv, argv+argc, "--regen-all-app")) {
+ regenerateAppNI();
+ return 0;
} else {
help(argv[0]);
return 1;