ICU-10711 Update more fixes to zos pds dataset build

X-SVN-Rev: 35251
This commit is contained in:
Michael Ow 2014-02-27 19:23:50 +00:00
parent fcb9a8ed56
commit fefa024ccc
3 changed files with 76 additions and 33 deletions

View file

@ -1,6 +1,6 @@
## -*-makefile-*-
## os/390, z/OS specific setup
## Copyright (c) 1999-2013, International Business Machines Corporation and
## Copyright (c) 1999-2014, International Business Machines Corporation and
## others. All Rights Reserved.
###################################################################
@ -42,9 +42,9 @@ IEEE390=1#M#
endif
ifeq (${IEEE390}, 1)
ICU_IEEE =#M#
else
ICU_IEEE = -Wc,'FLOAT(IEEE)' -DIEEE_754=0#M#
else
ICU_IEEE =#M#
endif
## Additional flags when building libraries and with threads
@ -137,30 +137,37 @@ DEFS += -DOS390_STUBDATA -DU_LIBICUDATA_NAME=\"$(ICUPREFIX)$(DATA_STUBNAME)
endif
ifeq ($(OS390BATCH),1)
## PDS_NAME_PREFIX sets the prefix of the PDS dataset name while keeping the ICU version number.
## To use custom names set ICU_PDS_NAME and ICU_PDS_NAME_SUFFIX
## IXM is used as a name prefix for XML Toolkit, default value
ifeq ($(PDS_NAME_PREFIX),)
PDS_NAME_PREFIX= IXMI
endif
ifeq ($(OS390_STUBDATA),1)
BATCH_STUB_TARGET= "//'${LOADMOD}(${PDS_NAME_PREFIX}${SO_TARGET_VERSION_MAJOR}D1)'"
BATCH_LIBICUDT= "//'${LOADEXP}(${PDS_NAME_PREFIX}${SO_TARGET_VERSION_MAJOR}D1)'"
ifeq ($(ICU_PDS_NAME),)
PDS_FULL_NAME=${PDS_NAME_PREFIX}${SO_TARGET_VERSION_MAJOR}
else
BATCH_STUB_TARGET= "//'${LOADMOD}(${PDS_NAME_PREFIX}${SO_TARGET_VERSION_MAJOR}DA)'"
BATCH_LIBICUDT= "//'${LOADEXP}(${PDS_NAME_PREFIX}${SO_TARGET_VERSION_MAJOR}DA)'"
PDS_FULL_NAME=${ICU_PDS_NAME}
endif
ifeq ($(OS390_STUBDATA),1)
BATCH_STUB_TARGET= "//'${LOADMOD}(${PDS_FULL_NAME}D1${ICU_PDS_NAME_SUFFIX})'"
BATCH_LIBICUDT= "//'${LOADEXP}(${PDS_FULL_NAME}D1${ICU_PDS_NAME_SUFFIX})'"
else
BATCH_STUB_TARGET= "//'${LOADMOD}(${PDS_FULL_NAME}DA${ICU_PDS_NAME_SUFFIX})'"
BATCH_LIBICUDT= "//'${LOADEXP}(${PDS_FULL_NAME}DA${ICU_PDS_NAME_SUFFIX})'"
PKGDATA_DEFS += -DU_LIBICUDATA_NAME=\"$(ICUPREFIX)$(DATA_STUBNAME)$(ICULIBSUFFIX)\"
endif
BATCH_COMMON_TARGET="//'${LOADMOD}(${PDS_NAME_PREFIX}${SO_TARGET_VERSION_MAJOR}UC)'"
BATCH_I18N_TARGET="//'${LOADMOD}(${PDS_NAME_PREFIX}${SO_TARGET_VERSION_MAJOR}IN)'"
BATCH_IO_TARGET="//'${LOADMOD}(${PDS_NAME_PREFIX}${SO_TARGET_VERSION_MAJOR}IO)'"
BATCH_LAYOUT_TARGET="//'${LOADMOD}(${PDS_NAME_PREFIX}${SO_TARGET_VERSION_MAJOR}LE)'"
BATCH_LAYOUTEX_TARGET="//'${LOADMOD}(${PDS_NAME_PREFIX}${SO_TARGET_VERSION_MAJOR}LX)'"
BATCH_COMMON_TARGET="//'${LOADMOD}(${PDS_FULL_NAME}UC${ICU_PDS_NAME_SUFFIX})'"
BATCH_I18N_TARGET="//'${LOADMOD}(${PDS_FULL_NAME}IN${ICU_PDS_NAME_SUFFIX})'"
BATCH_IO_TARGET="//'${LOADMOD}(${PDS_FULL_NAME}IO${ICU_PDS_NAME_SUFFIX})'"
BATCH_LAYOUT_TARGET="//'${LOADMOD}(${PDS_FULL_NAME}LE${ICU_PDS_NAME_SUFFIX})'"
BATCH_LAYOUTEX_TARGET="//'${LOADMOD}(${PDS_FULL_NAME}LX${ICU_PDS_NAME_SUFFIX})'"
BATCH_LIBICUUC= "//'${LOADEXP}(${PDS_NAME_PREFIX}${SO_TARGET_VERSION_MAJOR}UC)'"
BATCH_LIBICUI18N= "//'${LOADEXP}(${PDS_NAME_PREFIX}${SO_TARGET_VERSION_MAJOR}IN)'"
BATCH_LIBICUIO= "//'${LOADEXP}(${PDS_NAME_PREFIX}${SO_TARGET_VERSION_MAJOR}IO)'"
BATCH_LIBICULE= "//'${LOADEXP}(${PDS_NAME_PREFIX}${SO_TARGET_VERSION_MAJOR}LE)'"
BATCH_LIBICULX= "//'${LOADEXP}(${PDS_NAME_PREFIX}${SO_TARGET_VERSION_MAJOR}LX)'"
BATCH_LIBICUUC= "//'${LOADEXP}(${PDS_FULL_NAME}UC${ICU_PDS_NAME_SUFFIX})'"
BATCH_LIBICUI18N= "//'${LOADEXP}(${PDS_FULL_NAME}IN${ICU_PDS_NAME_SUFFIX})'"
BATCH_LIBICUIO= "//'${LOADEXP}(${PDS_FULL_NAME}IO${ICU_PDS_NAME_SUFFIX})'"
BATCH_LIBICULE= "//'${LOADEXP}(${PDS_FULL_NAME}LE${ICU_PDS_NAME_SUFFIX})'"
BATCH_LIBICULX= "//'${LOADEXP}(${PDS_FULL_NAME}LX${ICU_PDS_NAME_SUFFIX})'"
endif

