# brace environment # some useful env variables you can set to 1: # BX_DEBUG # DEBUG # BRACE_STANDALONE # BR_FIX # BRACE_LINE_NUMBERS # BR_CLEAN # BRACE_PLAIN # OPTIMIZE (set to desired -O level) export CFLAGS LDFLAGS LDLIBS LDLIBS_PLAIN CC BRACE_LANGUAGE BRACE_LIB BRACE_USE MINGW= EXE= if [ -n "$WINDIR" -o -n "$windir" ]; then MINGW=1 EXE=.exe fi USER_CFLAGS="$CFLAGS" ; CFLAGS="" USER_LDFLAGS="$LDFLAGS" ; LDFLAGS="" USER_LDLIBS="$LDLIBS" ; LDLIBS="" CFLAGS="$CFLAGS -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT" # WTF needs --shared?? CFLAGS="$CFLAGS -I/usr/local/include -I/usr/include/SDL" LDLIBS="$LDLIBS -L/usr/local/lib" # msys 'which' is a shell script which for some reason won't run from here :/ # this should be a bit faster anyway which() { # this unfortunately depends on the shell A=`type "$@" 2>/dev/null || true` B="${A%: not found}" if [ "$A" != "$B" ]; then A="" fi if [ -n "$A" ]; then A="/${A#*/}" echo "$A" else return 1 fi } BRACE_DIR=`which brace$EXE` BRACE_DIR=`dirname "$BRACE_DIR"` BRACE_DIR=`dirname "$BRACE_DIR"` if [ -z "$BRACE_SO" ]; then BRACE_SO="$BRACE_DIR/lib" fi if [ -z "$BRACE_LIB" ]; then BRACE_LIB="$BRACE_DIR/include" if [ \! -d "$BRACE_LIB" ]; then BRACE_LIB="$BRACE_SO" fi fi if [ -z "$BRACE_STANDALONE" -a -z "$LIBB_BUILD" ]; then LB="-lb" if [ -n "$BRACE_PLAIN" ]; then LB="${LB}_plain" fi if [ -n "$BRACE_DEBUG" ]; then LB="${LB}_debug" fi LDLIBS="$LDLIBS $LB" BRACE_L_SO="-L\"$BRACE_SO\"" else BRACE_L_SO= fi if [ -z "$BRACE_USE" ]; then LDLIBS="$LDLIBS -lm" LDLIBS_FANCY="$LDLIBS_FANCY -lpng -lSDL -lSDL_mixer" if [ -n "$MINGW" ]; then BRACE_USE="cz- mingw gnu- bsd- linux- modern- pc" BRACE_USE="$BRACE_USE io-select" LDFLAGS="$LDFLAGS -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc" LDLIBS="$LDLIBS -lws2_32" LDLIBS_FANCY="$LDLIBS_FANCY -lopengl32 -lglu32 -lgdi32" else # LDLIBS_FANCY="$LDLIBS_FANCY -lz -lxcb -ldl -lXau -lXdmcp" # # XXX This is nonsense, shouldn't be needed, something wrong with my eee pc! BRACE_USE="cz- unix mingw-" if [ -e /usr/include/X11/Xlib.h -o -e /usr/X11R6/include/X11/Xlib.h -o -e /usr/pkg/include/X11/Xlib.h -o -e /usr/local/include/X11/Xlib.h ]; then BRACE_USE="$BRACE_USE x" LDLIBS_FANCY="$LDLIBS_FANCY -L/usr/X11R6/lib -lX11 -lXext" CFLAGS="$CFLAGS -I/usr/X11R6/include" else BRACE_USE="$BRACE_USE gr_dummy" # XXX this is bogus fi LDLIBS="$LDLIBS -lcrypt" UNAME=`uname | tr 'A-Z' 'a-z'` case "$UNAME" in *bsd*|sunos|dragonfly|darwin) BRACE_USE="$BRACE_USE bsd" case "$UNAME" in *netbsd*|*openbsd*) BRACE_USE="$BRACE_USE modern-" ;; # modern is about sendfile and tcp cork # not sure about openbsd ? probably doesn't have them *) BRACE_USE="$BRACE_USE modern" ;; esac ;; *) BRACE_USE="$BRACE_USE bsd-" ;; esac BRACE_USE="$BRACE_USE $UNAME" # echo "$UNAME" if [ "$UNAME" = "linux" ]; then V=`uname -r` V="${V%%-*}" A=`uname -m` case "$A" in arm*) ARM=1;; *) ARM=0;; esac while [ "${V#*.*.*.}" != "$V" ]; do V="${V%.*}" done major="${V%.*}" minor="${V##*.}" # echo "$major $minor" if [ "$major" = 2.6 -a "$minor" -ge 20 ]; then # XXX allegedly this is included in 2.6.19, # but it's not in knoppix, perhaps glibc was old # not sure exactly when "modern" # (sendfile / cork) entered Linux BRACE_USE="$BRACE_USE modern" BRACE_USE="$BRACE_USE io-select" # # !! epoll doesn't work on regular files ?? # if [ "$ARM" = 0 ]; then # BRACE_USE="$BRACE_USE io-epoll" # else # BRACE_USE="$BRACE_USE io-select" # fi else BRACE_USE="$BRACE_USE modern- io-select" fi else BRACE_USE="$BRACE_USE linux- io-select" fi if [ "$UNAME" != "linux" -a "$UNAME" != "hurd" -a "$UNAME" != "gnu" ]; then BRACE_USE="$BRACE_USE gnu-" fi # devices: TODO N900, etc. if [ -e '/proc/pandora' ]; then DEVICE=pandora DEVICE_EXTRA=gles LDLIBS_FANCY="$LDLIBS_FANCY -lEGL -lGLES_CM -lpvrPVR2D_X11WSEGL" else DEVICE="pc" DEVICE_EXTRA= LDLIBS_FANCY="$LDLIBS_FANCY -lGL" fi BRACE_USE="$BRACE_USE $DEVICE $DEVICE_EXTRA" fi BU="" for A in $BRACE_USE; do [ -e "$BRACE_LIB/$A" ] && BU="$BU $A" done BRACE_USE="${BU# }" fi if [ -z "$BRACE_LANGUAGE" ]; then BRACE_LANGUAGE=C; fi if [ "$BRACE_LANGUAGE" = C++ ]; then c=cc if [ -z "$CXX" ]; then for CC in g++ c++ gcc tcc cc; do if [ -n "`which $CC$EXE`" ]; then break fi done if [ "$CC" = g++ ]; then CC="g++ -std=gnu++0x" fi else CC="$CXX" fi USER_CFLAGS="$USER_CFLAGS $CXXFLAGS" CFLAGS="$CFLAGS -Weffc++" LDLIBS="$LDLIBS -lstdc++" else c=c if [ -z "$CC" ]; then for CC in gcc tcc cc; do if [ -n "`which $CC$EXE`" ]; then break fi done if [ "$CC" = gcc ]; then CC="$CC -pedantic -std=gnu99" fi fi fi LDLIBS="$BRACE_L_SO $LDLIBS" LDLIBS_PLAIN="$LDLIBS" LDLIBS="$LDLIBS_PLAIN $LDLIBS_FANCY" CFLAGS="-Wall -Wextra -Wno-long-long $CFLAGS" # -I. -Werror CINCLUDE="-I\"$BRACE_LIB\"" if [ -n "$DEBUG" ]; then CFLAGS="$CFLAGS -ggdb" # CFLAGS="$CFLAGS -g" else LDFLAGS="$LDFLAGS -s" fi if [ "$OPTIMIZE" != "0" ] && [ -z "$DEBUG" -o -n "$OPTIMIZE" ]; then if [ -z "$OPTIMIZE" ]; then OPTIMIZE=2; fi CFLAGS="$CFLAGS -O$OPTIMIZE" fi if [ -n "$PROFILE" ]; then CFLAGS="$CFLAGS -pg" LDFLAGS="$LDFLAGS -pg" fi CFLAGS="${CFLAGS## }" LDFLAGS="${LDFLAGS## }" LDLIBS="${LDLIBS## }" LDLIBS_PLAIN="${LDLIBS_PLAIN## }" if [ -n "$BRACE_PLAIN" ]; then LDLIBS="$LDLIBS_PLAIN" fi CFLAGS="$CFLAGS $USER_CFLAGS" LDFLAGS="$LDFLAGS $USER_LDFLAGS" LDLIBS="$LDLIBS $USER_LDLIBS"