Makefile 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275
  1. # $Id: Makefile,v 1.93 2012/04/09 12:49:26 nanard Exp $
  2. # MiniUPnP Project
  3. # http://miniupnp.free.fr/
  4. # (c) 2005-2011 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...)
  11. OS = $(shell uname -s)
  12. VERSION = $(shell cat VERSION)
  13. ifeq ($(OS), Darwin)
  14. JARSUFFIX=mac
  15. endif
  16. ifeq ($(OS), Linux)
  17. JARSUFFIX=linux
  18. endif
  19. CC ?= gcc
  20. #AR = gar
  21. #CFLAGS = -O -Wall -g -DDEBUG -ansi -Wstrict-prototypes
  22. CFLAGS ?= -O -Wall -DNDEBUG -DMINIUPNPC_SET_SOCKET_TIMEOUT -ansi -Wstrict-prototypes -D_BSD_SOURCE
  23. # -DNO_GETADDRINFO
  24. INSTALL = install
  25. SH = /bin/sh
  26. JAVA = java
  27. # see http://code.google.com/p/jnaerator/
  28. JNAERATOR = jnaerator-0.9.7.jar
  29. JNAERATORBASEURL = http://jnaerator.googlecode.com/files/
  30. #following libs are needed on Solaris
  31. #LDLIBS=-lsocket -lnsl -lresolv
  32. # APIVERSION is used to build SONAME
  33. APIVERSION = 8
  34. SRCS = igd_desc_parse.c miniupnpc.c minixml.c minisoap.c miniwget.c \
  35. upnpc.c upnpcommands.c upnpreplyparse.c testminixml.c \
  36. minixmlvalid.c testupnpreplyparse.c minissdpc.c \
  37. upnperrors.c testigddescparse.c testminiwget.c \
  38. connecthostport.c portlistringparse.c receivedata.c
  39. LIBOBJS = miniwget.o minixml.o igd_desc_parse.o minisoap.o \
  40. miniupnpc.o upnpreplyparse.o upnpcommands.o upnperrors.o \
  41. connecthostport.o portlistingparse.o receivedata.o
  42. ifneq ($(OS), AmigaOS)
  43. CFLAGS := -fPIC $(CFLAGS)
  44. LIBOBJS := $(LIBOBJS) minissdpc.o
  45. endif
  46. OBJS = $(patsubst %.c,%.o,$(SRCS))
  47. # HEADERS to install
  48. HEADERS = miniupnpc.h miniwget.h upnpcommands.h igd_desc_parse.h \
  49. upnpreplyparse.h upnperrors.h miniupnpctypes.h \
  50. portlistingparse.h \
  51. declspec.h
  52. # library names
  53. LIBRARY = libminiupnpc.a
  54. ifeq ($(OS), Darwin)
  55. SHAREDLIBRARY = libminiupnpc.dylib
  56. SONAME = $(basename $(SHAREDLIBRARY)).$(APIVERSION).dylib
  57. CFLAGS := -DMACOSX -D_DARWIN_C_SOURCE $(CFLAGS)
  58. else
  59. SHAREDLIBRARY = libminiupnpc.so
  60. SONAME = $(SHAREDLIBRARY).$(APIVERSION)
  61. endif
  62. EXECUTABLES = upnpc-static
  63. EXECUTABLES_ADDTESTS = testminixml minixmlvalid testupnpreplyparse \
  64. testigddescparse testminiwget
  65. TESTMINIXMLOBJS = minixml.o igd_desc_parse.o testminixml.o
  66. TESTMINIWGETOBJS = miniwget.o testminiwget.o connecthostport.o receivedata.o
  67. TESTUPNPREPLYPARSE = testupnpreplyparse.o minixml.o upnpreplyparse.o
  68. TESTIGDDESCPARSE = testigddescparse.o igd_desc_parse.o minixml.o \
  69. miniupnpc.o miniwget.o upnpcommands.o upnpreplyparse.o \
  70. minisoap.o connecthostport.o receivedata.o \
  71. portlistingparse.o
  72. ifneq ($(OS), AmigaOS)
  73. EXECUTABLES := $(EXECUTABLES) upnpc-shared
  74. TESTMINIWGETOBJS := $(TESTMINIWGETOBJS) minissdpc.o
  75. TESTIGDDESCPARSE := $(TESTIGDDESCPARSE) minissdpc.o
  76. endif
  77. # install directories
  78. INSTALLPREFIX ?= $(PREFIX)/usr
  79. INSTALLDIRINC = $(INSTALLPREFIX)/include/miniupnpc
  80. INSTALLDIRLIB = $(INSTALLPREFIX)/lib
  81. INSTALLDIRBIN = $(INSTALLPREFIX)/bin
  82. INSTALLDIRMAN = $(INSTALLPREFIX)/share/man
  83. FILESTOINSTALL = $(LIBRARY) $(EXECUTABLES)
  84. ifneq ($(OS), AmigaOS)
  85. FILESTOINSTALL := $(FILESTOINSTALL) $(SHAREDLIBRARY)
  86. endif
  87. .PHONY: install clean depend all check test everything \
  88. installpythonmodule updateversion
  89. # validateminixml validateminiwget
  90. all: $(LIBRARY) $(EXECUTABLES)
  91. test: check
  92. check: validateminixml validateminiwget
  93. everything: all $(EXECUTABLES_ADDTESTS)
  94. pythonmodule: $(LIBRARY) miniupnpcmodule.c setup.py
  95. python setup.py build
  96. touch $@
  97. installpythonmodule: pythonmodule
  98. python setup.py install
  99. validateminixml: minixmlvalid
  100. @echo "minixml validation test"
  101. ./minixmlvalid
  102. touch $@
  103. validateminiwget: testminiwget minihttptestserver testminiwget.sh
  104. @echo "miniwget validation test"
  105. ./testminiwget.sh
  106. touch $@
  107. clean:
  108. $(RM) $(LIBRARY) $(SHAREDLIBRARY) $(EXECUTABLES) $(OBJS) miniupnpcstrings.h
  109. # clean python stuff
  110. $(RM) pythonmodule validateminixml
  111. $(RM) -r build/ dist/
  112. #python setup.py clean
  113. # clean jnaerator stuff
  114. $(RM) _jnaerator.* java/miniupnpc_$(OS).jar
  115. updateversion: miniupnpc.h
  116. cp miniupnpc.h miniupnpc.h.bak
  117. sed 's/\(.*MINIUPNPC_API_VERSION\s\+\)[0-9]\+/\1$(APIVERSION)/' < miniupnpc.h.bak > miniupnpc.h
  118. install: updateversion $(FILESTOINSTALL)
  119. $(INSTALL) -d $(INSTALLDIRINC)
  120. $(INSTALL) -m 644 $(HEADERS) $(INSTALLDIRINC)
  121. $(INSTALL) -d $(INSTALLDIRLIB)
  122. $(INSTALL) -m 644 $(LIBRARY) $(INSTALLDIRLIB)
  123. ifneq ($(OS), AmigaOS)
  124. $(INSTALL) -m 644 $(SHAREDLIBRARY) $(INSTALLDIRLIB)/$(SONAME)
  125. ln -fs $(SONAME) $(INSTALLDIRLIB)/$(SHAREDLIBRARY)
  126. endif
  127. $(INSTALL) -d $(INSTALLDIRBIN)
  128. ifeq ($(OS), AmigaOS)
  129. $(INSTALL) -m 755 upnpc-static $(INSTALLDIRBIN)/upnpc
  130. else
  131. $(INSTALL) -m 755 upnpc-shared $(INSTALLDIRBIN)/upnpc
  132. endif
  133. $(INSTALL) -m 755 external-ip.sh $(INSTALLDIRBIN)/external-ip
  134. ifneq ($(OS), AmigaOS)
  135. $(INSTALL) -d $(INSTALLDIRMAN)/man3
  136. $(INSTALL) man3/miniupnpc.3 $(INSTALLDIRMAN)/man3/miniupnpc.3
  137. endif
  138. cleaninstall:
  139. $(RM) -r $(INSTALLDIRINC)
  140. $(RM) $(INSTALLDIRLIB)/$(LIBRARY)
  141. $(RM) $(INSTALLDIRLIB)/$(SHAREDLIBRARY)
  142. depend:
  143. makedepend -Y -- $(CFLAGS) -- $(SRCS) 2>/dev/null
  144. $(LIBRARY): $(LIBOBJS)
  145. $(AR) crs $@ $?
  146. $(SHAREDLIBRARY): $(LIBOBJS)
  147. ifeq ($(OS), Darwin)
  148. # $(CC) -dynamiclib $(LDFLAGS) -Wl,-install_name,$(SONAME) -o $@ $^
  149. $(CC) -dynamiclib $(LDFLAGS) -Wl,-install_name,$(INSTALLDIRLIB)/$(SONAME) -o $@ $^
  150. else
  151. $(CC) -shared $(LDFLAGS) -Wl,-soname,$(SONAME) -o $@ $^
  152. endif
  153. upnpc-static: upnpc.o $(LIBRARY) $(LDLIBS)
  154. $(CC) $(LDFLAGS) -o $@ $^
  155. upnpc-shared: upnpc.o $(SHAREDLIBRARY) $(LDLIBS)
  156. $(CC) $(LDFLAGS) -o $@ $^
  157. testminixml: $(TESTMINIXMLOBJS)
  158. testminiwget: $(TESTMINIWGETOBJS)
  159. minixmlvalid: minixml.o minixmlvalid.o
  160. testupnpreplyparse: $(TESTUPNPREPLYPARSE)
  161. testigddescparse: $(TESTIGDDESCPARSE)
  162. miniupnpcstrings.h: miniupnpcstrings.h.in updateminiupnpcstrings.sh VERSION
  163. $(SH) updateminiupnpcstrings.sh
  164. jnaerator-0.9.8-shaded.jar:
  165. wget $(JNAERATORBASEURL)/$@ || curl -o $@ $(JNAERATORBASEURL)/$@
  166. jnaerator-0.9.7.jar:
  167. wget $(JNAERATORBASEURL)/$@ || curl -o $@ $(JNAERATORBASEURL)/$@
  168. jnaerator-0.9.3.jar:
  169. wget $(JNAERATORBASEURL)/$@ || curl -o $@ $(JNAERATORBASEURL)/$@
  170. jar: $(SHAREDLIBRARY) $(JNAERATOR)
  171. $(JAVA) -jar $(JNAERATOR) -library miniupnpc \
  172. miniupnpc.h declspec.h upnpcommands.h upnpreplyparse.h \
  173. igd_desc_parse.h miniwget.h upnperrors.h $(SHAREDLIBRARY) \
  174. -package fr.free.miniupnp -o . -jar java/miniupnpc_$(JARSUFFIX).jar -v
  175. mvn_install:
  176. mvn install:install-file -Dfile=java/miniupnpc_$(JARSUFFIX).jar \
  177. -DgroupId=com.github \
  178. -DartifactId=miniupnp \
  179. -Dversion=$(VERSION) \
  180. -Dpackaging=jar \
  181. -Dclassifier=$(JARSUFFIX) \
  182. -DgeneratePom=true \
  183. -DcreateChecksum=true
  184. # make .deb packages
  185. deb: /usr/share/pyshared/stdeb all
  186. (python setup.py --command-packages=stdeb.command bdist_deb)
  187. # install .deb packages
  188. ideb:
  189. (sudo dpkg -i deb_dist/*.deb)
  190. /usr/share/pyshared/stdeb: /usr/share/doc/python-all-dev
  191. (sudo apt-get install python-stdeb)
  192. /usr/share/doc/python-all-dev:
  193. (sudo apt-get install python-all-dev)
  194. minihttptestserver: minihttptestserver.o
  195. # DO NOT DELETE THIS LINE -- make depend depends on it.
  196. igd_desc_parse.o: igd_desc_parse.h
  197. miniupnpc.o: miniupnpc.h declspec.h igd_desc_parse.h minissdpc.h miniwget.h
  198. miniupnpc.o: minisoap.h minixml.h upnpcommands.h upnpreplyparse.h
  199. miniupnpc.o: portlistingparse.h miniupnpctypes.h connecthostport.h
  200. miniupnpc.o: receivedata.h
  201. minixml.o: minixml.h
  202. minisoap.o: minisoap.h miniupnpcstrings.h
  203. miniwget.o: miniupnpcstrings.h miniwget.h declspec.h connecthostport.h
  204. miniwget.o: receivedata.h
  205. upnpc.o: miniwget.h declspec.h miniupnpc.h igd_desc_parse.h upnpcommands.h
  206. upnpc.o: upnpreplyparse.h portlistingparse.h miniupnpctypes.h upnperrors.h
  207. upnpcommands.o: upnpcommands.h upnpreplyparse.h portlistingparse.h declspec.h
  208. upnpcommands.o: miniupnpctypes.h miniupnpc.h igd_desc_parse.h
  209. upnpreplyparse.o: upnpreplyparse.h minixml.h
  210. testminixml.o: minixml.h igd_desc_parse.h
  211. minixmlvalid.o: minixml.h
  212. testupnpreplyparse.o: upnpreplyparse.h
  213. minissdpc.o: minissdpc.h miniupnpc.h declspec.h igd_desc_parse.h codelength.h
  214. upnperrors.o: upnperrors.h declspec.h upnpcommands.h upnpreplyparse.h
  215. upnperrors.o: portlistingparse.h miniupnpctypes.h miniupnpc.h
  216. upnperrors.o: igd_desc_parse.h
  217. testigddescparse.o: igd_desc_parse.h minixml.h miniupnpc.h declspec.h
  218. testminiwget.o: miniwget.h declspec.h
  219. connecthostport.o: connecthostport.h
  220. receivedata.o: receivedata.h
粤ICP备19079148号