1# $Id: Makefile,v 1.12 2017/05/26 11:01:37 nanard Exp $ 2# MiniUPnP Project 3# http://miniupnp.free.fr/ 4# (c) 2005-2017 Thomas Bernard 5# to install use : 6# $ PREFIX=/tmp/dummylocation make install 7# or 8# $ INSTALLPREFIX=/usr/local make install 9# or 10# make install (will go to /usr/bin, /usr/lib, etc...) 11OS = $(shell $(CC) -dumpmachine) 12 13CC ?= gcc 14#AR = gar 15CFLAGS = -O0 -g -DDEBUG 16#CFLAGS = -O 17CFLAGS += -fPIC 18CFLAGS += -ansi 19CFLAGS += -Wall -W 20CFLAGS += -D_BSD_SOURCE 21ifeq (, $(findstring darwin, $(OS))$(findstring freebsd, $(OS))) 22#CFLAGS += -D_POSIX_C_SOURCE=200112L 23CFLAGS += -D_XOPEN_SOURCE=600 24endif 25CFLAGS += -DUPNPC_USE_SELECT 26INSTALL = install 27 28#following libs are needed on Solaris 29ifneq (, $(findstring sun, $(OS))) 30 LDLIBS += -lsocket -lnsl -lresolv 31 CFLAGS += -D__EXTENSIONS__ 32endif 33 34# APIVERSION is used to build SONAME 35APIVERSION = 0 36 37SRCS = miniupnpc-async.c parsessdpreply.c \ 38 upnputils.c igd_desc_parse.c minixml.c \ 39 upnpreplyparse.c \ 40 testasync.c 41 42LIBOBJS = miniupnpc-async.o parsessdpreply.o \ 43 upnputils.o igd_desc_parse.o minixml.o \ 44 upnpreplyparse.o 45 46OBJS = $(patsubst %.c,%.o,$(SRCS)) 47 48# HEADERS to install 49HEADERS = miniupnpc-async.h 50LIBRARY = libminiupnpc-async.a 51SHAREDLIBRARY = libminiupnpc-async.so 52SONAME = $(SHAREDLIBRARY).$(APIVERSION) 53EXECUTABLES = testasync 54 55INSTALLPREFIX ?= $(PREFIX)/usr 56INSTALLDIRINC = $(INSTALLPREFIX)/include/miniupnpc 57INSTALLDIRLIB = $(INSTALLPREFIX)/lib 58INSTALLDIRBIN = $(INSTALLPREFIX)/bin 59 60.PHONY: install clean depend all installpythonmodule 61 62all: $(LIBRARY) $(EXECUTABLES) 63 64check: 65 @echo "To be implemented" 66 67pythonmodule: $(LIBRARY) miniupnpcmodule.c setup.py 68 python setup.py build 69 touch $@ 70 71installpythonmodule: pythonmodule 72 python setup.py install 73 74clean: 75 $(RM) $(LIBRARY) $(SHAREDLIBRARY) $(EXECUTABLES) $(OBJS) 76 # clean python stuff 77 $(RM) pythonmodule 78 $(RM) -r build/ dist/ 79 #python setup.py clean 80 81install: $(LIBRARY) $(SHAREDLIBRARY) 82 $(INSTALL) -d $(INSTALLDIRINC) 83 $(INSTALL) -m 644 $(HEADERS) $(INSTALLDIRINC) 84 $(INSTALL) -d $(INSTALLDIRLIB) 85 $(INSTALL) -m 644 $(LIBRARY) $(INSTALLDIRLIB) 86 $(INSTALL) -m 644 $(SHAREDLIBRARY) $(INSTALLDIRLIB)/$(SONAME) 87 $(INSTALL) -d $(INSTALLDIRBIN) 88 $(INSTALL) -m 755 $(EXECUTABLES) $(INSTALLDIRBIN) 89 ln -fs $(SONAME) $(INSTALLDIRLIB)/$(SHAREDLIBRARY) 90 91cleaninstall: 92 $(RM) -r $(INSTALLDIRINC) 93 $(RM) $(INSTALLDIRLIB)/$(LIBRARY) 94 $(RM) $(INSTALLDIRLIB)/$(SHAREDLIBRARY) 95 96depend: 97 makedepend -Y -- $(CFLAGS) -- $(SRCS) 2>/dev/null 98 99$(LIBRARY): $(LIBOBJS) 100 $(AR) crs $@ $? 101 102$(SHAREDLIBRARY): $(LIBOBJS) 103 $(CC) -shared -Wl,-soname,$(SONAME) -o $@ $^ 104 105upnpc-static: upnpc.o $(LIBRARY) 106 $(CC) -o $@ $^ 107 108upnpc-shared: upnpc.o $(SHAREDLIBRARY) 109 $(CC) -o $@ $^ 110 111testasync: testasync.o libminiupnpc-async.a 112#testasync: testasync.o -lminiupnpc-async 113 114# DO NOT DELETE THIS LINE -- make depend depends on it. 115 116miniupnpc-async.o: miniupnpc-async.h declspec.h parsessdpreply.h upnputils.h 117parsessdpreply.o: parsessdpreply.h 118testasync.o: miniupnpc-async.h declspec.h 119