]> rtime.felk.cvut.cz Git - orte.git/blob - admin/linux.m4
JORTE: ignore 'int-to-pointer' and 'pointer-to-int' compiler warnings
[orte.git] / admin / linux.m4
1
2 AC_DEFUN([DS_LINUX_DIR],
3 [
4         AC_ARG_WITH([linux],
5                 [AC_HELP_STRING([--with-linux=DIR],
6                         [path to Linux patched source directory])],
7                 [LINUX_DIR="${withval}"],
8                 [LINUX_DIR=default])
9
10
11         AC_SUBST(LINUX_DIR)
12 ])
13
14
15 AC_DEFUN([DS_LINUX],
16 [
17
18         DS_LINUX_DIR()
19         
20         AC_MSG_CHECKING([Linux version])
21         
22         if test "${LINUX_DIR}" != "default" ; then
23
24           if [[ ! -f "${LINUX_DIR}/.config" ]];then
25             AC_MSG_ERROR([
26             The kernel source tree at ${LINUX_DIR} is not configured.
27             Fix before continuing.])
28           fi
29
30           if [[ ! -f "${LINUX_DIR}/include/linux/version.h" ]];then
31             AC_MSG_ERROR([The header file include/linux/version.h does not exist.
32             For 2.6 kernels, it can be generated by running 'make prepare' in
33             the kernel source directory.])
34           fi
35
36           LINUX_VERSION=$(grep UTS_RELEASE ${LINUX_DIR}/include/linux/version.h | \
37             sed 's/[[^"]]*"\(.*\)\{1\}"/\1/')
38
39           AC_MSG_RESULT([$LINUX_VERSION])
40
41           LINUX_VERSION_MAJOR=$(echo ${LINUX_VERSION} | cut -d. -f1)
42           LINUX_VERSION_MINOR=$(echo ${LINUX_VERSION} | cut -d. -f2)
43
44           case $LINUX_VERSION_MAJOR.$LINUX_VERSION_MINOR in
45             2.6)
46                 DS_LINUX_2_6()
47                 ;;
48             2.[[01234]])
49                 DS_LINUX_2_4()
50                 ;;
51             *)
52                 AC_MSG_ERROR([Unknown Linux major.minor $LINUX_VERSION_MAJOR.$LINUX_VERSION_MINOR])
53                 ;;
54           esac
55
56           CONFIG_ORTE_KERNEL=yes
57           AC_DEFINE([CONFIG_ORTE_KERNEL],[1],[Define if linux kernel is found])   
58
59         else
60           AC_MSG_RESULT([no])   
61           
62           CONFIG_ORTE_KERNEL=no
63                   
64         fi
65   
66         AC_SUBST(CONFIG_ORTE_KERNEL)    
67         AM_CONDITIONAL([CONFIG_ORTE_KERNEL],[test ${CONFIG_ORTE_KERNEL} == "yes"])
68     
69         DS_RT()
70 ])
71
72 AC_DEFUN([DS_LINUX_2_6],
73 [
74         AC_MSG_CHECKING(for Linux CFLAGS)
75
76         tmpdir="`pwd`/tmp-noicrwa"
77
78         rm -rf ${tmpdir}
79         mkdir ${tmpdir}
80
81         cat >${tmpdir}/Makefile <<EOF
82 obj-m += fake.o
83
84 \$(obj)/fake.c: flags
85         touch \$(obj)/fake.c
86
87 .PHONY: flags
88 flags:
89         echo LINUX_ARCH=\"\$(ARCH)\" >>\$(obj)/flags
90         echo LINUX_AFLAGS=\"\$(AFLAGS)\" | sed 's_Iinclude_I"\$(LINUXDIR)/include"_g'>>\$(obj)/flags
91         echo LINUX_LDFLAGS=\"\" >>\$(obj)/flags
92         echo LINUX_ARFLAGS=\"\$(ARFLAGS)\" >>\$(obj)/flags
93         echo LINUX_CROSS_COMPILE=\"\$(CROSS_COMPILE)\" >>\$(obj)/flags
94         echo LINUX_KERNELRELEASE=\"\$(KERNELRELEASE)\" >>\$(obj)/flags
95         echo LINUX_CFLAGS=\"\$(CFLAGS)\" | sed 's_Iinclude_I"\$(LINUXDIR)/include"_g'>>\$(obj)/flags
96         echo LINUX_CC=\"\$(CC)\" >>\$(obj)/flags
97         echo LINUX_LD=\"\$(LD) \$(LDFLAGS)\" >>\$(obj)/flags
98         echo LINUX_AS=\"\$(AS)\" >>\$(obj)/flags
99 EOF
100
101         echo ${MAKE-make} -C ${LINUX_DIR} V=1 SUBDIRS=${tmpdir} LINUXDIR=${LINUX_DIR} MODVERDIR=${tmpdir} modules >&5 2>&5
102         ${MAKE-make} -C ${LINUX_DIR} V=1 SUBDIRS=${tmpdir} LINUXDIR=${LINUX_DIR} MODVERDIR=${tmpdir} modules >&5 2>&5
103         . ${tmpdir}/flags
104         rm -rf ${tmpdir}
105
106         LINUX_MODULE_EXT=".ko"
107
108         AC_SUBST(LINUX_ARCH)
109         AC_SUBST(LINUX_AFLAGS)
110         AC_SUBST(LINUX_LDFLAGS)
111         AC_SUBST(LINUX_ARFLAGS)
112         AC_SUBST(LINUX_CROSS_COMPILE)
113         AC_SUBST(LINUX_KERNELRELEASE)
114         AC_SUBST(LINUX_CFLAGS)
115         AC_SUBST(LINUX_CC)
116         AC_SUBST(LINUX_LD)
117         AC_SUBST(LINUX_AS)
118         AC_SUBST(LINUX_MODULE_EXT)
119
120         AC_MSG_RESULT([ok])
121 ])
122
123
124 AC_DEFUN([DS_LINUX_2_4],
125 [
126         AC_MSG_CHECKING(for Linux CFLAGS)
127
128         if [[ ! -f "${LINUX_DIR}/.hdepend" ]];then
129                 AC_MSG_ERROR([
130 You need to run 'make dep' on the kernel source before continuing.])
131         fi
132
133         tmpdir="`pwd`/tmp-noicrwa"
134
135         rm -rf ${tmpdir}
136         mkdir ${tmpdir}
137
138         cat >${tmpdir}/Makefile <<EOF
139
140 .PHONY: modules
141 modules:
142         echo LINUX_ARCH=\"\$(ARCH)\" >>flags
143         echo LINUX_AFLAGS=\"\$(AFLAGS)\" | sed 's_Iinclude_I\"\$(LINUXDIR)/include\"_g'>>flags
144         echo LINUX_LDFLAGS=\"\" >>flags
145         echo LINUX_ARFLAGS=\"\$(ARFLAGS)\" >>flags
146         echo LINUX_CROSS_COMPILE=\"\$(CROSS_COMPILE)\" >>flags
147         echo LINUX_KERNELRELEASE=\"\$(KERNELRELEASE)\" >>flags
148         echo LINUX_CFLAGS=\"\$(CFLAGS)\" | sed 's_Iinclude_I\"\$(LINUXDIR)/include\"_g'>>flags
149         echo LINUX_CC=\"\$(CC)\" >>flags
150         echo LINUX_LD=\"\$(LD) \$(LDFLAGS)\" >>flags
151         echo LINUX_AS=\"\$(AS)\" >>flags
152 EOF
153
154         echo ${MAKE-make} -C ${LINUX_DIR} SUBDIRS=${tmpdir} modules >&5 2>&5
155         ${MAKE-make} -C ${LINUX_DIR} SUBDIRS=${tmpdir} modules >&5 2>&5
156         . ${tmpdir}/flags
157         rm -rf ${tmpdir}
158
159         LINUX_MODULE_EXT=".o"
160
161         AC_SUBST(LINUX_ARCH)
162         AC_SUBST(LINUX_AFLAGS)
163         AC_SUBST(LINUX_LDFLAGS)
164         AC_SUBST(LINUX_ARFLAGS)
165         AC_SUBST(LINUX_CROSS_COMPILE)
166         AC_SUBST(LINUX_KERNELRELEASE)
167         AC_SUBST(LINUX_CFLAGS)
168         AC_SUBST(LINUX_CC)
169         AC_SUBST(LINUX_LD)
170         AC_SUBST(LINUX_AS)
171         AC_SUBST(LINUX_MODULE_EXT)
172
173         AC_MSG_RESULT([ok])
174 ])
175
176 AC_DEFUN([DS_CHECK_LINUX_CONFIG_OPTION],
177 [
178         AC_MSG_CHECKING([Linux config option $1])
179
180         if grep '^$1=y$' ${LINUX_DIR}/.config >/dev/null 2>/dev/null; then
181                 result=yes
182                 $2
183         else if grep '^$1=m$' ${LINUX_DIR}/.config >/dev/null 2>/dev/null; then
184                 result=module
185                 $3
186         else
187                 result=no
188                 $4
189         fi
190         fi
191
192         AC_MSG_RESULT([$result])
193 ])
194
195 AC_DEFUN([DS_LINUX_CONFIG_OPTION],
196 [
197         DS_CHECK_LINUX_CONFIG_OPTION([$1],
198                 [$1=yes],
199                 [$1=module],
200                 [$1=no])
201
202         AM_CONDITIONAL([$1],[test "${$1}" = yes])
203 ])
204
205 AC_DEFUN([DS_LINUX_CONFIG_OPTION_MODULE],
206 [
207         DS_CHECK_LINUX_CONFIG_OPTION([$1],
208                 [$1=yes],
209                 [$1=module],
210                 [$1=no])
211
212         AM_CONDITIONAL([$1],[test "${$1}" = yes -o "${$1}" = module])
213 ])
214
215 AC_DEFUN([DS_RTAI],
216 [
217         AC_ARG_WITH([rtai],
218                 [AC_HELP_STRING([--with-rtai=DIR],
219                     [path to configured RTAI 24.1.X sources, or RTAI 3 installation])],
220                 [RTAI_DIR="${withval}"],
221                 [RTAI_DIR=/usr/src/rtai])
222
223         AC_ARG_WITH([rtnet],
224                 [AC_HELP_STRING([--with-rtnet=DIR],
225                         [path to RTnet installation directory])],
226                 [RTNET_DIR="${withval}"],
227                 [RTNET_DIR=/usr/src/rtnet])
228
229         DS_LINUX_CONFIG_OPTION_MODULE([CONFIG_RTHAL])
230         DS_LINUX_CONFIG_OPTION_MODULE([CONFIG_ADEOS])
231
232         if test "${CONFIG_RTHAL}" != "no" -o "${CONFIG_ADEOS}" != "no"; then
233                 AC_MSG_CHECKING([RTAI directory ${RTAI_DIR}])
234                 if [[ -d ${RTAI_DIR}/include ]] ; then
235                         RTAI_CFLAGS="-I${RTAI_DIR}/include"
236                 else
237                         if [ -d ${RTAI_DIR}/rtai-core/include ] ; then
238                                 RTAI_CFLAGS="-I${RTAI_DIR}/rtai-core/include"
239                         else
240                                 AC_MSG_ERROR([incorrect RTAI directory?])
241                         fi
242                 fi
243                 AC_MSG_RESULT([found])
244                 AC_MSG_CHECKING([RTnet directory ${RTNET_DIR}])
245                 if [[ -d ${RTNET_DIR}/include ]] ; then
246                         RTAI_CFLAGS="${RTAI_CFLAGS} -I${RTNET_DIR}/include"
247                 else
248                         AC_MSG_ERROR([incorrect RTnet directory?])
249                 fi
250                 AC_MSG_RESULT([found])
251                 $1
252                 RT_GCCLIB_DIR=`gcc -print-search-dirs | sed -n -e 's/^install: \(.*\)$/\1/p'`
253                 RTAI_CFLAGS="${RTAI_CFLAGS} -idirafter ${RT_GCCLIB_DIR}/include -nostdinc"
254                 AC_DEFINE([CONFIG_ORTE_RTAI],[1],[Define if kernel is RTAI patched])
255         else
256                 $2
257         fi
258         AC_SUBST(RTAI_CFLAGS)
259
260 ])
261
262 AC_DEFUN([DS_RTLINUX],
263 [
264         AC_ARG_WITH([rtlinux],
265                 [AC_HELP_STRING([--with-rtlinux=DIR],
266                         [path to RTLinux source directory])],
267                 [RTLINUX_DIR="${withval}"],
268                 [RTLINUX_DIR=/usr/src/rtlinux])
269                 
270         AC_ARG_WITH([rtlinuxwip],
271                 [AC_HELP_STRING([--with-rtlinuxwip=DIR],
272                         [path to RTLinux wIP source directory])],
273                 [RTLINUXWIP_DIR="${withval}"],
274                 [RTLINUXWIP_DIR="${RTLINUX_DIR}"])
275
276         AC_ARG_WITH([rtlinuxonetd],
277                 [AC_HELP_STRING([--with-rtlinuxonetd=DIR],
278                         [path to RTLinux onetd source directory])],
279                 [RTLINUXONETD_DIR="${withval}"],
280                 [RTLINUXONETD_DIR="${RTLINUX_DIR}"])
281
282         DS_LINUX_CONFIG_OPTION_MODULE([CONFIG_RTLINUX])
283
284         if test "${CONFIG_RTLINUX}" != "no" ; then
285                 AC_MSG_CHECKING([RTLinux directory ${RTLINUX_DIR} for rtl.mk])
286                 if [[ -d ${RTLINUX_DIR}/include ]] ; then
287                         RTLINUX_CFLAGS=`sed -n -e 's/^CFLAGS *=\(.*\)$/\1/p' ${RTLINUX_DIR}/rtl.mk`
288                         RTLINUX_CC=`sed -n -e 's/^CC *=\(.*\)$/\1/p' ${RTLINUX_DIR}/rtl.mk`
289                 else
290                         AC_MSG_ERROR([incorrect RTLinux directory?])
291                 fi
292                 AC_MSG_RESULT([found])
293                 AC_DEFINE([CONFIG_ORTE_RTL],[1],[Define if kernel is RTLinux patched])
294
295                 AC_MSG_CHECKING([RTLinux for a UDP stack])
296                 RTL_STACK="no"
297
298                 if [[ -e "${RTLINUXWIP_DIR}/include/udp.h" -a \
299                       -e "${RTLINUXWIP_DIR}/include/nic.h" -a \ 
300                       -e "${RTLINUXWIP_DIR}/include/ip.h" -a \ 
301                       -e "${RTLINUXWIP_DIR}/include/ethernet.h" -a \ 
302                       -e "${RTLINUXWIP_DIR}/include/nictab.h" ]] ; then 
303                         AC_MSG_RESULT([found wIP])
304                         AC_DEFINE([CONFIG_ORTE_RTL_WIP],[1],[Define if wIP stack is found])
305                         RTL_STACK="yes"
306                 fi
307
308                 if [[ -e "${RTLINUXONETD_DIR}/onetd.h" ]] ; then 
309                         AC_MSG_RESULT([found onetd])
310                         AC_DEFINE([CONFIG_ORTE_RTL_ONETD],[1],[Define if onetd stack is found])
311                         RTL_STACK="yes"
312                 fi
313
314                 if test "${RTL_STACK}" == "no" ; then
315                         AC_MSG_ERROR([incorrect a RTLinux UDP directory.])
316                 fi
317
318                 RT_GCCLIB_DIR=`${RTLINUX_CC} -print-search-dirs | sed -n -e 's/^install: \(.*\)$/\1/p'`
319                 RTLINUX_CFLAGS="${RTLINUX_CFLAGS} -I${RTLINUXWIP_DIR}/include -I${RTLINUXONETD_DIR} -idirafter ${RT_GCCLIB_DIR}/include -nostdinc"
320                 $1
321         else
322                 $2
323         fi
324         AC_SUBST(RTLINUX_CFLAGS)
325         AC_SUBST(RTLINUX_CC)
326 ])
327
328 AC_DEFUN([DS_RT],
329 [
330         DS_RTAI([USE_RTAI=yes],[USE_RTAI=no])
331         DS_RTLINUX([USE_RTLINUX=yes],[USE_RTLINUX=no])
332         if test ${USE_RTAI} == "yes" -o ${USE_RTLINUX} == "yes" ; then
333                 AC_DEFINE([CONFIG_ORTE_RT],[1],[Define to enable ORTE's RT support])
334                 CONFIG_ORTE_RT="yes"
335         fi
336         AC_SUBST(CONFIG_ORTE_RT)        
337         AM_CONDITIONAL([USE_RTAI],[test ${USE_RTAI} == "yes"])
338         AM_CONDITIONAL([USE_RTLINUX],[test ${USE_RTLINUX} == "yes"])
339         AM_CONDITIONAL([CONFIG_ORTE_RT],[test ${USE_RTAI} == "yes" -o ${USE_RTLINUX} == "yes"])
340 ])