まずgtkの最新版を入れる。
$ pip install meson # わりと新しめのものにしないと動かないがち $ git clone -o upstream https://gitlab.gnome.org/GNOME/gtk.git $ cd gtk $ meson --prefix /opt/gtk builddir $ ninja -C builddir $ sudo ninja -C builddir install
girのパスを変えたいのでそういうふうにGtkDのmakefileを書き換える。
diff --git a/GNUmakefile b/GNUmakefile index ea077f1e..6603950a 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -6,6 +6,11 @@ PKG_CONFIG?=pkg-config OS=$(shell uname || uname -s) ARCH=$(shell uname -m || arch) +ifeq ("$(OS)","Darwin") +else + girdir?=/usr/share/gir-1.0 +endif + ifeq (, $(shell which dpkg-architecture 2>/dev/null)) libdir?=lib/ else @@ -119,10 +124,18 @@ OBJECTS_DEMO = $(shell echo $(SOURCES_DEMO) | sed -e 's/\.d/\.o/g') generate: generate-runtime generate-runtime: $(GIRTOD) +ifeq ("$(OS)","Darwin") $(GIRTOD) -i src --use-runtime-linker +else + $(GIRTOD) -i src --use-runtime-linker -g $(girdir) +endif generate-compiletime: $(GIRTOD) +ifeq ("$(OS)","Darwin") $(GIRTOD) -i src +else + $(GIRTOD) -i src -g $(girdir) +endif $(GIRTOD): $(if $(findstring "./wrap/girtod","$(GIRTOD)"),$(MAKE) -C wrap)
ファイルを生成。
$ prefix=/opt/gtk girdir=/opt/gtk/share/gir-1.0 make generate
pangoとかでこけるのでそこだけ一旦無視した。
ビルドしてみる。
$ prefix=/opt/gtk make gtkd
gio/NativeSocketAddress.dでg_native_socket_address_get_type
とg_native_socket_address_new
がないと怒られる。
そもそも/opt/gtk/share/gir-1.0にはGioのgirファイルが存在していないようだ。 gtkは依存としてglibを持っていて、mesonのファイルをみてもGio-2.0.girを生成対象としているのでビルド時になにか問題があったようだ。
そのあと少し頑張ってみたがGio-2.0.girファイルを生成することはできなかった。 これは自分の環境問題かgtk側の問題かわからない。。