パラレルポートがあるマシンがいつまで動いているかも分からないし、消費電力も大きいのでMIPSなルーターなどで使えるようにgpioのサポートを入れてみようと思いつき、追加のためにautoconfを確認した時のメモです。
とりあえずFreeBSDのppiがどのように設定されているか確認してみる。
configure.ac
AC_CHECK_HEADERS([dev/ppbus/ppi.h], [HAVE_DEV_PPBUS_PPI_H="yes"])
これによりautoconfで生成されたconfigureがFreeBSD上では
config.h
#define HAVE_DEV_PPBUS_PPI_H 1
を設定されてソース内の
#if HAVE_DEV_PPBUS_PPI_H
#endif
が有効になる。
Linuxなどの環境の場合はppi.cをコンパイルしないように
src/tap/Makefile.am
if ENABLE_LOWLEVEL_PPI
libtap_la_SOURCES += ¥
parport/ppi.c
endif
によりソースを除外する。ENABLE_LOWLEVEL_PPIがどこで設定されているか分からなかったのだが、
configure.ac
URJ_DRIVER_SET([lowlevel], [
direct
ftdi
ftd2xx
ppdev
ppi
],[
のリストから生成されてい、HAVE_DEV_PPBUS_PPI_Hがない場合はppiを消す事によりENABLE_LOWLEVEL_PPIが無くなります。
で、bsdgpioを追加してみた。
ロジックは/usr/include/libgpio.hがある場合にbsdgpioドライバを有効にするようにしています。
ちょっと不思議なのは元にしたgpioドライバがLinux用のコードなのだが、FreeBSDでも有効になってコンパイル通ってしまう。