B3U6WQSHDHQWSUHLMJMVRMSYJXVK5JPKTNX4NMWJGIDS7FOSR3ZQC XDOIJC2EM756OI6FDIAE4NSOWXO3OJSS5H2BIG4HY3PPBODYY66QC RGJW3YTXML556YLAFHZSTEONWXRJ23PGW7Z6SKT3BV63ZEPWDTXAC 7KS22PCEQW4NFNBIGVRIPLZ4VZL4W7WPNPGA7B23CYUIXZB37IBQC KP5ZHGFKZZV35ZEH2AZW2HAFF6XXTK4XVLUI3D62ZTBPNOTQJONAC Q7P6NO6DTAU3Z7JQ6HNQIQPGWPQHW37RRI5A5HDJYNC7IJCQ4XSQC I2I3WERCRM7KAHR477JRZSN5XNXUIAWMDFQK25LV6L7VDZJTTANQC WYN7KNH7TNW3CFN5BCUUWJYMDRDVXH4YRTRIKTXGIEWVEUCOFJRQC library lnx-libuv --pkg-config libuvlibrary lnx-glfw3 --pkg-config glfw3 --lflag -lGLlibrary lnx-sqlite3 --pkg-config sqlite3
library lnx-libuv --pkg-config libuvlibrary lnx-glfw3 --pkg-config glfw3 --lflag -lGLlibrary lnx-sqlite3 --pkg-config sqlite3
while (( "$#" )); dolocal arg=$1shiftif [[ $arg = --command ]]; thencommand=$1shiftelif [[ $arg = --generator ]]; thengenerator=1elif [[ $arg = --implicit ]]; thenimplicit_dependencies="$implicit_dependencies $1"shiftelif [[ $arg = --deps ]]; thendeps="$1"shiftelif [[ $arg = --depfile ]]; thendepfile="$1"shiftfidone
while (( "$#" )); dolocal arg=$1shiftif [[ $arg = --command ]]; thencommand=$1shiftelif [[ $arg = --generator ]]; thengenerator=1elif [[ $arg = --implicit ]]; thenimplicit_dependencies="$implicit_dependencies $1"shiftelif [[ $arg = --deps ]]; thendeps="$1"shiftelif [[ $arg = --depfile ]]; thendepfile="$1"shiftfidone
echo "rule $name"if [[ ! -z $command ]]; thenecho " command = $command"fiif [[ ! -z $deps ]]; thenecho " deps = $deps"fiif [[ ! -z $depfile ]]; thenecho " depfile = $depfile"fiif [[ ! -z $generator ]]; thenecho " generator = 1"fi
echo "rule $name"if [[ ! -z $command ]]; thenecho " command = $command"fiif [[ ! -z $deps ]]; thenecho " deps = $deps"fiif [[ ! -z $depfile ]]; thenecho " depfile = $depfile"fiif [[ ! -z $generator ]]; thenecho " generator = 1"fi
while (( "$#" )); dolocal arg=$1shiftif [[ $arg = --implicit ]]; thenimplicit_dependencies="$implicit_dependencies $1"shiftelif [[ $arg = --flags ]]; thenflags=$1shiftelseinputs="$inputs $arg"fidone
while (( "$#" )); dolocal arg=$1shiftif [[ $arg = --implicit ]]; thenimplicit_dependencies="$implicit_dependencies $1"shiftelif [[ $arg = --flags ]]; thenflags=$1shiftelseinputs="$inputs $arg"fidone
local platform=lnxlocal sources=local objects=local executable=local phony=local include_directories=local defines=local private_defines=local cflags=local lflags=local implicit_dependencies=local link_dependencies=
local platform=lnxlocal sources=local objects=local executable=local phony=local include_directories=local defines=local private_defines=local cflags=local lflags=local implicit_dependencies=local link_dependencies=
local PKG_CONFIG=PKG_CONFIG_${platform}local CC=CC_${platform}local LINK=LINK_${platform}local EXE=EXE_${platform}local CFLAGS=CFLAGS_${platform}local LFLAGS=LFLAGS_${platform}local AR=AR_${platform}
local PKG_CONFIG=PKG_CONFIG_${platform}local CC=CC_${platform}local LINK=LINK_${platform}local EXE=EXE_${platform}local CFLAGS=CFLAGS_${platform}local LFLAGS=LFLAGS_${platform}local AR=AR_${platform}
while (( "$#" )); dolocal arg=$1shiftif [[ $arg = --executable ]]; thenexecutable=1elif [[ $arg = --phony ]]; thenphony=1elif [[ $arg = --include-directory ]]; theninclude_directories="$include_directories -I$1"shiftelif [[ $arg = --cflag ]]; thencflags="$cflags $1"shiftelif [[ $arg = --lflag ]]; thenlflags="$lflags $1"shiftelif [[ $arg = --implicit ]]; thenimplicit_dependencies="$implicit_dependencies $1"shiftelif [[ $arg = --define ]]; thendefines="$defines -D$1"shiftelif [[ $arg = --define-private ]]; thenprivate_defines="$private_defines -D$1"shiftelif [[ $arg = --pkg-config ]]; thencflags="$cflags $(pkg-config --cflags $1)"lflags="$lflags $(pkg-config --libs $1)"shift
while (( "$#" )); dolocal arg=$1shiftif [[ $arg = --executable ]]; thenexecutable=1elif [[ $arg = --phony ]]; thenphony=1elif [[ $arg = --include-directory ]]; theninclude_directories="$include_directories -I$1"shiftelif [[ $arg = --cflag ]]; thencflags="$cflags $1"shiftelif [[ $arg = --lflag ]]; thenlflags="$lflags $1"shiftelif [[ $arg = --implicit ]]; thenimplicit_dependencies="$implicit_dependencies $1"shiftelif [[ $arg = --define ]]; thendefines="$defines -D$1"shiftelif [[ $arg = --define-private ]]; thenprivate_defines="$private_defines -D$1"shiftelif [[ $arg = --pkg-config ]]; thencflags="$cflags $(pkg-config --cflags $1)"lflags="$lflags $(pkg-config --libs $1)"shiftelselocal tgt=${target_defined[$arg]}if [[ -z "$tgt" ]]; thenif [[ -z "$phony" ]]; thensources="$sources $arg"no_c=${arg%.c}[ $arg = $no_c ] && echo "only c sources can be used, got $arg"objects="$objects \$builddir/${platform}-${no_c//\//-}.o"
local tgt=${target_defined[$arg]}if [[ -z "$tgt" ]]; thenif [[ -z "$phony" ]]; thensources="$sources $arg"no_c=${arg%.c}[ $arg = $no_c ] && echo "only c sources can be used, got $arg"objects="$objects \$builddir/${platform}-${no_c//\//-}.o"elsephony="$phony $arg"fielseinclude_directories="$include_directories ${target_include_directories[$arg]}"defines="$defines ${target_defines[$arg]}"cflags="$cflags ${target_cflags[$arg]}"lflags="$lflags ${target_lflags[$arg]}"implicit_dependencies="$implicit_dependencies ${target_implicit_dependencies[$arg]}"link_dependencies="$link_dependencies ${target_link_dependencies[$arg]}"fi
phony="$phony $arg"
done
elseinclude_directories="$include_directories ${target_include_directories[$arg]}"defines="$defines ${target_defines[$arg]}"cflags="$cflags ${target_cflags[$arg]}"lflags="$lflags ${target_lflags[$arg]}"implicit_dependencies="$implicit_dependencies ${target_implicit_dependencies[$arg]}"link_dependencies="$link_dependencies ${target_link_dependencies[$arg]}"fifidone
if [[ ! -z "$sources" ]]; thenRULE_DEFINES=$(echo $defines $private_defines | uniq)rule ${name}_cc \--command "${!CC} -MD -MF \$out.d $include_directories $RULE_DEFINES ${!CFLAGS} $cflags -c \$in -o \$out" \--depfile "\$out.d" \--deps "gcc"
if [[ ! -z "$sources" ]]; thenRULE_DEFINES=$(echo $defines $private_defines | uniq)rule ${name}_cc \--command "${!CC} -MD -MF \$out.d $include_directories $RULE_DEFINES ${!CFLAGS} $cflags -c \$in -o \$out" \--depfile "\$out.d" \--deps "gcc"
for src in $sources; dono_c=${src%.c}build "\$builddir/${platform}-${no_c//\//-}.o" ${name}_cc $src --implicit "$implicit_dependencies"done
for src in $sources; dono_c=${src%.c}build "\$builddir/${platform}-${no_c//\//-}.o" ${name}_cc $src --implicit "$implicit_dependencies"done
if [[ ! -z "$executable" ]]; thenrule ${name}_link \--command "${!LINK} ${!CFLAGS} $cflags \$in ${!LFLAGS} -L\$builddir/${platform}-lib $lflags -o \$out"
if [[ ! -z "$executable" ]]; then# ⍷⌾⌽ in BQN. Deduplicate _under_ Reversecleaned_lflags=$(tr ' ' '\n' <<<"$lflags" | tac | awk '!u[$0]++' | tac | tr '\n' ' ')cleaned_link_dependencies=$(tr ' ' '\n' <<<"$link_dependencies" | tac | awk '!u[$0]++' | tac | tr '\n' ' ')
build \$builddir/$name${!EXE} ${name}_link $objects --implicit "$link_dependencies"elserule ${name}_ar \--command "rm -f \$out && ${!AR} crs \$out \$in"
rule ${name}_link \--command "${!LINK} ${!CFLAGS} $cflags \$in ${!LFLAGS} -L\$builddir/${platform}-lib $cleaned_lflags -o \$out"
lflags="-l$name $lflags" # break append convention so libraries are linked from child to parentlink_dependencies="$link_dependencies \$builddir/${platform}-lib/lib${name}.a"fi
build \$builddir/${platform}-lib/lib${name}.a ${name}_ar $objectslflags="-l$name $lflags" # break append convention so libraries are linked from child to parentlink_dependencies="$link_dependencies \$builddir/${platform}-lib/lib${name}.a"
target_defined[$name]=1target_include_directories[$name]=$(echo $include_directories | uniq)target_defines[$name]=$(echo $defines | uniq)target_cflags[$name]=$(echo $cflags | uniq)target_lflags[$name]=$(echo $lflags | uniq)target_implicit_dependencies[$name]=$implicit_dependenciestarget_link_dependencies[$name]=$link_dependencies
target_defined[$name]=1target_include_directories[$name]=$(echo $include_directories | uniq)target_defines[$name]=$(echo $defines | uniq)target_cflags[$name]=$(echo $cflags | uniq)target_lflags[$name]=$(echo $lflags | uniq)target_implicit_dependencies[$name]=$implicit_dependenciestarget_link_dependencies[$name]=$link_dependencies