]> git.stg.codes - stg.git/blob - projects/sgconf_xml/build
Improved release version checking.
[stg.git] / projects / sgconf_xml / build
1 #!/bin/sh
2
3 #   $Author: nobunaga $
4 #   $Revision: 1.2 $
5 #   $Date: 2008/01/05 12:11:02 $
6 ######################################################
7
8 OS=unknown
9 sys=`uname -s`
10 release=`uname -r`
11 major=`printf "%s" "$release" | cut -d. -f1`
12 BUILD_DIR=`pwd`
13 CONFFILE="../../Makefile.conf"
14 PREFIX="/"
15 BIN_MODE=0755
16 DATA_MODE=0644
17 DIR_MODE=0755
18 OWNER=root
19
20 if [ "$1" = "debug" ]
21 then
22    DEFS="$DEFS -DDEBUG"
23    MAKEOPTS="$MAKEOPTS -j1"
24    CFLAGS="$CFLAGS -ggdb3 -W -Wall -Wextra"
25    CXXFLAGS="$CXXFLAGS -ggdb3 -W -Wall -Wextra"
26    DEBUG="yes"
27 else
28    DEFS="$DEFS -DNDEBUG"
29    DEBUG="no"
30 fi
31
32 CFLAGS="$CFLAGS -I/usr/local/include"
33 CXXFLAGS="$CXXFLAGS -I/usr/local/include"
34 LDFLAGS="$LDFLAGS -L/usr/local/lib"
35
36 if [ "$sys" = "Linux" ]
37 then
38     OS=linux
39     MAKE="make"
40 fi
41
42 if [ "$sys" = "FreeBSD" ]
43 then
44     case $major in
45         4) OS=bsd;;
46         5) OS=bsd5;;
47         6) OS=bsd5;;
48         7) OS=bsd7;;
49         *) OS=bsd7;;
50     esac
51     MAKE="gmake"
52 fi
53
54 if [ "$OS" = "unknown" ]
55 then
56     printf "#############################################################################\n"
57     printf "# Sorry, but sgconf_xml is currently supported by Linux, FreeBSD and Darwin.#\n"
58     printf "#############################################################################\n"
59     exit 1
60 fi
61
62 printf "#############################################################################\n"
63 printf "       Building sgconf_xml for $sys $release\n"
64 printf "#############################################################################\n"
65
66 STG_LIBS="conffiles.lib
67           crypto.lib
68           common.lib
69           srvconf.lib"
70
71 if [ "$OS" = "linux" ]
72 then
73     DEFS="$DEFS -DLINUX"
74     LIB_THREAD=-lpthread
75 else
76     if [ "$OS" = "bsd" ]
77     then
78         DEFS="$DEFS -DFREE_BSD"
79     else
80         DEFS="$DEFS -DFREE_BSD5"
81         if [ "$OS" = "bsd7" ]
82         then
83             LIB_THREAD=-lpthread
84         else
85             LIB_THREAD=-lc_r
86         fi
87     fi
88 fi
89
90 if [ -z "$CC" ]
91 then
92     CC=gcc
93 fi
94
95 if [ -z "$CXX" ]
96 then
97     CXX=g++
98 fi
99
100 printf "Checking CC... "
101 $CC --version > /dev/null 2> /dev/null
102 if [ $? != 0 ]
103 then
104     printf "FAIL!\n"
105     printf "$CC not found\n"
106     exit;
107 fi
108 printf "found\n"
109 printf "Checking CXX... "
110 $CXX --version > /dev/null 2> /dev/null
111 if [ $? != 0 ]
112 then
113     printf "FAIL!\n"
114     printf "$CXX not found\n"
115     exit;
116 fi
117 printf "found\n"
118
119 printf "Checking endianess... "
120 printf "int main() { int probe = 0x00000001; return *(char *)&probe; }\n" > build_check.c
121 $CC $CFLAGS $LDFLAGS build_check.c -o fake > /dev/null 2> /dev/null
122 if [ $? != 0 ]
123 then
124     printf "FAIL!\n"
125     printf "Endianess checking failed\n"
126     exit;
127 else
128     ./fake
129     if [ $? = 1 ]
130     then
131         ARCH=le
132         CXXFLAGS="$CXXFLAGS -DARCH_LE"
133         CFLAGS="$CFLAGS -DARCH_LE"
134         printf "Little Endian\n"
135     else
136         ARCH=be
137         CXXFLAGS="$CXXFLAGS -DARCH_BE"
138         CFLAGS="$CFLAGS -DARCH_BE"
139         printf "Big Endian\n"
140     fi
141 fi
142 rm -f fake
143
144 printf "Checking for -lexpat... "
145 printf "int main() { return 0; }\n" > build_check.c
146 $CC $CXXFLAGS $LDFLAGS build_check.c -lexpat -o fake > /dev/null 2> /dev/null
147 if [ $? != 0 ]
148 then
149     CHECK_EXPAT=no
150     printf "no\n"
151 else
152     CHECK_EXPAT=yes
153     printf "yes\n"
154 fi
155 rm -f fake
156 rm -f build_check.c
157
158 if [ "$CHECK_EXPAT" != "yes" ]
159 then
160     printf "-lexpat not found!\n"
161     exit 1
162 fi
163
164 printf "OS=$OS\n" > $CONFFILE
165 printf "STG_TIME=yes\n" >> $CONFFILE
166 printf "DEBUG=$DEBUG\n" >> $CONFFILE
167 printf "DIR_BUILD=$BUILD_DIR\n" >> $CONFFILE
168 printf "DIR_LIB=\$(DIR_BUILD)/../../lib\n" >> $CONFFILE
169 printf "DIR_LIBSRC=\$(DIR_BUILD)/../../stglibs\n" >> $CONFFILE
170 printf "DIR_INCLUDE=\$(DIR_BUILD)/../../include\n" >> $CONFFILE
171 printf "ARCH=$ARCH\n" >> $CONFFILE
172 printf "CHECK_EXPAT=$CHECK_EXPAT\n" >> $CONFFILE
173 printf "DEFS=$DEFS\n" >> $CONFFILE
174 printf "STG_LIBS=" >> $CONFFILE
175 for lib in $STG_LIBS
176 do
177     printf "$lib " >> $CONFFILE
178 done
179 printf "\n" >> $CONFFILE
180 printf "LIB_THREAD=$LIB_THREAD\n" >> $CONFFILE
181 printf "CXXFLAGS=$CXXFLAGS\n" >> $CONFFILE
182 printf "CFLAGS=$CFLAGS\n" >> $CONFFILE
183 printf "LDFLAGS=$LDFLAGS\n" >> $CONFFILE
184 printf "PREFIX=$PREFIX\n" >> $CONFFILE
185 printf "BIN_MODE=$BIN_MODE\n" >> $CONFFILE
186 printf "DATA_MODE=$DATA_MODE\n" >> $CONFFILE
187 printf "DIR_MODE=$DIR_MODE\n" >> $CONFFILE
188 printf "OWNER=$OWNER\n" >> $CONFFILE
189
190 if [ "$1" != "debug" ]
191 then
192     $MAKE $MAKEOPTS
193 else
194     printf "\n\n\nDebug build. Type $MAKE explicitly\n"
195 fi