View file

@ -44,7 +44,11 @@ CURDIR:=$(CURR_FULL_DIR)
ifeq ($(CURDIR),)
CURDIR=.
endif
ifeq ($(OS390BATCH),1)
PKGDATA = $(TOOLBINDIR)/pkgdata $(PKGDATA_OPTS) -z -q -c -s $(CURDIR)/out/build/$(ICUDATA_PLATFORM_NAME) -d $(ICUPKGDATA_OUTDIR)
else
PKGDATA = $(TOOLBINDIR)/pkgdata $(PKGDATA_OPTS) -q -c -s $(CURDIR)/out/build/$(ICUDATA_PLATFORM_NAME) -d $(ICUPKGDATA_OUTDIR)
endif
OS390_PDS_NAME = -z -L $(BATCH_STUB_TARGET)
ifeq ($(OS390_STUBDATA),1)
@ -180,11 +184,7 @@ ifeq ($(PKGDATA_MODE),dll)
endif
endif
ifneq ($(ICUDATA_SOURCE_IS_NATIVE_TARGET),YES)
ifeq ($(OS390BATCH),1)
$(PKGDATA_INVOKE) $(PKGDATA) -e $(ICUDATA_ENTRY_POINT) -T $(OUTTMPDIR) -p $(ICUDATA_NAME) -m $(PKGDATA_MODE) $(PKGDATA_VERSIONING) $(PKGDATA_LIBNAME) -z $(PKGDATA_LIST)
else
$(PKGDATA_INVOKE) $(PKGDATA) -e $(ICUDATA_ENTRY_POINT) -T $(OUTTMPDIR) -p $(ICUDATA_NAME) -m $(PKGDATA_MODE) $(PKGDATA_VERSIONING) $(PKGDATA_LIBNAME) $(PKGDATA_LIST)
endif
else
$(INSTALL_DATA) $(ICUDATA_SOURCE_ARCHIVE) $(OUTDIR)
endif

