English

تعليمات بناء وتشغيل لغة الأسُس

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

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

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

LLVM 3.3

بالإضافة إلى المكتبات أعلاه، ستحتاج إلى GCC و CMake و Gawk و PHP لتتمكن من بناء المشروع. كذلك فإن لLLVM اعتمادياتها مثل valgrind.
لتنصيب أدوات البناء في توزيعة أوبونتو استخدم الأمر التالي:
$ sudo apt-get install gcc g++ cmake gawk php-cli
وفي توزيعة فيدورا استخدم الأمر التالي:
$ sudo dnf install gcc gcc-c++ cmake gawk php valgrind valgrind-devel
لاحظ حاجتنا لتنصيب valgrind في توزيعة فيدورا للتمكن من بناء LLVM وهو الأمر الذي لم نحتج إليه مع توزيعة أوبونتو. قد تحتاج أيضاً لتنصيب حزم أخرى إن كنت تستخدم توزيعات غير المذكورة أعلاه. راجع موقع LLVM لمعلومات أوفر حول طريقة بنائها.
ملاحظة: ستحتاج إلى الإصدار 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 تعني تدوين كل مستويات المرمّز.

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