From: E. T. U. <ti...@lo...> - 2012-06-29 18:44:42
|
Hi Steven, It seems that genccode is not detecting the correct architecture. It should be 0x1c4 or 452. Indeed, if I generate an object using the ARM version of cl.exe and pass it to genccode, I get the following: $ ../win32-x86/bin/genccode -m q.obj -o q.cpp q.o generating object code for q.o genccode: --match-arch cpu=452 bits=64 big-endian=0 genccode: unable to open input file q.o I think if I can get pkgdata and genccode to report cpu=452 I'll be good to go. Any ideas? On Fri, Jun 29, 2012 at 11:20 AM, E. Timothy Uy <ti...@lo...> wrote: > So sicudt.lib is generated by pkgdata from my cross-build directory. The > command is > > $ ../win32-x86/bin/pkgdata -O data/icupkg.inc -q -c -s > data/out/build/icudt49l -d lib -e icudt49 -T data/out/tmp -p icudt49l -m > static -r 49 -L icudt data/out/tmp/icudata.lst > From my ARM-based console the output is: > genccode: --match-arch cpu=332 bits=32 big-endian=0 > pkgdata: LIB.exe /nologo /out:"lib/sicudt.lib" > "data/out/tmp\icudt49l_dat.obj" > > Maybe the CPU is wrong? If I use my x64 pkgdata, I get > > $ ../win32-x64/bin/pkgdata -O data/icupkg.inc -q -c -s > data/out/build/icudt49l-d lib -e icudt49 -T data/out/tmp -p icudt49l -m > static -r 49 -L icudt data/out/tmp/icudata.lst > genccode: --match-arch cpu=34404 bits=64 big-endian=0 > pkgdata: LIB.exe /nologo /out:"lib/sicudt.lib" > "data/out/tmp\icudt49l_dat.obj" > > So pkgdata is the culprit - but I can't actually run an ARM version of > pkgdata on my machine... > > > > > > icupkg.inc > > >> >> >> GENCCODE_ASSEMBLY_TYPE= >> >> SO=dll >> >> SOBJ=dll >> >> A=lib >> >> LIBPREFIX=s >> >> LIB_EXT_ORDER=49.dll >> >> COMPILE=cl /DWINAPI_FAMILY=WINAPI_PARTITION_APP /U_TIMEZONE=0 >> /DICU_NO_USER_DATA_OVERRIDE /DUCONFIG_NO_FORMATTING /DUCONFIG_NO_FILE_IO >> /DU_FOR_WINRT -DHAVE_DLOPEN=0 -DU_HAVE_MMAP=0 -DU_HAVE_INTTYPES_H=0 >> -DU_HAVE_DIRENT_H=0 -DU_HAVE_POPEN=0 -DU_STATIC_IMPLEMENTATION >> -DU_RELEASE=1 -D_CRT_SECURE_NO_DEPRECATE -DU_ATTRIBUTE_DEPRECATED= -DWIN32 >> -DCYGWINMSVC /Gy /MD /W4 /GF /nologo /c >> >> LIBFLAGS=-I../../icu_src/source/common -I../common >> >> GENLIB=LINK.EXE /DLL /nologo >> >> LDICUDTFLAGS=/base:0x4ad00000 /NOENTRY >> >> LD_SONAME=/IMPLIB: >> >> RPATH_FLAGS= >> >> BIR_LDFLAGS= >> >> AR=LIB.EXE >> >> ARFLAGS=/nologo >> >> RANLIB=ls -s >> >> INSTALL_CMD=/usr/bin/install -c >> > > On Fri, Jun 29, 2012 at 9:47 AM, E. Timothy Uy <ti...@lo...> wrote: > >> Hi, the inclusion of the .dat file when compiling ICU has always been a >> bit of (wonderful) magical mystery for me. This time I need help! I am >> compiling the WinRT version of a subset of ICU for use with SQLite. I'm >> pretty far along, the .dat loads for x86 and for x64 when I do a >> cross-build based on x86 and x64 respectively. It doesn't load at all for >> ARM. Though when I check with dumpbin I see it there for all editions (the >> size is also a give away). >> >> Focusing on ARM: >> When I use the win32-x64 version to cross-build my winrt-arm ICU, >> - ICU compiles >> - on linking, >> sicudt.lib(icudt49l_dat.obj) : fatal error LNK1112: module machine type >> 'x64' co >> nflicts with target machine type 'ARM' >> NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual >> Studio 11.0 >> \VC\BIN\x86_ARM\link.EXE"' : return code '0x458' >> Stop. >> >> If I us the win32-x86 version to cross-build my win-arm ICU, >> - ICU compiles >> - on linking >> sicuuc.lib(udata.ao) : error LNK2019: unresolved external symbol >> icudt49_dat ref >> erenced in function __unwind$16 >> sqlite3.dll : fatal error LNK1120: 1 unresolved externals >> NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual >> Studio 11.0 >> \VC\BIN\x86_ARM\link.EXE"' : return code '0x460' >> Stop. >> >> Seems like in either case, I should be able to link sicudt.lib. Why would >> the cross-build version affect it? >> >> >> >> > > |