|
Ivan Mahonin |
173ebc |
#!/bin/bash
|
|
Ivan Mahonin |
173ebc |
|
|
Ivan Mahonin |
173ebc |
set -e
|
|
Ivan Mahonin |
173ebc |
|
|
Ivan Mahonin |
94a33e |
if [ -z "$TARGETPATH" ]; then
|
|
Ivan Mahonin |
94a33e |
TARGETPATH="$(pwd)"
|
|
Ivan Mahonin |
94a33e |
fi
|
|
Ivan Mahonin |
94a33e |
|
|
Ivan Mahonin |
173ebc |
PROGNAME="$1"
|
|
Ivan Mahonin |
173ebc |
ARGS=()
|
|
Ivan Mahonin |
173ebc |
for file in ${@:2}; do
|
|
Ivan Mahonin |
173ebc |
FILEPATH="$(realpath $file)"
|
|
Ivan Mahonin |
173ebc |
ARGS+=("$FILEPATH")
|
|
Ivan Mahonin |
173ebc |
echo "add file: $FILEPATH"
|
|
Ivan Mahonin |
173ebc |
done
|
|
Ivan Mahonin |
173ebc |
|
|
Ivan Mahonin |
173ebc |
|
|
Ivan Mahonin |
173ebc |
if [ -z "$PROGNAME" ] || [ -z "$ARGS" ]; then
|
|
Ivan Mahonin |
173ebc |
echo "Usage: $0 program_name file1.c file2.c ..."
|
|
Ivan Mahonin |
94a33e |
echo "You may set environment variable TARGETPATH - the full path to target directory"
|
|
Ivan Mahonin |
173ebc |
exit 1
|
|
Ivan Mahonin |
173ebc |
fi
|
|
Ivan Mahonin |
173ebc |
|
|
Ivan Mahonin |
173ebc |
ROOT="$(cd `dirname "$0"`; pwd)"
|
|
Ivan Mahonin |
173ebc |
cd "$ROOT"
|
|
Ivan Mahonin |
173ebc |
|
|
Ivan Mahonin |
173ebc |
source function.sh
|
|
Ivan Mahonin |
173ebc |
source toolchain.sh
|
|
Ivan Mahonin |
173ebc |
|
|
Ivan Mahonin |
173ebc |
|
|
Ivan Mahonin |
56274e |
if [ -z "OPTIONS" ]; then
|
|
Ivan Mahonin |
56274e |
OPTIONS="-O3 -DNDEBUG"
|
|
Ivan Mahonin |
56274e |
#OPTIONS="-g -O0"
|
|
Ivan Mahonin |
56274e |
fi
|
|
Ivan Mahonin |
56274e |
|
|
Ivan Mahonin |
56274e |
COMP="CC"
|
|
Ivan Mahonin |
56274e |
COMP_OPTIONS=
|
|
Ivan Mahonin |
56274e |
if [ "$COMPILER" = "c++" ]; then
|
|
Ivan Mahonin |
56274e |
COMP="CXX"
|
|
Ivan Mahonin |
56274e |
COMP_OPTIONS="-static-libstdc++"
|
|
Ivan Mahonin |
56274e |
fi
|
|
Ivan Mahonin |
56274e |
|
|
Ivan Mahonin |
173ebc |
|
|
Ivan Mahonin |
173ebc |
packages=""
|
|
Ivan Mahonin |
173ebc |
newpackages="program"
|
|
Ivan Mahonin |
173ebc |
|
|
Ivan Mahonin |
173ebc |
#######################################################################
|
|
Ivan Mahonin |
173ebc |
|
|
Ivan Mahonin |
173ebc |
|
|
Ivan Mahonin |
173ebc |
function build_program() {
|
|
Ivan Mahonin |
56274e |
local CMP=${!COMP}
|
|
Ivan Mahonin |
1b8859 |
if [ -z "$LINUX" ]; then
|
|
Ivan Mahonin |
56274e |
echocall $CMP \
|
|
Ivan Mahonin |
1b8859 |
"${ARGS[@]}" \
|
|
Ivan Mahonin |
1b8859 |
-Wall $OPTIONS \
|
|
Ivan Mahonin |
1b8859 |
-I"$ROOT/release/include/helianthus" \
|
|
Ivan Mahonin |
1b8859 |
"$ROOT/release/lib-$bits/libhelianthus.a" \
|
|
Ivan Mahonin |
1b8859 |
-lmingw32 -mconsole \
|
|
Ivan Mahonin |
56274e |
-lm -static-libgcc $COMP_OPTIONS \
|
|
Ivan Mahonin |
1b8859 |
-lopengl32 -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lshlwapi \
|
|
Ivan Mahonin |
1b8859 |
-lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lsetupapi -lversion -luuid \
|
|
Ivan Mahonin |
1b8859 |
-o "$TARGETPATH/$PROGNAME-$bits.exe"
|
|
Ivan Mahonin |
1b8859 |
else
|
|
Ivan Mahonin |
56274e |
echocall $CMP \
|
|
Ivan Mahonin |
1b8859 |
"${ARGS[@]}" \
|
|
Ivan Mahonin |
1b8859 |
-Wall $OPTIONS \
|
|
Ivan Mahonin |
1b8859 |
-I"$ROOT/release/include/helianthus" \
|
|
Ivan Mahonin |
1b8859 |
"$ROOT/release/lib-$bits/libhelianthus.a" \
|
|
Ivan Mahonin |
56274e |
-lm -static-libgcc $COMP_OPTIONS -lGL -ldl -pthread \
|
|
Ivan Mahonin |
1b8859 |
-o "$TARGETPATH/$PROGNAME-$bits"
|
|
Ivan Mahonin |
1b8859 |
fi
|
|
Ivan Mahonin |
173ebc |
}
|
|
Ivan Mahonin |
173ebc |
|
|
Ivan Mahonin |
173ebc |
|
|
Ivan Mahonin |
173ebc |
#######################################################################
|
|
Ivan Mahonin |
173ebc |
|
|
Ivan Mahonin |
173ebc |
|
|
Ivan Mahonin |
173ebc |
rm -f build*/program.done
|
|
Ivan Mahonin |
1b8859 |
build win32 i686-w64-mingw32
|
|
Ivan Mahonin |
1b8859 |
build win64 x86_64-w64-mingw32
|
|
Ivan Mahonin |
1b8859 |
#LINUX=1 ADDCFLAGS="-m32 -fPIC" build linux32 ""
|
|
Ivan Mahonin |
1b8859 |
LINUX=1 ADDCFLAGS=-fPIC build linux64 ""
|
|
Ivan Mahonin |
173ebc |
rm -f build*/program.done
|
|
Ivan Mahonin |
173ebc |
|
|
Ivan Mahonin |
173ebc |
print_section done
|