DC-SWAT Forum
Need help building Dreamshell - Версия для печати

+- DC-SWAT Forum (http://www.dc-swat.ru/forum)
+-- Форум: DreamShell (/forum-3.html)
+--- Форум: Programming (/forum-28.html)
+--- Тема: Need help building Dreamshell (/thread-4095.html)



Need help building Dreamshell - Rio - 26.06.2024 00:30

Привет Сват! Long time no see, надеюсь у тебя все в порядке!

Пытаюсь собрать дримшел.
Все делал по инструкции, валится на линковке символов, но порт libbzip2 собран.

Цитата:root@DESKTOP-12T5EBE:/usr/local/dc/kos/kos/ds# source ../environ.sh
root@DESKTOP-12T5EBE:/usr/local/dc/kos/kos/ds# make
rm -f 1DS_CORE.BIN DS_CORE.BIN DS.elf DS.cdi
rm -f /usr/local/dc/kos/kos/ds/src/main.o
rm -f romdisk.*
rm -rf romdisk/.* 2> /dev/null || true
kos-cc -c /usr/local/dc/kos/kos/ds/src/main.c -o /usr/local/dc/kos/kos/ds/src/main.o
/usr/local/dc/kos/kos/utils/genromfs/genromfs -f romdisk.img -d romdisk -v -x .svn -x .keepme
0 rom 1719346980 [0xffffffff, 0xffffffff] 37777777777, sz 0, at 0x0
1 . [0x860 , 0x60e3 ] 0040775, sz 0, at 0x20
1 .. [0x860 , 0xbd3 ] 0040775, sz 0, at 0x40 [link to 0x20 ]
1 logo.kmg.gz [0x860 , 0x60e4 ] 0100664, sz 31403, at 0x60
1 startup.raw.gz [0x860 , 0x60e5 ] 0100664, sz 205731, at 0x7b30
/usr/local/dc/kos/kos/utils/bin2o/bin2o romdisk.img romdisk romdisk_tmp.o
/opt/toolchains/dc/sh-elf/bin/sh-elf-gcc -o romdisk.o -r romdisk_tmp.o -L/usr/local/dc/kos/kos/lib/dreamcast -L/usr/local/dc/kos/kos/addons/lib/dreamcast -L/usr/local/dc/kos/kos/../kos-ports/lib -L/usr/local/dc/kos/kos/ds/sdk/lib -Wl,--whole-archive -lromdiskbase
rm romdisk_tmp.o
/opt/toolchains/dc/sh-elf/bin/sh-elf-gcc -O2 -fomit-frame-pointer -fno-builtin -m4-single-only -ml -ffunction-sections -fdata-sections -matomic-model=soft-imask -ftls-model=local-exec -I/usr/local/dc/kos/kos/include -I/usr/local/dc/kos/kos/kernel/arch/dreamcast/include -I/usr/local/dc/kos/kos/addons/include -I/usr/local/dc/kos/kos/../kos-ports/include -D_arch_dreamcast -D_arch_sub_pristine -Wall -g -I/usr/local/dc/kos/kos/ds/sdk/include -I/usr/local/dc/kos/kos/ds/sdk/include/SDL -DTARGET_NAME=DreamShell_v4.0.0_Release -DDS_ARCH_DC -Wno-nonnull-compare -Wno-stringop-truncation -Wno-stringop-overflow -Wno-format-truncation -Wno-format-overflow -Wno-restrict -I/usr/local/dc/kos/kos/ds/include -I/usr/local/dc/kos/kos/ds/include/SDL -I/usr/local/dc/kos/kos/ds/include/fatfs -DHAVE_SDLIMAGE -DVER_MAJOR=4 -DVER_MINOR=0 -DVER_MICRO=0 -DVER_BUILD=0x30 -O2 -fomit-frame-pointer -fno-builtin -m4-single-only -ml -ffunction-sections -fdata-sections -matomic-model=soft-imask -ftls-model=local-exec -I/usr/local/dc/kos/kos/include -I/usr/local/dc/kos/kos/kernel/arch/dreamcast/include -I/usr/local/dc/kos/kos/addons/include -I/usr/local/dc/kos/kos/../kos-ports/include -D_arch_dreamcast -D_arch_sub_pristine -Wall -g -m4-single-only -ml -Wl,-Ttext=0x8c010000 -Wl,--gc-sections -T/usr/local/dc/kos/kos/utils/ldscripts/shlelf.xc -nodefaultlibs -L/usr/local/dc/kos/kos/lib/dreamcast -L/usr/local/dc/kos/kos/addons/lib/dreamcast -L/usr/local/dc/kos/kos/../kos-ports/lib -L/usr/local/dc/kos/kos/ds/lib -o DS.elf \
/usr/local/dc/kos/kos/ds/src/main.o /usr/local/dc/kos/kos/ds/src/video.o /usr/local/dc/kos/kos/ds/src/console.o /usr/local/dc/kos/kos/ds/src/gui/gui.o /usr/local/dc/kos/kos/ds/src/commands.o /usr/local/dc/kos/kos/ds/src/module.o /usr/local/dc/kos/kos/ds/src/events.o /usr/local/dc/kos/kos/ds/src/fs/fs.o /usr/local/dc/kos/kos/ds/src/lua/lua.o /usr/local/dc/kos/kos/ds/src/lua/lua_ds.o /usr/local/dc/kos/kos/ds/src/lua/packlib.o /usr/local/dc/kos/kos/ds/src/app/app.o /usr/local/dc/kos/kos/ds/src/app/load.o /usr/local/dc/kos/kos/ds/src/list.o /usr/local/dc/kos/kos/ds/src/img/pvr.o /usr/local/dc/kos/kos/ds/src/cmd_elf.o /usr/local/dc/kos/kos/ds/src/vmu/vmu.o /usr/local/dc/kos/kos/ds/src/irq/exceptions.o /usr/local/dc/kos/kos/ds/src/irq/setjmp.o /usr/local/dc/kos/kos/ds/src/settings.o /usr/local/dc/kos/kos/ds/src/sfx.o /usr/local/dc/kos/kos/ds/src/drivers/spi.o /usr/local/dc/kos/kos/ds/src/drivers/sd.o /usr/local/dc/kos/kos/ds/src/drivers/enc28j60.o /usr/local/dc/kos/kos/ds/src/drivers/asic.o /usr/local/dc/kos/kos/ds/src/drivers/rtc.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/SDL_gui.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Exception.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Object.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Surface.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Font.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Callback.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Drawable.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Screen.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Widget.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Container.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/FastFont.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/TrueTypeFont.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Layout.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Panel.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/CardStack.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/FastLabel.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Label.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Picture.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/TextEntry.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/AbstractButton.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Button.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/ToggleButton.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/ProgressBar.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/ScrollBar.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/AbstractTable.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/ListBox.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/VBoxLayout.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/RealScreen.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/ScrollPanel.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/RTF.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/Window.o /usr/local/dc/kos/kos/ds/lib/SDL_gui/FileManager.o /usr/local/dc/kos/kos/ds/lib/SDL_Console/src/SDL_console.o /usr/local/dc/kos/kos/ds/lib/SDL_Console/src/DT_drawtext.o /usr/local/dc/kos/kos/ds/lib/SDL_Console/src/internal.o /usr/local/dc/kos/kos/ds/src/utils.o /usr/local/dc/kos/kos/ds/src/utils/gmtime.o /usr/local/dc/kos/kos/ds/src/utils/strftime.o /usr/local/dc/kos/kos/ds/src/utils/debug_console.o /usr/local/dc/kos/kos/ds/src/utils/memcpy.op /usr/local/dc/kos/kos/ds/src/utils/memset.op /usr/local/dc/kos/kos/ds/src/utils/memmove.op /usr/local/dc/kos/kos/ds/src/fs/fat/utils.o /usr/local/dc/kos/kos/ds/src/fs/fat/option/ccsbcs.o /usr/local/dc/kos/kos/ds/src/fs/fat/option/syscall.o /usr/local/dc/kos/kos/ds/src/fs/fat/ff.o /usr/local/dc/kos/kos/ds/src/fs/fat/dc.o /usr/local/dc/kos/kos/ds/src/exports.o /usr/local/dc/kos/kos/ds/src/exports_gcc.o romdisk.o -lcfg -lmxml -lparallax -lSDL_1.2.13 -lSDL_image_1.2.12 -lSDL_ttf_2.0.11 -lSDL_rtf_0.1.1 -lSDL_gfx_2.0.25 -lfreetype -lkmg -ljpeg -lpng -lz -llua_5.1.4-2 -lkosext2fs -lkosutils -lstdc++ -lm -Wl,--start-group -lkallisti -lc -lgcc -Wl,--end-group
/opt/toolchains/dc/sh-elf/lib/gcc/sh-elf/13.2.0/../../../../sh-elf/bin/ld: /usr/local/dc/kos/kos/../kos-ports/lib/libfreetype.a(ftbzip2.o): in function `ft_bzip2_stream_close':
/usr/local/dc/kos/kos-ports/freetype/build/freetype-2.10.2/src/bzip2/ftbzip2.c:440Sad.text.ft_bzip2_stream_close+0x50): undefined reference to `BZ2_bzDecompressEnd'
/opt/toolchains/dc/sh-elf/lib/gcc/sh-elf/13.2.0/../../../../sh-elf/bin/ld: /usr/local/dc/kos/kos/../kos-ports/lib/libfreetype.a(ftbzip2.o): in function `ft_bzip2_file_fill_input':
/usr/local/dc/kos/kos-ports/freetype/build/freetype-2.10.2/src/bzip2/ftbzip2.c:262Sad.text.ft_bzip2_file_fill_output+0xd0): undefined reference to `BZ2_bzDecompress'
/opt/toolchains/dc/sh-elf/lib/gcc/sh-elf/13.2.0/../../../../sh-elf/bin/ld: /usr/local/dc/kos/kos/../kos-ports/lib/libfreetype.a(ftbzip2.o): in function `ft_bzip2_file_io':
/usr/local/dc/kos/kos-ports/freetype/build/freetype-2.10.2/src/bzip2/ftbzip2.c:376Sad.text.ft_bzip2_stream_io+0x110): undefined reference to `BZ2_bzDecompressEnd'
/opt/toolchains/dc/sh-elf/lib/gcc/sh-elf/13.2.0/../../../../sh-elf/bin/ld: /usr/local/dc/kos/kos-ports/freetype/build/freetype-2.10.2/src/bzip2/ftbzip2.c:376Sad.text.ft_bzip2_stream_io+0x114): undefined reference to `BZ2_bzDecompressInit'
/opt/toolchains/dc/sh-elf/lib/gcc/sh-elf/13.2.0/../../../../sh-elf/bin/ld: /usr/local/dc/kos/kos/../kos-ports/lib/libfreetype.a(ftbzip2.o): in function `FT_Stream_OpenBzip2':
/usr/local/dc/kos/kos-ports/freetype/build/freetype-2.10.2/src/bzip2/ftbzip2.c:493Sad.text.FT_Stream_OpenBzip2+0x118): undefined reference to `BZ2_bzDecompressInit'
collect2: error: ld returned 1 exit status



RE: Need help building Dreamshell - SWAT - 26.06.2024 05:43

Привет. Да все хорошо.
Странно, что-то поменялось что-ли в ней, попробуй закоментировать эти функции в exports.txt


RE: Need help building Dreamshell - Rio - 26.06.2024 12:04

Закоментил, увы, не помогло( Можешь у себя попробовать собрать, обновить репы?
Я тулчейн если что наново пересобирал, с дримшел патчем.


RE: Need help building Dreamshell - SWAT - 27.06.2024 06:12

А погоди, я не туда посмотрел. Это у тебя freetype потеряла bzip2, хотя в DS bzip2 вообще в ядро не линкуется, эта библиотека в модуле, а freetype ее не должна использовать.
В общем у тебя freetype используется из kos-ports, а не из DS. А значит ты не сделал вот этот дурацкий маневр:

PHP код:
cd /usr/local/dc/kos/kos-ports/lib
mv libfreetype
.a libfreetype-kos.a
mv liboggvorbisplay
.a liboggvorbisplay-kos.a
mv libogg
.a libogg-kos.a
mv libvorbis
.a libvorbis-kos.a
mv libwav
.a libwav-kos.

Надеюсь я от него избавлюсь когда-нибудь Big Grin


RE: Need help building Dreamshell - Rio - 27.06.2024 17:23

Та я тебе вообще хотел предложить это все разрулить на уровне какого-то симейка, или хотя бы даже баш скрипта, который сам все это выкачает и соберет)
Вообще даже сmake умеет все это делать. Та или просто таргеты переименовать)

Оке, щас попробую, отпишусь, как оно.
И да, ты прав, это freetype из кос портов ругается.

А команды у меня эти ранее не прошли т.к. чмод забыл сделать)

PHP код:
Copy elf for debug...
Strip target...
Creating binary file...
Creating build directory... 

Да, теперь все ОК, благодарю Сват!
Надеюсь ты не будешь против пулл риквеста с рефактором))


RE: Need help building Dreamshell - Rio - 27.06.2024 17:33

Ай не все, теперь на make build такая же трабла)

PHP код:
<command-line>: notethis is the location of the previous definition
/opt/toolchains/dc/sh-elf/bin/sh-elf-gcc --ml -m4-single-only -O2 --Wl,-Ttext=0x00000000 -e _start -nostartfiles -nodefaultlibs -o dbg-zip.klf module.o minizip.o miniunz../minizip/zip../minizip/unzip../minizip/ioapi.o exports.-L/usr/local/dc/kos/kos/lib/dreamcast -L/usr/local/dc/kos/kos/addons/lib/dreamcast -L/usr/local/dc/kos/kos/../kos-ports/lib -L/usr/local/dc/kos/kos/ds/sdk/lib -L/usr/local/dc/kos/kos/ds/sdk/lib -Wl,--start-group  -lds -lbzip2 -lkallisti_exports -lds_gcc -Wl,--end-group
/opt/toolchains/dc/sh-elf/lib/gcc/sh-elf/13.2.0/../../../../sh-elf/bin/ld: ./minizip/unzip.oin function `unzCloseCurrentFile':
/usr/local/dc/kos/kos/ds/modules/zip/minizip/unzip.c:1632:(.text.unzCloseCurrentFile+0xac): undefined reference to 
`BZ2_bzDecompressEnd'
/opt/toolchains/dc/sh-elf/lib/gcc/sh-elf/13.2.0/../../../../sh-elf/bin/ld: ./minizip/unzip.o: in function `unzOpenCurrentFile3'
:
/
usr/local/dc/kos/kos/ds/modules/zip/minizip/unzip.c:1155:(.text.unzOpenCurrentFile3+0x59c): undefined reference to `BZ2_bzDecompressInit'
collect2: error: ld returned 1 exit status
make[2]: *** [../../sdk/Makefile.loadable:116: zip.klf] Error 1
make[2]: Leaving directory '/usr/local/dc/kos/kos/ds/modules/zip'
make[1]: *** [Makefile:18: _dir_zip] Error 2
make[1]: Leaving directory '/usr/local/dc/kos/kos/ds/modules'
make: *** [Makefile:168: build] Error 2 



RE: Need help building Dreamshell - SWAT - 28.06.2024 06:19

(27.06.2024 17:23)Rio писал(а):  Да, теперь все ОК, благодарю Сват!
Надеюсь ты не будешь против пулл риквеста с рефактором))

Пулл реквесты это замечательно! Меня на все не хватает.
Таргеты переименовать нельзя, так как их ищут некоторые библиотеки из модулей при конфигурации и им нужно подсунуть такие-же только от модулей.
Тут подумать нужно как это дело лучше исправить.

(27.06.2024 17:33)Rio писал(а):  Ай не все, теперь на make build такая же трабла)

PHP код:
<command-line>: notethis is the location of the previous definition
/opt/toolchains/dc/sh-elf/bin/sh-elf-gcc --ml -m4-single-only -O2 --Wl,-Ttext=0x00000000 -e _start -nostartfiles -nodefaultlibs -o dbg-zip.klf module.o minizip.o miniunz../minizip/zip../minizip/unzip../minizip/ioapi.o exports.-L/usr/local/dc/kos/kos/lib/dreamcast -L/usr/local/dc/kos/kos/addons/lib/dreamcast -L/usr/local/dc/kos/kos/../kos-ports/lib -L/usr/local/dc/kos/kos/ds/sdk/lib -L/usr/local/dc/kos/kos/ds/sdk/lib -Wl,--start-group  -lds -lbzip2 -lkallisti_exports -lds_gcc -Wl,--end-group
/opt/toolchains/dc/sh-elf/lib/gcc/sh-elf/13.2.0/../../../../sh-elf/bin/ld: ./minizip/unzip.oin function `unzCloseCurrentFile':
/usr/local/dc/kos/kos/ds/modules/zip/minizip/unzip.c:1632:(.text.unzCloseCurrentFile+0xac): undefined reference to 
`BZ2_bzDecompressEnd'
/opt/toolchains/dc/sh-elf/lib/gcc/sh-elf/13.2.0/../../../../sh-elf/bin/ld: ./minizip/unzip.o: in function `unzOpenCurrentFile3'
:
/
usr/local/dc/kos/kos/ds/modules/zip/minizip/unzip.c:1155:(.text.unzOpenCurrentFile3+0x59c): undefined reference to `BZ2_bzDecompressInit'
collect2: error: ld returned 1 exit status
make[2]: *** [../../sdk/Makefile.loadable:116: zip.klf] Error 1
make[2]: Leaving directory '/usr/local/dc/kos/kos/ds/modules/zip'
make[1]: *** [Makefile:18: _dir_zip] Error 2
make[1]: Leaving directory '/usr/local/dc/kos/kos/ds/modules'
make: *** [Makefile:168: build] Error 2 

Такого быть не должно, может ты что-то правил и не вернул обратно?
Я вчера обновил KOS и пересобрал все заново - собирается без проблем. Можешь попробовать выкачать все с нуля и собрать, тулчейн не обязательно пересобирать, он тот-же, но скрипт другой, так что если проверишь лишним не будет.
Для оперативной помощи пиши в Discord если что.


RE: Need help building Dreamshell - Rio - 28.06.2024 12:58

Окей, я наверное все твои инструкции из Readme.md в один батч скрипт засуну, так проще будет.


RE: Need help building Dreamshell - SWAT - 28.06.2024 15:53

(28.06.2024 12:58)Rio писал(а):  Окей, я наверное все твои инструкции из Readme.md в один батч скрипт засуну, так проще будет.

Ну, такой скрипт можно сделать, для тех кто вообще с нуля настраивает окружение для разработки под Dreamcast. А вот у кого уже есть KallistiOS и компиляторы на ПК, то им нужен другой скрипт. А если еще и на macOS, то apt нужно заменить на brew.


RE: Need help building Dreamshell - Rio - 29.06.2024 14:12

Цитата:А если еще и на macOS, то apt нужно заменить на brew.
Ну ты же понимаешь, все митигейтится проверками и дефайнами (ну или что там есть в мейке и баше для этого). Если тулчейн собран - тоже можно папку проверить (ну и если она не дефолтная, запросить у юзера или положить в переменную). Апт и брю тоже можно прочекать, что за пекедж менеджер у юзера. which apt == null ? и погнали.

У тебя кстати много переходов по относительному пути ../../../, это не очень гуд, лучше делать через абсолютный в переменной, типа так:
$KOS_INSTALL_PATH/../../ds/sdk/bin. Оно путает немного и зависит от того, в какой папке ты изначально находишься) Могут быть ошибки из-за этого тоже.

Энивей, я без какого либо наезда тут, как руки дойдут, надо сделать будет.

Я больше поражен скоростью, с которой это все стало собираться!
На WSL2 тулчейн собирается за полчаса, и у меня не самый новый процессор, i7 7700.

Все собралось на этот раз, правда в рейкасте ошибка и черный экран.
Но я увидел заставочный экран с лого дримшела))
Пишет ошибку записи в регистр.
Я прочекал Dreamcast Dev.Box System Architecture, там такого нет регистра, хз чего оно туда пытается что-то писать.

PHP код:
Error in C:\Users\reicast\reicast-emulator\libswirl\hw\sh4\sh4_mmr.cpp:SuperH4Mmr_impl::ReadMem_area7:424Out of range on register index 1f000084 



RE: Need help building Dreamshell - SWAT - 01.07.2024 09:11

Да я согласен что там есть еще над чем работать, там просто много всего и за всем этим следить тяжело. Если наведешь красоту я буду только рад.
Я использую Flycast, там все есть.