added `OPTIM_ARCH_TUNE` profile var
[k8jam.git] / 0build_common.sh
blobf9ecd9cdcfc419e7bf67cd8d77c71fa64a48a37c
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 -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 genman
69 pathsys
70 expand
71 hash
72 headers
73 hcache
74 jbunpack
75 lists
76 make
77 make1
78 matchglob
79 newstr
80 option
81 parse
82 progress
83 re9
84 rexp
85 rules
86 scan
87 search
88 timestamp
89 variable
90 hdrmacro
91 libhaunp"
93 echo "building K8Jam..."
95 mkdir -p ${BUILDPATH} 2>/dev/null
96 rm -rf ${BUILDPATH}/* 2>/dev/null
97 mkdir -p ${BUILDPATH}/obj 2>/dev/null
99 mkdir -p ${DESTPATH} 2>/dev/null
100 rm -rf ${DESTPATH}/* 2>/dev/null
102 donativecc "unigen"
103 donativelink "unigen"
104 echo "unigen"
105 echo ${BUILDPATH}/unigen${EXESFX} ${BUILDPATH}/re9_unicode_mapping.c unidata/UnicodeData.txt
106 ${BUILDPATH}/unigen${EXESFX} ${BUILDPATH}/re9_unicode_mapping.c unidata/UnicodeData.txt
108 donativecc "lemon"
109 donativelink "lemon"
110 echo "Lemon jamgram"
111 echo tools/yyacc src/jamgram.lemon src/jamgramtab.h src/jamgram.yy
112 tools/yyacc src/jamgram.lemon src/jamgramtab.h src/jamgram.yy
113 echo ${BUILDPATH}/lemon${EXESFX} -q src/jamgram.lemon
114 ${BUILDPATH}/lemon${EXESFX} -q src/jamgram.lemon
115 #rm ${BUILDPATH}/lemon${EXESFX}
116 docc "jamgram"
118 libobj="${BUILDPATH}/obj/jamgram.o"
119 for srcf in ${srclist}; do
120 docc "${srcf}"
121 libobj="${libobj} ${BUILDPATH}/obj/${srcf}.o"
122 done
124 echo "Ar libjam.a"
125 ${AR} ${BUILDPATH}/obj/libjam.a ${libobj}
126 if [ "z${RANLIB}" != "z" ]; then
127 echo "Ranlib libjam.a"
128 ${RANLIB} ${BUILDPATH}/obj/libjam.a
130 rm -f ${libobj}
132 docc "jam"
134 donativecc "mkjambase"
135 donativelink "mkjambase"
136 echo "preparing Jambase"
137 echo ${BUILDPATH}/mkjambase${EXESFX} src/jambase.c defaults/Jambase
138 ${BUILDPATH}/mkjambase${EXESFX} src/jambase.c defaults/Jambase
139 #rm ${BUILDPATH}/mkjambase${EXESFX}
140 docc "jambase"
142 dolink "jam" ${DESTPATH} ${BUILDPATH}/obj/jambase.o ${BUILDPATH}/obj/libjam.a
143 mv ${DESTPATH}/jam ${DESTPATH}/k8jam
145 #rm ${BUILDPATH}/obj/* 2>/dev/null
147 echo "K8Jam built"