You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
379 lines
12 KiB
379 lines
12 KiB
# $Id: Makefile,v 1.132 2015/10/26 16:59:54 nanard Exp $ |
|
# MiniUPnP Project |
|
# http://miniupnp.free.fr/ |
|
# http://miniupnp.tuxfamily.org/ |
|
# https://github.com/miniupnp/miniupnp |
|
# (c) 2005-2015 Thomas Bernard |
|
# to install use : |
|
# $ make DESTDIR=/tmp/dummylocation install |
|
# or |
|
# $ INSTALLPREFIX=/usr/local make install |
|
# or |
|
# $ make install (default INSTALLPREFIX is /usr) |
|
OS = $(shell uname -s) |
|
VERSION = $(shell cat VERSION) |
|
|
|
ifeq ($(OS), Darwin) |
|
JARSUFFIX=mac |
|
LIBTOOL ?= $(shell which libtool) |
|
endif |
|
ifeq ($(OS), Linux) |
|
JARSUFFIX=linux |
|
endif |
|
ifneq (,$(findstring NT-5.1,$(OS))) |
|
JARSUFFIX=win32 |
|
endif |
|
|
|
HAVE_IPV6 ?= yes |
|
export HAVE_IPV6 |
|
|
|
CC ?= gcc |
|
#AR = gar |
|
#CFLAGS = -O -g -DDEBUG |
|
CFLAGS ?= -O |
|
CFLAGS += -Wall |
|
CFLAGS += -W -Wstrict-prototypes |
|
CFLAGS += -fno-common |
|
CFLAGS += -DMINIUPNPC_SET_SOCKET_TIMEOUT |
|
CFLAGS += -DMINIUPNPC_GET_SRC_ADDR |
|
CFLAGS += -D_BSD_SOURCE |
|
CFLAGS += -D_DEFAULT_SOURCE |
|
ifneq ($(OS), FreeBSD) |
|
ifneq ($(OS), Darwin) |
|
#CFLAGS += -D_POSIX_C_SOURCE=200112L |
|
CFLAGS += -D_XOPEN_SOURCE=600 |
|
endif |
|
endif |
|
#CFLAGS += -ansi |
|
# -DNO_GETADDRINFO |
|
INSTALL = install |
|
SH = /bin/sh |
|
JAVA = java |
|
# see http://code.google.com/p/jnaerator/ |
|
#JNAERATOR = jnaerator-0.9.7.jar |
|
#JNAERATOR = jnaerator-0.9.8-shaded.jar |
|
#JNAERATORARGS = -library miniupnpc |
|
#JNAERATOR = jnaerator-0.10-shaded.jar |
|
#JNAERATOR = jnaerator-0.11-shaded.jar |
|
# https://repo1.maven.org/maven2/com/nativelibs4java/jnaerator/0.12/jnaerator-0.12-shaded.jar |
|
JNAERATOR = jnaerator-0.12-shaded.jar |
|
JNAERATORARGS = -mode StandaloneJar -runtime JNAerator -library miniupnpc |
|
#JNAERATORBASEURL = http://jnaerator.googlecode.com/files/ |
|
JNAERATORBASEURL = https://repo1.maven.org/maven2/com/nativelibs4java/jnaerator/0.12 |
|
|
|
ifeq (SunOS, $(OS)) |
|
LDFLAGS=-lsocket -lnsl -lresolv |
|
endif |
|
|
|
# APIVERSION is used to build SONAME |
|
APIVERSION = 15 |
|
|
|
SRCS = igd_desc_parse.c miniupnpc.c minixml.c minisoap.c miniwget.c \ |
|
upnpc.c upnpcommands.c upnpreplyparse.c testminixml.c \ |
|
minixmlvalid.c testupnpreplyparse.c minissdpc.c \ |
|
upnperrors.c testigddescparse.c testminiwget.c \ |
|
connecthostport.c portlistingparse.c receivedata.c \ |
|
upnpdev.c testportlistingparse.c miniupnpcmodule.c \ |
|
minihttptestserver.c \ |
|
listdevices.c |
|
|
|
LIBOBJS = miniwget.o minixml.o igd_desc_parse.o minisoap.o \ |
|
miniupnpc.o upnpreplyparse.o upnpcommands.o upnperrors.o \ |
|
connecthostport.o portlistingparse.o receivedata.o upnpdev.o |
|
|
|
ifneq ($(OS), AmigaOS) |
|
CFLAGS := -fPIC $(CFLAGS) |
|
LIBOBJS := $(LIBOBJS) minissdpc.o |
|
endif |
|
|
|
OBJS = $(patsubst %.c,%.o,$(SRCS)) |
|
|
|
# HEADERS to install |
|
HEADERS = miniupnpc.h miniwget.h upnpcommands.h igd_desc_parse.h \ |
|
upnpreplyparse.h upnperrors.h miniupnpctypes.h \ |
|
portlistingparse.h \ |
|
upnpdev.h \ |
|
miniupnpc_declspec.h |
|
|
|
# library names |
|
LIBRARY = libminiupnpc.a |
|
ifeq ($(OS), Darwin) |
|
SHAREDLIBRARY = libminiupnpc.dylib |
|
SONAME = $(basename $(SHAREDLIBRARY)).$(APIVERSION).dylib |
|
CFLAGS := -D_DARWIN_C_SOURCE $(CFLAGS) |
|
else |
|
ifeq ($(JARSUFFIX), win32) |
|
SHAREDLIBRARY = miniupnpc.dll |
|
else |
|
# Linux/BSD/etc. |
|
SHAREDLIBRARY = libminiupnpc.so |
|
SONAME = $(SHAREDLIBRARY).$(APIVERSION) |
|
endif |
|
endif |
|
|
|
EXECUTABLES = upnpc-static listdevices |
|
EXECUTABLES_ADDTESTS = testminixml minixmlvalid testupnpreplyparse \ |
|
testigddescparse testminiwget testportlistingparse |
|
|
|
TESTMINIXMLOBJS = minixml.o igd_desc_parse.o testminixml.o |
|
|
|
TESTMINIWGETOBJS = miniwget.o testminiwget.o connecthostport.o receivedata.o |
|
|
|
TESTUPNPREPLYPARSE = testupnpreplyparse.o minixml.o upnpreplyparse.o |
|
|
|
TESTPORTLISTINGPARSE = testportlistingparse.o minixml.o portlistingparse.o |
|
|
|
TESTIGDDESCPARSE = testigddescparse.o igd_desc_parse.o minixml.o \ |
|
miniupnpc.o miniwget.o upnpcommands.o upnpreplyparse.o \ |
|
minisoap.o connecthostport.o receivedata.o \ |
|
portlistingparse.o |
|
|
|
ifneq ($(OS), AmigaOS) |
|
EXECUTABLES := $(EXECUTABLES) upnpc-shared |
|
TESTMINIWGETOBJS := $(TESTMINIWGETOBJS) minissdpc.o |
|
TESTIGDDESCPARSE := $(TESTIGDDESCPARSE) minissdpc.o |
|
endif |
|
|
|
LIBDIR ?= lib |
|
# install directories |
|
INSTALLPREFIX ?= $(PREFIX)/usr |
|
INSTALLDIRINC = $(INSTALLPREFIX)/include/miniupnpc |
|
INSTALLDIRLIB = $(INSTALLPREFIX)/$(LIBDIR) |
|
INSTALLDIRBIN = $(INSTALLPREFIX)/bin |
|
INSTALLDIRMAN = $(INSTALLPREFIX)/share/man |
|
|
|
FILESTOINSTALL = $(LIBRARY) $(EXECUTABLES) |
|
ifneq ($(OS), AmigaOS) |
|
FILESTOINSTALL := $(FILESTOINSTALL) $(SHAREDLIBRARY) |
|
endif |
|
|
|
|
|
.PHONY: install clean depend all check test everything \ |
|
installpythonmodule updateversion |
|
# validateminixml validateminiwget |
|
|
|
all: $(LIBRARY) $(EXECUTABLES) |
|
|
|
test: check |
|
|
|
check: validateminixml validateminiwget validateupnpreplyparse \ |
|
validateportlistingparse validateigddescparse |
|
|
|
everything: all $(EXECUTABLES_ADDTESTS) |
|
|
|
pythonmodule: $(LIBRARY) miniupnpcmodule.c setup.py |
|
python setup.py build |
|
touch $@ |
|
|
|
installpythonmodule: pythonmodule |
|
python setup.py install |
|
|
|
pythonmodule3: $(LIBRARY) miniupnpcmodule.c setup.py |
|
python3 setup.py build |
|
touch $@ |
|
|
|
installpythonmodule3: pythonmodule3 |
|
python3 setup.py install |
|
|
|
validateminixml: minixmlvalid |
|
@echo "minixml validation test" |
|
./minixmlvalid |
|
touch $@ |
|
|
|
validateminiwget: testminiwget minihttptestserver testminiwget.sh |
|
@echo "miniwget validation test" |
|
./testminiwget.sh |
|
touch $@ |
|
|
|
validateupnpreplyparse: testupnpreplyparse testupnpreplyparse.sh |
|
@echo "upnpreplyparse validation test" |
|
./testupnpreplyparse.sh |
|
touch $@ |
|
|
|
validateportlistingparse: testportlistingparse |
|
@echo "portlistingparse validation test" |
|
./testportlistingparse |
|
touch $@ |
|
|
|
validateigddescparse: testigddescparse |
|
@echo "igd desc parse validation test" |
|
./testigddescparse testdesc/new_LiveBox_desc.xml testdesc/new_LiveBox_desc.values |
|
./testigddescparse testdesc/linksys_WAG200G_desc.xml testdesc/linksys_WAG200G_desc.values |
|
touch $@ |
|
|
|
clean: |
|
$(RM) $(LIBRARY) $(SHAREDLIBRARY) $(EXECUTABLES) $(OBJS) miniupnpcstrings.h |
|
$(RM) $(EXECUTABLES_ADDTESTS) |
|
# clean python stuff |
|
$(RM) pythonmodule pythonmodule3 |
|
$(RM) validateminixml validateminiwget validateupnpreplyparse |
|
$(RM) validateigddescparse |
|
$(RM) minihttptestserver |
|
$(RM) -r build/ dist/ |
|
#python setup.py clean |
|
# clean jnaerator stuff |
|
$(RM) _jnaerator.* java/miniupnpc_$(OS).jar |
|
|
|
distclean: clean |
|
$(RM) $(JNAERATOR) java/*.jar java/*.class out.errors.txt |
|
|
|
updateversion: miniupnpc.h |
|
cp miniupnpc.h miniupnpc.h.bak |
|
sed 's/\(.*MINIUPNPC_API_VERSION\s\+\)[0-9]\+/\1$(APIVERSION)/' < miniupnpc.h.bak > miniupnpc.h |
|
|
|
install: updateversion $(FILESTOINSTALL) |
|
$(INSTALL) -d $(DESTDIR)$(INSTALLDIRINC) |
|
$(INSTALL) -m 644 $(HEADERS) $(DESTDIR)$(INSTALLDIRINC) |
|
$(INSTALL) -d $(DESTDIR)$(INSTALLDIRLIB) |
|
$(INSTALL) -m 644 $(LIBRARY) $(DESTDIR)$(INSTALLDIRLIB) |
|
ifneq ($(OS), AmigaOS) |
|
$(INSTALL) -m 644 $(SHAREDLIBRARY) $(DESTDIR)$(INSTALLDIRLIB)/$(SONAME) |
|
ln -fs $(SONAME) $(DESTDIR)$(INSTALLDIRLIB)/$(SHAREDLIBRARY) |
|
endif |
|
$(INSTALL) -d $(DESTDIR)$(INSTALLDIRBIN) |
|
ifeq ($(OS), AmigaOS) |
|
$(INSTALL) -m 755 upnpc-static $(DESTDIR)$(INSTALLDIRBIN)/upnpc |
|
else |
|
$(INSTALL) -m 755 upnpc-shared $(DESTDIR)$(INSTALLDIRBIN)/upnpc |
|
endif |
|
$(INSTALL) -m 755 external-ip.sh $(DESTDIR)$(INSTALLDIRBIN)/external-ip |
|
ifneq ($(OS), AmigaOS) |
|
$(INSTALL) -d $(DESTDIR)$(INSTALLDIRMAN)/man3 |
|
$(INSTALL) -m 644 man3/miniupnpc.3 $(DESTDIR)$(INSTALLDIRMAN)/man3/miniupnpc.3 |
|
ifeq ($(OS), Linux) |
|
gzip -f $(DESTDIR)$(INSTALLDIRMAN)/man3/miniupnpc.3 |
|
endif |
|
endif |
|
|
|
install-static: updateversion $(FILESTOINSTALL) |
|
$(INSTALL) -d $(DESTDIR)$(INSTALLDIRINC) |
|
$(INSTALL) -m 644 $(HEADERS) $(DESTDIR)$(INSTALLDIRINC) |
|
$(INSTALL) -d $(DESTDIR)$(INSTALLDIRLIB) |
|
$(INSTALL) -m 644 $(LIBRARY) $(DESTDIR)$(INSTALLDIRLIB) |
|
$(INSTALL) -d $(DESTDIR)$(INSTALLDIRBIN) |
|
$(INSTALL) -m 755 external-ip.sh $(DESTDIR)$(INSTALLDIRBIN)/external-ip |
|
|
|
cleaninstall: |
|
$(RM) -r $(DESTDIR)$(INSTALLDIRINC) |
|
$(RM) $(DESTDIR)$(INSTALLDIRLIB)/$(LIBRARY) |
|
$(RM) $(DESTDIR)$(INSTALLDIRLIB)/$(SHAREDLIBRARY) |
|
|
|
depend: |
|
makedepend -Y -- $(CFLAGS) -- $(SRCS) 2>/dev/null |
|
|
|
$(LIBRARY): $(LIBOBJS) |
|
ifeq ($(OS), Darwin) |
|
$(LIBTOOL) -static -o $@ $? |
|
else |
|
$(AR) crs $@ $? |
|
endif |
|
|
|
$(SHAREDLIBRARY): $(LIBOBJS) |
|
ifeq ($(OS), Darwin) |
|
# $(CC) -dynamiclib $(LDFLAGS) -Wl,-install_name,$(SONAME) -o $@ $^ |
|
$(CC) -dynamiclib $(LDFLAGS) -Wl,-install_name,$(INSTALLDIRLIB)/$(SONAME) -o $@ $^ |
|
else |
|
$(CC) -shared $(LDFLAGS) -Wl,-soname,$(SONAME) -o $@ $^ |
|
endif |
|
|
|
upnpc-static: upnpc.o $(LIBRARY) |
|
$(CC) $(LDFLAGS) -o $@ $^ $(LOADLIBES) $(LDLIBS) |
|
|
|
upnpc-shared: upnpc.o $(SHAREDLIBRARY) |
|
$(CC) $(LDFLAGS) -o $@ $^ $(LOADLIBES) $(LDLIBS) |
|
|
|
listdevices: listdevices.o $(LIBRARY) |
|
|
|
testminixml: $(TESTMINIXMLOBJS) |
|
|
|
testminiwget: $(TESTMINIWGETOBJS) |
|
|
|
minixmlvalid: minixml.o minixmlvalid.o |
|
|
|
testupnpreplyparse: $(TESTUPNPREPLYPARSE) |
|
|
|
testigddescparse: $(TESTIGDDESCPARSE) |
|
|
|
testportlistingparse: $(TESTPORTLISTINGPARSE) |
|
|
|
miniupnpcstrings.h: miniupnpcstrings.h.in updateminiupnpcstrings.sh VERSION |
|
$(SH) updateminiupnpcstrings.sh |
|
|
|
# ftp tool supplied with OpenBSD can download files from http. |
|
jnaerator-%.jar: |
|
wget $(JNAERATORBASEURL)/$@ || \ |
|
curl -o $@ $(JNAERATORBASEURL)/$@ || \ |
|
ftp $(JNAERATORBASEURL)/$@ |
|
|
|
jar: $(SHAREDLIBRARY) $(JNAERATOR) |
|
$(JAVA) -jar $(JNAERATOR) $(JNAERATORARGS) \ |
|
miniupnpc.h miniupnpc_declspec.h upnpcommands.h upnpreplyparse.h \ |
|
igd_desc_parse.h miniwget.h upnperrors.h $(SHAREDLIBRARY) \ |
|
-package fr.free.miniupnp -o . -jar java/miniupnpc_$(JARSUFFIX).jar -v |
|
|
|
mvn_install: |
|
mvn install:install-file -Dfile=java/miniupnpc_$(JARSUFFIX).jar \ |
|
-DgroupId=com.github \ |
|
-DartifactId=miniupnp \ |
|
-Dversion=$(VERSION) \ |
|
-Dpackaging=jar \ |
|
-Dclassifier=$(JARSUFFIX) \ |
|
-DgeneratePom=true \ |
|
-DcreateChecksum=true |
|
|
|
# make .deb packages |
|
deb: /usr/share/pyshared/stdeb all |
|
(python setup.py --command-packages=stdeb.command bdist_deb) |
|
|
|
# install .deb packages |
|
ideb: |
|
(sudo dpkg -i deb_dist/*.deb) |
|
|
|
/usr/share/pyshared/stdeb: /usr/share/doc/python-all-dev |
|
(sudo apt-get install python-stdeb) |
|
|
|
/usr/share/doc/python-all-dev: |
|
(sudo apt-get install python-all-dev) |
|
|
|
minihttptestserver: minihttptestserver.o |
|
|
|
# DO NOT DELETE THIS LINE -- make depend depends on it. |
|
|
|
igd_desc_parse.o: igd_desc_parse.h |
|
miniupnpc.o: miniupnpc.h miniupnpc_declspec.h igd_desc_parse.h upnpdev.h |
|
miniupnpc.o: minissdpc.h miniwget.h minisoap.h minixml.h upnpcommands.h |
|
miniupnpc.o: upnpreplyparse.h portlistingparse.h miniupnpctypes.h |
|
miniupnpc.o: connecthostport.h |
|
minixml.o: minixml.h |
|
minisoap.o: minisoap.h miniupnpcstrings.h |
|
miniwget.o: miniupnpcstrings.h miniwget.h miniupnpc_declspec.h |
|
miniwget.o: connecthostport.h receivedata.h |
|
upnpc.o: miniwget.h miniupnpc_declspec.h miniupnpc.h igd_desc_parse.h |
|
upnpc.o: upnpdev.h upnpcommands.h upnpreplyparse.h portlistingparse.h |
|
upnpc.o: miniupnpctypes.h upnperrors.h miniupnpcstrings.h |
|
upnpcommands.o: upnpcommands.h upnpreplyparse.h portlistingparse.h |
|
upnpcommands.o: miniupnpc_declspec.h miniupnpctypes.h miniupnpc.h |
|
upnpcommands.o: igd_desc_parse.h upnpdev.h |
|
upnpreplyparse.o: upnpreplyparse.h minixml.h |
|
testminixml.o: minixml.h igd_desc_parse.h |
|
minixmlvalid.o: minixml.h |
|
testupnpreplyparse.o: upnpreplyparse.h |
|
minissdpc.o: minissdpc.h miniupnpc_declspec.h upnpdev.h miniupnpc.h |
|
minissdpc.o: igd_desc_parse.h receivedata.h codelength.h |
|
upnperrors.o: upnperrors.h miniupnpc_declspec.h upnpcommands.h |
|
upnperrors.o: upnpreplyparse.h portlistingparse.h miniupnpctypes.h |
|
upnperrors.o: miniupnpc.h igd_desc_parse.h upnpdev.h |
|
testigddescparse.o: igd_desc_parse.h minixml.h miniupnpc.h |
|
testigddescparse.o: miniupnpc_declspec.h upnpdev.h |
|
testminiwget.o: miniwget.h miniupnpc_declspec.h |
|
connecthostport.o: connecthostport.h |
|
portlistingparse.o: portlistingparse.h miniupnpc_declspec.h miniupnpctypes.h |
|
portlistingparse.o: minixml.h |
|
receivedata.o: receivedata.h |
|
upnpdev.o: upnpdev.h miniupnpc_declspec.h |
|
testportlistingparse.o: portlistingparse.h miniupnpc_declspec.h |
|
testportlistingparse.o: miniupnpctypes.h |
|
miniupnpcmodule.o: miniupnpc.h miniupnpc_declspec.h igd_desc_parse.h |
|
miniupnpcmodule.o: upnpdev.h upnpcommands.h upnpreplyparse.h |
|
miniupnpcmodule.o: portlistingparse.h miniupnpctypes.h upnperrors.h |
|
listdevices.o: miniupnpc.h miniupnpc_declspec.h igd_desc_parse.h upnpdev.h
|
|
|