ICU-683 symbols collision fix for aix, solaris, linux
X-SVN-Rev: 2873
This commit is contained in:
parent
b3a8a5cd7a
commit
a86b703082
@ -165,10 +165,33 @@
|
|||||||
|
|
||||||
# define NO_LIBRARY NULL
|
# define NO_LIBRARY NULL
|
||||||
# define IS_LIBRARY(lib) ((lib)!=NULL)
|
# define IS_LIBRARY(lib) ((lib)!=NULL)
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef UDATA_DEBUG
|
||||||
# define LOAD_LIBRARY(path, basename) dlopen(path, RTLD_LAZY|RTLD_GLOBAL)
|
# define LOAD_LIBRARY(path, basename) dlopen(path, RTLD_LAZY|RTLD_GLOBAL)
|
||||||
# define UNLOAD_LIBRARY(lib) dlclose(lib)
|
# define UNLOAD_LIBRARY(lib) dlclose(lib)
|
||||||
|
|
||||||
# define GET_LIBRARY_ENTRY(lib, entryName) dlsym(lib, entryName)
|
# define GET_LIBRARY_ENTRY(lib, entryName) dlsym(lib, entryName)
|
||||||
|
#else
|
||||||
|
void *LOAD_LIBRARY(const char *path, const char *basename)
|
||||||
|
{
|
||||||
|
void *rc;
|
||||||
|
rc = dlopen(path, RTLD_LAZY|RTLD_GLOBAL);
|
||||||
|
fprintf(stderr, "Load [%s|%s] -> %p\n", path, basename, rc);
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
void UNLOAD_LIBRARY(void *lib)
|
||||||
|
{
|
||||||
|
dlclose(lib);
|
||||||
|
fprintf(stderr, "Unload [%p]\n", lib);
|
||||||
|
}
|
||||||
|
void * GET_LIBRARY_ENTRY(void *lib, const char *entryName)
|
||||||
|
{
|
||||||
|
void *rc;
|
||||||
|
rc = dlsym(lib, entryName);
|
||||||
|
fprintf(stderr, "Get[%p] %s->%p\n", lib, entryName, rc);
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
/* End of dlopen or compatible functions */
|
/* End of dlopen or compatible functions */
|
||||||
|
|
||||||
#else /* unknown platform, no DLL implementation */
|
#else /* unknown platform, no DLL implementation */
|
||||||
@ -481,6 +504,12 @@ offsetTOCLookupFn(const UDataMemory *pData,
|
|||||||
const char *tocEntryName,
|
const char *tocEntryName,
|
||||||
const char *dllEntryName,
|
const char *dllEntryName,
|
||||||
UErrorCode *pErrorCode) {
|
UErrorCode *pErrorCode) {
|
||||||
|
#ifdef UDATA_DEBUG
|
||||||
|
fprintf(stderr, "offsetTOC[%p] looking for %s/%s\n",
|
||||||
|
pData,
|
||||||
|
tocEntryName,dllEntryName);
|
||||||
|
#endif
|
||||||
|
|
||||||
if(pData->toc!=NULL) {
|
if(pData->toc!=NULL) {
|
||||||
const char *base=(const char *)pData->toc;
|
const char *base=(const char *)pData->toc;
|
||||||
uint32_t *toc=(uint32_t *)pData->toc;
|
uint32_t *toc=(uint32_t *)pData->toc;
|
||||||
@ -500,11 +529,21 @@ offsetTOCLookupFn(const UDataMemory *pData,
|
|||||||
|
|
||||||
if(uprv_strcmp(tocEntryName, base+toc[2*start])==0) {
|
if(uprv_strcmp(tocEntryName, base+toc[2*start])==0) {
|
||||||
/* found it */
|
/* found it */
|
||||||
|
#ifdef UDATA_DEBUG
|
||||||
|
fprintf(stderr, "Found: %p\n",(base+toc[2*start+1]));
|
||||||
|
#endif
|
||||||
return (const DataHeader *)(base+toc[2*start+1]);
|
return (const DataHeader *)(base+toc[2*start+1]);
|
||||||
} else {
|
} else {
|
||||||
|
#ifdef UDATA_DEBUG
|
||||||
|
fprintf(stderr, "Not found.\n");
|
||||||
|
#endif
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
#ifdef UDATA_DEBUG
|
||||||
|
fprintf(stderr, "returning header\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
return pData->pHeader;
|
return pData->pHeader;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -514,6 +553,11 @@ pointerTOCLookupFn(const UDataMemory *pData,
|
|||||||
const char *tocEntryName,
|
const char *tocEntryName,
|
||||||
const char *dllEntryName,
|
const char *dllEntryName,
|
||||||
UErrorCode *pErrorCode) {
|
UErrorCode *pErrorCode) {
|
||||||
|
#ifdef UDATA_DEBUG
|
||||||
|
fprintf(stderr, "ptrTOC[%p] looking for %s/%s\n",
|
||||||
|
pData,
|
||||||
|
tocEntryName,dllEntryName);
|
||||||
|
#endif
|
||||||
if(pData->toc!=NULL) {
|
if(pData->toc!=NULL) {
|
||||||
const PointerTOCEntry *toc=(const PointerTOCEntry *)((const uint32_t *)pData->toc+2);
|
const PointerTOCEntry *toc=(const PointerTOCEntry *)((const uint32_t *)pData->toc+2);
|
||||||
uint32_t start, limit, number;
|
uint32_t start, limit, number;
|
||||||
@ -521,6 +565,12 @@ pointerTOCLookupFn(const UDataMemory *pData,
|
|||||||
/* perform a binary search for the data in the common data's table of contents */
|
/* perform a binary search for the data in the common data's table of contents */
|
||||||
start=0;
|
start=0;
|
||||||
limit=*(const uint32_t *)pData->toc; /* number of names in this table of contents */
|
limit=*(const uint32_t *)pData->toc; /* number of names in this table of contents */
|
||||||
|
|
||||||
|
#ifdef UDATA_DEBUG
|
||||||
|
fprintf(stderr, " # of ents: %d\n", limit);
|
||||||
|
fflush(stderr);
|
||||||
|
#endif
|
||||||
|
|
||||||
while(start<limit-1) {
|
while(start<limit-1) {
|
||||||
number=(start+limit)/2;
|
number=(start+limit)/2;
|
||||||
if(uprv_strcmp(tocEntryName, toc[number].entryName)<0) {
|
if(uprv_strcmp(tocEntryName, toc[number].entryName)<0) {
|
||||||
@ -532,12 +582,23 @@ pointerTOCLookupFn(const UDataMemory *pData,
|
|||||||
|
|
||||||
if(uprv_strcmp(tocEntryName, toc[start].entryName)==0) {
|
if(uprv_strcmp(tocEntryName, toc[start].entryName)==0) {
|
||||||
/* found it */
|
/* found it */
|
||||||
return normalizeDataPointer(toc[start].pHeader);
|
#ifdef UDATA_DEBUG
|
||||||
|
fprintf(stderr, "FOUND: %p\n",
|
||||||
|
normalizeDataPointer(toc[start].pHeader));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return normalizeDataPointer(toc[start].pHeader);
|
||||||
} else {
|
} else {
|
||||||
|
#ifdef UDATA_DEBUG
|
||||||
|
fprintf(stderr, "NOT found\n");
|
||||||
|
#endif
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return pData->pHeader;
|
#ifdef UDATA_DEBUG
|
||||||
|
fprintf(stderr, "Returning header\n");
|
||||||
|
#endif
|
||||||
|
return pData->pHeader;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -556,7 +617,7 @@ dllTOCLookupFn(const UDataMemory *pData,
|
|||||||
|
|
||||||
/* common library functions ------------------------------------------------- */
|
/* common library functions ------------------------------------------------- */
|
||||||
|
|
||||||
static UDataMemory commonICUData={ NULL };
|
static UDataMemory commonICUData={ NULL };
|
||||||
|
|
||||||
static void
|
static void
|
||||||
setCommonICUData(UDataMemory *pData) {
|
setCommonICUData(UDataMemory *pData) {
|
||||||
@ -921,9 +982,17 @@ doOpenChoice(const char *path, const char *type, const char *name,
|
|||||||
uprv_memset(&dataMemory, 0, sizeof(UDataMemory));
|
uprv_memset(&dataMemory, 0, sizeof(UDataMemory));
|
||||||
pathBuffer[0]=0;
|
pathBuffer[0]=0;
|
||||||
pCommonData=openCommonData(&dataMemory, path, isICUData, pathBuffer, &errorCode);
|
pCommonData=openCommonData(&dataMemory, path, isICUData, pathBuffer, &errorCode);
|
||||||
|
#ifdef UDATA_DEBUG
|
||||||
|
fprintf(stderr, "commonData;%p\n", pCommonData);
|
||||||
|
fflush(stderr);
|
||||||
|
#endif
|
||||||
|
|
||||||
if(U_SUCCESS(errorCode)) {
|
if(U_SUCCESS(errorCode)) {
|
||||||
/* look up the data piece in the common data */
|
/* look up the data piece in the common data */
|
||||||
pHeader=pCommonData->lookupFn(pCommonData, tocEntryName, dllEntryName, &errorCode);
|
pHeader=pCommonData->lookupFn(pCommonData, tocEntryName, dllEntryName, &errorCode);
|
||||||
|
#ifdef UDATA_DEBUG
|
||||||
|
fprintf(stderr, "Common found: %p\n", pHeader);
|
||||||
|
#endif
|
||||||
if(pHeader!=NULL) {
|
if(pHeader!=NULL) {
|
||||||
/* data found in the common data, test it */
|
/* data found in the common data, test it */
|
||||||
if(pHeader->dataHeader.magic1==0xda && pHeader->dataHeader.magic2==0x27 &&
|
if(pHeader->dataHeader.magic1==0xda && pHeader->dataHeader.magic2==0x27 &&
|
||||||
@ -949,9 +1018,15 @@ doOpenChoice(const char *path, const char *type, const char *name,
|
|||||||
pEntryData->parent=pCommonData;
|
pEntryData->parent=pCommonData;
|
||||||
pEntryData->pHeader=pHeader;
|
pEntryData->pHeader=pHeader;
|
||||||
pEntryData->flags=(pCommonData->flags&DATA_MEMORY_TYPE_MASK)|1UL<<DYNAMIC_DATA_MEMORY_SHIFT;
|
pEntryData->flags=(pCommonData->flags&DATA_MEMORY_TYPE_MASK)|1UL<<DYNAMIC_DATA_MEMORY_SHIFT;
|
||||||
|
#ifdef UDATA_DEBUG
|
||||||
|
fprintf(stderr, " made data @%p\n", pEntryData);
|
||||||
|
#endif
|
||||||
return pEntryData;
|
return pEntryData;
|
||||||
} else {
|
} else {
|
||||||
/* the data is not acceptable, look further */
|
/* the data is not acceptable, look further */
|
||||||
|
#ifdef UDATA_DEBUG
|
||||||
|
fprintf(stderr, "Not acceptable\n");
|
||||||
|
#endif
|
||||||
errorCode=U_INVALID_FORMAT_ERROR;
|
errorCode=U_INVALID_FORMAT_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -970,6 +1045,10 @@ doOpenChoice(const char *path, const char *type, const char *name,
|
|||||||
inBasename=findBasename(path);
|
inBasename=findBasename(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef UDATA_DEBUG
|
||||||
|
fprintf(stderr, "looking for ind. file\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
/* try path+basename+"_"+entryName first */
|
/* try path+basename+"_"+entryName first */
|
||||||
if(*inBasename!=0) {
|
if(*inBasename!=0) {
|
||||||
suffix=strcpy_returnEnd(basename, inBasename);
|
suffix=strcpy_returnEnd(basename, inBasename);
|
||||||
@ -1068,7 +1147,7 @@ U_CAPI UDataMemory * U_EXPORT2
|
|||||||
udata_open(const char *path, const char *type, const char *name,
|
udata_open(const char *path, const char *type, const char *name,
|
||||||
UErrorCode *pErrorCode) {
|
UErrorCode *pErrorCode) {
|
||||||
#ifdef UDATA_DEBUG
|
#ifdef UDATA_DEBUG
|
||||||
fprintf(stderr, "udata_open(): Opening: %s . %s\n", name, type);
|
fprintf(stderr, "udata_open(): Opening: %s . %s\n", name, type);fflush(stderr);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
|
if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
|
||||||
@ -1085,6 +1164,10 @@ U_CAPI UDataMemory * U_EXPORT2
|
|||||||
udata_openChoice(const char *path, const char *type, const char *name,
|
udata_openChoice(const char *path, const char *type, const char *name,
|
||||||
UDataMemoryIsAcceptable *isAcceptable, void *context,
|
UDataMemoryIsAcceptable *isAcceptable, void *context,
|
||||||
UErrorCode *pErrorCode) {
|
UErrorCode *pErrorCode) {
|
||||||
|
#ifdef UDATA_DEBUG
|
||||||
|
fprintf(stderr, "udata_openChoice(): Opening: %s . %s\n", name, type);fflush(stderr);
|
||||||
|
#endif
|
||||||
|
|
||||||
if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
|
if(pErrorCode==NULL || U_FAILURE(*pErrorCode)) {
|
||||||
return NULL;
|
return NULL;
|
||||||
} else if(name==NULL || *name==0 || isAcceptable==NULL) {
|
} else if(name==NULL || *name==0 || isAcceptable==NULL) {
|
||||||
@ -1097,6 +1180,10 @@ udata_openChoice(const char *path, const char *type, const char *name,
|
|||||||
|
|
||||||
U_CAPI void U_EXPORT2
|
U_CAPI void U_EXPORT2
|
||||||
udata_close(UDataMemory *pData) {
|
udata_close(UDataMemory *pData) {
|
||||||
|
#ifdef UDATA_DEBUG
|
||||||
|
fprintf(stderr, "udata_close()\n");fflush(stderr);
|
||||||
|
#endif
|
||||||
|
|
||||||
if(pData!=NULL && IS_DATA_MEMORY_LOADED(pData)) {
|
if(pData!=NULL && IS_DATA_MEMORY_LOADED(pData)) {
|
||||||
unloadDataMemory(pData);
|
unloadDataMemory(pData);
|
||||||
if(pData->flags&(1UL<<DYNAMIC_DATA_MEMORY_SHIFT)) {
|
if(pData->flags&(1UL<<DYNAMIC_DATA_MEMORY_SHIFT)) {
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
## Copyright (c) 1999-2000, International Business Machines Corporation and
|
## Copyright (c) 1999-2000, International Business Machines Corporation and
|
||||||
## others. All Rights Reserved.
|
## others. All Rights Reserved.
|
||||||
##
|
##
|
||||||
## $Id: mh-aix,v 1.16 2000/10/16 18:05:34 yves Exp $
|
## $Id: mh-aix,v 1.17 2000/11/04 02:16:11 srl Exp $
|
||||||
|
|
||||||
## Commands to generate dependency files
|
## Commands to generate dependency files
|
||||||
GEN_DEPS.c= $(CC) -E -M $(DEFS) $(CPPFLAGS)
|
GEN_DEPS.c= $(CC) -E -M $(DEFS) $(CPPFLAGS)
|
||||||
@ -95,4 +95,9 @@ LIBUSTDIO= -L$(top_builddir)/extra/ustdio -lustdio
|
|||||||
@echo "Generating dependency information for $<"
|
@echo "Generating dependency information for $<"
|
||||||
@$(SHELL) -ec '$(GEN_DEPS.cc) $< > /dev/null 2>&1'
|
@$(SHELL) -ec '$(GEN_DEPS.cc) $< > /dev/null 2>&1'
|
||||||
|
|
||||||
|
## BIR - bind with internal references [so app data and icu data doesn't collide]
|
||||||
|
BIR_LDFLAGS= -E$(NAME).map -bnoexpall
|
||||||
|
BIR_CPPFLAGS= -DU_HAVE_BIND_INTERNAL_REFERENCES
|
||||||
|
BIR_DEPS= $(NAME).map
|
||||||
|
|
||||||
## End Aix-specific setup
|
## End Aix-specific setup
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
## Copyright (c) 1999-2000, International Business Machines Corporation and
|
## Copyright (c) 1999-2000, International Business Machines Corporation and
|
||||||
## others. All Rights Reserved.
|
## others. All Rights Reserved.
|
||||||
##
|
##
|
||||||
## $Id: mh-linux,v 1.22 2000/10/18 20:35:21 yves Exp $
|
## $Id: mh-linux,v 1.23 2000/11/04 02:16:11 srl Exp $
|
||||||
|
|
||||||
## Commands to generate dependency files
|
## Commands to generate dependency files
|
||||||
GEN_DEPS.c= $(CC) -E -MM $(DEFS) $(CPPFLAGS)
|
GEN_DEPS.c= $(CC) -E -MM $(DEFS) $(CPPFLAGS)
|
||||||
@ -84,13 +84,13 @@ LIBUSTDIO= -L$(top_builddir)/extra/ustdio -lustdio
|
|||||||
%.d: $(srcdir)/%.c
|
%.d: $(srcdir)/%.c
|
||||||
@echo "Generating dependency information for $<"
|
@echo "Generating dependency information for $<"
|
||||||
@$(SHELL) -ec '$(GEN_DEPS.c) $< \
|
@$(SHELL) -ec '$(GEN_DEPS.c) $< \
|
||||||
| sed '\''s/\($*\)\.o[ :]*/\1.o $@ : /g'\'' > $@; \
|
| sed '\''s%\($*\)\.o[ :]*%\1.o $@ : %g'\'' > $@; \
|
||||||
[ -s $@ ] || rm -f $@'
|
[ -s $@ ] || rm -f $@'
|
||||||
|
|
||||||
%.d: $(srcdir)/%.cpp
|
%.d: $(srcdir)/%.cpp
|
||||||
@echo "Generating dependency information for $<"
|
@echo "Generating dependency information for $<"
|
||||||
@$(SHELL) -ec '$(GEN_DEPS.cc) $< \
|
@$(SHELL) -ec '$(GEN_DEPS.cc) $< \
|
||||||
| sed '\''s/\($*\)\.o[ :]*/\1.o $@ : /g'\'' > $@; \
|
| sed '\''s%\($*\)\.o[ :]*%\1.o $@ : %g'\'' > $@; \
|
||||||
[ -s $@ ] || rm -f $@'
|
[ -s $@ ] || rm -f $@'
|
||||||
|
|
||||||
## Versioned libraries rules
|
## Versioned libraries rules
|
||||||
@ -100,5 +100,16 @@ LIBUSTDIO= -L$(top_builddir)/extra/ustdio -lustdio
|
|||||||
%.$(SO): %.$(SO).$(SO_TARGET_VERSION_MAJOR)
|
%.$(SO): %.$(SO).$(SO_TARGET_VERSION_MAJOR)
|
||||||
$(RM) $@ && ln -s $*.$(SO).$(SO_TARGET_VERSION) $@
|
$(RM) $@ && ln -s $*.$(SO).$(SO_TARGET_VERSION) $@
|
||||||
|
|
||||||
|
## Bind internal references
|
||||||
|
|
||||||
|
# LDflags that pkgdata will use
|
||||||
|
BIR_LDFLAGS= -Wl,-Bsymbolic
|
||||||
|
|
||||||
|
# CPPflags for genccode/gencmn
|
||||||
|
BIR_CPPFLAGS= -DU_HAVE_BIND_INTERNAL_REFERENCES
|
||||||
|
|
||||||
|
# Dependencies [i.e. map files] for the final library
|
||||||
|
BIR_DEPS=
|
||||||
|
|
||||||
## End Linux-specific setup
|
## End Linux-specific setup
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
## Copyright (c) 1999-2000, International Business Machines Corporation and
|
## Copyright (c) 1999-2000, International Business Machines Corporation and
|
||||||
## others. All Rights Reserved.
|
## others. All Rights Reserved.
|
||||||
##
|
##
|
||||||
## $Id: mh-solaris,v 1.20 2000/10/17 16:52:58 yves Exp $
|
## $Id: mh-solaris,v 1.21 2000/11/04 02:16:11 srl Exp $
|
||||||
|
|
||||||
## Flags for position independent code
|
## Flags for position independent code
|
||||||
SHAREDLIBCFLAGS = -KPIC
|
SHAREDLIBCFLAGS = -KPIC
|
||||||
@ -94,4 +94,8 @@ LIBUSTDIO= -L$(top_builddir)/extra/ustdio -lustdio
|
|||||||
%.$(SO): %.$(SO).$(SO_TARGET_VERSION_MAJOR)
|
%.$(SO): %.$(SO).$(SO_TARGET_VERSION_MAJOR)
|
||||||
$(RM) $@ && ln -s $*.$(SO).$(SO_TARGET_VERSION) $@
|
$(RM) $@ && ln -s $*.$(SO).$(SO_TARGET_VERSION) $@
|
||||||
|
|
||||||
|
#
|
||||||
|
BIR_LDFLAGS= -Wl,-M,$(NAME).map -Wl,-B,symbolic -Wl,-B,eliminate
|
||||||
|
BIR_CPPFLAGS= -DU_HAVE_BIND_INTERNAL_REFERENCES
|
||||||
|
BIR_DEPS= $(NAME).map
|
||||||
## End Solaris-specific setup
|
## End Solaris-specific setup
|
||||||
|
@ -572,6 +572,7 @@ void TestAppData()
|
|||||||
{
|
{
|
||||||
UResourceBundle *icu, *app;
|
UResourceBundle *icu, *app;
|
||||||
UResourceBundle *tmp = NULL;
|
UResourceBundle *tmp = NULL;
|
||||||
|
UResourceBundle *tmp2 = NULL;
|
||||||
|
|
||||||
const UChar *appString;
|
const UChar *appString;
|
||||||
const UChar *icuString;
|
const UChar *icuString;
|
||||||
@ -590,6 +591,8 @@ void TestAppData()
|
|||||||
log_err("%s:%d: Couldn't open root ICU bundle- %s", __FILE__, __LINE__, u_errorName(status));
|
log_err("%s:%d: Couldn't open root ICU bundle- %s", __FILE__, __LINE__, u_errorName(status));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
/* log_info("Open icu root: %s size_%d\n", u_errorName(status), ures_getSize(icu)); */
|
||||||
|
status = U_ZERO_ERROR;
|
||||||
|
|
||||||
app = ures_open(testPath, "root", &status);
|
app = ures_open(testPath, "root", &status);
|
||||||
if(U_FAILURE(status))
|
if(U_FAILURE(status))
|
||||||
@ -597,6 +600,7 @@ void TestAppData()
|
|||||||
log_err("%s:%d: Couldn't open app ICU bundle [%s]- %s", __FILE__, __LINE__, testPath, u_errorName(status));
|
log_err("%s:%d: Couldn't open app ICU bundle [%s]- %s", __FILE__, __LINE__, testPath, u_errorName(status));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
/* log_info("Open app: %s, size %d\n", u_errorName(status), ures_getSize(app)); */
|
||||||
|
|
||||||
tmp = ures_getByKey(icu, "Version", tmp, &status);
|
tmp = ures_getByKey(icu, "Version", tmp, &status);
|
||||||
if(U_FAILURE(status))
|
if(U_FAILURE(status))
|
||||||
@ -611,25 +615,30 @@ void TestAppData()
|
|||||||
log_err("%s:%d: Couldn't get string from Version string from ICU root bundle- %s", __FILE__, __LINE__, u_errorName(status));
|
log_err("%s:%d: Couldn't get string from Version string from ICU root bundle- %s", __FILE__, __LINE__, u_errorName(status));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
/* log_info("icuString=%p - %s\n", icuString, austrdup(icuString)); */
|
||||||
|
|
||||||
|
|
||||||
tmp = ures_getByKey(app, "Version", tmp, &status);
|
tmp2 = ures_getByKey(app, "Version", tmp2, &status);
|
||||||
if(U_FAILURE(status))
|
if(U_FAILURE(status))
|
||||||
{
|
{
|
||||||
log_err("%s:%d: Couldn't get Version string from App root bundle- %s", __FILE__, __LINE__, u_errorName(status));
|
log_err("%s:%d: Couldn't get Version string from App root bundle- %s", __FILE__, __LINE__, u_errorName(status));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
appString = ures_getString(tmp, &len, &status);
|
appString = ures_getString(tmp2, &len, &status);
|
||||||
if(U_FAILURE(status))
|
if(U_FAILURE(status))
|
||||||
{
|
{
|
||||||
log_err("%s:%d: Couldn't get string from Version string from App root bundle- %s", __FILE__, __LINE__, u_errorName(status));
|
log_err("%s:%d: Couldn't get string from Version string from App root bundle- %s", __FILE__, __LINE__, u_errorName(status));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* log_info("appString=%p - %s\n", appString, austrdup(appString)); */
|
||||||
|
|
||||||
|
|
||||||
if(!u_strcmp(icuString, appString))
|
if(!u_strcmp(icuString, appString))
|
||||||
{
|
{
|
||||||
log_err("%s:%d: Error! Expected ICU and App root version strings to be DIFFERENT but they are both %s\n", __FILE__, __LINE__, austrdup(appString));
|
log_err("%s:%d: Error! Expected ICU and App root version strings to be DIFFERENT but they are both %s and %s\n", __FILE__, __LINE__, austrdup(icuString),
|
||||||
|
austrdup(appString));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -638,6 +647,7 @@ void TestAppData()
|
|||||||
}
|
}
|
||||||
|
|
||||||
ures_close(tmp);
|
ures_close(tmp);
|
||||||
|
ures_close(tmp2);
|
||||||
ures_close(icu);
|
ures_close(icu);
|
||||||
ures_close(app);
|
ures_close(app);
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ CLEANFILES = *~ $(DEPS) $(RES_FILES) $(TEST_FILES)
|
|||||||
TARGET = genccode
|
TARGET = genccode
|
||||||
|
|
||||||
DEFS = @DEFS@
|
DEFS = @DEFS@
|
||||||
CPPFLAGS = @CPPFLAGS@ -I$(top_builddir)/common -I$(top_srcdir)/common -I$(srcdir)/../toolutil
|
CPPFLAGS = @CPPFLAGS@ -I$(top_builddir)/common -I$(top_srcdir)/common -I$(srcdir)/../toolutil $(BIR_CPPFLAGS)
|
||||||
CFLAGS = @CFLAGS@
|
CFLAGS = @CFLAGS@
|
||||||
CXXFLAGS = @CXXFLAGS@
|
CXXFLAGS = @CXXFLAGS@
|
||||||
ENABLE_RPATH = @ENABLE_RPATH@
|
ENABLE_RPATH = @ENABLE_RPATH@
|
||||||
|
@ -66,6 +66,8 @@ main(int argc, char* argv[]) {
|
|||||||
/* read command line options */
|
/* read command line options */
|
||||||
argc=u_parseArgs(argc, argv, sizeof(options)/sizeof(options[0]), options);
|
argc=u_parseArgs(argc, argv, sizeof(options)/sizeof(options[0]), options);
|
||||||
|
|
||||||
|
#ifndef U_HAVE_BIND_INTERNAL_REFERENCES
|
||||||
|
|
||||||
if( (options[4].doesOccur) && uprv_strcmp(options[4].value, "icudata")) /* be consistent with gencmn! */
|
if( (options[4].doesOccur) && uprv_strcmp(options[4].value, "icudata")) /* be consistent with gencmn! */
|
||||||
{
|
{
|
||||||
uprv_strcpy(symPrefix, options[4].value);
|
uprv_strcpy(symPrefix, options[4].value);
|
||||||
@ -75,6 +77,9 @@ main(int argc, char* argv[]) {
|
|||||||
{
|
{
|
||||||
symPrefix[0] = 0;
|
symPrefix[0] = 0;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
symPrefix[0] = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* error handling, printing usage message */
|
/* error handling, printing usage message */
|
||||||
if(argc<0) {
|
if(argc<0) {
|
||||||
|
@ -32,7 +32,7 @@ LINK = $(LINK.c)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
DEFS = @DEFS@
|
DEFS = @DEFS@
|
||||||
CPPFLAGS = @CPPFLAGS@ -I$(top_builddir)/common -I$(top_srcdir)/common -I$(srcdir)/../toolutil
|
CPPFLAGS = @CPPFLAGS@ -I$(top_builddir)/common -I$(top_srcdir)/common -I$(srcdir)/../toolutil $(BIR_CPPFLAGS)
|
||||||
CFLAGS = @CFLAGS@
|
CFLAGS = @CFLAGS@
|
||||||
CXXFLAGS = @CXXFLAGS@
|
CXXFLAGS = @CXXFLAGS@
|
||||||
ENABLE_RPATH = @ENABLE_RPATH@
|
ENABLE_RPATH = @ENABLE_RPATH@
|
||||||
|
@ -105,6 +105,7 @@ main(int argc, char* argv[]) {
|
|||||||
options[7].value=DATA_TYPE;
|
options[7].value=DATA_TYPE;
|
||||||
argc=u_parseArgs(argc, argv, sizeof(options)/sizeof(options[0]), options);
|
argc=u_parseArgs(argc, argv, sizeof(options)/sizeof(options[0]), options);
|
||||||
|
|
||||||
|
#ifndef U_HAVE_BIND_INTERNAL_REFERENCES
|
||||||
/* if it is ICU data.. no prefix. */
|
/* if it is ICU data.. no prefix. */
|
||||||
if(!uprv_strcmp(options[6].value, COMMON_DATA_NAME))
|
if(!uprv_strcmp(options[6].value, COMMON_DATA_NAME))
|
||||||
{
|
{
|
||||||
@ -115,6 +116,9 @@ main(int argc, char* argv[]) {
|
|||||||
uprv_strcpy(symPrefix, options[6].value);
|
uprv_strcpy(symPrefix, options[6].value);
|
||||||
uprv_strcat(symPrefix, "_");
|
uprv_strcat(symPrefix, "_");
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
symPrefix[0] = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* error handling, printing usage message */
|
/* error handling, printing usage message */
|
||||||
if(argc<0) {
|
if(argc<0) {
|
||||||
|
@ -153,6 +153,8 @@ void pkg_mode_dll(UPKGOptions *o, FileStream *makefile, UErrorCode *status)
|
|||||||
T_FileStream_writeLine(makefile, tmp);
|
T_FileStream_writeLine(makefile, tmp);
|
||||||
sprintf(tmp, "TOCOBJ= %s_dat%s \n\n", o->shortName,OBJ_SUFFIX);
|
sprintf(tmp, "TOCOBJ= %s_dat%s \n\n", o->shortName,OBJ_SUFFIX);
|
||||||
T_FileStream_writeLine(makefile, tmp);
|
T_FileStream_writeLine(makefile, tmp);
|
||||||
|
sprintf(tmp, "TOCSYM= %s_dat \n\n", o->shortName);
|
||||||
|
T_FileStream_writeLine(makefile, tmp);
|
||||||
|
|
||||||
T_FileStream_writeLine(makefile, "BASE_OBJECTS= $(TOCOBJ) ");
|
T_FileStream_writeLine(makefile, "BASE_OBJECTS= $(TOCOBJ) ");
|
||||||
|
|
||||||
@ -165,8 +167,8 @@ void pkg_mode_dll(UPKGOptions *o, FileStream *makefile, UErrorCode *status)
|
|||||||
T_FileStream_writeLine(makefile,"build-objs: $(SOURCES) $(OBJECTS)\n\n$(OBJECTS): $(SOURCES)\n\n");
|
T_FileStream_writeLine(makefile,"build-objs: $(SOURCES) $(OBJECTS)\n\n$(OBJECTS): $(SOURCES)\n\n");
|
||||||
|
|
||||||
#ifdef HPUX
|
#ifdef HPUX
|
||||||
T_FileStream_writeLine(makefile, "$(TARGETDIR)/$(TARGET): $(OBJECTS) $(HPUX_JUNK_OBJ) $(LISTFILES)\n"
|
T_FileStream_writeLine(makefile, "$(TARGETDIR)/$(TARGET): $(OBJECTS) $(HPUX_JUNK_OBJ) $(LISTFILES) $(BIR_DEPS)\n"
|
||||||
"\t$(SHLIB.cc) -o $@ $(OBJECTS) $(HPUX_JUNK_OBJ)\n"
|
"\t$(SHLIB.cc) -o $@ $(OBJECTS) $(HPUX_JUNK_OBJ) $(BIR_LDFLAGS)\n"
|
||||||
"\t-ls -l $@\n\n");
|
"\t-ls -l $@\n\n");
|
||||||
|
|
||||||
T_FileStream_writeLine(makefile, "$(TEMP_DIR)/hpux_junk_obj.cpp:\n"
|
T_FileStream_writeLine(makefile, "$(TEMP_DIR)/hpux_junk_obj.cpp:\n"
|
||||||
@ -176,8 +178,8 @@ void pkg_mode_dll(UPKGOptions *o, FileStream *makefile, UErrorCode *status)
|
|||||||
" $(COMPILE.cc) -o $@ $<\n"
|
" $(COMPILE.cc) -o $@ $<\n"
|
||||||
"\n");
|
"\n");
|
||||||
#else
|
#else
|
||||||
T_FileStream_writeLine(makefile, "$(TARGETDIR)/$(TARGET): $(OBJECTS) $(LISTFILES)\n"
|
T_FileStream_writeLine(makefile, "$(TARGETDIR)/$(TARGET): $(OBJECTS) $(LISTFILES) $(BIR_DEPS)\n"
|
||||||
"\t$(SHLIB.c) -o $@ $(OBJECTS)\n"
|
"\t$(SHLIB.c) -o $@ $(OBJECTS) $(BIR_LDFLAGS)\n"
|
||||||
"\t-ls -l $@\n\n");
|
"\t-ls -l $@\n\n");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -187,6 +189,15 @@ void pkg_mode_dll(UPKGOptions *o, FileStream *makefile, UErrorCode *status)
|
|||||||
T_FileStream_writeLine(makefile, "install: $(TARGETDIR)/$(TARGET)\n"
|
T_FileStream_writeLine(makefile, "install: $(TARGETDIR)/$(TARGET)\n"
|
||||||
"\t$(INSTALL-L) $(TARGETDIR)/$(TARGET) $(INSTALLTO)/$(TARGET)\n\n");
|
"\t$(INSTALL-L) $(TARGETDIR)/$(TARGET) $(INSTALLTO)/$(TARGET)\n\n");
|
||||||
|
|
||||||
|
#ifdef U_SOLARIS
|
||||||
|
T_FileStream_writeLine(makefile, "$(NAME).map:\n\techo \"{global: $(TOCSYM); local: *; };\" > $@\n\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef AIX
|
||||||
|
T_FileStream_writeLine(makefile, "$(NAME).map:\n\techo \"$(TOCSYM)\" > $@\n\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
*status = U_ZERO_ERROR;
|
*status = U_ZERO_ERROR;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user