added some suggested attrs; small codesize win
[k8jam.git] / 0build_common.sh
blob7c64d69efc12018a8c0da72956f64323373f648c
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 ${fname}"
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 srclist="\
36 builtins
37 command
38 compile
39 execcmd
40 filent
41 fileunix
42 pathsys
43 expand
44 glob
45 hash
46 headers
47 hcache
48 lists
49 make
50 make1
51 newstr
52 option
53 parse
54 progress
55 hsregexp
56 rules
57 scan
58 search
59 timestamp
60 variable
61 hdrmacro
62 kstrings"
64 echo "building K8Jam..."
66 mkdir -p ${BUILDPATH} 2>/dev/null
67 rm -rf ${BUILDPATH}/* 2>/dev/null
68 mkdir -p ${BUILDPATH}/obj 2>/dev/null
70 mkdir -p ${DESTPATH} 2>/dev/null
71 rm -rf ${DESTPATH}/* 2>/dev/null
73 echo "Yacc jamgram"
74 tools/yyacc ${BUILDPATH}/jamgram.y ${BUILDPATH}/jamgramtab.h src/jamgram.yy
75 yacc -d ${BUILDPATH}/jamgram.y
76 mv -f y.tab.c ${BUILDPATH}/jamgram.c
77 mv -f y.tab.h ${BUILDPATH}/jamgram.h
78 docc "jamgram" ${BUILDPATH}
80 docc "unigen"
81 dolink "unigen"
82 echo "unigen"
83 ${WINE} ${BUILDPATH}/unigen${EXESFX} ${BUILDPATH}/hsregexp_unicode_mapping.c unidata/UnicodeData.txt
85 libobj="${BUILDPATH}/obj/jamgram.o"
86 for srcf in ${srclist}; do
87 docc "${srcf}"
88 libobj="${libobj} ${BUILDPATH}/obj/${srcf}.o"
89 done
91 echo "Ar libjam.a"
92 ${AR} ${BUILDPATH}/obj/libjam.a ${libobj}
94 echo "Ranlib libjam.a"
95 ${RANLIB} ${BUILDPATH}/obj/libjam.a
96 rm -f ${libobj}
98 docc "mkjambase"
99 dolink "mkjambase"
101 docc "jam"
103 echo "preparing Jambase"
104 ${WINE} ${BUILDPATH}/mkjambase${EXESFX} ${BUILDPATH}/jambase.c defaults/Jambase
105 docc "jambase" ${BUILDPATH}
107 dolink "jam" ${DESTPATH} ${BUILDPATH}/obj/jambase.o ${BUILDPATH}/obj/libjam.a
109 #rm ${BUILDPATH}/obj/* 2>/dev/null
111 echo "K8Jam built"