LINUX.ORG.RU

PhoneMe for ARM

 , , , phoneme


0

1

Привет, нуждаюсь в сборке PhoneMe для запуска миддлетов на стороне АРМ процеcсора как я понял исходники лежат в районе

svn co https://svn.java.net/svn/phoneme~svn/ 
Качаю транк
svn co https://svn.java.net/svn/phoneme~svn/components/cldc/trunk
офигивая со структуры проекта иду в trunk/build/linux_arm_926/ там лежит два файлика Makefile и linux_arm_926.cfg, мой кросскомпилятор(ведь для арма же собираем) находится
/mnt/filestore/buildroot-2012.02/output/host/opt/ext-toolchain/bin/arm-none-linux-gnueabi-
Добавляю переменные среды:
JVMWorkSpace=/home/splinter/src/JVM/cldc
JDK_DIR=/usr/lib/java
В linux_arm_9260 есть include на linux_arm.cfg копирую его в текущую директорию правлю include в linux_arm_926.cfg что бы он ссылался на него (так проще править конф файл). Открываю linux_arm.cfg: там есть переменные окружения:
GNU_TOOLS_DIR=/opt/thumb/arm-linux 
надо ли мне их править на
GNU_TOOLS_DIR=/mnt/filestore/buildroot-2012.02/output/host/opt/ext-toolchain/arm-none-linux-gnueabi
? В общем добавил, запускаю make, получаю:
make[1]: Вход в каталог `/home/splinter/src/JVM/cldc/build/linux_arm_926/loopgen/app'
make[1]: Цель `dependencies' не требует выполнения команд.
make[1]: Выход из каталога `/home/splinter/src/JVM/cldc/build/linux_arm_926/loopgen/app'
make[1]: Вход в каталог `/home/splinter/src/JVM/cldc/build/linux_arm_926/loopgen/app'
 ... _MergedSrc002.cpp
In file included from ../generated/incls/__MergedSrc002.cpp.incl:147:0,
                 from ../generated/_MergedSrc002.cpp:2:
