`-configure-pkg-config-` and `-configure-pkg-config-var-` now can call rules instead...
[k8jam.git] / 0build_common.sh
blob0cfafbd07675d5a4058b0968b731c12e643ef831
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} -DNDEBUG -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 srclist="\
59 bjprng
60 builtins
61 command
62 compile
63 dstrings
64 execcmd
65 filent
66 fileunix
67 gdcdeps
68 pathsys
69 expand
70 hash
71 headers
72 hcache
73 jbunpack
74 lists
75 make
76 make1
77 matchglob
78 newstr
79 option
80 parse
81 progress
82 re9
83 rexp
84 rules
85 scan
86 search
87 timestamp
88 variable
89 hdrmacro
90 libhaunp"
92 echo "building K8Jam..."
94 mkdir -p ${BUILDPATH} 2>/dev/null
95 rm -rf ${BUILDPATH}/* 2>/dev/null
96 mkdir -p ${BUILDPATH}/obj 2>/dev/null
98 mkdir -p ${DESTPATH} 2>/dev/null
99 rm -rf ${DESTPATH}/* 2>/dev/null
101 donativecc "unigen"
102 donativelink "unigen"
103 echo "unigen"
104 ${BUILDPATH}/unigen${EXESFX} ${BUILDPATH}/re9_unicode_mapping.c unidata/UnicodeData.txt
106 donativecc "lemon"
107 donativelink "lemon"
108 echo "Lemon jamgram"
109 tools/yyacc src/jamgram.lemon src/jamgramtab.h src/jamgram.yy
110 ${BUILDPATH}/lemon${EXESFX} -q src/jamgram.lemon
111 #rm ${BUILDPATH}/lemon${EXESFX}
112 docc "jamgram"
114 libobj="${BUILDPATH}/obj/jamgram.o"
115 for srcf in ${srclist}; do
116 docc "${srcf}"
117 libobj="${libobj} ${BUILDPATH}/obj/${srcf}.o"
118 done
120 echo "Ar libjam.a"
121 ${AR} ${BUILDPATH}/obj/libjam.a ${libobj}
122 if [ "z${RANLIB}" != "z" ]; then
123 echo "Ranlib libjam.a"
124 ${RANLIB} ${BUILDPATH}/obj/libjam.a
126 rm -f ${libobj}
128 docc "jam"
130 donativecc "mkjambase"
131 donativelink "mkjambase"
132 echo "preparing Jambase"
133 ${BUILDPATH}/mkjambase${EXESFX} src/jambase.c defaults/Jambase
134 #rm ${BUILDPATH}/mkjambase${EXESFX}
135 docc "jambase"
137 dolink "jam" ${DESTPATH} ${BUILDPATH}/obj/jambase.o ${BUILDPATH}/obj/libjam.a
138 mv ${DESTPATH}/jam ${DESTPATH}/k8jam
140 #rm ${BUILDPATH}/obj/* 2>/dev/null
142 echo "K8Jam built"