ملفات البناء تعتمد على وسوم مستودع جت (GIT tags) لتحديد رقم الإصدار. إذا قمت بنسخ الملفات المصدرية خارج المستودع وقمت بالبناء من هناك فستحصل على 0.0.0-DEV كرقم للإصدار.
يمكن بناء الأسس من الشفرة المصدرية على نظامي لينكس وماك أو إس. يمكن بناء الأسس على أي نظام لينكس طالما يتوفر فيه الإصدار 7 أو أعلى من GCC. بالنسبة لنظام ماك أو إس فقد جربنا البناء على الإصدار 10.13 من ماك أو إس مع الإصدار 9.3 من Xcode. قد يكون ممكنا بناء الأسس على نسخة أقدم من ماك أو إس لكننا لم نجرب ذلك.
الاعتماديات الخارجية
ستحتاج إلى GCC و CMake و Python و Pip و vcpkg لتتمكن من بناء المشروع.
لتنصيب أدوات البناء في توزيعة أوبونتو استخدم الأمر التالي:
$ sudo apt-get install cmake build-essential python3 python3-pip pkg-config
لتنصيب هذه الأدوات على توزيعات غير أوبونتو ستحتاج لمراجعة وثائق تلك التوزيعات.
ولتنصيب vcpkg تحتاج لاتباع الخطوات التالية:
$ git clone https://github.com/microsoft/vcpkg.git "$HOME/vcpkg"
$ cd "$HOME/vcpkg"
$ chmod +x bootstrap-vcpkg.sh
$ ./bootstrap-vcpkg.sh
يمكنك بالطبع تنصيبه في أي مكان تريد وليس بالضرورة في HOME/vcpkg$. بعد تنصيبه تحتاج لتعريف متغير نظام (environment variable) باسم ALUSUS_VCPKG_REPO_PATH يحتوي مسار مجلد vcpkg:
$ export ALUSUS_VCPKG_REPO_PATH="$HOME/vcpkg"
إذا أردت أيضًا إنشاء حزم تنصيب فستحتاج أيضًا لتنصيب
fpm، بالإضافة لتنصيب حزمة 7zip. على نظام أوبونتو:
$ sudo apt install p7zip-full ruby rpm libarchive-tools
$ sudo gem install --no-document fpm
ستحتاج إلى الإصدار 7 فما فوق من GCC. لن تتمكن من بناء شفرة الأسُس بإصدار أقدم. كذلك ستحتاج للإصدار 3.20 على الأقل من cmake.
بدء البناء
بعد تنصيب الاعتماديات كل ما عليك فعله تنفيذ شفرة البناء build.sh والتي ستتولى:
- تنزيل وبناء مكتبة LLVM إن لم تُكن مبنية أصلاً.
- تنزيل وبناء مكتبة libcurl إن لم تكن مبنية أصلاً.
- تنزيل وبناء مكتبة kubazip إن لم تكن مبنية أصلاً.
- بناء الأسس.
- إنشاء حزمة تنصيب إن طُلب ذلك.
تنفيذ شفرة البناء للمرة الأولى سيستغرق وقتًا طويلاً لبناء مكتبة LLVM وهي مكتبة ضخمة. عمليات البناء اللاحقة لن تُعيد بناء LLVM (أو أي من الاعتماديات) وبالتالي ستكون أسرع بكثير. تنفيذ شفرة البناء يتم بالشكل التالي:
$ cd <path-to-Alusus>
$ ./Tools/build.sh
يمكن تمرير العديد من الخيارات لشفرة build.sh للتحكم بالبناء مثل تحديد نوع البناء وتحديد مكانه وإنشاء الحزم. يمكن تمرير الخيار help-- لعرض قائمة بجميع الخيارات المتوفرة. مثلا، لبناء الأسس بصغية release مع بناء الحزم:
$ cd <path-to-Alusus>
$ ./Tools/build.sh --build-type release --build-packages
تنفيذ الاختبارات الآلية
تنفيذ الاختبارات يسير جداً. كل ما عليك فعله هو تنفيذ الأمر التالي داخل مجلد بناء الأسُس (AlususBuild/Intermediate/x64-linux-release في المثال أعلاه) بعد الانتهاء من البناء:
$ cd <path-to-Alusus>/AlususBuild/Intermediate/x64-linux-release
$ ctest
استخدام لغة الأسُس
بعد الانتهاء من البناء سيكون الملف التنفيذي داخل 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.dbg --log 16 helloworld.alusus
مستوى التفاصيل يحدد بمرتبات ثنائية حيث تشير كل مرتبة إلى مستوى معين من التدوين يُمكّن إذا كانت قيمة تلك المرتبة 1 ويُعطّل إذا كانت قيمتها 0. الجدول التالي
يوضح تفاصيل هذه المرتبات:
المرمّز، المستوى الأدنى = 1،
المرمّز، المستوى المتوسط = 2،
المرمّز، المستوى العلوي = 4،
المُعرب، المستوى الأدنى = 8،
المُعرب، المستوى المتوسط = 16،
المُعرب، المستوى العلوي = 32
العبارات التمهيدية = 64
إنشاء الشفرة التنفيذية = 128
إنشاء شفرة LLVM الوسطية = 256
تشخيصات LLVM إضافية = 512
يُمكن دمج أكثر من مستوى في نفس الوقت. على سبيل المثال القيمة 7 تعني تدوين كل مستويات المرمّز.