chiark / gitweb /
Updated the Debian build system thanks to Ian Jackson for the
[wiringPi.git] / build
1 #!/bin/sh -e
2
3 # build
4 #       Simple wiringPi build and install script
5 #
6 #       Copyright (c) 2012-2015 Gordon Henderson
7 #################################################################################
8 # This file is part of wiringPi:
9 #       Wiring Compatable library for the Raspberry Pi
10 #
11 #    wiringPi is free software: you can redistribute it and/or modify
12 #    it under the terms of the GNU Lesser General Public License as published by
13 #    the Free Software Foundation, either version 3 of the License, or
14 #    (at your option) any later version.
15 #
16 #    wiringPi is distributed in the hope that it will be useful,
17 #    but WITHOUT ANY WARRANTY; without even the implied warranty of
18 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19 #    GNU Lesser General Public License for more details.
20 #
21 #    You should have received a copy of the GNU Lesser General Public License
22 #    along with wiringPi.  If not, see <http://www.gnu.org/licenses/>.
23 #################################################################################
24 #
25 # wiringPi is designed to run on a Raspberry Pi only.
26 #       However if you're clever enough to actually look at this script to
27 #       see why it's not building for you, then good luck.
28 #
29 #       To everyone else: Stop using cheap alternatives. Support the
30 #       Raspberry Pi Foundation as they're the only ones putting money
31 #       back into education!
32 #################################################################################
33
34 check_make_ok() {
35   if [ $? != 0 ]; then
36     echo ""
37     echo "Make Failed..."
38     echo "Please check the messages and fix any problems. If you're still stuck,"
39     echo "then please email all the output and as many details as you can to"
40     echo "  projects@drogon.net"
41     echo ""
42     exit 1
43   fi
44 }
45
46 sudo=${WIRINGPI_SUDO-sudo}
47
48 if [ x$1 = "xclean" ]; then
49   cd wiringPi
50   echo -n "wiringPi:   "        ; make clean
51   cd ../devLib
52   echo -n "DevLib:     "        ; make clean
53   cd ../gpio
54   echo -n "gpio:       "        ; make clean
55   cd ../examples
56   echo -n "Examples:   "        ; make clean
57   cd Gertboard
58   echo -n "Gertboard:  "        ; make clean
59   cd ../PiFace
60   echo -n "PiFace:     "        ; make clean
61   cd ../q2w
62   echo -n "Quick2Wire: "        ; make clean
63   cd ../PiGlow
64   echo -n "PiGlow:     "        ; make clean
65   exit
66 fi
67
68 if [ x$1 = "xuninstall" ]; then
69   cd wiringPi
70   echo -n "wiringPi: " ; $sudo make uninstall
71   cd ../devLib
72   echo -n "DevLib:   " ; $sudo make uninstall
73   cd ../gpio
74   echo -n "gpio:     " ; $sudo make uninstall
75   exit
76 fi
77
78 # Only if you know what you're doing!
79
80 if [ x$1 = "xdebian" ]; then
81   here=`pwd`
82   cd debian-template/wiringPi
83   rm -rf usr
84   cd $here/wiringPi
85   make install-deb
86   cd $here/devLib
87   make install-deb INCLUDE='-I. -I../wiringPi'
88   cd $here/gpio
89   make install-deb INCLUDE='-I../wiringPi -I../devLib' LDFLAGS=-L../debian-template/wiringPi/usr/lib
90   cd $here/debian-template
91   fakeroot dpkg-deb --build wiringPi
92   mv wiringPi.deb  wiringpi-`cat $here/VERSION`-1.deb
93   exit
94 fi
95
96 if [ x$1 != "x" ]; then
97   echo "Usage: $0 [clean | uninstall]"
98   exit 1
99 fi
100
101   echo "wiringPi Build script"
102   echo "====================="
103   echo
104
105   hardware=`fgrep Hardware /proc/cpuinfo | head -1 | awk '{ print $3 }'`
106
107 #  if [ x$hardware != "xBCM2708" ]; then
108 #    echo ""
109 #    echo "   +------------------------------------------------------------+"
110 #    echo "   |   wiringPi is designed to run on the Raspberry Pi only.    |"
111 #    echo "   |   This processor does not appear to be a Raspberry Pi.     |"
112 #    echo "   +------------------------------------------------------------+"
113 #    echo "   | In the unlikely event that you think it is a Raspberry Pi, |"
114 #    echo "   | then please accept my apologies and email the contents of  |"
115 #    echo "   | /proc/cpuinfo to projects@drogon.net.                      |"
116 #    echo "   |    - Thanks, Gordon                                        |"
117 #    echo "   +------------------------------------------------------------+"
118 #    echo ""
119 #    exit 1
120 #  fi
121
122
123   echo
124   echo "WiringPi Library"
125   cd wiringPi
126   $sudo make uninstall
127   if [ x$1 = "xstatic" ]; then
128     make -j5 static
129     check_make_ok
130     $sudo make install-static
131   else
132     make -j5
133     check_make_ok
134     $sudo make install
135   fi
136   check_make_ok
137
138   echo
139   echo "WiringPi Devices Library"
140   cd ../devLib
141   $sudo make uninstall
142   if [ x$1 = "xstatic" ]; then
143     make -j5 static
144     check_make_ok
145     $sudo make install-static
146   else
147     make -j5
148     check_make_ok
149     $sudo make install
150   fi
151   check_make_ok
152
153   echo
154   echo "GPIO Utility"
155   cd ../gpio
156   make -j5
157   check_make_ok
158   $sudo make install
159   check_make_ok
160
161 # echo
162 # echo "Examples"
163 # cd ../examples
164 # make
165 # cd ..
166
167 echo
168 echo All Done.
169 echo ""
170 echo "NOTE: To compile programs with wiringPi, you need to add:"
171 echo "    -lwiringPi"
172 echo "  to your compile line(s) To use the Gertboard, MaxDetect, etc."
173 echo "  code (the devLib), you need to also add:"
174 echo "    -lwiringPiDev"
175 echo "  to your compile line(s)."
176 echo ""