English

بناء لغة الأسُس من الشفرة المصدرية

ملاحظة: ملفات البناء تعتمد على وسوم مستودع جت (GIT tags) لتحديد رقم الإصدار. إذا قمت بنسخ الملفات المصدرية خارج المستودع وقمت بالبناء من هناك فستحصل على 0.0.0-DEV كرقم للإصدار.

الاعتماديات الخارجية

فيما يلي المكتبات التي يستخدمها المشروع والتي ستحتاج لتحميلها على نظامك قبل التمكن من بناء الشفرة المصدرية:

LLVM 7.0.1

بالإضافة إلى المكتبات أعلاه، ستحتاج إلى GCC و CMake و Python و Pip لتتمكن من بناء المشروع. كذلك فإن لLLVM اعتمادياتها مثل zlib و valgrind والتي قد تضطر لتنصيبها يدويًا. ولاستخدام https في مكتبة التنفيذ المعيارية ستحتاج أيضاً إلى libssl-dev.
لتنصيب أدوات البناء في توزيعة أوبونتو استخدم الأمر التالي:
$ sudo apt-get install gcc g++ cmake python3 python3-pip zlib1g-dev libssl-dev
لتنصيب هذه الأدوات على توزيعات غير أوبونتو ستحتاج لمراجعة وثائق تلك التوزيعات. لاحظ أن شفرة البناء تفترض أن اسم مترجم بايثون python3 وهو الحال على توزيعة أوبونتو، فإن كنت على توزيعة أخرى قد تحتاج لإنشاء رابط أو تعديل الملف build.sh.
ملاحظة: ستحتاج إلى الإصدار 7 فما فوق من GCC. لن تتمكن من بناء شفرة الأسُس بإصدار أقدم.

البناء باستخدام build.sh

هذه هي الطريقة الأيسر للبناء والتي يُنصح بها. يوجد في ملف build.sh بعض المتغيرات التي يمكن التحكم بها منها MAKE_THREAD_COUNT وهو عدد خيوط التنفيذ المتوازي المستخدمة أثناء البناء. تم تحديد قيمة هذا المتغير بـ8 لتسريع البناء لكن يمكنك التحكم به إن واجهت مشاكل أو لم يكن حاسوبك قادراً على تشغيل 8 خطوط تنفيذ معاً.
إن واجهت أخطاءاً أثناء بناء LLVM فقد تضطر لتعديل الأمر cmake الخاص ببناء LLVM داخل ملف build.sh بإعطاء معطيات إضافية مثل -DLLVM_TARGET_ARCH.

البناء يدوياً

تنفيذ الاختبارات الآلية

تنفيذ الاختبارات يسير جداً كل ما عليك فعله هو تنفيذ الأمر التالي داخل مجلد بناء الأسُس (Builds في المثال أعلاه) بعد الانتهاء من البناء:
$ make test

استخدام لغة الأسُس

بعد الانتهاء من البناء سيكون الملف التنفيذي داخل Bin وستكون المكتبات داخل Lib. تستطيع تنفيذ الأمثلة داخل المجلد Examples كما يلي:
$ export PATH=<path-to-Alusus>/Bin:$PATH
$ cd <path-to-Alusus>/Examples/General
$ alusus hello_world.alusus
اسم الملف التنفيذي عند البناء بصيغة التنقيح (debug) يكون alusus.dbg. لو تم بناؤها بصيغة النشر (release) فإن اسم الملف التنفيذي يكون alusus، أي بدون الإضافة dbg.

إذا تم بناء القلب بصيغة التنقيح (debug) فإن بالإمكان تدوين الأحداث (logging) وذلك بإضافة معطى log-- إلى البرنامج وإعطائه رقماً يحدد مستوى التفاصيل المرجو كما في المثال التالي:

$ alusus helloworld.alusus --log 16
مستوى التفاصيل يحدد بمرتبات ثنائية حيث تشير كل مرتبة إلى مستوى معين من التدوين يُمكّن إذا كانت قيمة تلك المرتبة 1 ويُعطّل إذا كانت قيمتها 0. الجدول التالي يوضح تفاصيل هذه المرتبات:
المرمّز، المستوى الأدنى = 1،
المرمّز، المستوى المتوسط = 2،
المرمّز، المستوى العلوي = 4،
المُعرب، المستوى الأدنى = 8،
المُعرب، المستوى المتوسط = 16،
المُعرب، المستوى العلوي = 32
يُمكن دمج أكثر من مستوى في نفس الوقت. على سبيل المثال القيمة 7 تعني تدوين كل مستويات المرمّز.

جميع الحقوق محفوظة لـ سرمد خالد عبداللّه 2019م \ 1440هـ.
نُشر هذا الملف برخصة الأسُس العامة (Alusus Public License)، الإصدار 1.0، والمضمّنة مع هذا الملف والمتوفرة أيضاً على الرابط https://alusus.org/alusus_license_1_0. يرجى قراءة الرخصة للتعرف على شروط الاستخدام والنسخ.