I am not disappointed when I see a simple ./configure script that generate a clean config.mk. Would something like this be acceptable to for a suckless project ?
case "$(uname -a)" in *Linux* ) XXXINC=/... ;; *OpenBSD* ) XXXINC=/... ;; *FreeBSD* ) XXXINC=/... ;; esac tee config.mk << EOF XXXINC = $XXXINC EOF I just read this post about portability: http://nullprogram.com/blog/2017/03/30/ "How to Write Portable C Without Complicating Your Build"