]> rtime.felk.cvut.cz Git - CanFestival-3.git/blob - configure
First working cygwin/pcan_light commit. can_peak_win32.c is obfuscated.
[CanFestival-3.git] / configure
1 #!/bin/bash
2
3 #
4 # Copyright (C) 2004 Edouard TISSERRANT, Laurent BESSARD
5 # Based on Gabriel Gerhardsson's cacheprobe configure script. 
6
7 # This file is part of CanFestival, a library implementing CanOpen Stack. 
8
9 # This library is free software; you can redistribute it and/or
10 # modify it under the terms of the GNU Lesser General Public
11 # License as published by the Free Software Foundation; either
12 # version 2.1 of the License, or (at your option) any later version.
13
14 # This library is distributed in the hope that it will be useful,
15 # but WITHOUT ANY WARRANTY; without even the implied warranty of
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17 # Lesser General Public License for more details.
18
19 # You should have received a copy of the GNU Lesser General Public
20 # License along with this library; if not, write to the Free Software
21 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
22
23
24 ###########################################################################
25 #                       DEFAULT CANFESTIVAL DEFINES                       #
26 ###########################################################################
27
28 # Number of can bus to use 
29 MAX_CAN_BUS_ID=1 
30
31 # max bytes to transmit by SDO Put 4 if you only support expedited transfert.
32 # For a normal transfert, (usually for a string), put the maximum string size to transfer.
33 SDO_MAX_LENGTH_TRANSFERT=32 
34
35 # Number of SDO from differents nodes that the node can manage concurrently.   
36 # for a slave node, usually put 1.
37 SDO_MAX_SIMULTANEOUS_TRANSFERTS=4
38
39 # Used for NMTable[bus][nodeId]   
40 # You can put less of 128 if on the netwo
41 # are connected only smaller nodeId node.
42 NMT_MAX_NODE_ID=128  
43
44 #Timeout in milliseconds for SDO.
45 #    Comment the #define if not used (infinite wait for SDO response message)
46 SDO_TIMEOUT_MS=3000
47
48 MAX_NB_TIMER=32
49
50 # Generic timers declaration defaults
51 US_TO_TIMEVAL_FACTOR=
52 TIMEVAL=
53 TIMEVAL_MAX=
54
55 # Default to little-endian
56 CANOPEN_LITTLE_ENDIAN=1
57 CANOPEN_BIG_ENDIAN=
58
59 ###########################################################################
60 #                             DEFAULT BUILD OPTIONS                       #
61 ###########################################################################
62
63 # Leave empty for automatic detection
64 CC=
65
66 #default target
67 SUB_TARGET=
68
69 # First compiler option - we will check if it exists
70 CC1=gcc
71 # Second compiler option - we will check if it exists
72 CC2=cc
73
74 # Install prefix
75 SUB_PREFIX=
76
77 SUB_TIMERS_ENABLE=YES
78
79 # Used for C compiler test/detection 
80 CFLAGS=
81 test=conftest
82 rm -f $test $test.c
83
84 XENO_CONFIG=/usr/xenomai/bin/xeno-config
85
86 ###########################################################################
87 #                          ARGUMENTS PARSING                              #
88 ###########################################################################
89 while [ $# -ge 1 ]; do
90         optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
91         
92         case $1 in
93         --cc=*)         CC=$optarg;;
94         --arch=*)       SUB_ARCH_NAME=$optarg;;
95         --os=*)         SUB_OS_NAME=$optarg;;
96         --prefix=*)     SUB_PREFIX=$optarg;;
97         --target=*)     SUB_TARGET=$optarg;;
98         --can=*)        SUB_CAN_DRIVER=$optarg;;
99         --led=*)        SUB_LED_DRIVER=$optarg;;
100         --nvram=*)      SUB_NVRAM_DRIVER=$optarg;;
101         --timers=*)     SUB_TIMERS_DRIVER=$optarg;;
102         --disable-Ox)   DISABLE_OPT=1;
103                         echo "On user request: Won't optimize with \"-Ox\"";;
104         --debug)        DEBUG=1;
105                         echo "Debug messages enabled !!";;
106         --debugPDO)     DEBUG=PDO;
107                         echo "Debug messages (PDO) enabled !!";;
108         --enable-lss)   SUB_LSS_ENABLE=YES;
109                         echo "On user request: Will enable Auto Baudrate detect Feature";;
110         --desable-timers)       SUB_TIMERS_ENABLE=NO;
111                         echo "On user request: Will enable built-in timer dispatch Feature";;
112         --MAX_CAN_BUS_ID=*)     MAX_CAN_BUS_ID=$1;;
113         --SDO_MAX_LENGTH_TRANSFERT=*)   SDO_MAX_LENGTH_TRANSFERT=$1;;
114         --SDO_MAX_SIMULTANEOUS_TRANSFERTS=*)    SDO_MAX_SIMULTANEOUS_TRANSFERTS=$1;;
115         --NMT_MAX_NODE_ID=*)    NMT_MAX_NODE_ID=$1;;
116         --SDO_TIMEOUT_MS=*)     SDO_TIMEOUT_MS=$1;;
117         --CANOPEN_BIG_ENDIAN=*) CANOPEN_BIG_ENDIAN=$1;;
118         --MAX_NB_TIMER=*) MAX_NB_TIMER=$1;;
119         --help) echo    "Usage: ./configure [options]"
120                 echo    "Options:"
121                 echo    " --cc=foo      Use compiler 'foo' instead of defaults ${CC1} or ${CC2}."
122                 echo    " --arch=foo    Use architecture 'foo' instead of trying to autodetect."
123                 echo    " --os=foo      Use operative system 'foo' instead of trying to autodetect."
124                 echo    " --prefix=foo  Use prefix 'foo' instead of default ${SUB_PREFIX}."
125                 echo    " --target=foo  Use 'foo' as build target."
126                 echo    "               \"generic\" for have independant CAN and TIMERS driver"
127                 echo    "               \"unix\" for unix-like systems"
128                 echo    "               \"win32\" for win32 systems"
129                 echo    "               \"hcs12\" for HCS12 micro-controller"
130                 echo    "               \"ecos_lpc2138_sja1000\" for eCOS + Philips ARM LPC21381 + Philips SJA1000" 
131                 echo    " --can=foo     Use 'foo' as CAN driver (can be either 'peak', 'lincan' or 'virtual')"
132                 echo    " --timers=foo  Use 'foo' as TIMERS driver (can be either 'unix' or 'xeno')"
133                 echo    " --led=foo     Use 'foo' as DS-305 LED driver (use 'none' to disable or 'stdout')"
134                 echo    " --nvram=foo   Use 'foo' as NVRAM driver (use 'none' to disable or 'file')"
135                 echo    " --disable-Ox  Disable gcc \"-Ox\" optimizations."
136                 echo    " --debug       Enable debug messages."
137                 echo    " --debugPDO    Enable debug messages, using PDO."
138                 echo    " --enable-lss  Enable Auto Baudrate detect Feature"
139                 echo
140                 echo    "Stack compilation constants"
141                 echo    " --MAX_CAN_BUS_ID [=1] Number of can bus to use"
142                 echo    " --SDO_MAX_LENGTH_TRANSFERT [=32] max bytes to transmit by SDO"
143                 echo    " --SDO_MAX_SIMULTANEOUS_TRANSFERTS [=4] Number of SDO that the node can manage concurrently"
144                 echo    " --NMT_MAX_NODE_ID [=128] can be reduced to gain memory on small network"
145                 echo    " --SDO_TIMEOUT_MS [=3000] Timeout in milliseconds for SDO (None to disable the feature)"
146                 exit 0;;
147         *)              echo "Unknown argument ${1}"; exit -1;;
148         esac
149
150         shift
151 done
152
153 ###########################################################################
154 #                              GUESS OS/ARCH                              #
155 ###########################################################################
156
157 if [ "$SUB_OS_NAME" = "" ]; then
158         SUB_OS_NAME="`(uname -s | sed \"s/\//-/\" | sed \"s/_/-/\" \
159                         | sed \"s/-.*//g\") 2>&1`"
160 fi
161 if [ "$SUB_OS_NAME" = "HP" -o "$SUB_OS_NAME" = "HP-UX" ]; then
162         SUB_OS_NAME=HPUX
163 fi
164
165 if [ "$SUB_ARCH_NAME" = "" ]; then
166         if [ "$CC" = "" ]; then
167                 A_NAME="`(uname -m) 2>&1`"
168         else
169                 A_NAME="`$CC -dumpmachine | sed 's:-.*::'`"
170         fi
171 fi
172
173 # x86
174 if [ "$A_NAME" = "i386" ]; then
175         SUB_ARCH_NAME=x86
176 fi
177 if [ "$A_NAME" = "i486" ]; then
178         SUB_ARCH_NAME=x86
179 fi
180 if [ "$A_NAME" = "i586" ]; then
181         SUB_ARCH_NAME=x86
182 fi
183 if [ "$A_NAME" = "i686" ]; then
184         SUB_ARCH_NAME=x86
185 fi
186 if [ "$A_NAME" = "x86" ]; then
187         SUB_ARCH_NAME=x86
188 fi
189
190 # x86_64
191 if [ "$A_NAME" = "x86_64" ]; then
192         SUB_ARCH_NAME=x86_64
193 fi
194
195 # ia64
196 if [ "$A_NAME" = "ia64" ]; then
197         SUB_ARCH_NAME=ia64
198 fi
199
200 # alpha
201 if [ "$A_NAME" = "alpha" ]; then
202         SUB_ARCH_NAME=alpha
203 fi
204
205 # parisc
206 if [ "$A_NAME" = "parisc" ]; then
207         SUB_ARCH_NAME=parisc
208 fi
209 if [ "$SUB_OS_NAME" = "HPUX" -a "$A_NAME" != "ia64" ]; then
210         # If we're on HP-UX and the architecture is *not* ia64,
211         # it's most likely parisc
212         SUB_ARCH_NAME=parisc
213 fi
214
215 # sparc
216 if [ "$A_NAME" = "sparc" ]; then
217         SUB_ARCH_NAME=sparc
218 fi
219 if [ "$A_NAME" = "sun4u" ]; then
220         SUB_ARCH_NAME=sparc
221 fi
222
223 # sparc64
224 if [ "$A_NAME" = "sparc64" ]; then
225         SUB_ARCH_NAME=sparc64
226 fi
227
228
229 #
230 # The following has not been verified
231 #
232
233 # ppc
234 if [ "$A_NAME" = "powerpc" ]; then
235         SUB_ARCH_NAME=ppc
236 fi
237
238 # ppc64
239 if [ "$A_NAME" = "powerpc64" ]; then
240         SUB_ARCH_NAME=ppc64
241 fi
242
243 # arm
244 if [ "$A_NAME" = "arm" ]; then
245         SUB_ARCH_NAME=arm
246 fi
247
248 # mips3
249 if [ "$A_NAME" = "ip32" ]; then         # IRIX
250         SUB_ARCH_NAME=mips3
251 fi
252 if [ "$A_NAME" = "ip35" ]; then         # IRIX
253         SUB_ARCH_NAME=mips3
254 fi
255
256 # mips32
257 if [ "$A_NAME" = "mips32" ]; then
258         SUB_ARCH_NAME=mips32
259 fi
260 if [ "$A_NAME" = "mips" ]; then
261         SUB_ARCH_NAME=mips32
262 fi
263 if [ "$A_NAME" = "MIPS" ]; then
264         SUB_ARCH_NAME=mips32
265 fi
266 if [ "$A_NAME" = "RISC" ]; then         # MIPS Ultrix
267         SUB_ARCH_NAME=mips32
268 fi
269
270 # mips64
271 if [ "$A_NAME" = "mips64" ]; then
272         SUB_ARCH_NAME=mips64
273 fi
274 if [ "$A_NAME" = "MIPS64" ]; then
275         SUB_ARCH_NAME=mips64
276 fi
277 if [ "$A_NAME" = "IP64" ]; then         # IRIX
278         SUB_ARCH_NAME=mips64
279 fi
280
281 # power
282 if [ "$A_NAME" = "power" ]; then        # Manual
283         SUB_ARCH_NAME=power
284 fi
285
286 echo "Using OS: ${SUB_OS_NAME}"
287 echo "Using architecture: ${SUB_ARCH_NAME}"
288
289 if [ "$SUB_ARCH_NAME" = "" ]; then
290         echo "Error: could not detect what architecture this system is running!"
291         echo "Please supply manually instead with \"--arch=foo\""
292         exit -1
293 fi
294
295 if [ "$SUB_OS_NAME" = "HPUX" -a "$CC" = "gcc" ]; then
296         # Only if we are on HP-UX, ia64 and using gcc
297         SUB_PROG_CFLAGS=-mlp64
298 fi
299
300 if [ "$SUB_OS_NAME" = "SunOS" -a "$SUB_ARCH_NAME" = "sparc" -a "$CC" = "gcc" ]; then
301         # Only if we are on SunOS, sparc and using gcc
302         # Tells the assembler that we are dealing with a v8plusa arch sparc
303         # and -mimpure-text is needed for shared library linking
304         SUB_PROG_CFLAGS="-Wa,-xarch=v8plusa -mimpure-text"
305 fi
306
307 if [ "$SUB_OS_NAME" = "AIX" -a "$SUB_ARCH_NAME" = "power" -a "$CC" = "gcc" ]; then
308         # Only if we are on AIX, power and using gcc
309         # The assembler may default to generating Power and PowerPC compatible
310         # code. We need to override that.
311         SUB_PROG_CFLAGS=-Wa,-mpwr
312 fi
313
314 if [ "$SUB_OS_NAME" = "AIX" -a "$SUB_ARCH_NAME" = "ppc" -a "$CC" = "gcc" ]; then
315         # Only if we are on AIX, ppc and using gcc
316         # The assembler may default to generating Power and PowerPC compatible
317         # code. We need to override that.
318         SUB_PROG_CFLAGS=-Wa,-mppc
319 fi
320
321 if [ "$SUB_ARCH_NAME" = "x86_64" -a "$CC" = "gcc" ]; then
322         # Only if we are on x86_64 and using gcc
323         # For shared library generation, it needs this
324         SUB_PROG_CFLAGS=-fPIC
325 fi
326
327 ###########################################################################
328 #                      DEFAULT TARGET/DRIVERS GUESSING                    #
329 ###########################################################################
330 # If target not specified, try to gess one
331 if [ "$SUB_TARGET" = "" ]; then
332         if [ "$SUB_OS_NAME" = "CYGWIN" ]; then
333                 echo "Choosing unix (cygwin) target"
334                 SUB_TARGET=unix
335         else
336                 echo "Choosing unix target"
337                 SUB_TARGET=unix
338         fi
339 fi
340
341 # Try to gess can
342 if [ "$SUB_CAN_DRIVER" = "" ]; then
343         if [ "$SUB_TARGET" = "unix" ]; then
344                 if [ -e /usr/lib/libpcan.so ]; then 
345                         echo "Choosing installed Peak driver as CAN driver."
346                         SUB_CAN_DRIVER=peak
347                 else
348                         echo "Choosing virtual CAN driver."
349                         SUB_CAN_DRIVER=virtual
350                 fi
351         fi
352         if [ "$SUB_TARGET" = "win32" ]; then
353                 echo "CAN driver for windows --Not Implemented--"
354         fi
355 fi
356
357 if [ "$SUB_TARGET" = "unix" -a "$SUB_LED_DRIVER" = "" ]; then
358         echo "Choosing stdout LED driver."
359         SUB_LED_DRIVER=stdout
360 fi
361
362 if [ "$SUB_TARGET" = "unix" -a "$SUB_NVRAM_DRIVER" = "" ]; then
363         echo "Choosing binary file NVRAM driver. -- not implemented --"
364 #       SUB_NVRAM_DRIVER=file
365 fi
366
367 # If target is unix, default timers also
368 if [ "$SUB_TARGET" = "unix" -a "$SUB_TIMERS_DRIVER" = "" ]; then
369         echo "Choosing unix timers driver."
370         SUB_TIMERS_DRIVER=unix
371 fi
372
373 # Warn for unstalled peak driver if choosen
374 if [ "$SUB_CAN_DRIVER" = "peak" ]; then
375         if [ ! -e /usr/lib/libpcan.so ]; then 
376                 echo "Peak driver hasn't been installed !"
377                 exit -1
378         fi
379 fi
380
381 ###########################################################################
382 #              TARGET/DRIVER SPECIFIC CFLAGS and OPTIONS                  #
383 ###########################################################################
384 if [ "$SUB_TARGET" = "generic" ]; then
385         if [ "$US_TO_TIMEVAL_FACTOR" = "" ]; then
386                 US_TO_TIMEVAL_FACTOR=1
387         fi
388         if [ "$TIMEVAL" = "" ]; then
389                 TIMEVAL=UNS64
390         fi
391         if [ "$TIMEVAL_MAX" = "" ]; then
392                 TIMEVAL_MAX=0xffffffffffffffff
393         fi
394 fi
395
396 if [ "$SUB_TARGET" = "hcs12" ]; then
397         # Only if we want to compile for a µC HCS12
398         # search for gcc hcs12 compiler m6811-elf-gcc or m68hc12-gcc ?
399         if [ "$CC" = "" ]; then
400                 which m6811-elf-gcc >/dev/null 2>&1
401                 if (( $? )); then 
402                         which m68hc12-gcc >/dev/null 2>&1
403                         if (( $? )); then 
404                                 echo "Please use --cc flag to specify compiler"
405                                 exit 0
406                         else
407                                 CC=m68hc12-gcc 
408                         fi
409                 else
410                         CC=m6811-elf-gcc
411                         SUB_PROG_CFLAGS=-m68hc12
412                 fi
413         fi
414 fi      
415
416 if [ "$SUB_TARGET" = "ecos_lpc2138_sja1000" ]; then
417         # search for gcc arm compiler arm-elf-gcc or arm-elf-gcc ?
418         if [ "$CC" = "" ]; then
419                 which arm-elf-gcc >/dev/null 2>&1
420                 if (( $? )); then 
421                         echo "error : Could not find arm-elf-gcc"
422                 else
423                         CC=arm-elf-gcc
424                         SUB_PROG_CFLAGS="-mcpu=arm7tdmi -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Os \
425                         -ffunction-sections -fdata-sections -fno-exceptions -finline-functions"
426                 fi
427         fi
428         # ecos sja1000 driver implements calls needed by LSS.
429         SUB_LSS_ENABLE=YES
430         SUB_LED_ENABLE=YES
431         SUB_NVRAM_ENABLE=YES
432 fi
433
434
435 #### CAN_DRIVER ####
436
437 if [ "$SUB_CAN_DRIVER" = "peak" ]; then
438     if [ "$SUB_TIMERS_DRIVER" = "xeno" ]; then
439         SUB_EXE_CFLAGS=$SUB_EXE_CFLAGS\ -lrtdm
440     fi
441     SUB_EXE_CFLAGS=$SUB_EXE_CFLAGS\ -lpcan
442 fi
443
444 if [ "$SUB_CAN_DRIVER" = "peak_win32" ]; then
445         if [ "$PCAN_HEADER" = "" -o "PCAN_LIB" = "" ]; then
446                 echo "!!! ERROR !!! Please set PCAN_LIB PCAN_HEADER [PCAN_INCLUDE] to appropriate paths ! "
447         fi
448         SUB_EXE_CFLAGS=$SUB_EXE_CFLAGS\ -liberty\ \'$PCAN_LIB\'
449         echo "Converting PcanLib header files for gcc -> /drivers/can_peak_win32/cancfg.h"
450         cat include/can_peak_win32/cancfg.h.head $PCAN_INCLUDE/$PCAN_HEADER > include/can_peak_win32/cancfg.h
451         # second port handling
452         if [ "$PCAN2_HEADER" != "" ]; then
453                 echo "Stripping down second Pcan Light header "
454                 echo >> include/can_peak_win32/cancfg.h
455                 echo "// Stripped PcanLight header to prevent typedef conflicts ">> include/can_peak_win32/cancfg.h
456                 echo >> include/can_peak_win32/cancfg.h
457                 grep __stdcall $PCAN_INCLUDE/$PCAN2_HEADER >> include/can_peak_win32/cancfg.h
458                 SUB_EXE_CFLAGS=$SUB_EXE_CFLAGS\ \'$PCAN2_LIB\'
459         fi
460         echo '#define PCAN2_HEADER_' >> include/can_peak_win32/cancfg.h
461         cat include/can_peak_win32/cancfg.h.tail >> include/can_peak_win32/cancfg.h
462 fi
463
464 if [ "$SUB_CAN_DRIVER" = "none" ]; then
465         SUB_CAN_DRIVER=
466 fi
467
468 #### TIMERS_DRIVER ####
469
470 if [ "$SUB_TIMERS_DRIVER" = "unix" ]; then
471         if [ "$SUB_OS_NAME" != "CYGWIN" ]; then
472            SUB_EXE_CFLAGS=$SUB_EXE_CFLAGS\ -lpthread\ -lrt
473         fi
474 fi
475
476 if [ "$SUB_TIMERS_DRIVER" = "xeno" ]; then
477         SUB_EXE_CFLAGS=$SUB_EXE_CFLAGS\ -lnative\
478 \       -L`$XENO_CONFIG --library-dir`
479         SUB_PROG_CFLAGS=$SUB_PROG_CFLAGS\ `$XENO_CONFIG --xeno-cflags`
480 fi
481
482 if [ "$SUB_TIMERS_DRIVER" = "none" ]; then
483         SUB_TIMERS_DRIVER=
484 fi
485
486 #### LED_DRIVER ####
487 #enable led support if a led driver have been selected.
488 if [ "$SUB_LED_DRIVER" != "" ]; then
489         SUB_LED_ENABLE=YES
490 fi
491 #if "none" driver is selected led feature is enabled but driver not compiled
492 if [ "$SUB_LED_DRIVER" = "none" ]; then
493         SUB_LED_DRIVER=
494 fi
495 #if "disable" driver is selected led feature is disabled
496 if [ "$SUB_LED_DRIVER" = "disable" ]; then
497         SUB_LED_ENABLE=
498         SUB_LED_DRIVER=
499 fi
500
501 #### NVRAM_DRIVER ####
502 #enable nvram support if a nvram driver have been selected.
503 if [ "$SUB_NVRAM_DRIVER" != "" ]; then
504         SUB_NVRAM_ENABLE=YES
505 fi
506 #if "none" driver is selected nvram feature is enabled but driver not compiled
507 if [ "$SUB_NVRAM_DRIVER" = "none" ]; then
508         SUB_NVRAM_DRIVER=
509 fi
510 #if "disable" driver is selected nvram feature is disabled
511 if [ "$SUB_NVRAM_DRIVER" = "disable" ]; then
512         SUB_NVRAM_ENABLE=
513         SUB_NVRAM_DRIVER=
514 fi
515
516 ###########################################################################
517 #                              GUESS COMPILER                             #
518 ###########################################################################
519 # If CC is empty, the user wanted automatic detection
520 if [ "$CC" = "" ]; then
521         # Check for second compiler, CC2
522         cat > $test.c <<EOF
523         int main() { return 0; }
524 EOF
525         if test "`($CC2 -c $CFLAGS $test.c) 2>&1`" = ""; then
526                 DETECTCC=$CC2
527                 echo "Checking for ${CC2}... Yes."
528         else
529                 echo "Checking for ${CC2}... No."
530         fi
531         rm -f $test.c $test.o
532         
533         # Check for first compiler, CC1
534         cat > $test.c <<EOF
535         int main() { return 0; }
536 EOF
537         if test "`($CC1 -c $CFLAGS $test.c) 2>&1`" = ""; then
538                 DETECTCC=$CC1
539                 echo "Checking for ${CC1}... Yes."
540         else
541                 echo "Checking for ${CC1}... No."
542         fi
543         rm -f $test.c $test.o
544         CC=$DETECTCC
545 fi
546 # Check if we decided on a compiler after all
547 if [ "$CC" = "" ]; then
548         echo "Error: Could not find a C compiler"
549         echo "Please supply the wanted compiler"
550         exit -1
551 fi
552
553 echo "Using ${CC}"
554
555 ###########################################################################
556 #                              GUESS PREFIX's                             #
557 ###########################################################################
558
559 SUB_BINUTILS_PREFIX=`echo "$CC" | sed 's/gcc$//'`
560
561 # Guess prefix as regard cross compiling target machine
562 if [ "$SUB_PREFIX" = "" ]; then
563         $CC -dumpspecs |grep -A 1 'cross_compile'|grep -q 1
564         if (( $? )); then 
565                 SUB_PREFIX=/usr/local
566                 echo "Not cross-compiling. Will install in $SUB_PREFIX";
567         else
568                 SUB_PREFIX=/usr/`$CC -dumpmachine`
569                 echo "This is a cross-compiler. Will install in $SUB_PREFIX";                   
570         fi
571 fi
572
573 echo "Using prefix: ${SUB_PREFIX}"
574
575 ###########################################################################
576 #                   CANFESTIVAL DEFINES --> config.h                      #
577 ###########################################################################
578 # Some CONSTANTS preparation
579 if [ "$CANOPEN_BIG_ENDIAN" = "" ]; then
580         CANOPEN_LITTLE_ENDIAN=1
581 else
582         CANOPEN_LITTLE_ENDIAN=
583 fi
584
585 # Create include/config.h with the relevant contents
586 rm -f include/config.h
587 echo "/*"\ >  include/config.h
588 echo "This file is part of CanFestival, a library implementing CanOpen Stack." >> include/config.h
589 echo "" >> include/config.h
590 echo "Copyright (C): Edouard TISSERANT and Francis DUPIN" >> include/config.h
591 echo "See COPYING file for copyrights details." >> include/config.h
592 echo "" >> include/config.h
593 echo "This library is free software; you can redistribute it and/or" >> include/config.h
594 echo "modify it under the terms of the GNU Lesser General Public" >> include/config.h
595 echo "License as published by the Free Software Foundation; either" >> include/config.h
596 echo "version 2.1 of the License, or (at your option) any later version." >> include/config.h
597 echo "" >> include/config.h
598 echo "This library is distributed in the hope that it will be useful," >> include/config.h
599 echo "but WITHOUT ANY WARRANTY; without even the implied warranty of" >> include/config.h
600 echo "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU" >> include/config.h
601 echo "Lesser General Public License for more details." >> include/config.h
602 echo "" >> include/config.h
603 echo "You should have received a copy of the GNU Lesser General Public" >> include/config.h
604 echo "License along with this library; if not, write to the Free Software" >> include/config.h
605 echo "Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA" >> include/config.h
606 echo "*/" >> include/config.h
607 echo "" >> include/config.h
608 echo "#ifndef _CONFIG_H_" >> include/config.h
609 echo "#define _CONFIG_H_" >> include/config.h
610 echo "" >> include/config.h
611 for i in \
612  MAX_CAN_BUS_ID\
613  SDO_MAX_LENGTH_TRANSFERT\
614  SDO_MAX_SIMULTANEOUS_TRANSFERTS\
615  NMT_MAX_NODE_ID\
616  SDO_TIMEOUT_MS\
617  MAX_NB_TIMER\
618  CANOPEN_BIG_ENDIAN\
619  CANOPEN_LITTLE_ENDIAN\
620  US_TO_TIMEVAL_FACTOR\
621  TIMEVAL\
622  TIMEVAL_MAX; do
623 if [ "${!i}" = "" ]; then
624 echo "// $i is not defined" >> include/config.h
625 else
626 echo "#define $i ${!i}" >> include/config.h
627 fi
628 done    
629 echo "" >> include/config.h
630 echo "#endif /* _CONFIG_H_ */" >> include/config.h
631
632 ###########################################################################
633 #                           DEBUG DEFINES/CFLAGS                          #
634 ###########################################################################
635 if [ "$DEBUG" != "" ]; then
636         SUB_PROG_CFLAGS=$SUB_PROG_CFLAGS\ -DDEBUG_CAN\ -DDEBUG_WAR_CONSOLE_ON\ -DDEBUG_ERR_CONSOLE_ON\ -g
637 fi
638
639 if [ "$DEBUG" = "PDO" ]; then
640         SUB_PROG_CFLAGS=$SUB_PROG_CFLAGS\ -DPDO_ERROR
641 fi
642
643 if [ "$DISABLE_OPT" = "1" ]; then
644         SUB_OPT_CFLAGS=
645 else
646         SUB_OPT_CFLAGS=\$\(OPT_CFLAGS\)
647 fi
648
649 ###########################################################################
650 #                              CREATE MAKEFILES                           #
651 ###########################################################################
652 # General Makefiles
653 MAKEFILES=Makefile.in\
654 \ src/Makefile.in\
655 \ drivers/Makefile.in\
656 \ objdictgen/Makefile.in\
657 \ examples/Makefile.in
658
659 # Drivers dependent Makefiles
660 if [ "$SUB_TIMERS_DRIVER" != "" ]; then
661         MAKEFILES=$MAKEFILES\
662 \       drivers/timers_$SUB_TIMERS_DRIVER/Makefile.in
663 fi
664
665 if [ "$SUB_CAN_DRIVER" != "" ]; then
666         MAKEFILES=$MAKEFILES\
667 \       drivers/can_$SUB_CAN_DRIVER/Makefile.in
668 fi
669
670 if [ "$SUB_LED_DRIVER" != "" ]; then
671         MAKEFILES=$MAKEFILES\
672 \       drivers/led_$SUB_LED_DRIVER/Makefile.in
673 fi
674
675 if [ "$SUB_NVRAM_DRIVER" != "" ]; then
676         MAKEFILES=$MAKEFILES\
677 \       drivers/nvram_$SUB_NVRAM_DRIVER/Makefile.in
678 fi
679
680 # Target dependent Makefiles
681 MAKEFILES=$MAKEFILES\ drivers/$SUB_TARGET/Makefile.in
682
683 if [ "$SUB_TARGET" = "unix" ]; then
684         MAKEFILES=$MAKEFILES\
685 \       examples/AppliMaster_Linux/Makefile.in\
686 \       examples/AppliSlave_Linux/Makefile.in\
687 \       examples/TestMasterSlave/Makefile.in
688 fi
689
690 if [ "$SUB_TARGET" = "hcs12" ]; then
691         MAKEFILES=$MAKEFILES\
692 \       examples/AppliMaster_HCS12/Makefile.in\
693 \       examples/AppliSlave_HCS12/Makefile.in\
694 \       examples/gene_SYNC_HCS12/Makefile.in
695 fi
696
697 if [ "$SUB_TARGET" = "ecos_lpc2138_sja1000" ]; then
698         MAKEFILES=$MAKEFILES\
699 \       examples/ecos_lpc2138_sja1000/src/Makefile.in
700 fi
701
702 for makefile_in in $MAKEFILES; do
703         makefile=`echo $makefile_in | sed 's:.in$::'`
704         echo "Creating $makefile"
705         sed < $makefile_in "
706         s:SUB_CC:${CC}:
707         s:SUB_PROG_CFLAGS:${SUB_PROG_CFLAGS}:
708         s:SUB_EXE_CFLAGS:${SUB_EXE_CFLAGS}:
709         s:SUB_PREFIX:${SUB_PREFIX}:
710         s:SUB_OS_NAME:${SUB_OS_NAME}:
711         s:SUB_ARCH_NAME:${SUB_ARCH_NAME}:
712         s:SUB_OPT_CFLAGS:${SUB_OPT_CFLAGS}:
713         s:SUB_TARGET:${SUB_TARGET}:
714         s:SUB_BINUTILS_PREFIX:${SUB_BINUTILS_PREFIX}:
715         s:SUB_LSS_ENABLE:${SUB_LSS_ENABLE}:
716         s:SUB_LED_ENABLE:${SUB_LED_ENABLE}:
717         s:SUB_NVRAM_ENABLE:${SUB_NVRAM_ENABLE}:
718         s:SUB_TIMERS_ENABLE:${SUB_TIMERS_ENABLE}:
719         s:SUB_TIMERS_DRIVER:timers_${SUB_TIMERS_DRIVER}:
720         s:SUB_CAN_DRIVER:can_${SUB_CAN_DRIVER}:
721         s:SUB_LED_DRIVER:led_${SUB_LED_DRIVER}:
722         s:SUB_NVRAM_DRIVER:nvram_${SUB_NVRAM_DRIVER}:
723         " > $makefile
724 done
725
726 echo "All done."