diff --git a/README.TXT b/README.TXT index 894a31b..895dff3 100644 --- a/README.TXT +++ b/README.TXT @@ -1,13 +1,12 @@ Note ==== -This is an unofficial mirror of WiringPi to support ports (Python/Ruby/etc). +This is an unofficial mirror of WiringPi. Please do not email Gordon if you have issues, he will not be able to help. Pull-requests are not currently accepted, since this is a mirror. -For support, comments, questions, etc please join the WiringPi Discord channel: https://discord.gg/SM4WUVG wiringPi README =============== @@ -19,18 +18,12 @@ ie. git clone git://git.drogon.net/wiringPi -The version of wiringPi held on GitHub by "Gadgetoid" is used to build the -wiringPython, Ruby, Perl, etc. wrappers for these other languages. This -version may lag the official Drogon release. Pull requests may not be +This version may lag the official Drogon release. Pull requests may not be accepted to Github.... Please see http://wiringpi.com/ -for the official documentation, etc. and the best way to submit bug reports, etc. -is by sending an email to projects@drogon.net - -Thanks! - - -Gordon +for the official documentation, etc. and the best way to submit bug reports, +etc. for the official code is by sending an email to projects@drogon.net diff --git a/build b/build index 6844946..761d594 100755 --- a/build +++ b/build @@ -31,6 +31,25 @@ # back into education! ################################################################################# +# NOTE: Windows Msys/mingw environment not currently usable - suggest WSL +# (Windows Subsystem for Linux) for cross-compiling on Windows hosts + +GCCTARGET=`gcc -dumpmachine` +BUILDTYPE='CROSS' +INVOKESU=sudo + +case "$GCCTARGET" in + arm-linux-gnueabihf) + BUILDTYPE='NATIVE';; +# *mingw*) +# INVOKESU= ;; +esac + +echo "gcc default architecture: $GCCTARGET" +echo "Build type: $BUILDTYPE" +echo "" + + check_make_ok() { if [ $? != 0 ]; then echo "" @@ -43,7 +62,6 @@ check_make_ok() { fi } -sudo=${WIRINGPI_SUDO-sudo} if [ x$1 = "xclean" ]; then cd wiringPi @@ -72,32 +90,33 @@ fi if [ x$1 = "xuninstall" ]; then cd wiringPi - echo -n "wiringPi: " ; $sudo make uninstall + echo -n "wiringPi: " ; $INVOKESU make uninstall cd ../devLib - echo -n "DevLib: " ; $sudo make uninstall + echo -n "DevLib: " ; $INVOKESU make uninstall cd ../gpio - echo -n "gpio: " ; $sudo make uninstall + echo -n "gpio: " ; $INVOKESU make uninstall exit fi + # Only if you know what you're doing! if [ x$1 = "xdebian" ]; then - here=`pwd` cd debian-template/wiringPi rm -rf usr - cd $here/wiringPi + cd ../../wiringPi make install-deb - cd $here/devLib + cd ../devLib make install-deb INCLUDE='-I. -I../wiringPi' - cd $here/gpio + cd ../gpio make install-deb INCLUDE='-I../wiringPi -I../devLib' LDFLAGS=-L../debian-template/wiringPi/usr/lib - cd $here/debian-template + cd ../debian-template fakeroot dpkg-deb --build wiringPi - mv wiringPi.deb wiringpi-`cat $here/VERSION`-1.deb + mv wiringPi.deb wiringpi-`cat ../VERSION`-1.deb exit fi + if [ x$1 != "x" ]; then echo "Usage: $0 [clean | uninstall]" exit 1 @@ -107,7 +126,7 @@ fi echo "=====================" echo - hardware=`fgrep Hardware /proc/cpuinfo | head -1 | awk '{ print $3 }'` +# hardware=`fgrep Hardware /proc/cpuinfo | head -1 | awk '{ print $3 }'` # if [ x$hardware != "xBCM2708" ]; then # echo "" @@ -126,41 +145,41 @@ fi echo - echo "WiringPi Library" + echo "--- WiringPi Library" cd wiringPi - $sudo make uninstall + $INVOKESU make uninstall if [ x$1 = "xstatic" ]; then make -j5 static check_make_ok - $sudo make install-static + $INVOKESU make install-static else make -j5 check_make_ok - $sudo make install + $INVOKESU make install fi check_make_ok echo - echo "WiringPi Devices Library" + echo "--- WiringPi Devices Library" cd ../devLib - $sudo make uninstall + $INVOKESU make uninstall if [ x$1 = "xstatic" ]; then make -j5 static check_make_ok - $sudo make install-static + $INVOKESU make install-static else make -j5 check_make_ok - $sudo make install + $INVOKESU make install fi check_make_ok echo - echo "GPIO Utility" + echo "--- GPIO Utility" cd ../gpio make -j5 check_make_ok - $sudo make install + $INVOKESU make install check_make_ok # echo @@ -168,7 +187,7 @@ fi # cd ../wiringPiD # make -j5 # check_make_ok -# $sudo make install +# $INVOKESU make install # check_make_ok # echo diff --git a/devLib/Makefile b/devLib/Makefile index cf665d6..7677406 100644 --- a/devLib/Makefile +++ b/devLib/Makefile @@ -20,112 +20,141 @@ # You should have received a copy of the GNU Lesser General Public License # along with wiringPi. If not, see . ################################################################################# +PROJECT = wiringPi +VERSION = $(shell cat ../VERSION) -VERSION=$(shell cat ../VERSION) -DESTDIR?=/usr -PREFIX?=/local -LDCONFIG?=ldconfig +BASE_INSTALL_DIR ?= usr/ +LOCAL_INSTALL_DIR ?= local/ +PROJ_INSTALL_DIR ?= $(PROJECT)/ +ARCHITECTURE_INSTALL_DIR ?= armhf/ + +PUBLIC_INCLUDE_DIR = /$(BASE_INSTALL_DIR)include/ +PUBLIC_LIB_DIR = /$(BASE_INSTALL_DIR)lib/ +LOCAL_INCLUDE_DIR = /$(BASE_INSTALL_DIR)$(LOCAL_INSTALL_DIR)include/ +LOCAL_LIB_DIR = /$(BASE_INSTALL_DIR)$(LOCAL_INSTALL_DIR)lib/$(PROJ_INSTALL_DIR)/$(ARCHITECTURE_INSTALL_DIR) + +DEB_TEMPLATE_DIR = ../debian-template/$(PROJECT)/ + + +LDCONFIG ?= ldconfig + ifneq ($V,1) Q ?= @ endif -STATIC=libwiringPiDev.a -DYNAMIC=libwiringPiDev.so.$(VERSION) -#DEBUG = -g -O0 -DEBUG = -O2 -CC = gcc -INCLUDE = -I. -DEFS = -D_GNU_SOURCE -CFLAGS = $(DEBUG) $(DEFS) -Wformat=2 -Wall -Winline $(INCLUDE) -pipe -fPIC +STATIC_LIB = lib$(PROJECT)Dev.a +DYNAMIC_LIB = lib$(PROJECT)Dev.so + +CC = arm-linux-gnueabihf-gcc +#DEBUG = -g -O0 +DEBUG = -O2 +INCLUDE = -I. +DEFS = -D_GNU_SOURCE +CFLAGS = $(DEBUG) $(DEFS) -Wformat=2 -Wall -Winline $(INCLUDE) -pipe -fPIC LIBS = ############################################################################### -SRC = ds1302.c maxdetect.c piNes.c \ - gertboard.c piFace.c \ - lcd128x64.c lcd.c \ - scrollPhat.c \ - piGlow.c +SOURCES = ds1302.c maxdetect.c piNes.c \ + gertboard.c piFace.c \ + lcd128x64.c lcd.c \ + scrollPhat.c \ + piGlow.c + +OBJS = $(SOURCES:.c=.o) + +HEADERS = ds1302.h gertboard.h lcd128x64.h lcd.h maxdetect.h piFace.h piGlow.h piNes.h \ + scrollPhat.h -OBJ = $(SRC:.c=.o) -HEADERS = ds1302.h gertboard.h lcd128x64.h lcd.h maxdetect.h piFace.h piGlow.h piNes.h\ - scrollPhat.h +all: $(DYNAMIC_LIB).$(VERSION) -all: $(DYNAMIC) -static: $(STATIC) +static: $(STATIC_LIB) -$(STATIC): $(OBJ) + +$(STATIC_LIB): $(OBJS) $Q echo "[Link (Static)]" - $Q ar rcs $(STATIC) $(OBJ) - $Q ranlib $(STATIC) -# @size $(STATIC) + $Q ar rcs $(STATIC_LIB) $(OBJS) + $Q ranlib $(STATIC_LIB) +# @size $(STATIC_LIB) + -$(DYNAMIC): $(OBJ) +$(DYNAMIC_LIB).$(VERSION): $(OBJS) $Q echo "[Link (Dynamic)]" - $Q $(CC) -shared -Wl,-soname,libwiringPiDev.so$(WIRINGPI_SONAME_SUFFIX) -o libwiringPiDev.so.$(VERSION) -lpthread $(OBJ) + $Q $(CC) -shared -Wl,-soname,$(DYNAMIC_LIB)$(WIRINGPI_SONAME_SUFFIX) -o $(DYNAMIC_LIB).$(VERSION) -lpthread $(OBJS) + .c.o: $Q echo [Compile] $< $Q $(CC) -c $(CFLAGS) $< -o $@ + .PHONY: clean clean: $Q echo "[Clean]" - $Q rm -f $(OBJ) $(OBJ_I2C) *~ core tags Makefile.bak libwiringPiDev.* + $Q rm -f $(OBJS) $(OBJ_I2C) *~ core tags Makefile.bak lib$(PROJECT)Dev*.* + .PHONY: tags tags: $(SRC) $Q echo [ctags] - $Q ctags $(SRC) + $Q ctags $(SOURCES) .PHONY: install -install: $(DYNAMIC) +install: $(DYNAMIC_LIB).$(VERSION) $Q echo "[Install Headers]" - $Q install -m 0755 -d $(DESTDIR)$(PREFIX)/include - $Q install -m 0644 $(HEADERS) $(DESTDIR)$(PREFIX)/include + $Q install -m 0755 -d $(LOCAL_INCLUDE_DIR) + $Q install -m 0644 $(HEADERS) $(LOCAL_INCLUDE_DIR) + $Q echo "[Install Dynamic Lib]" - $Q install -m 0755 -d $(DESTDIR)$(PREFIX)/lib - $Q install -m 0755 libwiringPiDev.so.$(VERSION) $(DESTDIR)$(PREFIX)/lib/libwiringPiDev.so.$(VERSION) - $Q ln -sf $(DESTDIR)$(PREFIX)/lib/libwiringPiDev.so.$(VERSION) $(DESTDIR)/lib/libwiringPiDev.so + $Q install -m 0755 -d $(LOCAL_LIB_DIR) + $Q install -m 0755 $(DYNAMIC_LIB).$(VERSION) $(LOCAL_LIB_DIR)$(DYNAMIC_LIB).$(VERSION) + $Q ln -sf $(LOCAL_LIB_DIR)$(DYNAMIC_LIB).$(VERSION) $(PUBLIC_LIB_DIR)$(DYNAMIC_LIB) $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 install -m 0755 -d $(LOCAL_INCLUDE_DIR) + $Q install -m 0644 $(HEADERS) $(LOCAL_INCLUDE_DIR) + $Q echo "[Install Static Lib]" - $Q install -m 0755 -d $(DESTDIR)$(PREFIX)/lib - $Q install -m 0755 libwiringPiDev.a $(DESTDIR)$(PREFIX)/lib + $Q install -m 0755 -d $(LOCAL_LIB_DIR) + $Q install -m 0755 $(STATIC_LIB) $(LOCAL_LIB_DIR) + .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 install -m 0755 -d $(DEB_TEMPLATE_DIR)$(PUBLIC_INCLUDE_DIR) + $Q install -m 0644 $(HEADERS) $(DEB_TEMPLATE_DIR)$(PUBLIC_INCLUDE_DIR) + $Q echo "[Install Dynamic Lib: deb]" - install -m 0755 -d ~/wiringPi/debian-template/wiringPi/usr/lib - install -m 0755 libwiringPiDev.so.$(VERSION) ~/wiringPi/debian-template/wiringPi/usr/lib/libwiringPiDev.so.$(VERSION) - ln -sf ~/wiringPi/debian-template/wiringPi/usr/lib/libwiringPiDev.so.$(VERSION) ~/wiringPi/debian-template/wiringPi/usr/lib/libwiringPiDev.so + install -m 0755 -d $(DEB_TEMPLATE_DIR)$(PUBLIC_LIB_DIR) + install -m 0755 $(DYNAMIC_LIB).$(VERSION) $(DEB_TEMPLATE_DIR)$(PUBLIC_LIB_DIR)/$(DYNAMIC_LIB).$(VERSION) + ln -sf $(DEB_TEMPLATE_DIR)$(PUBLIC_LIB_DIR)/$(DYNAMIC_LIB).$(VERSION) $(DEB_TEMPLATE_DIR)$(PUBLIC_LIB_DIR)/$(DYNAMIC_LIB) + .PHONY: uninstall uninstall: $Q echo "[UnInstall]" - $Q cd $(DESTDIR)$(PREFIX)/include/ && rm -f $(HEADERS) - $Q cd $(DESTDIR)$(PREFIX)/lib/ && rm -f libwiringPiDev.* + $Q cd $(LOCAL_INCLUDE_DIR) && rm -f $(HEADERS) + $Q if [ -d "$(LOCAL_LIB_DIR)" ]; then cd $(LOCAL_LIB_DIR) && rm -f $(DYNAMIC_LIB).* && rm -f $(STATIC_LIB).*; fi + $Q cd $(PUBLIC_LIB_DIR) && rm -f $(DYNAMIC_LIB) $Q $(LDCONFIG) .PHONY: depend depend: - makedepend -Y $(SRC) + makedepend -Y $(SOURCES) + # DO NOT DELETE diff --git a/gpio/Makefile b/gpio/Makefile index 9ec160d..622269e 100644 --- a/gpio/Makefile +++ b/gpio/Makefile @@ -22,81 +22,113 @@ # You should have received a copy of the GNU Lesser General Public License # along with wiringPi. If not, see . ################################################################################# +PROJECT = wiringPi +VERSION = $(shell cat ../VERSION) + + +BASE_INSTALL_DIR ?= usr/ +LOCAL_INSTALL_DIR ?= local/ +PROJ_INSTALL_DIR ?= $(PROJECT)/ +ARCHITECTURE_INSTALL_DIR ?= armhf/ + +PUBLIC_BIN_DIR = $(BASE_INSTALL_DIR)bin/ +PUBLIC_INCLUDE_DIR = $(BASE_INSTALL_DIR)include/ +PUBLIC_LIB_DIR = $(BASE_INSTALL_DIR)lib/ +PUBLIC_MAN_DIR = $(BASE_INSTALL_DIR)share/man/man1/ + +LOCAL_BIN_DIR = $(BASE_INSTALL_DIR)$(LOCAL_INSTALL_DIR)bin/ +LOCAL_INCLUDE_DIR = $(BASE_INSTALL_DIR)$(LOCAL_INSTALL_DIR)include/ +LOCAL_LIB_DIR = $(BASE_INSTALL_DIR)$(LOCAL_INSTALL_DIR)lib/$(PROJ_INSTALL_DIR)/$(ARCHITECTURE_INSTALL_DIR) +LOCAL_MAN_DIR = $(BASE_INSTALL_DIR)$(LOCAL_INSTALL_DIR)share/man/man1/ + +DEB_TEMPLATE_DIR = ../debian-template/$(PROJECT)/ -DESTDIR?=/usr -PREFIX?=/local ifneq ($V,1) Q ?= @ endif -#DEBUG = -g -O0 -DEBUG = -O2 -CC = gcc -INCLUDE = -I$(DESTDIR)$(PREFIX)/include -CFLAGS = $(DEBUG) -Wall -Wextra $(INCLUDE) -Winline -pipe -LDFLAGS = -L$(DESTDIR)$(PREFIX)/lib -LIBS = -lwiringPi -lwiringPiDev -lpthread -lrt -lm -lcrypt +CC = arm-linux-gnueabihf-gcc +#DEBUG = -g -O0 +DEBUG = -O2 +INCLUDE = -I/$(LOCAL_INCLUDE_DIR) +CFLAGS = $(DEBUG) -Wall -Wextra $(INCLUDE) -Winline -pipe +LDFLAGS = -L/$(LOCAL_LIB_DIR) +LIBS = -lwiringPi -lwiringPiDev -lpthread -lrt -lm -lcrypt # May not need to alter anything below this line ############################################################################### +SOURCES = gpio.c readall.c -SRC = gpio.c readall.c +OBJS = $(SOURCES:.c=.o) -OBJ = $(SRC:.c=.o) all: gpio version.h: ../VERSION $Q echo Need to run newVersion above. -gpio: $(OBJ) + +gpio: $(OBJS) $Q echo [Link] - $Q $(CC) -o $@ $(OBJ) $(LDFLAGS) $(LIBS) + $Q $(CC) -o $@ $(OBJS) $(LDFLAGS) $(LIBS) + .c.o: $Q echo [Compile] $< $Q $(CC) -c $(CFLAGS) $< -o $@ + .PHONY: clean clean: $Q echo "[Clean]" - $Q rm -f $(OBJ) gpio *~ core tags *.bak + $Q rm -f $(OBJS) gpio *~ core tags *.bak + .PHONY: tags -tags: $(SRC) +tags: $(SOURCES) $Q echo [ctags] - $Q ctags $(SRC) + $Q ctags $(SOURCES) + .PHONY: install install: gpio $Q echo "[Install]" - $Q cp gpio $(DESTDIR)$(PREFIX)/bin -ifneq ($(WIRINGPI_SUID),0) - $Q chown root.root $(DESTDIR)$(PREFIX)/bin/gpio - $Q chmod 4755 $(DESTDIR)$(PREFIX)/bin/gpio -endif - $Q mkdir -p $(DESTDIR)$(PREFIX)/share/man/man1 - $Q cp gpio.1 $(DESTDIR)$(PREFIX)/share/man/man1 + $Q if [ "$(shell gcc -dumpmachine)" != "arm-linux-gnueabihf" ]; then \ + echo " *** Cross-build environment, NOT installing binaries ***"; \ + else \ + cp gpio /$(LOCAL_BIN_DIR); \ + if [ "$(WIRINGPI_SUID)" != "0" ]; then \ + chown root.root /$(LOCAL_BIN_DIR)gpio; \ + chmod 4755 /$(LOCAL_BIN_DIR)gpio; \ + fi; \ + mkdir -p /$(LOCAL_MAN_DIR); \ + cp gpio.1 /$(LOCAL_MAN_DIR); \ + fi; + .PHONY: install-deb install-deb: gpio $Q echo "[Install: deb]" - $Q install -m 0755 -d ~/wiringPi/debian-template/wiringPi/usr/bin - $Q install -m 0755 gpio ~/wiringPi/debian-template/wiringPi/usr/bin - $Q install -m 0755 -d ~/wiringPi/debian-template/wiringPi/usr/share/man/man1 - $Q install -m 0644 gpio.1 ~/wiringPi/debian-template/wiringPi/usr/share/man/man1 + $Q install -m 0755 -d $(DEB_TEMPLATE_DIR)$(PUBLIC_BIN_DIR) + $Q install -m 0755 gpio $(DEB_TEMPLATE_DIR)$(PUBLIC_BIN_DIR) + + $Q install -m 0755 -d $(DEB_TEMPLATE_DIR)$(PUBLIC_MAN_DIR) + $Q install -m 0644 gpio.1 $(DEB_TEMPLATE_DIR)$(PUBLIC_MAN_DIR) + .PHONY: uninstall uninstall: $Q echo "[UnInstall]" - $Q rm -f $(DESTDIR)$(PREFIX)/bin/gpio - $Q rm -f $(DESTDIR)$(PREFIX)/share/man/man1/gpio.1 + $Q rm -f /$(LOCAL_BIN_DIR)gpio + $Q rm -f /$(LOCAL_MAN_DIR)gpio.1 + .PHONY: depend depend: - makedepend -Y $(SRC) + makedepend -Y $(SOURCES) + # DO NOT DELETE diff --git a/wiringPi/Makefile b/wiringPi/Makefile index 287fa58..7f4ad64 100644 --- a/wiringPi/Makefile +++ b/wiringPi/Makefile @@ -20,62 +20,80 @@ # You should have received a copy of the GNU Lesser General Public License # along with wiringPi. If not, see . ################################################################################# +PROJECT = wiringPi +VERSION = $(shell cat ../VERSION) -VERSION=$(shell cat ../VERSION) -DESTDIR?=/usr -PREFIX?=/local -LDCONFIG?=ldconfig +BASE_INSTALL_DIR ?= usr/ +LOCAL_INSTALL_DIR ?= local/ +PROJ_INSTALL_DIR ?= $(PROJECT)/ +ARCHITECTURE_INSTALL_DIR ?= armhf/ + +PUBLIC_INCLUDE_DIR = $(BASE_INSTALL_DIR)include/ +PUBLIC_LIB_DIR = $(BASE_INSTALL_DIR)lib/ +LOCAL_INCLUDE_DIR = $(BASE_INSTALL_DIR)$(LOCAL_INSTALL_DIR)include/ +LOCAL_LIB_DIR = $(BASE_INSTALL_DIR)$(LOCAL_INSTALL_DIR)lib/$(PROJ_INSTALL_DIR)$(ARCHITECTURE_INSTALL_DIR) + +DEB_TEMPLATE_DIR = ../debian-template/$(PROJECT)/ + + +LDCONFIG ?= ldconfig + ifneq ($V,1) Q ?= @ endif -STATIC=libwiringPi.a -DYNAMIC=libwiringPi.so.$(VERSION) -#DEBUG = -g -O0 -DEBUG = -O2 -CC = gcc -INCLUDE = -I. -DEFS = -D_GNU_SOURCE -CFLAGS = $(DEBUG) $(DEFS) -Wformat=2 -Wall -Wextra -Winline $(INCLUDE) -pipe -fPIC -#CFLAGS = $(DEBUG) $(DEFS) -Wformat=2 -Wall -Wextra -Wconversion -Winline $(INCLUDE) -pipe -fPIC +STATIC_LIB = lib$(PROJECT).a +DYNAMIC_LIB = lib$(PROJECT).so + -LIBS = -lm -lpthread -lrt -lcrypt +CC = arm-linux-gnueabihf-gcc +#DEBUG = -g -O0 +DEBUG = -O2 +INCLUDE = -I. +DEFS = -D_GNU_SOURCE +CFLAGS = $(DEBUG) $(DEFS) -Wformat=2 -Wall -Wextra -Winline $(INCLUDE) -pipe -fPIC +#CFLAGS = $(DEBUG) $(DEFS) -Wformat=2 -Wall -Wextra -Wconversion -Winline $(INCLUDE) -pipe -fPIC +LIBS = -lm -lpthread -lrt -lcrypt ############################################################################### -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 ads1115.c \ - sn3218.c \ - bmp180.c htu21d.c ds18b20.c rht03.c \ - drcSerial.c drcNet.c \ - pseudoPins.c \ - wpiExtensions.c +SOURCES = 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 ads1115.c \ + sn3218.c \ + bmp180.c htu21d.c ds18b20.c rht03.c \ + drcSerial.c drcNet.c \ + pseudoPins.c \ + wpiExtensions.c HEADERS = $(shell ls *.h) -OBJ = $(SRC:.c=.o) +OBJS = $(SOURCES:.c=.o) + + +all: $(DYNAMIC_LIB).$(VERSION) -all: $(DYNAMIC) .PHONY: static static: - $Q cat noMoreStatic + $Q cat noMoreStatic -$(DYNAMIC): $(OBJ) + +$(DYNAMIC_LIB).$(VERSION): $(OBJS) $Q echo "[Link (Dynamic)]" - $Q $(CC) -shared -Wl,-soname,libwiringPi.so$(WIRINGPI_SONAME_SUFFIX) -o libwiringPi.so.$(VERSION) $(LIBS) $(OBJ) + $Q $(CC) -shared -Wl,-soname,$(DYNAMIC_LIB)$(WIRINGPI_SONAME_SUFFIX) -o $(DYNAMIC_LIB).$(VERSION) $(LIBS) $(OBJS) + .c.o: $Q echo [Compile] $< @@ -85,46 +103,51 @@ $(DYNAMIC): $(OBJ) .PHONY: clean clean: $Q echo "[Clean]" - $Q rm -f $(OBJ) $(OBJ_I2C) *~ core tags Makefile.bak libwiringPi.* + $Q rm -f $(OBJS) $(OBJ_I2C) *~ core tags Makefile.bak lib$(PROJECT).* + .PHONY: tags -tags: $(SRC) +tags: $(SOURCES) $Q echo [ctags] - $Q ctags $(SRC) + $Q ctags $(SOURCES) .PHONY: install -install: $(DYNAMIC) +install: $(DYNAMIC_LIB).$(VERSION) $Q echo "[Install Headers]" - $Q install -m 0755 -d $(DESTDIR)$(PREFIX)/include - $Q install -m 0644 $(HEADERS) $(DESTDIR)$(PREFIX)/include + $Q install -m 0644 $(HEADERS) /$(PUBLIC_INCLUDE_DIR) + $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 install -m 0755 -d /$(LOCAL_LIB_DIR) + $Q install -m 0755 $(DYNAMIC_LIB).$(VERSION) /$(LOCAL_LIB_DIR)$(DYNAMIC_LIB).$(VERSION) + $Q ln -sf /$(LOCAL_LIB_DIR)$(DYNAMIC_LIB).$(VERSION) /$(PUBLIC_LIB_DIR)$(DYNAMIC_LIB) $Q $(LDCONFIG) + .PHONY: install-deb -install-deb: $(DYNAMIC) +install-deb: $(DYNAMIC_LIB).$(VERSION) $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 install -m 0755 -d $(DEB_TEMPLATE_DIR)$(PUBLIC_INCLUDE_DIR) + $Q install -m 0644 $(HEADERS) $(DEB_TEMPLATE_DIR)$(PUBLIC_INCLUDE_DIR) + $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 + install -m 0755 -d $(DEB_TEMPLATE_DIR)$(PUBLIC_LIB_DIR) + install -m 0755 libwiringPi.so.$(VERSION) $(DEB_TEMPLATE_DIR)$(PUBLIC_LIB_DIR)$(DYNAMIC_LIB).$(VERSION) + ln -sf $(DEB_TEMPLATE_DIR)$(PUBLIC_LIB_DIR)$(DYNAMIC_LIB).$(VERSION) $(DEB_TEMPLATE_DIR)$(PUBLIC_LIB_DIR)$(DYNAMIC_LIB) + .PHONY: uninstall uninstall: $Q echo "[UnInstall]" - $Q cd $(DESTDIR)$(PREFIX)/include/ && rm -f $(HEADERS) - $Q cd $(DESTDIR)$(PREFIX)/lib/ && rm -f libwiringPi.* + $Q cd /$(PUBLIC_INCLUDE_DIR) && rm -f $(HEADERS) + $Q if [ -d "/$(LOCAL_LIB_DIR)" ]; then cd /$(LOCAL_LIB_DIR) && rm -f $(DYNAMIC_LIB).*; fi; + $Q cd /$(PUBLIC_LIB_DIR) && rm -f $(DYNAMIC_LIB) $Q $(LDCONFIG) .PHONY: depend depend: - makedepend -Y $(SRC) $(SRC_I2C) + makedepend -Y $(SOURCES) $(SRC_I2C) # DO NOT DELETE