]> granicus.if.org Git - icu/commitdiff
ICU-13138 fix ICU data binary naming for builds with Static layout (#44)
authorsav-ix <sav_ix@ukr.net>
Mon, 13 Aug 2018 16:18:20 +0000 (19:18 +0300)
committerShane Carr <shane@unicode.org>
Thu, 27 Sep 2018 21:27:38 +0000 (14:27 -0700)
* ICU-13138 do not create symlink to Static ICU Data binary

For builds using mingw-w64 and MSVC with Static layout,
ICU installation folder contains '.dll' file, which is
a symbolic link to '.a' or '.lib' Data binary.

This have no sense anyway, since it can't be used as
binary with shared layout.

* ICU-13138 mingw: add lib prefix to Static Data binary name

For builds using mingw-w64 with Static layout, missing 'lib'
prefix in ICU Data binary name leads to Stubdata binary use
during ICU extras, samples and tests build. ICU Stubdata
binary also substitutes Data in installation directory.

The above leads to runtime errors of ICU tools, tests and
ICU-based software.

Thus need to add 'lib' prefix to ICU Data binary name during
Pkgdata run.

Task-number: ICU-13138
Task-number: ICU-13187

icu4c/source/tools/pkgdata/pkgdata.cpp

index ffcf459c349e91964be13264a5acf9488200127f..942a55d77ccc309ad4fa2938c1ef95eca278627c 100644 (file)
@@ -904,7 +904,8 @@ static void createFileNames(UPKGOptions *o, const char mode, const char *version
         if (IN_DLL_MODE(mode)) {
             sprintf(libFileNames[LIB_FILE], "%s", libName);
         } else {
-            sprintf(libFileNames[LIB_FILE], "%s%s",
+            sprintf(libFileNames[LIB_FILE], "%s%s%s",
+                    (strstr(libName, "icudt") ? "lib" : ""),
                     pkgDataFlags[LIBPREFIX],
                     libName);
         }
@@ -1020,7 +1021,7 @@ static int32_t pkg_createSymLinks(const char *targetDir, UBool specialHandling)
     char name2[SMALL_BUFFER_MAX_SIZE]; /* file name to symlink */
     const char* FILE_EXTENSION_SEP = uprv_strlen(pkgDataFlags[SO_EXT]) == 0 ? "" : ".";
 
-#if !defined(USING_CYGWIN) && U_PLATFORM != U_PF_MINGW
+#if U_PLATFORM != U_PF_CYGWIN
     /* No symbolic link to make. */
     if (uprv_strlen(libFileNames[LIB_FILE_VERSION]) == 0 || uprv_strlen(libFileNames[LIB_FILE_VERSION_MAJOR]) == 0 ||
         uprv_strcmp(libFileNames[LIB_FILE_VERSION], libFileNames[LIB_FILE_VERSION_MAJOR]) == 0) {