fixes to INSTALL
[k8jam.git] / 0build_common.sh
blob682b5082f3f1195501dc068e8aa8ae82df150342
1 #!/bin/sh
4 # $1: file w/o extension
5 # $2: src path (optional)
6 docc() {
7 ptmp="$2"
8 echo "Cc $1.c"
9 if [ "z$ptmp" = "z" ]; then
10 ptmp="src"
12 ${CC} -std=gnu99 -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 dolink() {
20 fname="$1"
21 ptmp="$2"
22 shift
23 echo "Link ${fname}"
24 if [ "z$ptmp" = "z" ]; then
25 ptmp="${BUILDPATH}"
26 else
27 shift
29 ${LINK} ${LINKFLAGS} -o $ptmp/${fname}${EXESFX} ${BUILDPATH}/obj/${fname}.o $* ${LINKLIBS}
30 if [ "z$WINE" != "z" ]; then
31 chmod 711 $ptmp/${fname}${EXESFX}
36 donativecc() {
37 OCC="$CC"
38 CC=gcc
39 docc $*
40 CC="$OCC"
44 donativelink() {
45 OLINK="$LINK"
46 OLINKFLAGS="$LINKFLAGS"
47 OLINKLIBS="$LINKLIBS"
48 LINK=gcc
49 LINKFLAGS=-s
50 LINKLIBS=""
51 dolink $*
52 LINK="$OLINK"
53 LINKFLAGS="$OLINKFLAGS"
54 LINKLIBS="$OLINKLIBS"
58 have_yacc="tan"
59 yacc -h >/dev/null 2>&1
60 if test "$?" = "127"; then
61 echo "WARNING: YACC/Bison not found!"
62 have_yacc="ona"
64 #have_yacc="ona"
67 srclist="\
68 builtins
69 command
70 compile
71 execcmd
72 filent
73 fileunix
74 pathsys
75 expand
76 hash
77 headers
78 hcache
79 jbunpack
80 lists
81 make
82 make1
83 matchglob
84 newstr
85 option
86 parse
87 progress
88 hsregexp
89 rules
90 scan
91 search
92 timestamp
93 variable
94 hdrmacro
95 kstrings"
97 echo "building K8Jam..."
99 mkdir -p ${BUILDPATH} 2>/dev/null
100 rm -rf ${BUILDPATH}/* 2>/dev/null
101 mkdir -p ${BUILDPATH}/obj 2>/dev/null
103 mkdir -p ${DESTPATH} 2>/dev/null
104 rm -rf ${DESTPATH}/* 2>/dev/null
106 if [ "$have_yacc" = "tan" ]; then
107 echo "Yacc jamgram"
108 tools/yyacc ${BUILDPATH}/jamgram.y ${BUILDPATH}/jamgramtab.h src/jamgram.yy
109 yacc -d ${BUILDPATH}/jamgram.y
110 mv -f y.tab.c ${BUILDPATH}/jamgram.c
111 mv -f y.tab.h ${BUILDPATH}/jamgram.h
112 else
113 echo "Using pregenerated jamgram"
114 cp src/jamgram_poorman/* ${BUILDPATH}/
116 docc "jamgram" ${BUILDPATH}
118 donativecc "unigen"
119 donativelink "unigen"
120 echo "unigen"
121 ${BUILDPATH}/unigen${EXESFX} ${BUILDPATH}/hsregexp_unicode_mapping.c unidata/UnicodeData.txt
123 libobj="${BUILDPATH}/obj/jamgram.o"
124 for srcf in ${srclist}; do
125 docc "${srcf}"
126 libobj="${libobj} ${BUILDPATH}/obj/${srcf}.o"
127 done
129 echo "Ar libjam.a"
130 ${AR} ${BUILDPATH}/obj/libjam.a ${libobj}
132 echo "Ranlib libjam.a"
133 ${RANLIB} ${BUILDPATH}/obj/libjam.a
134 rm -f ${libobj}
136 docc "jam"
138 donativecc "mkjambase"
139 donativelink "mkjambase"
140 echo "preparing Jambase"
141 ${BUILDPATH}/mkjambase${EXESFX} ${BUILDPATH}/jambase.c defaults/Jambase
142 docc "jambase" ${BUILDPATH}
144 dolink "jam" ${DESTPATH} ${BUILDPATH}/obj/jambase.o ${BUILDPATH}/obj/libjam.a
146 #rm ${BUILDPATH}/obj/* 2>/dev/null
148 echo "K8Jam built"