chiark / gitweb /
Makefiles: Honour LDCONFIG from the environment
[wiringPi.git] / wiringPi / Makefile
index 3798ce08a67235a21bd8d80dbd50f4d1485c2a5f..5518c9e50ab687fb029b31113b1595e8de7de2b0 100644 (file)
@@ -2,7 +2,7 @@
 # Makefile:
 #      wiringPi - Wiring Compatable library for the Raspberry Pi
 #
-#      Copyright (c) 2012 Gordon Henderson
+#      Copyright (c) 2012-2015 Gordon Henderson
 #################################################################################
 # This file is part of wiringPi:
 #      https://projects.drogon.net/raspberry-pi/wiringpi/
 #    along with wiringPi.  If not, see <http://www.gnu.org/licenses/>.
 #################################################################################
 
+VERSION=$(shell cat ../VERSION)
+DESTDIR?=/usr
+PREFIX?=/local
 
-TARGET=libwiringPi.a
+LDCONFIG?=ldconfig
+
+ifneq ($V,1)
+Q ?= @
+endif
+
+STATIC=libwiringPi.a
+DYNAMIC=libwiringPi.so.$(VERSION)
 
 #DEBUG = -g -O0
-DEBUG  = -O3
+DEBUG  = -O2
 CC     = gcc
 INCLUDE        = -I.
-CFLAGS = $(DEBUG) -Wall $(INCLUDE) -Winline -pipe
+DEFS   = -D_GNU_SOURCE
+CFLAGS = $(DEBUG) $(DEFS) -Wformat=2 -Wall -Winline $(INCLUDE) -pipe -fPIC
 
 LIBS    =
 
-# Should not alter anything below this line
 ###############################################################################
 
-SRC    =       wiringPi.c wiringPiFace.c wiringSerial.c wiringShift.c  \
-               gertboard.c                                             \
-               piNes.c                                                 \
-               lcd.c piHiPri.c piThread.c
-
-OBJ    =       wiringPi.o wiringPiFace.o wiringSerial.o wiringShift.o  \
-               gertboard.o                                             \
-               piNes.o                                                 \
-               lcd.o piHiPri.o piThread.o
-
-all:           $(TARGET)
-
-$(TARGET):     $(OBJ)
-       @echo [AR] $(OBJ)
-       @ar rcs $(TARGET) $(OBJ)
-       @ranlib $(TARGET)
-       @size   $(TARGET)
+SRC    =       wiringPi.c                                              \
+               wiringSerial.c wiringShift.c                            \
+               piHiPri.c piThread.c                                    \
+               wiringPiSPI.c wiringPiI2C.c                             \
+               softPwm.c softTone.c                                    \
+               mcp23008.c mcp23016.c mcp23017.c                        \
+               mcp23s08.c mcp23s17.c                                   \
+               sr595.c                                                 \
+               pcf8574.c pcf8591.c                                     \
+               mcp3002.c mcp3004.c mcp4802.c mcp3422.c                 \
+               max31855.c max5322.c                                    \
+               sn3218.c                                                \
+               drcSerial.c                                             \
+               wpiExtensions.c
+
+HEADERS =      wiringPi.h                                              \
+               wiringSerial.h wiringShift.h                            \
+               wiringPiSPI.h wiringPiI2C.h                             \
+               softPwm.h softTone.h                                    \
+               mcp23008.h mcp23016.h mcp23017.h                        \
+               mcp23s08.h mcp23s17.h                                   \
+               sr595.h                                                 \
+               pcf8574.h pcf8591.h                                     \
+               mcp3002.h mcp3004.h mcp4802.h mcp3422.h                 \
+               max31855.h max5322.h                                    \
+               sn3218.h                                                \
+               drcSerial.h                                             \
+               wpiExtensions.h 
+
+
+OBJ    =       $(SRC:.c=.o)
+
+all:           $(DYNAMIC)
+
+static:                $(STATIC)
+
+$(STATIC):     $(OBJ)
+       $Q echo "[Link (Static)]"
+       $Q ar rcs $(STATIC) $(OBJ)
+       $Q ranlib $(STATIC)
+#      @size   $(STATIC)
+
+$(DYNAMIC):    $(OBJ)
+       $Q echo "[Link (Dynamic)]"
+       $Q $(CC) -shared -Wl,-soname,libwiringPi.so -o libwiringPi.so.$(VERSION) -lpthread $(OBJ)
 
 .c.o:
