2009-11-22

Сборка NetHack в MSYS/MinGW (Windows).

Давно хотел собрать NetHack в Windows ради спортивного интереса.
  • Получил исходные тексты: http://nethack.org/v343/download-src.html.
  • Получил работающую среду MSYS/MinGW: http://www.mingw.org.
  • Почитал nethack-3.4.3/sys/winnt/Install.nt. Встретил команду mingw32-make -f Makefile.gcc install, но как оказалось Makefile.gcc рассчитан на использование SHELL = cmd.exe, как я понимаю mingw32-make. Я же решил собирать make с SHELL = /bin/sh.
  • В Makefile.gcc установил значение переменной GRAPHICAL в "Y" для сборки также и GUI версии.
  • Запустил nhsetup.bat (скрипт кроме всего копирует Makefile.gcc в nethack-3.4.3/src)
  • Поправил nethack-3.4.3/src/Makefile.gcc с win-shell (cmd.exe) на unix-shell (/bin/sh):
    $(subst /,\,copy nhdat $(GAMEDIR))
    на
    cp nhdat $(GAMEDIR)
    регулярным выражением s=$(subst /,\\,copy \(.*\))=cp \1=
  • $(subst /,\,if exist $(GAMEDIR)/makefile del $(GAMEDIR)/makefile)
    на
    [ -f $(GAMEDIR)/makefile ] && rm $(GAMEDIR)/makefile || :
  • @copy $< $@
    на
    cp $< $@
    подстановкой copy на cp
  • $(subst /,\,@if not exist $(GAMEDIR)/*.* echo creating directory $(GAMEDIR)) $(subst /,\,@if not exist $(GAMEDIR)/*.* mkdir $(GAMEDIR)) $(subst /,\,@echo directory created > $@)
    на
    mkdir $(GAMEDIR)
  • И т.д.
  • Затем запустил сборку:
    $ cd nethack-3.4.3/src $ make -f Makefile.gcc install
  • В каталоге nethack-3.4.3/binary появились NetHack.exe и NetHackW.exe.
См. также