FrontPage
New
Index
SignIn
Edit
djgpp/building_watt32_on_msys2
no archive mode
[[djgpp]]/building_watt32_on_msys2 [Watt-32|https://www.watt-32.net/]のdjgpp用ライブラリなどをWindowsのmsys2内でビルドしてみるための自分用メモ !!! 必要なもの : msys2とdjgppのクロス開発環境 :: [[djgpp/building_on_msys2]]をてきとうに参照 : Watt-32 :: 基本的にはソースを自分でビルドしてライブラリ(libwatt.a)を作る必要がある。((br))[公式サイト|https://www.watt-32.net/]からリンクされているgithubのリポジトリは https://github.com/gvanem/Watt-32/ みたいですよ… !!! libwattの(クロス)ビルド src ディレクトリの下にある<tt>configur.bat</tt>か<tt>configur.sh</tt>を実行してターゲット固有の各種ファイル(Makefile、dep、djgppの場合はエラーコード用のヘッダ)を作り、makeを行う(<kbd>make -f djgpp.mak</kbd>)という流れになる。 各種ファイルの作成は基本的に util ディレクトリ下にあるホスト向けのバイナリファイルで行う。 32bit DOS、Linux (x86_64)、Win32向けのコンパイル済バイナリがアーカイブやgithubリポジトリに用意されている。 git cloneしたときは、util以下のDOS用とWin32用exeファイルの実行権限が解除されているので、改めてexeファイルに実行権限を付与するか、mingwのgccでリコンパイルする必要がある。 (自分はutil/win32以下のexeをmsys版でないWin32版zipでアーカイブ→exe全削除→アーカイブ展開、みたいな雑な手段で対応してしまった。<tt>git config core.filemode false</tt>しておかないとめんどくさい) んだけど、configur.shのほうだと微妙に必要なファイル作ってくれてない気がする… configur.batのdjgpp対応部分 <pre> :djgpp :: echo Generating DJGPP makefile, directory, errnos and dependencies %MKMAKE% -o djgpp.mak -d build\djgpp makefile.all DJGPP FLAT %MKDEP% -s.o -p$(OBJDIR)/ *.c *.h > build\djgpp\watt32.dep echo neterr.c: build\djgpp/syserr.c >> build\djgpp\watt32.dep %DJ_ERR% -s > build\djgpp\syserr.c %DJ_ERR% -e > ..\inc\sys\djgpp.err echo Run GNU make to make target: echo make -f djgpp.mak goto next </pre> で、configur.shのdjgpp対応部分 <pre> gen_djgpp () { echo "Generating DJGPP makefile, directory, errnos and dependencies" ../util/linux/mkmake -o djgpp.mak -d build/djgpp makefile.all DJGPP ../util/linux/mkdep -s.o -p\$\(OBJDIR\)/ *.[ch] > build/djgpp/watt32.dep echo "neterr.c: build/djgpp/syserr.c" >> build/djgpp/watt32.dep # # these hacks won't work because errnos.c relies on being compiled as a target-exe. # echo "#include <errno.h>" | $DJGPP_PREFIX-gcc -E -dD - | grep "#define E" > ../util/generrno.h # echo "#include <sys/version.h>" | $DJGPP_PREFIX-gcc -E -dD - | grep "#define __DJGPP" >> ../util/generrno.h # make -C ../util -f errnox.mak dj_err # ../util/dj_err -s > build/djgpp/syserr.c # ../util/dj_err -e > ../inc/sys/djgpp.err # echo "Run GNU make to make target:" echo " 'make -f djgpp.mak'" } </pre> なんかめんどくさいので、configurのdjgpp部分をてきとうに切り出して、makefileっぽい何かを作ってみた。 '''djgpp_msys.mak:''' <pre> DJ_PREFIX ?= /djgpp/bin/i586-pc-msdosdjgpp- W32_BIN2C_ ?= ../util/win32/bin2c.exe W32_NASM_ ?= ../util/win32/nasm.exe PKT_STUB ?= pkt_stub.h -include djgpp.mak nomakefile: @echo "djgpp.mak not exist." @echo "make -f djgpp_msys.mak makefile" makefile: echo "Generating DJGPP makefile, directory, errnos and dependencies" ../util/win32/mkmake -o djgpp_debug.mak -d build/djgpp makefile.all DJGPP DEBUG ../util/win32/mkmake -o djgpp.mak -d build/djgpp makefile.all DJGPP RELEASE ../util/win32/mkdep -s.o -p\$$\(OBJDIR\)/ *.[ch] > build/djgpp/watt32.dep ../util/win32/dj_err -s > build/djgpp/syserr.c ../util/win32/dj_err -e > ../inc/sys/djgpp.err @echo "neterr.c: build/djgpp/syserr.c" >> build/djgpp/watt32.dep </pre> <tt>make -f djgpp_msys.mak makefile</tt>でdjgpp.makその他を作ってから、<tt>make -f djgpp_msys.mak</tt>でライブラリをビルドする感じです…。
Attachment
New: