taka-tuos / nanotodon

CLI mastodon client
MIT License
37 stars 6 forks source link

BSD系でのビルド及び動作確認 #47

Closed taka-tuos closed 3 months ago

taka-tuos commented 4 months ago

どちらか片方:

tsutsui commented 4 months ago

とりあえずここにメモします。個別の issue のほうがよければ指摘してください。

というわけで、どう定義するのがよいのかを他の事例で見たほうが良さそうです

taka-tuos commented 4 months ago

とりあえず(1)に関しては直接表記に直しておきます。 (2)は面倒だな~~~というのもあり、あとなんかmacだとstrptimeの挙動がアレらしいので (ref: https://qiita.com/YujiSoftware/items/1b65591efda79933fc79) がさっと書き換えてもいいのかもなあと思いつつ。 昔[いつ?]は_XOPEN_SOURCEナシでもLinuxでビルドできていたわけなので、そこもちょっと追っかけたいところです

tsutsui commented 3 months ago

昔[いつ?]は_XOPEN_SOURCEナシでもLinuxでビルドできていたわけなので、そこもちょっと追っかけたいところです

単純に「昔はプロトタイプなくても警告が出るだけでビルドは通ってた」だけという気はします。 gcc11くらいからNGになってませんでしたっけ。(NetBSD 10.0 の gcc10 は警告だけで通るっぽいが)

ただ、 64bit time_t を返す関数で暗黙 int と解釈されると big endian マシンで動かなくなるかも? (試してない)

glibc の <feature.h> を見ると _GNU_SOURCE を定義すると何でもありになるようなので、それだけにするか、 _GNU_SOURCE _BSD_SOURCE _NETBSD_SOURCE 全部定義するか、くらい?

taka-tuos commented 3 months ago

単純に「昔はプロトタイプなくても警告が出るだけでビルドは通ってた」だけという気はします。

多分これです!Archメインなのでもうgcc14という

_GNU_SOURCE _BSD_SOURCE _NETBSD_SOURCE 全部定義するか、くらい?

とりあえずこれで行けそうなので行ってみます(glibcには_BSD_SOURCEがdeprecatedだ、と怒られるがまあよいでしょう)

tsutsui commented 3 months ago

https://github.com/taka-tuos/nanotodon/commit/b9cf143dba15e6c6cb5ec451cfce651ea451e1e7 で NetBSD/i386 10.0 ではとりあえず通っています

mirage-% make
cc -O2 -g -DSUPPORT_XDG_BASE_DIR -D_GNU_SOURCE -D_BSD_SOURCE -D_NETBSD_SOURCE -I/usr/pkg/include   -c nanotodon.c -o nanotodon.o
cc -O2 -g -DSUPPORT_XDG_BASE_DIR -D_GNU_SOURCE -D_BSD_SOURCE -D_NETBSD_SOURCE -I/usr/pkg/include   -c sbuf.c -o sbuf.o
cc -O2 -g -DSUPPORT_XDG_BASE_DIR -D_GNU_SOURCE -D_BSD_SOURCE -D_NETBSD_SOURCE -I/usr/pkg/include   -c squeue.c -o squeue.o
cc -O2 -g -DSUPPORT_XDG_BASE_DIR -D_GNU_SOURCE -D_BSD_SOURCE -D_NETBSD_SOURCE -I/usr/pkg/include   -c utils.c -o utils.o
cc -O2 -g -DSUPPORT_XDG_BASE_DIR -D_GNU_SOURCE -D_BSD_SOURCE -D_NETBSD_SOURCE -I/usr/pkg/include   -c config.c -o config.o
cc -O2 -g -DSUPPORT_XDG_BASE_DIR -D_GNU_SOURCE -D_BSD_SOURCE -D_NETBSD_SOURCE -I/usr/pkg/include   -c messages.c -o messages.o
cc -o nanotodon nanotodon.o sbuf.o squeue.o utils.o config.o messages.o  -L/usr/pkg/lib -Wl,-R/usr/pkg/lib -lcurl -lpthread -lm
mirage-%

pkgsrc用定義がコメントであれば手抜きできるかも(ドキュメントサボれるかも)というくらいです

diff --git a/Makefile b/Makefile
index 1f9f4e9..1af865a 100644
--- a/Makefile
+++ b/Makefile
@@ -3,6 +3,8 @@ OBJS = nanotodon.o sbuf.o squeue.o utils.o config.o messages.o

 # Use $XDG_CONFIG_HOME or ~/.config dir to save config files
 CFLAGS += -g -DSUPPORT_XDG_BASE_DIR -D_GNU_SOURCE -D_BSD_SOURCE -D_NETBSD_SOURCE
+#CFLAGS += -I/usr/pkg/include
+#LDFLAGS += -L/usr/pkg/lib -Wl,-R/usr/pkg/lib
 LDLIBS += -lcurl -lpthread -lm

 # default
taka-tuos commented 3 months ago

コメント返し忘れてた:pkgsrc用のコメントも追記しておきます

taka-tuos commented 3 months ago

とりあえず現状OKそうなのでいったんCloseします(また怪しければ開ける)