Skip to content

Commit 0aac903

Browse files
authored
Merge pull request #287 from Shad7ows/Alif5.0
تصحيح خطأ في نظام المسارات وتحسين الناء على لينكس
2 parents b8f0ace + 747140f commit 0aac903

File tree

6 files changed

+178
-161
lines changed

6 files changed

+178
-161
lines changed

README.md

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@
108108

109109
اذا قصوى:
110110
افضل_نتيجة = عشري("-لانهائي")
111-
لاجل ب في مدى(9):
111+
لكل ب في مدى(9):
112112
اذا اللوح[ب] == " ":
113113
اللوح[ب] = "O"
114114
النتيجة = اقصى_احتمال(اللوح, العمق + 1, خطأ)
@@ -117,7 +117,7 @@
117117
ارجع افضل_نتيجة
118118
والا:
119119
افضل_نتيجة = عشري("لانهائي")
120-
لاجل ب في مدى(9):
120+
لكل ب في مدى(9):
121121
اذا اللوح[ب] == " ":
122122
اللوح[ب] = "X"
123123
النتيجة = اقصى_احتمال(اللوح, العمق + 1, صح)
@@ -128,7 +128,7 @@
128128
دالة حركة_الجهاز():
129129
افضل_نتيجة = عشري("-لانهائي")
130130
افضل_حركة = عدم
131-
لاجل ب في مدى(9):
131+
لكل ب في مدى(9):
132132
اذا اللوح[ب] == " ":
133133
اللوح[ب] = "O"
134134
النتيجة = اقصى_احتمال(اللوح, 0, خطأ)
@@ -192,34 +192,32 @@ sudo apt install build-essential
192192
```sh
193193
make
194194
```
195-
سيتم إنشاء مجلد باسم build في نفس المسار
196-
قم بإعادة الأمر ⌨️
197-
```sh
198-
make
195+
سيتم بناء لغة alif ضمن مجلد build في وضع الإصدار release
196+
لمعرفة أوضاع البناء يمكن تمرير الأمر ⌨️
197+
``` sh
198+
make help
199199
```
200-
201200
ولتنفيذ ملف ألف قم بتمرير اسم الملف
202201

203202
```sh
204203
./alif filename.alif
205204
```
206205

207206
### نظام ماك (Mac):
208-
- يجب توفر مترجم c++ او c++
207+
- يجب توفر مترجم g++ او c++
209208
- يمكنك تثبيته على mac عن طريق تثبيت XCode
210209
- قم بتحميل الشفرة المصدرية من مجتمع ألف على github : [https://github.com/alifcommunity/Alif5](https://github.com/alifcommunity/Alif5)
211210
- قم بفتح ملف linuxBuild ومن ثم تقوم بفتح الطرفية cmd في نفس مسار الملف
212211
- بعد ذلك تقوم بكتابة امر ⌨️
213212
```sh
214213
make
215214
```
216-
سيتم إنشاء مجلد باسم build في نفس المسار
217-
قم بإعادة الأمر ⌨️
218-
```sh
219-
make
215+
سيتم بناء لغة alif ضمن مجلد build في وضع الإصدار release
216+
لمعرفة أوضاع البناء يمكن تمرير الأمر ⌨️
217+
``` sh
218+
make help
220219
```
221-
222-
ولتنفيذ ملف ألف قم بتمرير اسم الملف
220+
ولتنفيذ ملف ألف قم بتمرير اسم الملف
223221

