1 #!/bin/bash
3 declare -A gen_tag="ol_R5.SP8.01"
4 #### R5 SP8.01
5 declare -A wl12xx_download_target="git://git.ti.com/wl12xx/wl12xx.git"
6 declare -A wl12xx_tag=${gen_tag}
7 declare -A compatwireless_download_target="git://git.ti.com/wl12xx/compat-wireless.git"
8 declare -A compat_wireless_tag=${gen_tag}
9 declare -A compat_download_target="git://git.ti.com/wl12xx/compat.git"
10 declare -A compat_tag=${gen_tag}
11 declare -A iw_download_target="git://git.sipsolutions.net/iw.git"
12 declare -A iw_tag="0a236ef5f8e4ba7218aac7d0cdacf45673d5b35c"
14 declare -A ti_utils_download_target="git://git.ti.com/wl12xx/ti-utils.git"
15 declare -A ti_utils_commit_id=${gen_tag}
16 declare -A hostap_download_target="git://git.ti.com/wl12xx/hostap.git"
17 declare -A hostap_commit_id=${gen_tag}
21 if [ ! -e setup-env ]
22 then
23 echo "No setup-env"
24 exit 1
25 fi
26 source setup-env
27 unset PKG_CONFIG_SYSROOT_DIR
28 ME=$0
29 components="libnl openssl iw hostap wpa_supplicant crda ti-utils ti-utils-firmware compat-wireless"
30 export GIT_TREE=${WORK_SPACE}/wl12xx
31 export GIT_COMPAT_TREE=${WORK_SPACE}/compat
33 old_dir=`pwd`
35 function download ()
36 {
37 file="$2"
38 [ -e ${WORK_SPACE}/${file} ] && echo "File $file already exists. Skipping download." && return 0
39 wget "$1"
40 if [ $? -ne 0 ]
41 then
42 echo "Failed to download $file"
43 exit 1
44 fi
45 }
47 function git_clone ()
48 {
49 file="$2"
50 if [ -e ${WORK_SPACE}/${file} ]
51 then
52 echo "File $file alread exists. Skipping git clone."
53 cd ${WORK_SPACE}/${file}
54 git fetch || exit 1
55 echo "git $file fetched."
56 return 0
57 fi
58 git clone "$1"
59 if [ $? -ne 0 ]
60 then
61 echo "Failed to download $2 git repository"
62 exit 1
63 fi
64 echo "git $file cloned."
65 }
67 function compat-wireless()
68 {
69 stage=$1
72 if [ x"$stage" = "xdownload" -o x"$stage" = "xall" ]
73 then
74 cd ${WORK_SPACE}
75 git_clone ${wl12xx_download_target} wl12xx
76 cd ${WORK_SPACE}/wl12xx
77 git reset --hard ${wl12xx_tag} || exit 1
78 cd ${WORK_SPACE}
79 git_clone ${compat_download_target} compat
80 cd ${WORK_SPACE}/compat
81 git reset --hard ${compat_tag} || exit 1
82 cd ${WORK_SPACE}
83 git_clone ${compatwireless_download_target} compat-wireless
84 cd ${WORK_SPACE}/compat-wireless
85 git reset --hard ${compat_wireless_tag} || exit 1
86 fi
87 if [ x"$stage" = "xbuild" -o x"$stage" = "xall" ]
88 then
89 cd ${WORK_SPACE}/compat-wireless
90 ./scripts/admin-update.sh
91 ./scripts/driver-select wl12xx
92 patch -p1 -i ${old_dir}/patches/0001-wl12xx-additional-two-members-for-wl12xx_platform_da.patch || exit 1
93 make KLIB_BUILD=${KLIB_BUILD} KLIB=${ROOTFS} || exit 1
94 fi
95 if [ x"$stage" = "xinstall" -o x"$stage" = "xall" ]
96 then
97 cd ${WORK_SPACE}/compat-wireless
98 make KLIB_BUILD=${KLIB_BUILD} KLIB=${ROOTFS} install-modules
99 fi
101 if [ x"$stage" = "xclean" ]
102 then
103 cd $WORK_SPACE/compat-wireless
104 #make KLIB=${ROOTFS} uninstall
105 cd $WORK_SPACE && rm -rf compat-wireless
106 fi
108 cd $WORK_SPACE
109 }
110 function crda ()
111 {
112 stage=$1
113 if [ x"$stage" = "xdownload" -o x"$stage" = "xall" ]
114 then
115 download "http://linuxwireless.org/download/crda/crda-1.1.1.tar.bz2" "crda-1.1.1.tar.bz2"
116 download "http://linuxwireless.org/download/wireless-regdb/regulatory.bins/2011.04.28-regulatory.bin" "2011.04.28-regulatory.bin"
117 tar xjf crda-1.1.1.tar.bz2
118 cd ${WORK_SPACE}/crda-1.1.1
119 cp ${WORK_SPACE}/2011.04.28-regulatory.bin .
120 fi
121 if [ x"$stage" = "xbuild" -o x"$stage" = "xall" ]
122 then
123 cd ${WORK_SPACE}/crda-1.1.1
124 make USE_OPENSSL=1 all_noverify || exit 1
125 fi
126 if [ x"$stage" = "xinstall" -o x"$stage" = "xall" ]
127 then
128 cd ${WORK_SPACE}/crda-1.1.1
129 DESTDIR=${ROOTFS} make USE_OPENSSL=1 UDEV_RULE_DIR="etc/udev/rules.d/" install || exit 1
130 mkdir -p ${ROOTFS}/usr/lib/crda
131 cp 2011.04.28-regulatory.bin ${ROOTFS}/usr/lib/crda/regulatory.bin
132 fi
133 if [ x"$stage" = "xclean" ]
134 then
135 cd $WORK_SPACE/crda-1.1.1
136 DESTDIR=${ROOTFS} make clean
137 cd $WORK_SPACE && rm -rf crda-1.1.1
138 fi
139 cd $WORK_SPACE
140 }
142 function iw ()
143 {
144 stage=$1
145 if [ x"$stage" = "xdownload" -o x"$stage" = "xall" ]
146 then
147 git_clone "${iw_download_target}" iw
148 cd ${WORK_SPACE}/iw
149 git reset --hard ${iw_tag} || exit 1
150 fi
151 if [ x"$stage" = "xbuild" -o x"$stage" = "xall" ]
152 then
153 cd ${WORK_SPACE}/iw
154 make || exit 1
155 fi
157 if [ x"$stage" = "xinstall" -o x"$stage" = "xall" ]
158 then
159 cd ${WORK_SPACE}/iw
160 DESTDIR=${ROOTFS} make install || exit 1
161 fi
162 if [ x"$stage" = "xclean" ]
163 then
164 cd $WORK_SPACE/iw
165 make clean
166 fi
167 cd $WORK_SPACE
168 }
169 function libnl ()
170 {
171 stage=$1
172 if [ x"$stage" = x"download" -o x"$stage" = "xall" ]
173 then
174 download http://www.infradead.org/~tgr/libnl/files/libnl-2.0.tar.gz libnl-2.0.tar.gz
175 tar xzf libnl-2.0.tar.gz
176 cd ${WORK_SPACE}/libnl-2.0
177 ./configure --prefix=${ROOTFS} CC=${CROSS_COMPILE}gcc LD=${CROSS_COMPILE}ld RANLIB=${CROSS_COMPILE}ranlib --host=arm-linux
178 if [ $? != 0 ]
179 then
180 echo "libnl failed to be configured"
181 exit 1
182 fi
183 fi
185 if [ x"$stage" = "xbuild" -o x"$stage" = "xall" ]
186 then
187 cd ${WORK_SPACE}/libnl-2.0
188 make || exit 1
189 fi
190 if [ x"$stage" = "xinstall" -o x"$stage" = "xall" ]
191 then
192 cd ${WORK_SPACE}/libnl-2.0
193 make install || exit 1
194 fi
195 if [ x"$stage" = "xclean" ]
196 then
197 cd $WORK_SPACE/libnl-2.0
198 make uninstall
199 cd .. && rm -rf libnl-2.0
200 fi
201 cd $WORK_SPACE
203 }
204 function openssl ()
205 {
206 stage=$1
207 if [ x"$stage" = x"download" -o x"$stage" = "xall" ]
208 then
209 cd ${WORK_SPACE}
210 download "http://www.openssl.org/source/openssl-1.0.0d.tar.gz" "openssl-1.0.0d.tar.gz"
211 tar xzf openssl-1.0.0d.tar.gz
212 cd ${WORK_SPACE}/openssl-1.0.0d
213 patch -p1 -i ${old_dir}/patches/0001-openssl-1.0.0d-new-target-os-for-configure.patch
214 CROSS_COMPILE= perl ./Configure shared --prefix=$ROOTFS/usr --openssldir=$ROOTFS/usr/lib/ssl linux-elf-arm
215 fi || exit 1
216 if [ x"$stage" = "xbuild" -o x"$stage" = "xall" ]
217 then
218 cd ${WORK_SPACE}/openssl-1.0.0d
219 make || exit 1
220 fi
221 if [ x"$stage" = "xinstall" -o x"$stage" = "xall" ]
222 then
223 cd ${WORK_SPACE}/openssl-1.0.0d
224 make install_sw || exit 1
225 fi
226 if [ x"$stage" = "xclean" ]
227 then
228 cd ${WORK_SPACE}/openssl-1.0.0d
229 rm -f ${ROOTFS}/usr/lib/*ssl* ${ROOTFS}/usr/lib/pkgconfig/*ssl*
230 cd .. && rm -rf openssl-1.0.0d
231 fi
232 cd $WORK_SPACE
233 }
234 function ti-utils ()
235 {
236 stage=$1
238 if [ x"$stage" = x"download" -o x"$stage" = "xall" ]
239 then
240 git_clone "${ti_utils_download_target}" ti-utils
241 cd ${WORK_SPACE}/ti-utils
242 git reset --hard "${ti_utils_commit_id}"
243 fi
245 if [ x"$stage" = "xbuild" -o x"$stage" = "xall" ]
246 then
247 cd ${WORK_SPACE}/ti-utils
248 NFSROOT=${ROOTFS} make || exit 1
249 fi
250 if [ x"$stage" = "xinstall" -o x"$stage" = "xall" ]
251 then
252 cd ${WORK_SPACE}/ti-utils
253 #NFSROOT=${ROOTFS} make install || exit 1
254 if [ ! -x calibrator ]
255 then
256 echo "calibrator is not built, run 'make' first"
257 exit 1
258 fi
259 cp -f ./calibrator ${ROOTFS}/home/root
260 chmod 755 ${ROOTFS}/home/root/calibrator
261 fi
262 if [ x"$stage" = "xclean" ]
263 then
264 cd ${WORK_SPACE}/ti-utils
265 NFSROOT=${ROOTFS} make clean
266 rm -f ${ROOTFS}/home/root/calibrator ${ROOTFS}/home/root/wl12xx-tool.sh
267 fi
268 cd $WORK_SPACE
269 }
270 function ti-utils-firmware()
271 {
272 stage=$1
274 if [ x"$stage" = "xinstall" -o x"$stage" = "xall" ]
275 then
276 mkdir -p $ROOTFS/lib/firmware/ti-connectivity
277 cp ${WORK_SPACE}/ti-utils/hw/firmware/* $ROOTFS/lib/firmware/ti-connectivity
278 rm -f $ROOTFS/lib/hw/firmware/ti-connectivity/Makefile
279 cp -r ${WORK_SPACE}/ti-utils/hw/ini_files $ROOTFS/lib/firmware/ti-connectivity
280 fi
281 if [ x"$stage" = "xclean" ]
282 then
283 rm -rf $ROOTFS/lib/firmware/ti-connectivity
284 fi
285 cd $WORK_SPACE
286 }
288 function make_hostapd_defconfig ()
289 {
290 cat > .config <<"hostapd_defconfig"
291 # Example hostapd build time configuration
292 #
293 # This file lists the configuration options that are used when building the
294 # hostapd binary. All lines starting with # are ignored. Configuration option
295 # lines must be commented out complete, if they are not to be included, i.e.,
296 # just setting VARIABLE=n is not disabling that variable.
297 #
298 # This file is included in Makefile, so variables like CFLAGS and LIBS can also
299 # be modified from here. In most cass, these lines should use += in order not
300 # to override previous values of the variables.
302 DESTDIR=$(ROOTFS)
303 # Driver interface for Host AP driver
304 CONFIG_DRIVER_HOSTAP=y
306 # Driver interface for wired authenticator
307 #CONFIG_DRIVER_WIRED=y
309 # Driver interface for drivers using the nl80211 kernel interface
310 CONFIG_DRIVER_NL80211=y
311 CONFIG_LIBNL20=y
312 # driver_nl80211.c requires a rather new libnl (version 1.1) which may not be
313 # shipped with your distribution yet. If that is the case, you need to build
314 # newer libnl version and point the hostapd build to use it.
315 #LIBNL=/usr/src/libnl
316 #CFLAGS += -I$(LIBNL)/include
317 #LIBS += -L$(LIBNL)/lib
319 # Driver interface for FreeBSD net80211 layer (e.g., Atheros driver)
320 #CONFIG_DRIVER_BSD=y
321 #CFLAGS += -I/usr/local/include
322 #LIBS += -L/usr/local/lib
323 #LIBS_p += -L/usr/local/lib
324 #LIBS_c += -L/usr/local/lib
326 # Driver interface for no driver (e.g., RADIUS server only)
327 #CONFIG_DRIVER_NONE=y
329 # IEEE 802.11F/IAPP
330 CONFIG_IAPP=y
332 # WPA2/IEEE 802.11i RSN pre-authentication
333 CONFIG_RSN_PREAUTH=y
335 # PeerKey handshake for Station to Station Link (IEEE 802.11e DLS)
336 CONFIG_PEERKEY=y
338 # IEEE 802.11w (management frame protection)
339 # This version is an experimental implementation based on IEEE 802.11w/D1.0
340 # draft and is subject to change since the standard has not yet been finalized.
341 # Driver support is also needed for IEEE 802.11w.
342 #CONFIG_IEEE80211W=y
344 # Integrated EAP server
345 CONFIG_EAP=y
347 # EAP-MD5 for the integrated EAP server
348 CONFIG_EAP_MD5=y
350 # EAP-TLS for the integrated EAP server
351 CONFIG_EAP_TLS=y
353 # EAP-MSCHAPv2 for the integrated EAP server
354 CONFIG_EAP_MSCHAPV2=y
356 # EAP-PEAP for the integrated EAP server
357 CONFIG_EAP_PEAP=y
359 # EAP-GTC for the integrated EAP server
360 CONFIG_EAP_GTC=y
362 # EAP-TTLS for the integrated EAP server
363 CONFIG_EAP_TTLS=y
365 # EAP-SIM for the integrated EAP server
366 #CONFIG_EAP_SIM=y
368 # EAP-AKA for the integrated EAP server
369 #CONFIG_EAP_AKA=y
371 # EAP-AKA' for the integrated EAP server
372 # This requires CONFIG_EAP_AKA to be enabled, too.
373 #CONFIG_EAP_AKA_PRIME=y
375 # EAP-PAX for the integrated EAP server
376 #CONFIG_EAP_PAX=y
378 # EAP-PSK for the integrated EAP server (this is _not_ needed for WPA-PSK)
379 #CONFIG_EAP_PSK=y
381 # EAP-SAKE for the integrated EAP server
382 #CONFIG_EAP_SAKE=y
384 # EAP-GPSK for the integrated EAP server
385 #CONFIG_EAP_GPSK=y
386 # Include support for optional SHA256 cipher suite in EAP-GPSK
387 #CONFIG_EAP_GPSK_SHA256=y
389 # EAP-FAST for the integrated EAP server
390 # Note: Default OpenSSL package does not include support for all the
391 # functionality needed for EAP-FAST. If EAP-FAST is enabled with OpenSSL,
392 # the OpenSSL library must be patched (openssl-0.9.9-session-ticket.patch)
393 # to add the needed functions.
394 #CONFIG_EAP_FAST=y
396 # Wi-Fi Protected Setup (WPS)
397 CONFIG_WPS=y
398 # Enable WSC 2.0 support
399 CONFIG_WPS2=y
400 # Enable UPnP support for external WPS Registrars
401 CONFIG_WPS_UPNP=y
403 # EAP-IKEv2
404 #CONFIG_EAP_IKEV2=y
406 # Trusted Network Connect (EAP-TNC)
407 #CONFIG_EAP_TNC=y
409 # PKCS#12 (PFX) support (used to read private key and certificate file from
410 # a file that usually has extension .p12 or .pfx)
411 CONFIG_PKCS12=y
413 # RADIUS authentication server. This provides access to the integrated EAP
414 # server from external hosts using RADIUS.
415 #CONFIG_RADIUS_SERVER=y
417 # Build IPv6 support for RADIUS operations
418 CONFIG_IPV6=y
420 # IEEE Std 802.11r-2008 (Fast BSS Transition)
421 #CONFIG_IEEE80211R=y
423 # Use the hostapd's IEEE 802.11 authentication (ACL), but without
424 # the IEEE 802.11 Management capability (e.g., madwifi or FreeBSD/net80211)
425 #CONFIG_DRIVER_RADIUS_ACL=y
427 # IEEE 802.11n (High Throughput) support
428 CONFIG_IEEE80211N=y
430 # Remove debugging code that is printing out debug messages to stdout.
431 # This can be used to reduce the size of the hostapd considerably if debugging
432 # code is not needed.
433 #CONFIG_NO_STDOUT_DEBUG=y
435 # Remove support for RADIUS accounting
436 #CONFIG_NO_ACCOUNTING=y
438 # Remove support for RADIUS
439 #CONFIG_NO_RADIUS=y
441 # Remove support for VLANs
442 #CONFIG_NO_VLAN=y
444 # Remove support for dumping state into a file on SIGUSR1 signal
445 # This can be used to reduce binary size at the cost of disabling a debugging
446 # option.
447 #CONFIG_NO_DUMP_STATE=y
449 CONFIG_NO_RANDOM_POOL=y
450 LIBNL=$(ROOTFS)
451 CFLAGS += -I$(LIBNL)/include -I$(ROOTFS)/usr/include/
452 LIBS += -L$(LIBNL)/lib -L$(LIBNL)/lib -L$(ROOTFS)/usr/lib -lssl -lcrypto -ldl
453 LIBS_p += -L$(LIBNL)/lib -L$(LIBNL)/lib -L$(ROOTFS)/usr/lib -lssl -lcrypto -ldl
454 hostapd_defconfig
455 }
457 function hostap()
458 {
459 stage=$1
460 if [ x"$stage" = x"download" -o x"$stage" = "xall" ]
461 then
462 git_clone "${hostap_download_target}" hostap
463 cd ${WORK_SPACE}/hostap
464 git reset --hard "${hostap_commit_id}"
465 fi
466 if [ x"$stage" = "xbuild" -o x"$stage" = "xall" ]
467 then
468 cd ${WORK_SPACE}/hostap/hostapd
469 make_hostapd_defconfig
470 make clean || exit 1
471 make || exit 1
472 fi
473 if [ x"$stage" = "xinstall" -o x"$stage" = "xall" ]
474 then
475 cd ${WORK_SPACE}/hostap/hostapd
476 make install || exit 1
477 for i in hostapd hostapd_cli; do cp -f $i ${ROOTFS}/usr/sbin/$i || exit 1; done
478 fi
479 if [ x"$stage" = "xclean" ]
480 then
481 cd ${WORK_SPACE}/hostap/hostapd
482 make clean
483 cd ../wpa_supplicant
484 make clean
485 fi
486 cd $WORK_SPACE
488 }
490 function make_wpa_sup_defconfig ()
491 {
492 cat > .config <<"wpa_sup_defconfig"
493 # Example wpa_supplicant build time configuration
494 DESTDIR=$(ROOTFS)
495 CFLAGS += -I$(ROOTFS)/usr/include/
496 LIBS += -L$(ROOTFS)/usr/lib
497 LIBS_p += -L$(ROOTFS)/usr/lib
498 CONFIG_WAPI=y
499 CONFIG_LIBNL20=y
500 NEED_BGSCAN=y
501 CONFIG_BGSCAN_LEARN=y
502 # Driver interface for generic Linux wireless extensions
503 CONFIG_DRIVER_WEXT=y
504 # Driver interface for Linux drivers using the nl80211 kernel interface
505 CONFIG_DRIVER_NL80211=y
506 # Driver interface for wired Ethernet drivers
507 CONFIG_DRIVER_WIRED=y
508 # Enable IEEE 802.1X Supplicant (automatically included if any EAP method is
509 # included)
510 CONFIG_IEEE8021X_EAPOL=y
511 # EAP-MD5
512 CONFIG_EAP_MD5=y
513 # EAP-MSCHAPv2
514 CONFIG_EAP_MSCHAPV2=y
515 # EAP-TLS
516 CONFIG_EAP_TLS=y
517 # EAL-PEAP
518 CONFIG_EAP_PEAP=y
519 # EAP-TTLS
520 CONFIG_EAP_TTLS=y
521 # EAP-GTC
522 CONFIG_EAP_GTC=y
523 # EAP-OTP
524 CONFIG_EAP_OTP=y
525 # LEAP
526 CONFIG_EAP_LEAP=y
527 # Wi-Fi Protected Setup (WPS)
528 CONFIG_WPS=y
529 # Enable WSC 2.0 support
530 CONFIG_WPS2=y
531 # PKCS#12 (PFX) support (used to read private key and certificate file from
532 # a file that usually has extension .p12 or .pfx)
533 CONFIG_PKCS12=y
534 # Smartcard support (i.e., private key on a smartcard), e.g., with openssl
535 # engine.
536 CONFIG_SMARTCARD=y
537 # Select control interface backend for external programs, e.g, wpa_cli:
538 # unix = UNIX domain sockets (default for Linux/*BSD)
539 # udp = UDP sockets using localhost (127.0.0.1)
540 # named_pipe = Windows Named Pipe (default for Windows)
541 # y = use default (backwards compatibility)
542 # If this option is commented out, control interface is not included in the
543 # build.
544 CONFIG_CTRL_IFACE=y
545 # Select configuration backend:
546 # file = text file (e.g., wpa_supplicant.conf; note: the configuration file
547 # path is given on command line, not here; this option is just used to
548 # select the backend that allows configuration files to be used)
549 # winreg = Windows registry (see win_example.reg for an example)
550 CONFIG_BACKEND=file
551 # PeerKey handshake for Station to Station Link (IEEE 802.11e DLS)
552 CONFIG_PEERKEY=y
553 # Add support for writing debug log to a file (/tmp/wpa_supplicant-log-#.txt)
554 CONFIG_DEBUG_FILE=y
555 LIBNL=$(ROOTFS)
556 CFLAGS += -I$(LIBNL)/include
557 LIBS += -L$(LIBNL)/lib -lssl -lcrypto -ldl
558 LIBS_p += -L$(LIBNL)/lib -lssl -lcrypto -ldl
559 # for p2p
560 CONFIG_P2P=y
561 CONFIG_AP=y
562 wpa_sup_defconfig
563 }
565 function wpa_supplicant ()
566 {
567 stage=$1
568 if [ x"$stage" = x"build" -o x"$stage" = "xall" ]
569 then
570 cd ${WORK_SPACE}/hostap/wpa_supplicant
571 make clean
572 make_wpa_sup_defconfig
573 make || exit 1
574 fi
575 if [ x"$stage" = x"install" -o x"$stage" = "xall" ]
576 then
577 cd ${WORK_SPACE}/hostap/wpa_supplicant
578 make install || exit 1
579 for i in wpa_supplicant wpa_cli wpa_passphrase; do cp $i ${ROOTFS}/usr/sbin//$i || exit 1; done
580 fi
581 cd $WORK_SPACE
582 }
584 function bridge ()
585 {
586 stage=$1
587 if [ x"$stage" = x"download" -o x"$stage" = "xall" ]
588 then
589 download "http://downloads.sourceforge.net/project/bridge/bridge/bridge-utils-1.5.tar.gz" "bridge-utils-1.5.tar.gz"
590 tar -xvzf bridge-utils-1.5.tar.gz
591 cd ${WORK_SPACE}/bridge-utils-1.5
592 autoconf
593 ./configure --prefix=${ROOTFS} CC=${CROSS_COMPILE}gcc LD=${CROSS_COMPILE}ld RANLIB=${CROSS_COMPILE}ranlib --host=arm-linux
594 if [ $? != 0 ]
595 then
596 echo "bridge failed to be configured"
597 exit 1
598 fi
599 fi
600 if [ x"$stage" = "xbuild" -o x"$stage" = "xall" ]
601 then
602 cd ${WORK_SPACE}/bridge-utils-1.5
603 make || exit 1
604 fi
605 if [ x"$stage" = "xinstall" -o x"$stage" = "xall" ]
606 then
607 cd ${WORK_SPACE}/bridge-utils-1.5
608 make install
609 cp ./brctl/brctl ${ROOTFS}/usr/sbin/ || exit 1
610 fi
611 if [ x"$stage" = "xclean" ]
612 then
613 cd $WORK_SPACE/bridge-utils-1.5
614 # make uninstall
615 cd .. && rm -rf bridge-utils-1.5
616 fi
617 cd $WORK_SPACE
618 }
622 function usage ()
623 {
624 echo "This script compiles one of following utilities: libnl, openssl, hostapd, wpa_supplicant,wl12xx_modules,firmware,crda,calibrator"
625 echo "by calling specific utility name and action."
626 echo "In case the options is 'all' all utilities will be downloaded and installed on root file system."
627 echo "File setup-env contains all required environment variables, for example:"
628 echo " ROOTFS=<path to target root file system>."
629 echo "Part of operations requires root access."
630 echo "Usage: `basename $ME` target <libnl"
631 echo " openssl"
632 echo " hostapd"
633 echo " wpa_supplicant"
634 echo " wl12xx_modules"
635 echo " firmware"
636 echo " crda"
637 echo " bridge"
638 echo " calibrator> action <download|build|install>"
639 echo " all"
640 echo " clean-all"
641 }
643 function check_libs()
644 {
645 local openssl=`pkg-config --exists openssl`
646 local libnl=`pkg-config --exists libnl-2.0`
647 package=$1
649 if [ $openssl -ne 0 -o $libnl -ne 0 ]
650 then
651 echo "Cannot build $1: openssl and libnl should be installed first."
652 exit 1
653 fi
654 }
655 function package_dir_exists()
656 {
657 if [ -d "$1" ]
658 then
659 echo "Package $2 already downloaded at: $1"
660 return 1
661 fi
662 return 0
663 }
664 function check_env()
665 {
666 [ -e ${WORK_SPACE}/.check_env.stamp ] && return 0
667 which dpkg 2>&1>/dev/null || return 0
668 err=0
669 ret=0
670 packages="python python-m2crypto bash bison flex perl bc corkscrew"
671 for p in ${packages}
672 do
673 echo -n "Checking ${p}..."
674 present=`dpkg --get-selections ${p} 2>/dev/null | awk '{print $1}'`
675 [ x"${present}" != x"${p}" ] && echo "Package ${p} is not found. Please run 'apt-get install ${p}' to install it." && err=1 && ret=1
676 [ ${err} -ne 1 ] && echo "OK"
677 err=0
678 done
679 return ${ret}
680 }
682 ############################# MAIN ##############################################
683 # First building environment should be checked
684 check_env || exit 1
685 if [ -z $CROSS_COMPILE ]
686 then
687 #lets find some
688 tool_path=`which arm-none-linux-gnueabi-gcc`
689 if [ $? -ne 0 ]
690 then
691 echo "No tool chain is found"
692 exit 1
693 fi
694 export CROSS_COMPILE=`dirname $tool_path`/arm-none-linux-gnueabi-
695 fi
697 if [ -z $KLIB_BUILD ]
698 then
699 echo "Path to kernel sources has to be defined"
700 exit 1
701 fi
703 if [ -z $ROOTFS ]
704 then
705 echo "No path to root file system"
706 exit 1
707 fi
708 argc=$#
709 if [ $argc -lt 1 ]
710 then
711 usage
712 exit 1
713 elif [ $argc -eq 1 ]
714 then
715 if [ x"$1" != x"all" -a x"$1" != x"clean-all" ]
716 then
717 usage
718 exit 1
719 else
720 package="$1"
721 fi
722 fi
724 if [ $argc -eq 2 ]
725 then
726 package=$1
727 stage=$2
728 fi
729 if [ ! -d $WORK_SPACE ]
730 then
731 mkdir -p $WORK_SPACE
732 touch ${WORK_SPACE}/.check_env.stamp
733 fi
734 cd $WORK_SPACE
736 case $package in
737 libnl)
738 case $stage in
739 download )
740 package_dir_exists ${WORK_SPACE}/libnl-2.0 libnl-2 && libnl "download"
741 ;;
742 build)
743 package_dir_exists ${WORK_SPACE}/libnl-2.0 libnl-2
744 if [ ! $? ]
745 then
746 libnl "download"
747 fi
748 cd ${WORK_SPACE}/libnl-2.0
749 libnl "build"
750 ;;
751 install)
752 package_dir_exists ${WORK_SPACE}/libnl-2.0 libnl-2
753 if [ ! $? ]
754 then
755 libnl "all" && exit
756 else
757 cd ${WORK_SPACE}/libnl-2.0
758 libnl "install"
759 fi
760 ;;
761 all)
762 package_dir_exists ${WORK_SPACE}/libnl-2.0 libnl-2 || rm -rf libnl-2.0
763 libnl "all"
764 ;;
765 *)
766 echo "Error: illegal action for libnl"
767 exit 1
768 esac
769 ;;
770 openssl)
771 case $stage in
772 download )
773 package_dir_exists ${WORK_SPACE}/openssl-1.0.0d openssl || exit 1
774 openssl "download"
775 ;;
776 build)
777 package_dir_exists ${WORK_SPACE}/openssl-1.0.0d openssl
778 if [ ! $? ]
779 then
780 openssl "download"
781 fi
782 cd ${WORK_SPACE}/openssl-1.0.0d
783 openssl "build"
784 ;;
785 install)
786 package_dir_exists ${WORK_SPACE}/openssl-1.0.0d openssl
787 test [ ! $? ] && openssl "all" && exit 0
788 cd ${WORK_SPACE}/openssl-1.0.0d
789 openssl "install"
790 ;;
791 all)
792 package_dir_exists ${WORK_SPACE}/openssl-1.0.0d openssl || rm -rf openssl-1.0.0d
793 openssl "all"
794 ;;
795 esac
796 ;;
797 iw)
798 case $stage in
799 download )
800 package_dir_exists ${WORK_SPACE}/iw iw || exit 1
801 iw "download"
802 ;;
803 build)
804 package_dir_exists ${WORK_SPACE}/iw iw
805 [ ! $? ] && iw "download"
806 check_libs iw
807 iw "build"
808 ;;
809 install)
810 package_dir_exists ${WORK_SPACE}/iw iw
811 [ ! $? ] && iw "donwload"
812 [ ! -x ${WORK_SPACE}/iw/iw ] && iw "build"
813 iw "install"
814 ;;
815 all)
817 package_dir_exists ${WORK_SPACE}/iw iw || rm -rf ${WORK_SPACE}/iw
818 iw "all"
819 ;;
820 *)
821 echo "Error: illegal action for iw"
822 exit 1
823 ;;
824 esac
825 ;;
826 hostapd)
827 case $stage in
828 download)
829 package_dir_exists ${WORK_SPACE}/hostap hostapd || exit 1
830 hostap "download"
831 ;;
832 build)
833 if [ ! -d ${WORK_SPACE}/hostap ]
834 then
835 hostap "download"
836 fi
837 cd ${WORK_SPACE}/hostap
838 hostap "build"
839 ;;
840 install)
841 if [ ! -d ${WORK_SPACE}/hostap ]
842 then
843 hostap "download"
844 fi
845 if [ ! -e ${WORK_SPACE}/hostap/hostapd/hostapd ]
846 then
847 hostap "build"
848 fi
849 hostap "install"
850 ;;
851 all)
852 package_dir_exists ${WORK_SPACE}/hostap hostapd || rm -rf ${WORK_SPACE}/hostap
853 hostap "all"
854 ;;
855 *)
856 echo "Error: illegal action for hostapd"
857 exit 1
858 ;;
859 esac
861 ;;
862 wpa_supplicant)
863 case $stage in
864 download)
865 package_dir_exists ${WORK_SPACE}/hostap wpa_supplicant || exit 1
866 hostap "download"
867 ;;
868 build)
869 if [ ! -e ${WORK_SPACE}/hostap ]
870 then
871 hostap "download"
872 fi
873 wpa_supplicant "build"
874 ;;
875 install)
876 if [ ! -e ${WORK_SPACE}/hostap ]
877 then
878 hostap "download"
879 fi
880 if [ ! -e ${WORK_SPACE}/hostap/wpa_supplicant/wpa_supplicant ]
881 then
882 wpa_supplicant "build"
883 fi
884 wpa_supplicant "install"
885 ;;
886 *)
887 echo "Error: illegal action for hostapd"
888 exit 1
889 ;;
890 esac
891 ;;
892 wl12xx_modules)
893 case $stage in
894 download)
895 package_dir_exists ${WORK_SPACE}/compat-wireless compat-wireless || exit 1
896 compat-wireless "download"
897 ;;
898 build)
899 if [ ! -d ${WORK_SPACE}/compat-wireless ]
900 then
901 compat-wireless "download"
902 fi
903 cd ${WORK_SPACE}/compat-wireless
904 compat-wireless "build"
905 ;;
906 install)
907 if [ ! -d ${WORK_SPACE}/compat-wireless ]
908 then
909 compat-wireless "all"
910 else
911 cd ${WORK_SPACE}/compat-wireless
912 compat-wireless "install"
913 fi
914 ;;
915 all)
916 package_dir_exists ${WORK_SPACE}/compat-wireless compat-wireless || rm -rf ${WORK_SPACE}/compat-wireless
917 compat-wireless "all"
918 ;;
919 *)
920 echo "Error: illegal action for wl12xx_modules"
921 exit 1
922 ;;
923 esac
925 ;;
926 calibrator)
927 case $stage in
928 download)
929 if [ -d ${WORK_SPACE}/ti-utils ]
930 then
931 echo "Calibrator is part of ti-utils package that already exists at: ${WORK_SPACE}/ti-utils"
932 exit 0
933 fi
934 ti-utils "download"
935 ;;
936 build)
937 if [ ! -d ${WORK_SPACE}/ti-utils ]
938 then
939 ti-utils "download"
940 fi
941 cd ${WORK_SPACE}/ti-utils
942 ti-utils "build"
943 ;;
944 install)
945 if [ ! -d ${WORK_SPACE}/ti-utils ]
946 then
947 ti-utils "all"
948 else
949 if [ ! -e ${WORK_SPACE}/ti-utils/calibrator ]
950 then
951 ti-utils "build"
952 fi
953 ti-utils "install"
954 fi
955 ;;
956 all)
957 ti-utils "all"
958 ;;
959 *)
960 echo "Error: illegal action for calibrator"
961 exit 1
962 ;;
963 esac
964 ;;
965 firmware)
966 if [ x$stage = "xclean" -o x$stage = "xinstall" -o x$stage = "xall" ]
967 then
969 if [ ! -d ti-utils/ ]
970 then
971 ti-utils "download"
972 fi
974 ti-utils-firmware $2
975 else
976 echo "illegal action for firmware"
977 exit 1
978 fi
979 ;;
980 crda)
981 case $stage in
982 download)
983 package_dir_exists ${WORK_SPACE}/crda-1.1.1 crda || exit 1
984 crda "download"
985 ;;
986 build)
987 if [ ! -d ${WORK_SPACE}/crda-1.1.1 ]
988 then
989 crda "download"
990 fi
991 cd ${WORK_SPACE}/crda-1.1.1
992 crda "build"
993 ;;
994 install)
995 if [ ! -d ${WORK_SPACE}/crda-1.1.1 ]
996 then
997 crda "all"
998 else
999 cd ${WORK_SPACE}/crda-1.1.1
1000 crda "install"
1001 fi
1002 ;;
1003 all)
1004 package_dir_exists ${WORK_SPACE}/crda-1.1.1 crda || rm -rf ${WORK_SPACE}/crda-1.1.1
1005 crda "all"
1006 ;;
1007 *)
1008 echo "Error: illegal action for crda"
1009 exit 1
1010 ;;
1011 esac
1012 ;;
1013 bridge)
1014 case $stage in
1015 download)
1016 package_dir_exists ${WORK_SPACE}/bridge-utils-1.5 bridge || exit 1
1017 bridge "download"
1018 ;;
1019 build)
1020 if [ ! -d ${WORK_SPACE}/bridge-utils-1.5 ]
1021 then
1022 bridge "download"
1023 fi
1024 cd ${WORK_SPACE}/bridge-utils-1.5
1025 bridge "build"
1026 ;;
1027 install)
1028 if [ ! -d ${WORK_SPACE}/bridge-utils-1.5 ]
1029 then
1030 bridge "all"
1031 else
1032 cd ${WORK_SPACE}/bridge-utils-1.5
1033 bridge "install"
1034 fi
1035 ;;
1036 all)
1037 package_dir_exists ${WORK_SPACE}/bridge-utils-1.5 bridge || rm -rf ${WORK_SPACE}/bridge-utils-1.5
1038 bridge "all"
1039 ;;
1040 *)
1041 echo "Error: illegal action for bridge"
1042 exit 1
1043 ;;
1044 esac
1045 ;;
1046 all)
1047 echo "bridge ***********************************************************************************"
1048 bridge "all"
1049 echo "libnl ***********************************************************************************"
1050 libnl "all"
1051 echo "openssl ***********************************************************************************"
1052 openssl "all"
1053 echo "iw ***********************************************************************************"
1054 iw "all"
1055 echo "hostap ***********************************************************************************"
1056 hostap "all"
1057 echo "wpa_supplicant ***********************************************************************************"
1058 wpa_supplicant "all"
1059 echo "crda ***********************************************************************************"
1060 crda "all"
1061 echo "ti-utils ***********************************************************************************"
1062 ti-utils "all"
1063 echo "ti-utils-firmware ***********************************************************************************"
1064 ti-utils-firmware "all"
1065 echo "compat-wireless ***********************************************************************************"
1066 compat-wireless "all"
1067 ;;
1068 clean-all)
1069 bridge "clean"
1070 compat-wireless "clean"
1071 ti-utils "clean"
1072 crda "clean"
1073 hostap "clean"
1074 iw "clean"
1075 openssl "clean"
1076 libnl "clean"
1077 ti-utils-firmware "clean"
1078 ;;
1079 *)
1080 usage
1081 exit 1
1082 esac