לבנות את FPC jvmbackend

רכשתי לפני שבוע Samsung Galaxy S2, והגיע הזמן באמת לבנות משהו לאנדרואיד.

רוב השוק אוהב משום מה את ג'אווה, אבל אני לא מוצא מה כל כך טוב בשפה (דפוק, כמו שאתם כבר יודעים), אז כמובן שאבחר בטכנולוגיה שאני מעדיף. תנחשו מה היא.

אז ניגשתי לרענן את העץ של jvmbackend מהsvn, והחלטתי לבנות בעצמי את הגרסה החדשה.
לפני כן, יש לעשות patch קטן בעץ הקוד של jvmbackend לקובץ fpc.pp:

Index: compiler/utils/fpc.pp
===================================================================
--- compiler/utils/fpc.pp       (revision 20780)
+++ compiler/utils/fpc.pp       (working copy)
@@ -214,6 +214,8 @@
                              cpusuffix:='ia64'
                            else if processorstr='x86_64' then
                              cpusuffix:='x64'
+                           else if processorstr='jvm' then
+                             cpusuffix:='jvm'
                            else
                              error('Illegal processor type "'+processorstr+'"');

לפני התחלת הבניה, יש גם להתקין את Jasmin, אשר אחראי על הידור קוד "אסמבלר" של jvm לקבצי bytecode של jvm.

לאחר מכן, יש צורך לבצע בנייה של גרסת המהדר. זה אמור להראות משהו כזה (יכול להשתנות לפי הצרכים/רצונות שלכם):

make CROSSOPT="-O2 -g -FD/usr/share/java/"  CPU_TARGET=jvm OS_TARGET=android INSTALL_PREFIX=/usr/ FPC=/usr/bin/ppcx64 all crossinstall

CROSSOPT אומר אילו פרמטרים אנחנו מעבירים לfpc בזמן ההידור הנוכחי.
מה שאנחנו אומרים לו הוא לבצע אופטימיזציה פשוטה ומהירה. לשים מעט מידע לניפוי שגיאות. בנוסף אנחנו אומרים לו מה הנתיב עבור Jasmin. שזו בעצם הספריה שאנחנו מחפשים למהדר שלנו.

לאחר מכן, אנחנו אומרים באפשרות של CPU_TARGET כי אנחנו מהדרים ל jvm.
השורה של OS_TARGET מייצגת את מערכת ההפעלה אליה אנחנו מהדרים.

INSTALL_PREFIX מייצג היכן נרצה להתקין את התוצר בסיום ההידור.

FPC מייצג את הנתיב המלא (כולל המהדר) של fpc שאיתו אנחנו רוצים להשתמש (יש להשתמש בזה, רק אם make אינו מצליח למצוא את ppcx64 או כל גרסה אחרת הקיימת אצלכם, או כאשר רוצים להשפיע מה יהיה המהדר שיהיה בשימוש).

all מדבר על לבנות את כל הכלים המגיעים עם FPC
crossinstall מייצג בעצם שאנחנו רוצים להתקין את מה שנוצר עבורינו כcross compile בסופו של דבר.

חשוב לדעת כי פקודה זו, יוצרת מהדר אשר מותאם יותר לצד של אנדרואיד. ופחות ל jvm "כללי", אך אם נחליף ב OS_TARGET לjava, ניצור קבצי class שתואמים ל jvm .

במידה ויש שגיאה כזו:

fpcmake -p -Tjvm-android Makefile.fpc
Processing Makefile.fpc
Error: No targets set

אז צריך לגשת לספרייה jvmbackend/utils/fpcm ולכתוב שם make all. לחזור לספרייה הראשית ולהריץ שוב את שורת ה make העליונה, ללא ניקוי של שום דבר !
ועכשיו כל מה שצריך זה להתחיל לעבוד עם ppcjvm.

כתיבת תגובה

הזינו את פרטיכם בטופס, או לחצו על אחד מהאייקונים כדי להשתמש בחשבון קיים:

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s