Plik “0.mak” w katalogu modułu lub programu
Można utworzyć plik o nazwie “0.mak”, którego zawartość zostanie automatycznie włączona do pliku “Makefile”. Plik taki może zawierać pewne definicje, które są traktowane specjalnie.
Mianowicie, można zdefniować “S_modules” i przypisać jej listę modułów podsystemu OUX, z których korzysta dany program. Nie trzeba tak dołączać modułu “base”, ponieważ jest on zawsze dołączany.
Można zdefiniować “S_packages” i przypisać jej listę pakietów systemowych, których podsystem OUX automatycznie nie wyszukał, a są dostępne dla narzędzia systemowego “pkg-config” i mają być dołączone do modułu lub programu.
Można zdefiniować “S_libraries” i przypisać jej listę bibliotek, z którymi dodatkowo ma być połączony moduł lub program.
Można zdefiniować “S_headers” i przypisać jej listę plików nagłówkowych, których nie wyszukał automatycznie podsystem OUX, a mają być włączone do modułu lub programu.
Przykładowo:
S_modules := x_window_hi_cpu S_packages := xcb S_libraries := m S_headers := 1.h
Plik “0.mak” może również definiować szczególne cele tworzenia programu, np. “install”:
install: $(INSTALL) -C -m 700 a.out "$(HOME)/lib/ocq-bis" -pkill -x ocq-bis fbrun -title 'run ocq-bis server' -text 'oux "$(HOME)/lib/ocq-bis"' >/dev/null 2>&1
Plik “0.h” w katalogu modułu lub programu
Jeśli w katalogu znajduje się plik nagłówkowy “0.h”, to zostanie on globalnie włączony do modułu lub programu, więc można w nim umieścić jakieś definicje preprocesora C konfigurujące globalnie program.
Konfiguracja sposobu kompilacji modułów i programu
W plikach “1.mak” i “E_cplus_S_machine.h” znajdujących się w podkatalogu “compile” podsystemu OUX są pojedyncze opcje kompilacji tego podsystemu.
W pliku “1.mak”:
- • “H_make_C_to_libs” ustawiona na jakąś wartość włącza kompilację modułów do plików bibliotek dołączanych podczas wykonywania programu, a ustawiona na pusty ciąg znaków lub nie ustawiona włącza kompilację modułów do zawartości programu.
- • “H_make_C_to_libs_C_replace_c_alloc” ustawiona (jw.) włącza zastępowanie procedur przydzielania pamięci systemu operacyjnego w programie (w zasadzie dla bibliotek dołączanych podczas wykonywania programu), którymi są “malloc”, “calloc”, “realloc”, “free”, “posix_memalign” i “malloc_usable_size”, na procedury menedżera pamięci podsystemu OUX. Nie ustawiona (jw.) pozostawia oryginalne procedury przydzielania pamięci systemu operacyjnego w programie.
- • “E_flow_drv_C_clock_monotonic” ustawiona (jw.) włącza odliczanie czasu przy użyciu zegara nanosekundowego standardu POSIX 2008, nie ustawiona (jw.) włącza odliczanie czasu przy użyciu zegara milisekundowego standardu POSIX 2001.
- • “E_io_C_aio” ustawiona (jw.) włącza obsługę strumieni wejścia/wyjścia przy użyciu “aio” (asynchronous I/O) standardu POSIX, nie ustawiona (jw.) włącza obsługę strumieni wejścia/wyjścia przy użyciu standardu BSD lub nawet bez niego.
- • “H_make_C_debug” ustawiona (jw.) włącza sprawdzanie zakresów wartości parametrów procedur.
- • “E_mem_Q_blk_C_debug” ustawiona (jw.) włącza sprawdzanie poprawności działania menedżera bloków pamięci (E_mem_Q_blk).
- • “H_make_S_cc” ustawiona na listę nazw kompilatorów (np. “clang gcc”) decyduje o pierwszości użycia danego kompilatora, gdy jest dostępny.
W pliku “E_cplus_S_machine.h”:
- • “C_line_report” zdefiniowana włącza wypisywanie raportów linii, nie zdefiniowana wycisza raporty linii.
- • “C_id_small” zdefiniowana przełącza na jeszcze mniejszy na danym procesorze rozmiar identyfikatorów, a nie zdefiniowana pozostawia oryginalnie mniejszy rozmiar identyfikatorów.
- • “E_flow_C_errno_p” zdefiniowana włącza przechowywanie adresu zmiennej systemowej “errno”, a nie zdefiniowana włącza czytanie tego adresu za każdym razem, gdy jest potrzebna wartość zmiennej.
Domyślne cele tworzenia modułów i programu
W pliku “2.mak” znajdującym się w podkatalogu “compile” podsystemu OUX zdefiniowane są domyślne cele “run” programu, “install” modułów i “uninstall” modułów.
Jeśli uruchamiamy program przy użyciu “make” poleceniem
make run
to jest uruchamiany program z podkatalogu zapisanego w pliku “Makefile” katalogu podsystemu OUX. Jeśli moduły są kompilowane do postaci plików bibliotek dołączanych w czasie wykonywania, to program jest uruchamiany przy użyciu skompilowanych i nie zainstalowanych bibliotek. W celu uruchomienia programu otwierane jest okno pseudoterminala do wypisywania komunikatów.
Jako użytkownik “root” w systemie operacyjnym można z katalogu podsystemu OUX wydać polecenie
make install
które zainstaluje w systemie operacyjnym pliki bibliotek dołączanych dynamicznie reprezentujących moduły podsystemu OUX, jeśli oczywiście włączone jest kompilowanie do bibliotek.
Można również jako użytkownik “root” wydać polecenie
make uninstall
które te moduły odinstaluje.
W pliku “1.mak” jest zdefiniowana zmienna “H_make_S_usr_lib”, która określa katalog w systemie operacyjnym, gdzie instalować pliki bibliotek.
Jeśli polecenie instalacji lub dezinstalacji zostanie wydane z podkatalogu danego programu, to najpierw zostaną wykonane opisane wyżej akcje dla modułów.