-       @echo [CC] $<
-       @$(CC) -c $(CFLAGS) $< -o $@
+       $Q echo [Compile] $<
+       $Q $(CC) -c $(CFLAGS) $< -o $@
+
 
+.PHONY:        clean
 clean:
-       rm -f $(OBJ) $(TARGET) *~ core tags Makefile.bak
+       $Q echo "[Clean]"
+       $Q rm -f $(OBJ) $(OBJ_I2C) *~ core tags Makefile.bak libwiringPi.*
 
+.PHONY:        tags
 tags:  $(SRC)
-       @echo [ctags]
-       @ctags $(SRC)
-
-depend:
-       makedepend -Y $(SRC)
-
-install:       $(TARGET)
-       @echo [install]
-       install -m 0755 -d /usr/local/lib
-       install -m 0755 -d /usr/local/include
-       install -m 0644 wiringPi.h      /usr/local/include
-       install -m 0644 wiringSerial.h  /usr/local/include
-       install -m 0644 wiringShift.h   /usr/local/include
-       install -m 0644 gertboard.h     /usr/local/include
-       install -m 0644 piNes.h         /usr/local/include
-       install -m 0644 lcd.h           /usr/local/include
-       install -m 0644 libwiringPi.a   /usr/local/lib
-
+       $Q echo [ctags]
+       $Q ctags $(SRC)
+
+
+.PHONY:        install
+install:       $(DYNAMIC)
+       $Q echo "[Install Headers]"
+       $Q install -m 0755 -d                                           $(DESTDIR)$(PREFIX)/include
+       $Q install -m 0644 $(HEADERS)                                   $(DESTDIR)$(PREFIX)/include
+       $Q echo "[Install Dynamic Lib]"
+       $Q install -m 0755 -d                                           $(DESTDIR)$(PREFIX)/lib
+       $Q install -m 0755 libwiringPi.so.$(VERSION)                    $(DESTDIR)$(PREFIX)/lib/libwiringPi.so.$(VERSION)
+       $Q ln -sf $(DESTDIR)$(PREFIX)/lib/libwiringPi.so.$(VERSION)     $(DESTDIR)/lib/libwiringPi.so
+       $Q $(LDCONFIG)
+
+.PHONY:        install-static
+install-static:        $(STATIC)
+       $Q echo "[Install Headers]"
+       $Q install -m 0755 -d                                           $(DESTDIR)$(PREFIX)/include
+       $Q install -m 0644 $(HEADERS)                                   $(DESTDIR)$(PREFIX)/include
+       $Q echo "[Install Static Lib]"
+       $Q install -m 0755 -d                                           $(DESTDIR)$(PREFIX)/lib
+       $Q install -m 0755 libwiringPi.a                                        $(DESTDIR)$(PREFIX)/lib
+
+.PHONY:        install-deb
+install-deb:   $(DYNAMIC)
+       $Q echo "[Install Headers: deb]"
+       $Q install -m 0755 -d                                                   ~/wiringPi/debian-template/wiringPi/usr/include
+       $Q install -m 0644 $(HEADERS)                                           ~/wiringPi/debian-template/wiringPi/usr/include
+       $Q echo "[Install Dynamic Lib: deb]"
+       install -m 0755 -d                                                      ~/wiringPi/debian-template/wiringPi/usr/lib
+       install -m 0755 libwiringPi.so.$(VERSION)                               ~/wiringPi/debian-template/wiringPi/usr/lib/libwiringPi.so.$(VERSION)
+       ln -sf ~/wiringPi/debian-template/wiringPi/usr/lib/libwiringPi.so.$(VERSION)    ~/wiringPi/debian-template/wiringPi/usr/lib/libwiringPi.so
+
+.PHONY:        uninstall
 uninstall:
