#!/bin/sh # temp for testing mkdir -p ./var/snag/{sources,installs,builds} [ ! -e ./var/snag/packages ] && ln -s ../../../packages/ ./var/snag/packages bin="snag" libs="libcurl libcrypto" builddir="build" CFLAGS="$CFLAGS $(pkg-config --cflags $libs)"${CFLAGS:-""} CFLAGS_RELEASE="$CFLAGS -O2" CFLAGS_DEBUG="$CFLAGS -Wall -g -DDEBUG=1" write() { echo "$@" >> build.ninja; } echo "$CFLAGS_DEBUG" | tr ' ' '\n' > compile_flags.txt rm -f build.ninja write "builddir = $builddir" write "linkflags = $(pkg-config --libs $libs)" write 'rule link' write ' description = LD $out' write ' command = gcc $linkflags $in -o $out' for target in $(echo "debug release"); do eval write "cflags_$target = \$CFLAGS_$(echo $target | tr 'a-z' 'A-Z')" write "rule cc-$target" write ' deps = gcc' write ' depfile = $out.d' write ' description = CC $out' write " command = gcc -MD -MF \$out.d \$cflags_$target -c \$in -o \$out" files="$(find . -name '*.c')" sedstr=$(printf 's,^\./src/\(.*\)\.c$,%s\/%s\/\\1.o,g' $builddir $target) ofiles=$(echo "$files" | sed $sedstr) for f in $files; do of=$(echo $f | sed $sedstr) write "build $of: cc-$target $f" done write "build $builddir/$target/$bin: link $(echo $ofiles)" write "build $target: phony $builddir/$target/$bin" done write "default release" echo "Wrote ./build.ninja file"