diff --git a/build.sh b/build.sh index 203cf5b..d75fb4a 100755 --- a/build.sh +++ b/build.sh @@ -1,13 +1,32 @@ +#!/bin/bash + +# `.cpp` files in src/lib will be automatically picked up and compiled into dynamic libraries. echo "Building libs..." mkdir -pv bin/lib for lib in $(find ./src/lib -name "*.cpp"); do - echo "Compiling $lib" - c++ -shared -o $(sed -e 's/^.\/src/.\/bin/;s/cpp$/so/' <<< $lib) $lib; + COMPILE_COMMAND="c++ -shared -o $(sed -e 's/^.\/src/.\/bin/;s/cpp$/so/' <<< $lib) $lib" + echo $COMPILE_COMMAND + $COMPILE_COMMAND done -echo "Building tools..." -mkdir -pv bin/tools + # Commands for every program need to be given individually because we can't # just add all shared libraries to all programs. # Or can we? Idk, cba to find out. + +# How to build a tool: Tell the compiler where to find shared libraries and +# which libraries to use. +# Example: shared libraries are in bin/lib => -Lbin/lib +# one of the libraries in that directory is libnbt.so +# => use with -lnbt (omit prefix lib and suffix .so) +# How to run a tool: specify the library path to use for the dynamic linker +# when running a program +# Example: LD_LIBRARY_PATH=bin/lib bin/tools/dumpnbt +echo "Building tools..." +mkdir -pv bin/tools +# add compile commands to this variable +COMPILE_COMMANDS=" +set -v c++ src/tools/dumpnbt.cpp -Lbin/lib -lnbt -o bin/tools/dumpnbt +" +sh <<< $COMPILE_COMMANDS