When cross-compiling, it's common to have executables prefixed with the name of the architecture you're building for, e.g. aarch64-unknown-linux-musl-cc or x86_64-unknown-freebsd-pkg-config. Lots of build tools support a PKG_CONFIG environment variable to enable this use case. With this change, I was able to successfully cross-compile and run catgirl.
		
			
				
	
	
		
			60 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| set -eu
 | |
| 
 | |
| : ${PKG_CONFIG:=pkg-config}
 | |
| 
 | |
| cflags() {
 | |
| 	echo "CFLAGS += $*"
 | |
| }
 | |
| defstr() {
 | |
| 	cflags "-D'$1=\"$2\"'"
 | |
| }
 | |
| defvar() {
 | |
| 	defstr "$1" "$(${PKG_CONFIG} --variable=$3 $2)${4:-}"
 | |
| }
 | |
| ldadd() {
 | |
| 	lib=$1; shift
 | |
| 	echo "LDADD.${lib} = $*"
 | |
| }
 | |
| config() {
 | |
| 	${PKG_CONFIG} --print-errors "$@"
 | |
| 	cflags $(${PKG_CONFIG} --cflags "$@")
 | |
| 	for lib; do ldadd $lib $(${PKG_CONFIG} --libs $lib); done
 | |
| }
 | |
| 
 | |
| exec >config.mk
 | |
| 
 | |
| for opt; do
 | |
| 	case "${opt}" in
 | |
| 		(--prefix=*) echo "PREFIX = ${opt#*=}" ;;
 | |
| 		(--bindir=*) echo "BINDIR = ${opt#*=}" ;;
 | |
| 		(--mandir=*) echo "MANDIR = ${opt#*=}" ;;
 | |
| 		(*) echo "warning: unsupported option ${opt}" >&2 ;;
 | |
| 	esac
 | |
| done
 | |
| 
 | |
| case "$(uname)" in
 | |
| 	(FreeBSD)
 | |
| 		config libtls
 | |
| 		defstr OPENSSL_BIN /usr/bin/openssl
 | |
| 		;;
 | |
| 	(OpenBSD)
 | |
| 		defstr OPENSSL_BIN /usr/bin/openssl
 | |
| 		;;
 | |
| 	(Linux)
 | |
| 		cflags -Wno-pedantic -D_GNU_SOURCE
 | |
| 		config libtls ncursesw
 | |
| 		defvar OPENSSL_BIN openssl exec_prefix /bin/openssl
 | |
| 		;;
 | |
| 	(Darwin)
 | |
| 		cflags -D__STDC_WANT_LIB_EXT1__=1
 | |
| 		cflags "-D'explicit_bzero(b,l)=memset_s((b),(l),0,(l))'"
 | |
| 		config libtls ncursesw
 | |
| 		defvar OPENSSL_BIN openssl exec_prefix /bin/openssl
 | |
| 		;;
 | |
| 	(*)
 | |
| 		config libtls ncursesw
 | |
| 		defvar OPENSSL_BIN openssl exec_prefix /bin/openssl
 | |
| 		;;
 | |
| esac
 |