Re: Netsurf
Posted: Sat Jun 01, 2013 9:31 pm
Если коротко: библиотеки из /dependencies должны быть помещены в папку с menuetlibc, затем все зависимые библиотеки (libdom, libnsfb и так далее) должны быть скомпилированы через make-файлы в папках src. Получится куча объектников, из этих o-файлов должны быть удалены файлы lib.o, а сами объектники должны быть помещены в соответствующие a-библиотеки. Со временем я сделаю нормальную систему сборки, пока что так. Обратите внимание, что большинство либ зависит от libwapcaplet, поэтому заголовочные файлы из папки include должны быть доступны компилятору для сборки библиотек.
После сборки библиотек их нужно отправить в lib из menuetlibc, и можно приступать к сборке netsurf. Нужно пройтись по каждой папке, и выполнить соответствующие make-файлы, это (опять же) должно дать кучу o-файлов. Эти файлы нужно поместить в netsurf/objs (там уже есть все нужные бинарники), и затем в папке netsurf/objs запустить make.all. В итоге должен получиться рабочий бинарник.
Обратите внимание на netsurf/objs/divdi3.c, sprintf.c и stubs.c. По странным причинам, мой gcc не желает использовать divdi3 и sprintf, которые есть в libgcc и libc, поэтому я использую опен-сурсные исходники. На других компьютерах всё может быть иначе. В stubs.c содержатся "затычки", весьма грубые. Вполне возможно, что netsurf при прокрутке падает из-за этих самых затычек.
Особый интерес должен вызывать файл netsurf/framebuffer/gui.c, это файл, содержащий main()-функцию для netsurf, и делающий первичные настройки. Менять размер окна, опции по умолчанию (размеры тулбара и т.п.), пути ("/hd0/1/res/:/tmp9/1/netsurf:res/") здесь. Здесь же меняется target для отрисовки окна (ram, sdl, vnc, что-то ещё).
В папке netsurf/framebuffer хранятся заголовочные файлы для ttf - можно поменять имя шрифта по-умолчанию, добавить ещё шрифтов. По идее, можно добавить много шрифтов, но не помещать в папку netsurf/res все, но я не пробовал.
В libnsfb в папке surface/sdl.c хранится код, ответственный за непосредственно отрисовку и обработку событий. Поломанное двоеточие следует искать именно там. На основе sdl.c можно построить код нативного интерфейса для framebuffer, это не должно быть очень сложно. Сейчас в sdl.c должна быть отключена параллельная обработка событий. За одно в той же папке в tests/ есть несколько интересных демок, в том числе tinysvg - при вкомпилированной поддержке libtinysvg она способна смотреть SVG. Но эту libtinysvg я не портировал, так как она зависит от libxml2 (или зависела раньше).
В папке libercurl хранятся затычки для curl, они дерьмовые, и, пожалуй, раз у нас новые сокеты, нужно сделать нормальные net/socket.h и netinet.
Вообще, это референсная версия. По-хорошему, нужно
а) Скачать самые-самые свежие исходники (эти протухли на пару месяцев)
б) Портировать libcurl в Колибри для newlib
в) Собрать netsurf для newlib с нативным интерфейсом
г) ???
д) PROFIT!!!
После сборки библиотек их нужно отправить в lib из menuetlibc, и можно приступать к сборке netsurf. Нужно пройтись по каждой папке, и выполнить соответствующие make-файлы, это (опять же) должно дать кучу o-файлов. Эти файлы нужно поместить в netsurf/objs (там уже есть все нужные бинарники), и затем в папке netsurf/objs запустить make.all. В итоге должен получиться рабочий бинарник.
Обратите внимание на netsurf/objs/divdi3.c, sprintf.c и stubs.c. По странным причинам, мой gcc не желает использовать divdi3 и sprintf, которые есть в libgcc и libc, поэтому я использую опен-сурсные исходники. На других компьютерах всё может быть иначе. В stubs.c содержатся "затычки", весьма грубые. Вполне возможно, что netsurf при прокрутке падает из-за этих самых затычек.
Особый интерес должен вызывать файл netsurf/framebuffer/gui.c, это файл, содержащий main()-функцию для netsurf, и делающий первичные настройки. Менять размер окна, опции по умолчанию (размеры тулбара и т.п.), пути ("/hd0/1/res/:/tmp9/1/netsurf:res/") здесь. Здесь же меняется target для отрисовки окна (ram, sdl, vnc, что-то ещё).
В папке netsurf/framebuffer хранятся заголовочные файлы для ttf - можно поменять имя шрифта по-умолчанию, добавить ещё шрифтов. По идее, можно добавить много шрифтов, но не помещать в папку netsurf/res все, но я не пробовал.
В libnsfb в папке surface/sdl.c хранится код, ответственный за непосредственно отрисовку и обработку событий. Поломанное двоеточие следует искать именно там. На основе sdl.c можно построить код нативного интерфейса для framebuffer, это не должно быть очень сложно. Сейчас в sdl.c должна быть отключена параллельная обработка событий. За одно в той же папке в tests/ есть несколько интересных демок, в том числе tinysvg - при вкомпилированной поддержке libtinysvg она способна смотреть SVG. Но эту libtinysvg я не портировал, так как она зависит от libxml2 (или зависела раньше).
В папке libercurl хранятся затычки для curl, они дерьмовые, и, пожалуй, раз у нас новые сокеты, нужно сделать нормальные net/socket.h и netinet.
Вообще, это референсная версия. По-хорошему, нужно
а) Скачать самые-самые свежие исходники (эти протухли на пару месяцев)
б) Портировать libcurl в Колибри для newlib
в) Собрать netsurf для newlib с нативным интерфейсом
г) ???
д) PROFIT!!!