View file

@ -378,7 +378,13 @@ main(int argc, char* argv[]) {
}
if(options[PDS_BUILD].doesOccur) {
#if U_PLATFORM == U_PF_OS390
o.pdsbuild = TRUE;
#else
o.pdsbuild = FALSE;
fprintf(stdout, "Warning: You are using the -z option which only works on z/OS.\n");
#endif
} else {
o.pdsbuild = FALSE;
}
@ -650,7 +656,7 @@ static int32_t pkg_executeOptions(UPKGOptions *o) {
/* Using the base libName and version number, generate the library file names. */
createFileNames(o, mode, version_major, o->version == NULL ? "" : o->version, o->libName, reverseExt, noVersion);
if ((o->version!=NULL || IN_STATIC_MODE(mode)) && o->rebuild == FALSE) {
if ((o->version!=NULL || IN_STATIC_MODE(mode)) && o->rebuild == FALSE && o->pdsbuild == FALSE) {
/* Check to see if a previous built data library file exists and check if it is the latest. */
sprintf(checkLibFile, "%s%s", targetDir, libFileNames[LIB_FILE_VERSION]);
if (T_FileStream_file_exists(checkLibFile)) {
@ -1380,22 +1386,52 @@ static int32_t pkg_generateLibraryFile(const char *targetDir, const char mode, c
result = runCommand(cmd);
#if U_PLATFORM == U_PF_OS390
char *env_tmp;
char PDS_LibName[512];
char PDS_Name[512];
PDS_Name[0] = 0;
PDS_LibName[0] = 0;
if (specialHandling && uprv_strcmp(libFileNames[LIB_FILE],"libicudata") == 0) {
sprintf(PDS_LibName,"%s%s%s",
"\"//'",
getenv("LOADMOD"),
"(IXMI" U_ICU_VERSION_SHORT "DA)'\"");
if (env_tmp = getenv("ICU_PDS_NAME")) {
sprintf(PDS_Name, "%s%s",
env_tmp,
"DA");
strcat(PDS_Name, getenv("ICU_PDS_NAME_SUFFIX"));
} else if (env_tmp = getenv("PDS_NAME_PREFIX")) {
sprintf(PDS_Name, "%s%s",
env_tmp,
U_ICU_VERSION_SHORT "DA");
} else {
sprintf(PDS_Name, "%s%s",
"IXMI",
U_ICU_VERSION_SHORT "DA");
}
} else if (!specialHandling && uprv_strcmp(libFileNames[LIB_FILE],"libicudata_stub") == 0) {
sprintf(PDS_LibName,"%s%s%s",
"\"//'",
getenv("LOADMOD"),
"(IXMI" U_ICU_VERSION_SHORT "D1)'\"");
if (env_tmp = getenv("ICU_PDS_NAME")) {
sprintf(PDS_Name, "%s%s",
env_tmp,
"D1");
strcat(PDS_Name, getenv("ICU_PDS_NAME_SUFFIX"));
} else if (env_tmp = getenv("PDS_NAME_PREFIX")) {
sprintf(PDS_Name, "%s%s",
env_tmp,
U_ICU_VERSION_SHORT "D1");
} else {
sprintf(PDS_Name, "%s%s",
"IXMI",
U_ICU_VERSION_SHORT "D1");
}
}
if (PDS_LibName[0]) {
sprintf(cmd, "%s %s -o %s %s %s%s %s %s",
if (PDS_Name[0]) {
sprintf(PDS_LibName,"%s%s%s%s%s",
"\"//'",
getenv("LOADMOD"),
"(",
PDS_Name,
")'\"");
sprintf(cmd, "%s %s -o %s %s %s%s %s %s",
pkgDataFlags[GENLIB],
pkgDataFlags[LDICUDTFLAGS],
PDS_LibName,