changed name of internal Jambase to "::Jambase"
[k8jam.git] / 0build_common.sh
blobc9bb22d35b14664567ad2b1b61fc091262367dcd
1 #!/bin/sh
4 # $1: file w/o extension
5 # $2: src path (optional)
6 function docc {
7 ptmp="$2"
8 echo "Cc $1.c"
9 if [ "z$ptmp" = "z" ]; then
10 ptmp="src"
12 ${CC} -c -o ${BUILDPATH}/obj/$1.o ${CFLAGS} -Isrc -I${BUILDPATH} $ptmp/$1.c
16 # $1: file w/o extension
17 # $2: dst path (optional)
18 # $3: liblist
19 function dolink {
20 fname="$1"
21 ptmp="$2"
22 shift
23 shift
24 echo "Link $1"
25 if [ "z$ptmp" = "z" ]; then
26 ptmp="${BUILDPATH}"
28 ${LINK} ${LINKFLAGS} -o $ptmp/${fname}${EXESFX} ${BUILDPATH}/obj/${fname}.o $* ${LINKLIBS}
29 if [ "z$WINE" != "z" ]; then
30 chmod 711 $ptmp/${fname}${EXESFX}
35 echo "building K8Jam..."
37 mkdir -p ${BUILDPATH} 2>/dev/null
38 rm ${BUILDPATH}/* 2>/dev/null
39 mkdir -p ${BUILDPATH}/obj 2>/dev/null
41 mkdir -p ${DESTPATH} 2>/dev/null
42 rm ${DESTPATH}/* 2>/dev/null
44 docc "builtins"
45 docc "command"
46 docc "compile"
47 docc "execcmd"
48 docc "file${XOS}"
49 docc "pathsys"
51 echo "Yacc jamgram"
52 tools/yyacc ${BUILDPATH}/jamgram.y ${BUILDPATH}/jamgramtab.h src/jamgram.yy
53 yacc -d ${BUILDPATH}/jamgram.y
54 mv -f y.tab.c ${BUILDPATH}/jamgram.c
55 mv -f y.tab.h ${BUILDPATH}/jamgram.h
56 docc "jamgram" ${BUILDPATH}
58 docc "expand"
59 docc "glob"
60 docc "hash"
61 docc "headers"
62 docc "lists"
63 docc "make"
64 docc "make1"
65 docc "newstr"
66 docc "option"
67 docc "parse"
68 docc "hsregexp"
69 docc "rules"
70 docc "scan"
71 docc "search"
72 docc "timestamp"
73 docc "variable"
74 docc "hdrmacro"
75 docc "kstrings"
77 echo "Ar libjam.a"
78 ${AR} ${BUILDPATH}/obj/libjam.a ${BUILDPATH}/obj/builtins.o ${BUILDPATH}/obj/command.o ${BUILDPATH}/obj/compile.o ${BUILDPATH}/obj/execcmd.o ${BUILDPATH}/obj/file${XOS}.o ${BUILDPATH}/obj/pathsys.o ${BUILDPATH}/obj/jamgram.o ${BUILDPATH}/obj/expand.o ${BUILDPATH}/obj/glob.o ${BUILDPATH}/obj/hash.o ${BUILDPATH}/obj/headers.o ${BUILDPATH}/obj/lists.o ${BUILDPATH}/obj/make.o ${BUILDPATH}/obj/make1.o ${BUILDPATH}/obj/newstr.o ${BUILDPATH}/obj/option.o ${BUILDPATH}/obj/parse.o ${BUILDPATH}/obj/hsregexp.o ${BUILDPATH}/obj/rules.o ${BUILDPATH}/obj/scan.o ${BUILDPATH}/obj/search.o ${BUILDPATH}/obj/timestamp.o ${BUILDPATH}/obj/variable.o ${BUILDPATH}/obj/hdrmacro.o ${BUILDPATH}/obj/kstrings.o
80 echo "Ranlib libjam.a"
81 ${RANLIB} ${BUILDPATH}/obj/libjam.a
82 rm -f ${BUILDPATH}/obj/builtins.o ${BUILDPATH}/obj/command.o ${BUILDPATH}/obj/compile.o ${BUILDPATH}/obj/execcmd.o ${BUILDPATH}/obj/file${XOS}.o ${BUILDPATH}/obj/pathsys.o ${BUILDPATH}/obj/jamgram.o ${BUILDPATH}/obj/expand.o ${BUILDPATH}/obj/glob.o ${BUILDPATH}/obj/hash.o ${BUILDPATH}/obj/headers.o ${BUILDPATH}/obj/lists.o ${BUILDPATH}/obj/make.o ${BUILDPATH}/obj/make1.o ${BUILDPATH}/obj/newstr.o ${BUILDPATH}/obj/option.o ${BUILDPATH}/obj/parse.o ${BUILDPATH}/obj/hsregexp.o ${BUILDPATH}/obj/rules.o ${BUILDPATH}/obj/scan.o ${BUILDPATH}/obj/search.o ${BUILDPATH}/obj/timestamp.o ${BUILDPATH}/obj/variable.o ${BUILDPATH}/obj/hdrmacro.o ${BUILDPATH}/obj/kstrings.o
84 docc "mkjambase"
85 dolink "mkjambase"
87 docc "jam"
89 echo "preparing Jambase"
90 ${WINE} ${BUILDPATH}/mkjambase${EXESFX} ${BUILDPATH}/jambase.c defaults/Jambase
91 docc "jambase" ${BUILDPATH}
93 dolink "jam" ${DESTPATH} ${BUILDPATH}/obj/jambase.o ${BUILDPATH}/obj/libjam.a
95 #rm ${BUILDPATH}/obj/* 2>/dev/null
97 echo "K8Jam built"