#! stdtmpl(subsChar='?') | standard #proc GenerateBuildShellScript(c: TConfigData): string = # result = "#! /bin/sh\n# Generated from niminst\n" & # "# Template is in tools/buildsh.tmpl\n" & # "# To regenerate run ``niminst csource`` or ``koch csource``\n" CC="gcc" LINKER="gcc" COMP_FLAGS="-w -O3 -fno-strict-aliasing" LINK_FLAGS="" # add(result, "# platform detection\n") ucpu=`uname -m` uos=`uname` # add(result, "# convert to lower case:\n") ucpu=`echo $ucpu | tr "[:upper:]" "[:lower:]"` uos=`echo $uos | tr "[:upper:]" "[:lower:]"` case $uos in *linux* ) myos="linux" LINK_FLAGS="$LINK_FLAGS -ldl -lm" ;; *freebsd* ) myos="freebsd" LINK_FLAGS="$LINK_FLAGS -lm" ;; *openbsd* ) myos="openbsd" LINK_FLAGS="$LINK_FLAGS -lm" ;; *netbsd* ) myos="netbsd" LINK_FLAGS="$LINK_FLAGS -lm" ;; *darwin* ) myos="macosx" LINK_FLAGS="$LINK_FLAGS -ldl -lm" if [ "$HOSTTYPE" = "x86_64" ] ; then ucpu="amd64" fi ;; *aix* ) myos="aix" LINK_FLAGS="$LINK_FLAGS -ldl -lm" ;; *solaris* | *sun* ) myos="solaris" LINK_FLAGS="$LINK_FLAGS -ldl -lm" ;; *) echo "Error: unknown operating system: $uos" exit 1 ;; esac case $ucpu in *i386* | *i486* | *i586* | *i686* ) mycpu="i386" ;; *amd*64* | *x86-64* | *x86_64* ) mycpu="amd64" ;; *sparc*|*sun* ) mycpu="sparc" ;; *ppc64* ) if [ "$myos" = "linux" ] ; then COMP_FLAGS="$COMP_FLAGS -m64" LINK_FLAGS="$LINK_FLAGS -m64" fi mycpu="powerpc64" ;; *power*|*Power* ) mycpu="powerpc" ;; *mips* ) mycpu="mips" ;; *) echo "Error: unknown processor: $ucpu" exit 1 ;; esac # add(result, "# call the compiler:\n") case $myos in # for osA in 1..c.oses.len: ?{c.oses[osA-1]}) case $mycpu in # for cpuA in 1..c.cpus.len: ?{c.cpus[cpuA-1]}) # var linkCmd = "" # for f in items(c.cfiles[osA][cpuA]): echo "$CC $COMP_FLAGS -Ibuild -c ?{f} -o ?{changeFileExt(f, "o")}" $CC $COMP_FLAGS -Ibuild -c ?{f} -o ?{changeFileExt(f, "o")} || exit 1 # add(linkCmd, " \\\n" & changeFileExt(f, "o")) # end for echo "$LINKER $LINK_FLAGS -o ?{c.binPaths[0]}/?{toLower(c.name)} ?linkCmd" $LINKER $LINK_FLAGS -o ?{c.binPaths[0]}/?{toLower(c.name)} ?linkCmd || exit 1 ;; # end for *) echo "Error: no C code generated for: [$myos: $mycpu]" exit 1 ;; esac ;; # end for *) echo "Error: no C code generated for: [$myos: $mycpu]" exit 1 ;; esac echo "SUCCESS"