removed 'arch=native' from jam base
[k8jam.git] / 0build_common.sh
blob3817ca2f287884eda61749d85a9c16675adaae95
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 if [ "z$force_no_yacc" = "z" ]; then
59 have_yacc="tan"
60 yacc -h >/dev/null 2>&1
61 if test "$?" = "127"; then
62 echo "WARNING: YACC/Bison not found!"
63 have_yacc="ona"
65 #have_yacc="ona"
69 srclist="\
70 builtins
71 command
72 compile
73 execcmd
74 filent
75 fileunix
76 pathsys
77 expand
78 hash
79 headers
80 hcache
81 jbunpack
82 lists
83 make
84 make1
85 matchglob
86 newstr
87 option
88 parse
89 progress
90 hsregexp
91 rules
92 scan
93 search
94 timestamp
95 variable
96 hdrmacro
97 kstrings"
99 echo "building K8Jam..."
101 mkdir -p ${BUILDPATH} 2>/dev/null
102 rm -rf ${BUILDPATH}/* 2>/dev/null
103 mkdir -p ${BUILDPATH}/obj 2>/dev/null
105 mkdir -p ${DESTPATH} 2>/dev/null
106 rm -rf ${DESTPATH}/* 2>/dev/null
108 if [ "$have_yacc" = "tan" ]; then
109 echo "Yacc jamgram"
110 tools/yyacc ${BUILDPATH}/jamgram.y ${BUILDPATH}/jamgramtab.h src/jamgram.yy
111 yacc -d ${BUILDPATH}/jamgram.y
112 mv -f y.tab.c ${BUILDPATH}/jamgram.c
113 mv -f y.tab.h ${BUILDPATH}/jamgram.h
114 else
115 echo "Using pregenerated jamgram"
116 cp src/jamgram_poorman/* ${BUILDPATH}/
118 docc "jamgram" ${BUILDPATH}
120 donativecc "unigen"
121 donativelink "unigen"
122 echo "unigen"
123 ${BUILDPATH}/unigen${EXESFX} ${BUILDPATH}/hsregexp_unicode_mapping.c unidata/UnicodeData.txt
125 libobj="${BUILDPATH}/obj/jamgram.o"
126 for srcf in ${srclist}; do
127 docc "${srcf}"
128 libobj="${libobj} ${BUILDPATH}/obj/${srcf}.o"
129 done
131 echo "Ar libjam.a"
132 ${AR} ${BUILDPATH}/obj/libjam.a ${libobj}
134 echo "Ranlib libjam.a"
135 ${RANLIB} ${BUILDPATH}/obj/libjam.a
136 rm -f ${libobj}
138 docc "jam"
140 donativecc "mkjambase"
141 donativelink "mkjambase"
142 echo "preparing Jambase"
143 ${BUILDPATH}/mkjambase${EXESFX} ${BUILDPATH}/jambase.c defaults/Jambase
144 docc "jambase" ${BUILDPATH}
146 dolink "jam" ${DESTPATH} ${BUILDPATH}/obj/jambase.o ${BUILDPATH}/obj/libjam.a
148 #rm ${BUILDPATH}/obj/* 2>/dev/null
150 echo "K8Jam built"