-       @echo [uninstall]
-       rm -f /usr/local/include/lcd.h
-       rm -f /usr/local/include/lpiNes.h
-       rm -f /usr/local/include/gertboard.h
-       rm -f /usr/local/include/wiringShift.h
-       rm -f /usr/local/include/wiringSerial.h
-       rm -f /usr/local/include/wiringPi.h
-       rm -f /usr/local/lib/libwiringPi.a
+       $Q echo "[UnInstall]"
+       $Q cd $(DESTDIR)$(PREFIX)/include/ && rm -f $(HEADERS)
+       $Q cd $(DESTDIR)$(PREFIX)/lib/     && rm -f libwiringPi.*
+       $Q $(LDCONFIG)
 
 
+.PHONY:        depend
+depend:
+       makedepend -Y $(SRC) $(SRC_I2C)
+
 # DO NOT DELETE
 
-wiringPi.o: wiringPi.h
-wiringPiFace.o: wiringPi.h
+wiringPi.o: softPwm.h softTone.h wiringPi.h
 wiringSerial.o: wiringSerial.h
 wiringShift.o: wiringPi.h wiringShift.h
-gertboard.o: gertboard.h
-piNes.o: wiringPi.h piNes.h
-lcd.o: wiringPi.h lcd.h
 piHiPri.o: wiringPi.h
 piThread.o: wiringPi.h
+wiringPiSPI.o: wiringPi.h wiringPiSPI.h
+wiringPiI2C.o: wiringPi.h wiringPiI2C.h
+softPwm.o: wiringPi.h softPwm.h
+softTone.o: wiringPi.h softTone.h
+mcp23008.o: wiringPi.h wiringPiI2C.h mcp23x0817.h mcp23008.h
+mcp23016.o: wiringPi.h wiringPiI2C.h mcp23016.h mcp23016reg.h
+mcp23017.o: wiringPi.h wiringPiI2C.h mcp23x0817.h mcp23017.h
+mcp23s08.o: wiringPi.h wiringPiSPI.h mcp23x0817.h mcp23s08.h
+mcp23s17.o: wiringPi.h wiringPiSPI.h mcp23x0817.h mcp23s17.h
+sr595.o: wiringPi.h sr595.h
+pcf8574.o: wiringPi.h wiringPiI2C.h pcf8574.h
+pcf8591.o: wiringPi.h wiringPiI2C.h pcf8591.h
+mcp3002.o: wiringPi.h wiringPiSPI.h mcp3002.h
+mcp3004.o: wiringPi.h wiringPiSPI.h mcp3004.h
+mcp4802.o: wiringPi.h wiringPiSPI.h mcp4802.h
+mcp3422.o: wiringPi.h wiringPiI2C.h mcp3422.h
+max31855.o: wiringPi.h wiringPiSPI.h max31855.h
+max5322.o: wiringPi.h wiringPiSPI.h max5322.h
+sn3218.o: wiringPi.h wiringPiI2C.h sn3218.h
+drcSerial.o: wiringPi.h wiringSerial.h drcSerial.h
+wpiExtensions.o: wiringPi.h mcp23008.h mcp23016.h mcp23017.h mcp23s08.h
+wpiExtensions.o: mcp23s17.h sr595.h pcf8574.h pcf8591.h mcp3002.h mcp3004.h
+wpiExtensions.o: mcp4802.h mcp3422.h max31855.h max5322.h sn3218.h
+wpiExtensions.o: drcSerial.h wpiExtensions.h