more fixes to set-profile
[k8jam.git] / 0build_common.sh
blob28f64c3ac26cdb14dc969b45dd8bc6d1ebdca19d
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 ${ADDITIONAL_INCLUDES} $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$1" = "z--disable-yacc" ]; then
59 force_no_yacc="tan"
60 shift
64 if [ "z$force_no_yacc" = "z" ]; then
65 have_yacc="tan"
66 yacc -h >/dev/null 2>&1
67 if test "$?" = "127"; then
68 echo "WARNING: YACC/Bison not found!"
69 have_yacc="ona"
71 #have_yacc="ona"
72 else
73 echo "WARNING: YACC/Bison disabled!"
74 have_yacc="ona"
78 srclist="\
79 bjprng
80 builtins
81 command
82 compile
83 execcmd
84 filent
85 fileunix
86 pathsys
87 expand
88 hash
89 headers
90 hcache
91 jbunpack
92 lists
93 make
94 make1
95 matchglob
96 newstr
97 option
98 parse
99 progress
101 rules
102 scan
103 search
104 timestamp
105 variable
106 hdrmacro
107 kstrings"
109 echo "building K8Jam..."
111 mkdir -p ${BUILDPATH} 2>/dev/null
112 rm -rf ${BUILDPATH}/* 2>/dev/null
113 mkdir -p ${BUILDPATH}/obj 2>/dev/null
115 mkdir -p ${DESTPATH} 2>/dev/null
116 rm -rf ${DESTPATH}/* 2>/dev/null
118 if [ "$have_yacc" = "tan" ]; then
119 echo "Yacc jamgram"
120 #tools/yyacc ${BUILDPATH}/jamgram.y ${BUILDPATH}/jamgramtab.h src/jamgram.yy
121 #yacc -d ${BUILDPATH}/jamgram.y
122 #mv -f y.tab.c ${BUILDPATH}/jamgram.c
123 #mv -f y.tab.h ${BUILDPATH}/jamgram.h
124 tools/yyacc src/jamgram.y src/jamgramtab.h src/jamgram.yy
125 yacc -d src/jamgram.y
126 mv -f y.tab.c src/jamgram.c
127 mv -f y.tab.h src/jamgram.h
128 docc "jamgram"
129 else
130 echo "Using pregenerated jamgram"
131 #cp src/jamgram_poorman/* ${BUILDPATH}/
132 ADDITIONAL_INCLUDES="-Isrc/jamgram_poorman"
133 docc "jamgram" src/jamgram_poorman
136 #donativecc "unigen"
137 #donativelink "unigen"
138 #echo "unigen"
139 #${BUILDPATH}/unigen${EXESFX} ${BUILDPATH}/hsregexp_unicode_mapping.c unidata/UnicodeData.txt
141 libobj="${BUILDPATH}/obj/jamgram.o"
142 for srcf in ${srclist}; do
143 docc "${srcf}"
144 libobj="${libobj} ${BUILDPATH}/obj/${srcf}.o"
145 done
147 echo "Ar libjam.a"
148 ${AR} ${BUILDPATH}/obj/libjam.a ${libobj}
149 if [ "z${RANLIB}" != "z" ]; then
150 echo "Ranlib libjam.a"
151 ${RANLIB} ${BUILDPATH}/obj/libjam.a
153 rm -f ${libobj}
155 docc "jam"
157 donativecc "mkjambase"
158 donativelink "mkjambase"
159 echo "preparing Jambase"
160 mv ${BUILDPATH}/mkjambase${EXESFX} ${DESTPATH}/
161 ${DESTPATH}/mkjambase${EXESFX} src/jambase.c defaults/Jambase
162 if [ "z$CROSS" = "ztan" ]; then
163 rm ${DESTPATH}/mkjambase${EXESFX}
165 docc "jambase"
167 dolink "jam" ${DESTPATH} ${BUILDPATH}/obj/jambase.o ${BUILDPATH}/obj/libjam.a
169 #rm ${BUILDPATH}/obj/* 2>/dev/null
171 echo "K8Jam built"