/home/splinter/src/JVM/cldc/src/vm/share/compiler/VirtualStackFrame.cpp: В функции-члене ‘void JVMVirtualStackFrame::clear_bound()’:
/home/splinter/src/JVM/cldc/src/vm/share/compiler/VirtualStackFrame.cpp:2466:3: ошибка: ‘clear_check_status’ не является элементом ‘JVMRegisterAllocator’
make[1]: *** [_MergedSrc002.o] Ошибка 1
make[1]: Выход из каталога `/home/splinter/src/JVM/cldc/build/linux_arm_926/loopgen/app'
make: *** [_loopgen] Ошибка 2
Я нифига не могу понять, почему в транке сырцы собираются с такими ошибками? Как собрать это с кросскомпилятором?

ОС: slackware 13.37

★★★★★

нашел файл VirtualStackFrame.hpp, там и правда ничего нет о clear_check_status, закоментировал место где она вызывается, компиляция пошла дальше но теперь валиться с ошибками типа:

linux_arm_926.cfg  linux_arm_926.cfg~  linux_arm.cfg  linux_arm.cfg~  Makefile
splinter@vniir-ds1:~/src/JVM/tmp/trunk/build/linux_arm_926$ make CROSS=$CROSS ARCH=arm
==================================
JVMBuildSpace  = /home/splinter/src/JVM/cldc/build (auto-assigned)
JVMWorkSpace    = /home/splinter/src/JVM/cldc
ROMIZING        = true
SHELL           = /bin/sh
ENABLE_ISOLATES = 
ENABLE_MONET    = 
==================================
==============================
creating build tools...
==============================
make[1]: Вход в каталог `/home/splinter/src/JVM/cldc/build/linux_arm_926/tools'
make[1]: Цель `default' не требует выполнения команд.
make[1]: Выход из каталога `/home/splinter/src/JVM/cldc/build/linux_arm_926/tools'
done
==============================
creating ASM loop generator in debug mode
build flags: NO_DEBUG_SYMBOLS=true
==============================
make[1]: Вход в каталог `/home/splinter/src/JVM/cldc/build/linux_arm_926/loopgen/app'
make[1]: Цель `dependencies' не требует выполнения команд.
make[1]: Выход из каталога `/home/splinter/src/JVM/cldc/build/linux_arm_926/loopgen/app'
make[1]: Вход в каталог `/home/splinter/src/JVM/cldc/build/linux_arm_926/loopgen/app'
make[1]: Выход из каталога `/home/splinter/src/JVM/cldc/build/linux_arm_926/loopgen/app'
done
==============================
creating ROM generator in debug mode
build flags: NO_DEBUG_SYMBOLS=true
==============================
make[1]: Вход в каталог `/home/splinter/src/JVM/cldc/build/linux_arm_926/romgen/app'
make[1]: Цель `dependencies' не требует выполнения команд.
make[1]: Выход из каталога `/home/splinter/src/JVM/cldc/build/linux_arm_926/romgen/app'
make[1]: Вход в каталог `/home/splinter/src/JVM/cldc/build/linux_arm_926/romgen/app'
generating CPU stubs /home/splinter/src/JVM/cldc/src/vm/cpu/c/AsmStubs_i386.s
/home/splinter/src/JVM/cldc/src/vm/cpu/c/AsmStubs_i386.s: Assembler messages:
/home/splinter/src/JVM/cldc/src/vm/cpu/c/AsmStubs_i386.s:44: Error: `fld1' is not supported on `i486'
/home/splinter/src/JVM/cldc/src/vm/cpu/c/AsmStubs_i386.s:45: Error: `fdiv' is not supported on `i486'
/home/splinter/src/JVM/cldc/src/vm/cpu/c/AsmStubs_i386.s:46: Error: `fstp' is not supported on `i486'
/home/splinter/src/JVM/cldc/src/vm/cpu/c/AsmStubs_i386.s:47: Error: `fld' is not supported on `i486'
/home/splinter/src/JVM/cldc/src/vm/cpu/c/AsmStubs_i386.s:48: Error: `fmul' is not supported on `i486'
...
/home/splinter/src/JVM/cldc/src/vm/cpu/c/AsmStubs_i386.s:139: Error: `fstp' is not supported on `i486'
/home/splinter/src/JVM/cldc/src/vm/cpu/c/AsmStubs_i386.s:140: Error: `fld' is not supported on `i486'
make[1]: *** [AsmStubs_i386.o] Ошибка 1
make[1]: Выход из каталога `/home/splinter/src/JVM/cldc/build/linux_arm_926/romgen/app'
make: *** [_romgen] Ошибка 2

splinter ★★★★★
() автор топика

Уже пытаюсь собрать хотя бы для i386:

cc1plus: warnings being treated as errors
In file included from ../generated/incls/__MergedSrc001.cpp.incl:180:0,
                 from ../generated/_MergedSrc001.cpp:2:
/home/splinter/src/JVM/cldc/src/vm/cpu/i386/Disassembler_i386.cpp: В функции-члене ‘void x86_disassembler::get_operand(unsigned int, unsigned int, int, int)’:
/home/splinter/src/JVM/cldc/src/vm/cpu/i386/Disassembler_i386.cpp:790:12: ошибка: ‘base’ may be used uninitialized in this function
/home/splinter/src/JVM/cldc/src/vm/cpu/i386/Disassembler_i386.cpp:789:12: ошибка: ‘index’ may be used uninitialized in this function
/home/splinter/src/JVM/cldc/src/vm/cpu/i386/Disassembler_i386.cpp:788:12: ошибка: ‘ss’ may be used uninitialized in this function
/home/splinter/src/JVM/cldc/src/vm/cpu/i386/Disassembler_i386.cpp: В функции-члене ‘void x86_disassembler::disassemble()’:
/home/splinter/src/JVM/cldc/src/vm/cpu/i386/Disassembler_i386.cpp:266:48: ошибка: ‘opcode5’ may be used uninitialized in this function
/home/splinter/src/JVM/cldc/src/vm/cpu/i386/Disassembler_i386.cpp:263:12: ошибка: ‘mode’ may be used uninitialized in this function
/home/splinter/src/JVM/cldc/src/vm/cpu/i386/Disassembler_i386.cpp:263:23: ошибка: ‘r_m’ may be used uninitialized in this function
/home/splinter/src/JVM/cldc/src/vm/cpu/i386/Disassembler_i386.cpp:263:18: ошибка: ‘reg’ may be used uninitialized in this function
Матом уже ругаться охота.

splinter ★★★★★
() автор топика
Ответ на: комментарий от splinter

какого хрена он вообще лезет в AsmStubs_i386 если я собираю под АРМ?

splinter ★★★★★
() автор топика
Ответ на: комментарий от splinter

В общем пока никто не мешает продолжу рассуждения: Заменил в файле cldc/src/vm/cpu/c/AsmStubs_i386.s строку i486 на i686 вроде как начало собираться, но по всей видимости эти make были расчитаны на redhat, потому как он начинает искать тулчейн по пути: /micro/tools/i686-redhat-linux/gnu/arm-netwinder-linux. Указал ему свой тулчейн от CodeSourcery: /home/splinter/CodeSourcery/arm-none-eabi, делаю make:

Он что то там пыжиться и собирает, но в итоге вываливает:

make[1]: Выход из каталога `/home/splinter/src/JVM/cldc/build/linux_arm_926/target/debug'
make[1]: Вход в каталог `/home/splinter/src/JVM/cldc/build/linux_arm_926/target/debug'
==================================================
GNU_TOOLS_DIR = /home/splinter/CodeSourcery/arm-none-eabi
==================================================
mkdir -p ../bin
generating ../generated/NativesTable.cpp ...
 ... FloatSupport_arm.cpp
g++: error trying to exec 'cc1plus': execvp: No such file or directory
as: unrecognized option '-mfloat-abi=soft'
make[1]: *** [FloatSupport_arm.o] Ошибка 1
make[1]: Выход из каталога `/home/splinter/src/JVM/cldc/build/linux_arm_926/target/debug'
make: *** [_debug] Ошибка 2
Добавление симлинка в CodeSourcery/arm-none-eabi/bin/cc1plus -> ../../libexec/gcc/arm-none-eabi/4.6.1/cc1plus* никак не повлияло :-( Хелп!

splinter ★★★★★
() автор топика
Ответ на: комментарий от splinter

Мдя, сделал симлинк CodeSourcery/arm-none-eabi/bin/cc1plus -> /usr/local/bin/cc1plus картинка слегка поменялась:

make[1]: Выход из каталога `/home/splinter/src/JVM/cldc/build/linux_arm_926/target/debug'
make[1]: Вход в каталог `/home/splinter/src/JVM/cldc/build/linux_arm_926/target/debug'
==================================================
GNU_TOOLS_DIR = /home/splinter/CodeSourcery/arm-none-eabi
==================================================
mkdir -p ../bin
generating ../generated/NativesTable.cpp ...
 ... FloatSupport_arm.cpp
as: unrecognized option '-mfloat-abi=soft'
In file included from ../generated/incls/_FloatSupport_arm.cpp.incl:7:0,
                 from /home/splinter/src/JVM/cldc//src/vm/cpu/arm/FloatSupport_arm.cpp:28:
/home/splinter/src/JVM/cldc//src/vm/share/utilities/GlobalDefinitions_gcc.hpp:35:20: fatal error: ctype.h: No such file or directory
compilation terminated.
make[1]: *** [FloatSupport_arm.o] Ошибка 2
make[1]: Выход из каталога `/home/splinter/src/JVM/cldc/build/linux_arm_926/target/debug'
make: *** [_debug] Ошибка 2

splinter ★★★★★
() автор топика

Что то я ничего не могу понять... выхлоп make сообщает

creating ASM loop generator in debug mode
build flags: NO_DEBUG_SYMBOLS=true
==============================
make[1]: Вход в каталог `/home/splinter/src/JVM/cldc/build/linux_arm_926/loopgen/app'
make[1]: Цель `dependencies' не требует выполнения команд.
make[1]: Выход из каталога `/home/splinter/src/JVM/cldc/build/linux_arm_926/loopgen/app'
make[1]: Вход в каталог `/home/splinter/src/JVM/cldc/build/linux_arm_926/loopgen/app'
 ... BSDSocket.cpp
In file included from /home/splinter/CodeSourcery/arm-none-eabi/include/ctype.h:4:0,
                 from /home/splinter/src/JVM/cldc//src/vm/share/utilities/GlobalDefinitions_gcc.hpp:36,
                 from ../generated/incls/_BSDSocket.cpp.incl:6,
                 from /home/splinter/src/JVM/cldc//src/vm/share/natives/BSDSocket.cpp:28:
/home/splinter/CodeSourcery/arm-none-eabi/include/_ansi.h:16:20: фатальная ошибка: newlib.h: Нет такого файла или каталога
Компиляция прервана.
make[1]: *** [BSDSocket.o] Ошибка 1
make[1]: Выход из каталога `/home/splinter/src/JVM/cldc/build/linux_arm_926/loopgen/app'
make: *** [_loopgen] Ошибка 2

Что за мать ее newlib.h? Закоментировал в _ansi.h вызов этого хидера он начинает ругаться что не видит собственные include?

make[1]: Вход в каталог `/home/splinter/src/JVM/cldc/build/linux_arm_926/loopgen/app'
 ... BSDSocket.cpp
In file included from /home/splinter/src/JVM/cldc//src/vm/share/utilities/GlobalDefinitions_gcc.hpp:37:0,
                 from ../generated/incls/_BSDSocket.cpp.incl:6,
                 from /home/splinter/src/JVM/cldc//src/vm/share/natives/BSDSocket.cpp:28:
/home/splinter/CodeSourcery/arm-none-eabi/include/string.h:11:23: фатальная ошибка: sys/reent.h: Нет такого файла или каталога
Компиляция прервана.
make[1]: *** [BSDSocket.o] Ошибка 1
splinter@vniir-ds1:~/src/JVM/cldc/build/linux_arm_926$ find ~/CodeSourcery/ | grep -i reent.h
/home/splinter/CodeSourcery/arm-none-eabi/include/sys/reent.h
/home/splinter/CodeSourcery/arm-none-eabi/include/reent.h
splinter ★★★★★
() автор топика
17 мая 2012 г.
Ответ на: комментарий от splinter

Кое-что получилось, собрались pcsl, cldc, а вот с midp проблемка. Пришлось использовать buildroot'овский компилятор. В общем вот краткая инструкция может кому пригодится:

export MEHOME=/home/splinter/phoneME_feature
export JDK_DIR=/usr/lib/jdk1.6.0_25
export SB2=/mnt/filestore/buildroot-2012.02/output/host/opt/ext-toolchain
export PATH=$PATH:$JDK_DIR/bin
export BuildDir=$MEHOME/javacall-com/configuration/phoneMeFeature/win32_x86
export JAVACALL_DIR=$MEHOME/javacall
export JAVACALL_PROJECT_DIR=$MEHOME/javacall-com
export JAVACALL_OUTPUT_DIR=$MEHOME/javacall-com
export PCSL_OUTPUT_DIR=$MEHOME/javacall-com
export PCSL_OUTPUT_DIR=$MEHOME/output/pcsl
export PCSL_PLATFORM=linux_arm_gcc
export NETWORK_MODULE=bsd/generic
export ENABLE_PCSL=true
export ENABLE_ISOLATES=true
export JVMWorkSpace=$MEHOME/cldc
export JVMBuildSpace=$MEHOME/output/cldc
export MIDP_OUTPUT_DIR=$MEHOME/output/midp
export CLDC_DIST_DIR=$MEHOME/output/cldc/linux_arm/dist
export TOOLS_DIR=$MEHOME/tools
export TARGET_CPU=arm
export USE_MULTIPLE_ISOLATES=true
export ENABLE_COMPILATION_WARNINGS=true

По адресу SB2 укажите кросскомпилятор для arm я использовал внешний тулчейн собранный в через buildroot, переменной CROSS_COMPILE нет, поэтому мне пришлось делать симлинки а-ля gcc -> arm-none-linux-gnueabi-gcc, наверняка есть варианты проще но я не стал заморачиваться, далее может возникнуть проблема с cc1plus, мне пришлось сделать симлинк cc1plus -> /mnt/filestore/buildroot-2012.02/output/host/opt/ext-toolchain/libexec/gcc/arm-none-linux-gnueabi/4.5.2/cc1plus, сначало собираете pcsl:

make NETWORK_MODULE=$NETWORK_MODULE PCSL_PLATFORM=$PCSL_PLATFORM GNU_TOOLS_DIR=$SB2

затем собираете CLDC:

 cd $MEHOME/build/linux_arm 
make ENABLE_PCSL=$ENABLE_PCSL PCSL_OUTPUT_DIR=$PCSL_OUTPUT_DIR ENABLE_ISOLATES=$ENABLE_ISOLATES GNU_TOOLS_DIR=$SB2
Столько warning's при сборке я не видел ни в одной программе. Вот MIDP у меня собираться ни в какую не хочет:
cd $MEHOME/midp/build/linux_fb_gcc
make PCSL_OUTPUT_DIR=$PCSL_OUTPUT_DIR CLDC_DIST_DIR=$CLDC_DIST_DIR TOOLS_DIR=$TOOLS_DIR TARGET_CPU=$TARGET_CPU USE_MULTIPLE_ISOLATES=$USE_MULTIPLE_ISOLATES GNU_TOOLS_DIR=$SB2
Вываливает ошибки вида:
Note: Recompile with -Xlint:unchecked for details.
Merging error: key 'SCREEN_TEXT_ORIENT' has no corresponding constant in 'com.sun.midp.chameleon.skins.SkinPropertiesIDs'
ERRjavax.xml.transform.TransformerException: java.lang.RuntimeException: Termination forced by an xsl:message instruction
	at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(Unknown Source)
	at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(Unknown Source)
	at com.sun.midp.configurator.CodeTransformerImpl.transform(CodeTransformer.java:367)
	at com.sun.midp.configurator.CodeTransformer.main(CodeTransformer.java:105)
Caused by: java.lang.RuntimeException: Termination forced by an xsl:message instruction
	at merge.template$dot$7()
	at merge.applyTemplates3()
	at merge.template$dot$8()
	at merge.applyTemplates3()
	at merge.template$dot$8()
	at merge.applyTemplates3()
	at merge.template$dot$0()
	at merge.applyTemplates()
	at merge.transform()
	at com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet.transform(Unknown Source)
	... 4 moreOR:  'Termination forced by an xsl:message instruction'

splinter ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.