- Move source code from `trunk` into root directory. - Update build files and ASM include paths. Add SPDX license header where appropriate. - These changes also update the CI build files in `.gitea/workflows/`. - Note: Line endings standardised from `CRLF` > `LF`, so best to view diffs with whitespace changes hidden. (Work towards [#75](KolibriOS/kolibrios#75), point 3) --------- Co-authored-by: Burer <burer@kolibrios.org> Reviewed-on: KolibriOS/kolibrios#425 Reviewed-by: Mikhail Frolov <mixa.frolov2003@gmail.com> Reviewed-by: Burer <burer@kolibrios.org> Co-authored-by: Andrew <dent.ace@gmail.com> Co-committed-by: Andrew <dent.ace@gmail.com>
109 lines
4.7 KiB
Plaintext
109 lines
4.7 KiB
Plaintext
|
|
┴√ёЄЁ√щ ёЄрЁЄ
|
|
|
|
tcc шёяюы№чєхЄё ъръ юс√ўэю (ёь. ёяЁртъє tcc). ╨рё°шЁхэшх KX шёяюы№чюы№чєхЄ
|
|
Їрщы√ юяЁхфхыхэшщ ёшьтюыют (*.def) фы фшэрьшўхёъшї сшсышюЄхъ (Їрщы√ *.o,
|
|
эх ЄЁхсє■Єё , шёъы■ўхэшх - ёЄрЄшўхёъшх *.o, хёыш юэш эєцэ√ фы ЁрсюЄ√
|
|
яЁюуЁрьь√).
|
|
|
|
╧ЁшьхЁ√ яю ёсюЁъх ёь. т фшЁхъЄюЁшш /samples
|
|
|
|
╧Ёшьхўрэшх:
|
|
ъы■ў -nobss с√ы єфрыхэ, Єръ ъръ юэ эх шьххЄ ёь√ёыр (Ёрэхх ухэхЁшЁютрт°р ё
|
|
bss ёхъЎш чряюыэ ырё№ эєы ьш ш чрэшьрыр эхэєцэюх ьхёЄю т Їрщых, ¤Єр ёхъЎш
|
|
эх фюыцэр ёюфхЁцрЄ№ё т юсЁрчх ш фЁю шэшЎшрышчшЁєхЄ ¤Єє ўрёЄ№ э ы ьш
|
|
ртЄюьрЄшўхёъш яЁш чруЁєчъх)
|
|
|
|
┬ фшЁхъЄюЁшш /lib яюёЄрты ■Єё Їрщы√ *.def (юяЁхфхыхэшх ёшьтюыют фшэрьшўхёъшї
|
|
сшсышюЄхъ), crt0.o (яюффхЁцър ъюфр ╤) ш *libtcc.a (тёяюьюурЄхы№эр сшсышюЄхър
|
|
tcc), р Єръцх эхъюЄюЁ√х ёЄрЄшўхёъшх сшсышюЄхъш *.a. ╩Ёюьх Єюую, шьххЄё
|
|
сшсышюЄхър tiny.o фы тючьюцэюёЄш ышэъютъш яЁшыюцхэшщ схч яюффхЁцъш ъюфр ╤,
|
|
т Єюь ўшёых юс·хъЄэ√ї Їрщыют ёючфрээ√х ёЄюЁюээшьш ъюьяшы ЄюЁрьш.
|
|
|
|
┬ю шчсхцрэшх ъюэЇышъЄют сшсшышюЄхъ ё шёяюы№чютрэшхь тючьюцэюёЄхщ
|
|
яЁхфюёЄрты хь√ї Ёрё°шЁхэшхь KX ЁхъюьхэфєхЄё шёяюы№чютрЄ№ Єюы№ъю юфэє
|
|
фшЁхъЄюЁш■ ё сшсышюЄхърьш [++, т ъюЄюЁющ эх фюыцэю с√Є№ тчршьюшёъы■ўр■∙шї
|
|
сшсышюЄхъ]. ┼ёыш юяЁхфхыхэю эхёъюы№ъю фшЁхъЄюЁшщ сшсышюЄхъ,
|
|
т ърцфющ шч эшї эх фюыцэю с√Є№ ъюэЇышъЄэ√ї сшсышюЄхъ. ═ряЁшьхЁ,
|
|
яЁш Єръюь яюфъы■ўхэшш сшсышюЄхъш
|
|
|
|
-llibc
|
|
|
|
tcc ш∙хЄ Їрщы√ т ёыхфє■∙хь яюЁ фъх: libc.def, liblibc.def, liblibc.a
|
|
╬сЁрЄшЄх тэшьрэшх, ўЄю тёх ЄЁш трЁшрэЄр сєфєЄ яЁртшы№э√ьш ш сєфхЄ шёяюы№чютрэ
|
|
яхЁтр эрщфхээр сшсшышюЄхър. ╥ръцх юсЁрЄшЄх тэшьрэшх, ўЄю фы ъюЁЁхъЄэющ
|
|
ЁрсюЄ√ яЁшыюцхэш ё Ёрё°шЁхэшхь KX тёх фшэрьшўхёъшх сшсышюЄхъш фюыцэ√ с√Є№
|
|
юсЁрсюЄрэ√ Єюы№ъю ё *.def
|
|
|
|
╘рщы√ юяЁхфхыхэш ёшьтюыют
|
|
|
|
╨рё°шЁхэшх KX шёяюы№чєхЄ Їрщы√ юяЁхфхыхэшщ ёшьтюыют (*.def). ╘рщы√ *.def
|
|
шёяюы№чє■Є яЁюёЄющ ЇюЁьрЄ ш ьюуєЄ ёючфтрЄ№ё ш ЁхфръЄшЁютрЄ№ё т ы■сюь
|
|
єфюсэюь ЄхъёЄютюь ЁхфръЄюЁх. ╤ЄЁєъЄєЁр Їрщыр *.def юяшёрэр эшцх.
|
|
|
|
; ╩юььхэЄрЁшш эрўшэр■Єё Єюўъющ ё чря Єющ ш шуэюЁшЁє■Єё яЁш юсЁрсюЄъх
|
|
;
|
|
; ╧хЁтр ёЄЁюър фюыцэр эрўшэрЄ№ё ё ъы■ўхтюую ёыютр LIBRARY ё єърчрэшхь
|
|
; шьхэш сшсышюЄъш c Ёрё°шЁхэшхь (эх сюыхх 3 ёшьютюыют яюёых Єюўъш)
|
|
LIBRARY libname.obj
|
|
|
|
; ═р ёыхфє■∙хщ ёЄЁюъх ёыхфєхЄ ъы■ўхтюх ёыютю EXPORTS ш
|
|
; юяЎшюэры№э√щ ъы■ў prefix
|
|
EXPORTS [prefix]
|
|
|
|
; хёыш чрфрэ ъы■ў prefix, Єю тю тёхї ёшьтюырї фюыцхэ шёяюы№чютрЄ№ё
|
|
; яЁхЇшъё шч шьхэш сшсышюЄхъш (схч Ёрё°шЁхэш ) ёю ёыхфє■∙шь чр эшь ёшьтюыюь
|
|
; яюфўхЁъштрэш . ╧ЁхЇшъё сєфхЄ юЄсЁю°хэ яЁш яюёЄюхэшш ЄрсышЎ√ шьяюЁЄр
|
|
; ═ряЁшьхЁ, фы сшсышюЄхъш http.obj яЁхЇшъё фюыцхэ с√Є№ http_
|
|
; шч ёшьтюыр http_get т ЄрсышЎє шьяюЁЄр сєфхЄ чряшёрэ ёшьтюы get
|
|
[libname_]entry1
|
|
[libname_]entry2
|
|
|
|
; тёх юёЄры№э√х ёшьтюы√ сшсышюЄхъш
|
|
|
|
╟руюыютюўэ√х Їрщы√ фшэрьшўхёъшї сшсышюЄхъ
|
|
─ы шьяюЄшЁєхь√ї ЇєэъЎшщ яюффхЁцштрхЄё фтр ёяюёюср шї юс· тыхэш :
|
|
- ё яЁхЇшъёюь рЄЁшсєЄр шьяюЁЄр (ЁхъюьхэфєхЄё фы эют√ї сшсшышюЄхъ).
|
|
─рээ√щ ёяюёюс фюяюыэшЄхы№эю єьхэ№°рхЄ ЁрчьхЁ яЁшыюцхэш .
|
|
|
|
__attribute__((dllimport)) void foo(int);
|
|
|
|
- тэх°э ЇєэъЎш ё т√чютюь яю єърчрЄхы■ (єёЄрЁхт°шщ ёяюёюс, шёяюы№чєхЄё
|
|
фы ёютьхёЄшьюёЄш ё шьх■∙шьшё эр фрээ√щ ьюьхэЄ чруюыютърьш)
|
|
|
|
extern int (*foo)(const char*);
|
|
|
|
┬═╚╠└═╚┼:
|
|
юс· тыхэшх шьяюЁЄшЁєхьющ ЇєэъЎшш ё т√чютюь яю єърчрЄхы■ схч ёяхЎшЇшърЄюЁр
|
|
extern ты хЄё ю°шсъющ, ъюЄюЁє■ tcc эх ьюцхЄ юЄёыхфшЄ№, Єръ ъръ фрээр
|
|
ъюэёЄЁєъЎш ты хЄё яЁртшы№эющ ё Єюўъш чЁхэш ч√ър ╤
|
|
|
|
int (*foo)(const char*); => ю°шсър!!!
|
|
|
|
╬с· тыхэшх шьяюЁЄшЁєхь√ї ЇєэъЎшщ схч __attribute__((dllimport))
|
|
эх яюффхЁцштрхЄё ш сєфхЄ ухэхЁшЁютрЄ№ ю°шсъє ышэъхЁр
|
|
|
|
void foo(int); => ю°шсър!!!, юёЄрэют ышэъхЁр.
|
|
|
|
╧ЁютхЁър яюффхЁцъш Ёрё°шЁхэш KX
|
|
|
|
─ы яЁютхЁъш, ўЄю tcc яюффхЁцштрхЄ Ёрё°шЁхэшх KX:
|
|
1. т ъюьрэфэющ ёЄЁюъх эрсхЁшЄх
|
|
tcc -v
|
|
╤ЄЁюър эшцх ючэрўрхЄ, ўЄю шьххЄё яюффхЁър Ёрё°шЁхэш KX
|
|
tcc version 0.9.26 (i386 KolibriOS/KX extension 0.4.6)
|
|
|
|
2. ┬ ъюфх фы єёыютэющ ъюьяшы Ўшш шёяюы№чєщЄх фшЁхъЄшт√ яЁхяЁюЎхёёюЁр
|
|
яЁютхЁъш яЁхфюяЁхфхыхээюую ьръЁюёр __KX__, эряЁшьхЁ
|
|
#ifdef __KX__
|
|
// ъюф ъюЄюЁ√щ фюыцхэ ъюьяшышЁютрЄ№ё Єюы№ъю ё Ёрё°шЁхэшхь KX
|
|
#else
|
|
// ъюф, ъюЄюЁ√щ эх чртшёшЄ юЄ Ёрё°шЁхэш KX
|
|
#endif
|
|
|
|
╬сЁрЄшЄх тэшьрэшх, ўЄю т эрёЄю ∙хх тёхь ¤ЄюЄ ьръЁюё яюърч√трхЄ, ўЄю
|
|
ъюьяшы ЄюЁ яюффхЁцштрхЄ Ёрё°шЁхэшх KX. ╧ю єьюыўрэш■ ¤ЄюЄ ьръЁюё сєфхЄ
|
|
юяЁхфхыхэ тёхуфр, фрцх хёыш ┬√ яю ъръшь Єю яЁшўшэрь эх цхырхЄх
|
|
шёяюы№чютрЄ№ эют√х яЁхшьє∙хёЄтр. ╧Ёш шёяюы№чютрэшш Єхъє∙шї
|
|
юёюсхээюёЄхщ Ёрчфхы Є№ ъюф юяшёрээ√ь т яЁшьхЁх т√°х ёяюёюсюь т
|
|
сюы№°шэёЄтх ёыєўрхт эх ЄЁхсєхЄё . |