224222
```sh
225223
./alif filename.alif

documents/ما الجديد.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
الجديد في نسخة ألف 5.1.0:
2-
التاريخ: 1-4-1447
1+
# الجديد في نسخة ألف 5.1.0: | التاريخ: 1-4-1447
32

43
- #### الإضافات:
54
1- إضافة ميزة جمع نصين عن طريق عملية الجمع،

examples/Status.alif

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
س = ادخل("قم بإدخال نص: ")
3838
اطبع(س)
3939

40-
س = افتح("open_test.txt"، "ق")
40+
س = افتح("examples\open_test.txt"، "ق")
4141
اطبع(س.اقرا_سطر())
4242
اطبع(س.اقرا())
4343
س.اغلق()

linuxBuild/Makefile

Lines changed: 48 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
CPP = c++ # المترجم
2-
# CPPFLAGS = -Wall -std=c++20 # معاملات الترجمة
3-
CPPFLAGS = -w -O3 -std=c++20 # بدون تحذيرات، مع التشغيل على نظام aarch64a
4-
# CPPFLAGS = -O3 -std=c++20
2+
CPPFLAGS = -std=c++20
3+
RELEASE_FLAGS = -O2 -w
4+
DEBUG_FLAGS = -O0 -g
55
# -g تخزين معلومات debug
66
# -Wall طباعة معظم التنبيهات
77
# -w عدم طباعة التنبيهات
@@ -11,34 +11,33 @@ BUILD_DIR = build
1111
OBJ_DIR = $(BUILD_DIR)/obj
1212
TARGET = $(BUILD_DIR)/alif
1313

14-
SOURCES = $(wildcard $(SOURCE_DIR)/Alif/*.cpp) \
15-
$(wildcard $(SOURCE_DIR)/AlifCore/Objects/*.cpp) \
14+
15+
SOURCES = $(wildcard $(SOURCE_DIR)/Alif/*.cpp) \
16+
$(wildcard $(SOURCE_DIR)/AlifCore/Objects/*.cpp) \
1617
$(wildcard $(SOURCE_DIR)/AlifCore/Objects/dtoa/*.cpp) \
17-
$(wildcard $(SOURCE_DIR)/Modules/*.cpp) \
18-
$(wildcard $(SOURCE_DIR)/Modules/_io/*.cpp) \
18+
$(wildcard $(SOURCE_DIR)/Modules/*.cpp) \
19+
$(wildcard $(SOURCE_DIR)/Modules/_io/*.cpp) \
1920

20-
INCLUDES = -I$(SOURCE_DIR)/Alif \
21-
-I$(SOURCE_DIR)/AlifCore/Include/Core \
22-
-I$(SOURCE_DIR)/AlifCore/Include/Main \
21+
INCLUDES = -I$(SOURCE_DIR)/Alif \
22+
-I$(SOURCE_DIR)/AlifCore/Include/Core \
23+
-I$(SOURCE_DIR)/AlifCore/Include/Main \
2324
-I$(SOURCE_DIR)/AlifCore/Include/Main/Atomics \
2425
-I$(SOURCE_DIR)/AlifCore/Include/Main/mimalloc \
2526
-I$(SOURCE_DIR)/AlifCore/Include/Main/StringLib \
2627
-I$(SOURCE_DIR)/AlifCore/Include/Main/FrozenModules \
27-
-I$(SOURCE_DIR)/AlifCore/Objects/clinic \
28-
-I$(SOURCE_DIR)/Modules/_io \
29-
-I$(SOURCE_DIR)/Modules/_io/clinic \
28+
-I$(SOURCE_DIR)/AlifCore/Objects/clinic \
29+
-I$(SOURCE_DIR)/Modules/_io \
30+
-I$(SOURCE_DIR)/Modules/_io/clinic \
31+
32+
33+
# تحديد اعلام بناء البرنامج
34+
release: CPPFLAGS += $(RELEASE_FLAGS)
35+
debug: CPPFLAGS += $(DEBUG_FLAGS)
36+
37+
all: release
38+
release: $(TARGET)
39+
debug: $(TARGET)
3040

31-
# مرحلة إنشاء الملفات المطلوبة
32-
ifeq ($(wildcard $(BUILD_DIR)),)
33-
$(BUILD_DIR):
34-
mkdir -p $@
35-
mkdir -p $(OBJ_DIR)
36-
mkdir -p $(OBJ_DIR)/Alif
37-
mkdir -p $(OBJ_DIR)/AlifCore/Objects
38-
mkdir -p $(OBJ_DIR)/AlifCore/Objects/dtoa
39-
mkdir -p $(OBJ_DIR)/Modules
40-
mkdir -p $(OBJ_DIR)/Modules/_io
41-
endif
4241

4342
# تقوم هذه التعليمة بأخذ كل ملفات المصدر المنتهية ب .cpp
4443
# وتستبدلها بالملفات المنتهية ب .o
@@ -60,9 +59,8 @@ CPPFLAGS += $(addprefix ,$(INCLUDES))
6059
# يتم استخدام العلامة النسبية % لتحديد الجزء المتغير من الاسم
6160
# (على سبيل المثال، file1 في file1.cpp و file1.o).
6261
$(OBJ_DIR)/%.o: $(SOURCE_DIR)/%.cpp | $(OBJ_DIR)
63-
$(CPP) $(CPPFLAGS) -c $< -o $@
64-
65-
62+
@echo "ترجمة.." $<
63+
@$(CPP) $(CPPFLAGS) -c $< -o $@
6664

6765
# يقوم بتحديد قاعدة لربط ملفات الكائنات (OBJECTS)
6866
# إلى ملف الهدف النهائي (TARGET).
@@ -73,19 +71,39 @@ $(OBJ_DIR)/%.o: $(SOURCE_DIR)/%.cpp | $(OBJ_DIR)
7371
# يتم استخدام العلامة النسبية | لتأكيد أن مسار الكائنات (BUILD_DIR)
7472
# يجب أن يكون موجودًا قبل بدء عملية الربط.
7573
$(TARGET): $(OBJECTS) | $(BUILD_DIR)
76-
$(CPP) $^ -o $@
74+
@echo "جاري الربط..."
75+
@$(CPP) $^ -o $@
76+
@echo "تم البناء بنجاح"
7777

78+
# إنشاء الملفات المطلوبة
79+
ifeq ($(wildcard $(BUILD_DIR)),)
80+
$(BUILD_DIR):
81+
@mkdir -p $@
82+
$(OBJ_DIR):
83+
@mkdir -p $@
84+
@mkdir -p $(OBJ_DIR)/Alif
85+
@mkdir -p $(OBJ_DIR)/AlifCore/Objects
86+
@mkdir -p $(OBJ_DIR)/AlifCore/Objects/dtoa
87+
@mkdir -p $(OBJ_DIR)/Modules
88+
@mkdir -p $(OBJ_DIR)/Modules/_io
89+
endif
7890

79-
all: $(TARGET)
8091

8192
clean:
8293
rm -rf $(BUILD_DIR)
8394

84-
.PHONY: all clean
95+
.PHONY: all clean release debug
8596

8697

8798
# تقوم هذه التعليمة بإضافة أمر الى make
8899
# حيث يصبح make -j(nproc)
89100
# وذلك لبناء اللغة بإستخدام ممرات متعددة multithread
90101
MAKEFLAGS += -j$(shell nproc)
91102

103+
help:
104+
@echo "نظام بناء لغة ألف النسخة الخامسة"
105+
@echo "طريقة البناء:"
106+
@echo "make # لبناء اللغة في وضع الإصدار"
107+
@echo "make release # لبناء اللغة في وضع الإصدار"
108+
@echo "make debug # لبناء اللغة في وضع تتبع الاخطاء"
109+
@echo "make clean # لحذف جميع ملفات البناء"

0 commit comments

Comments
 (0)