#!/bin/sh # This is designed to compile a single package to a single binary # so it makes some assumptions about things to simplify config # to output a single binary (in a tarball) just use -o file # use --docker to output a tarball for input to docker build - set -e usage() { echo "Usage: -o file" exit 1 } [ $# = 0 ] && usage while [ $# -gt 0 ] do flag="$1" case "$flag" in -o) [ $# -eq 1 ] && usage out="$2" mkdir -p "$(dirname $2)" shift ;; -l*) LIBS="$LIBS $1" shift ;; *) echo "Unknown option $1" exit 1 esac shift done [ -z "$out" ] && usage package=$(basename "$out") dir="/src/$package" mkdir -p $dir # untar input tar xf - -C $dir ( cd $dir CFILES=$(find . -name '*.c') cc -static -O2 -Wall -Werror -o ../../$out $CFILES $LIBS ) tar cf - $out exit 0