Оберон-клуб «ВЄДАsoft»

Твердыня модульных языков
Текущее время: 22 ноя 2017, 20:23

Часовой пояс: UTC + 2 часа




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
СообщениеДобавлено: 30 авг 2016, 05:10 
Не в сети
Аватара пользователя

Сообщения: 843
Откуда: Днепропетровская обл.
Reobne давно критикует XDev за то, что для сборки нужно писать батники, а для него это неподъёмный барьер. ;-) Посему наконец предприняты шаги для упрощения написания этих самых нехороших батников. Я исхожу из того, что хранить настройки проекта всё равно где-то нужно, поэтому мы будем хранить их в удобных для редактирования текстовых файлах, т.е. в батниках. ;-) Но упрощённых. Теперь у нас есть много опций, которые мы можем задавать, не опасаясь запутаться в тонкостях вызова SDCC и линковки. Конечно всё это ещё нужно тестировать. Но зато:

    a) поддерживаются многомодульные проекты;
    b) поддерживается хранение символьных файлов в папке /Obj (без отдельной папки /Sym);
    c) поддерживается хранение исходников модулей в папке проекта (без отдельной папки /Mod).

Для батников по-прежнему используется папка /Bin, также по-прежнему используется папка /Obj, в которую обязательно нужно положить Ofront.par, описывающий особенности платформы.

Вот так выглядит самый типичный Compile.bat
Код: "WINBATCH"
@IF NOT "%XDev%"=="" GOTO XDev
@ECHO Please set system variable XDev=X:\Path\To\XDev
@PAUSE
@EXIT
 
:XDev
 
@SET MainMod=MyGame
%XDev%\ZXDev\Bin\Compile %1
MainMod можно и не задавать, а в одномодульном проекте всё и так ясно. Но для многомодульного это полезно, чтобы при нажатии F12 (Build) среда знала, какой модуль является главным, и скомпилировала текущий, а собрала главный.

А вот Build.bat
Код: "WINBATCH"
@ECHO OFF
IF NOT "%XDev%"=="" GOTO XDev
ECHO Please set system variable XDev=X:\Path\To\XDev
PAUSE
EXIT
 
:XDev
 
SET CodeAdr=32832
SET DataAdr=63488
SET Options=--no-std-crt0 --opt-code-size
IF EXIST .debug SET Options=--max-allocs-per-node 20 %Options%
SET Target=TAP
SET MainMod=MyGame
SET Modules=Rsrc.rel Music.rel AI.rel
SET Clean=TRUE
 
%XDev%\ZXDev\Bin\Build %1

Это был продвинутый Build.bat, а типичный выглядит гораздо проще:
Код: "WINBATCH"
@IF NOT "%XDev%"=="" GOTO XDev
@ECHO Please set system variable XDev=X:\Path\To\XDev
@PAUSE
@EXIT
 
:XDev
 
@SET Target=REM
 
%XDev%\ZXDev\Bin\Build %1

Не заданные опции берутся по умолчанию.

Ещё планирую добавить опциональную упаковку целевого бинарника hrum'ом и hrust'ом.

В приложенном архиве заготовка для двухмодульного проекта. И конечно же перекачайте XDev/ZXDev.


Вложения:
EmptyProj.zip [1.38 КБ]
Скачиваний: 66
Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 31 авг 2016, 02:51 
Не в сети
Аватара пользователя

Сообщения: 843
Откуда: Днепропетровская обл.
Новый мастер настроек для ZXDev. Позволяет забыть (на время ;-) ) о том, что где-то в проекте крутятся батники.

Теперь создание проекта выглядит так:

  • Создаём папку для проекта (где угодно).
  • Создаём и сохраним в корне папки проекта (или в подпапке /Mod) главный модуль, который будет выглядеть примерно так:
    Код: "OBERON"
    1. MODULE EmptyProj; (*$MAIN*)
    2. END EmptyProj.
Откроем его в XDev, выберем из меню XDev => ZXDev Project Setup, настроим свойства проекта, сохраним их (кнопка Save).

  • Адреса данных и кода должны быть разумными, иначе SDCC заругается.
  • Target сейчас бывает только TAP и REM, остальные в планах.
  • Главный модуль задаётся в поле Main Module без .rel и без .Mod, просто имя. См картинку.
  • Не главные модули, напротив, перечислены: имя.rel, главный же модуль в этот список НЕ входит.
  • Свойства Include и Libraries, скорее всего, не понадобятся вам ещё долго.
  • Поле SDCC Options вам, скорее всего, тоже вряд ли понадобится очень скоро. Может понадобиться опция --reserve-regs-iy, которая запрещает SDCC занимать регистр IY для любых применений, иногда это может быть полезно.
  • Run это запуск собранной программы в эмуляторе, ассоциированном с расширением .tap
  • Clean это уборка, удаление временных файлов, нужных для сборки проекта.

Ещё обязательно положите в папку /Obj файл Ofront.par (возьмите из /Obj подсистемы ZXDev). Вероятно, я добавлю его автогенерацию тоже, чуток позжа.

Все изменения залиты в репозиторий, можно тестировать. XDev и ZXDev придётся перекачать.


Вложения:
ZXDevOpt.png
ZXDevOpt.png [ 14.35 КБ | Просмотров: 2350 ]
Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 31 авг 2016, 03:23 
Не в сети
Аватара пользователя

Сообщения: 843
Откуда: Днепропетровская обл.
А! Чуть не забыл! про! символьные файлы. :oops:

В общем, самое простое, что тут можно сделать, это просто скопировать в свой проект папку /Sym из ZXDev/Lib
В ней хранятся описатели Оберон-интерфейсов библиотек. Пока так, а дальше что-то придумаем.


Вложения:
ZXDevSym.png
ZXDevSym.png [ 46.18 КБ | Просмотров: 2332 ]
Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 31 авг 2016, 19:14 
Не в сети
Администратор
Аватара пользователя

Сообщения: 237
Откуда: Россия
Zorko, всё это относится только к ZXDev?


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 01 сен 2016, 00:59 
Не в сети
Аватара пользователя

Сообщения: 843
Откуда: Днепропетровская обл.
Пока да. Для MinGW нужно делать свою форму со специфическими для этого компилятора настройками.


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 01 сен 2016, 07:01 
Не в сети
Администратор
Аватара пользователя

Сообщения: 237
Откуда: Россия
Своя специфика будет и для платформы DOS из-за необходимости использовать DOSBox.


Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 2 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Тех.поддержка phpBB