Makefile 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. # $Id: Makefile,v 1.68 2010/12/21 16:13:14 nanard Exp $
  2. # MiniUPnP Project
  3. # http://miniupnp.free.fr/
  4. # (c) 2005-2010 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. CC ?= gcc
  13. #AR = gar
  14. #CFLAGS = -O -Wall -g -DDEBUG
  15. CFLAGS ?= -O -Wall -DNDEBUG -DMINIUPNPC_SET_SOCKET_TIMEOUT
  16. # -DNO_GETADDRINFO
  17. INSTALL = install
  18. SH = /bin/sh
  19. JAVA = java
  20. # see http://code.google.com/p/jnaerator/
  21. JNAERATOR = jnaerator-0.9.3.jar
  22. #following libs are needed on Solaris
  23. #LDLIBS=-lsocket -lnsl -lresolv
  24. # APIVERSION is used to build SONAME
  25. APIVERSION = 5
  26. SRCS = igd_desc_parse.c miniupnpc.c minixml.c minisoap.c miniwget.c \
  27. upnpc.c upnpcommands.c upnpreplyparse.c testminixml.c \
  28. minixmlvalid.c testupnpreplyparse.c minissdpc.c \
  29. upnperrors.c testigddescparse.c testminiwget.c \
  30. connecthostport.c
  31. LIBOBJS = miniwget.o minixml.o igd_desc_parse.o minisoap.o \
  32. miniupnpc.o upnpreplyparse.o upnpcommands.o upnperrors.o \
  33. connecthostport.o
  34. ifneq ($(OS), AmigaOS)
  35. CFLAGS := -fPIC $(CFLAGS)
  36. LIBOBJS := $(LIBOBJS) minissdpc.o
  37. endif
  38. OBJS = $(patsubst %.c,%.o,$(SRCS))
  39. # HEADERS to install
  40. HEADERS = miniupnpc.h miniwget.h upnpcommands.h igd_desc_parse.h \
  41. upnpreplyparse.h upnperrors.h declspec.h
  42. # library names
  43. LIBRARY = libminiupnpc.a
  44. ifeq ($(OS), Darwin)
  45. SHAREDLIBRARY = libminiupnpc.dylib
  46. SONAME = $(basename $(SHAREDLIBRARY)).$(APIVERSION).dylib
  47. CFLAGS := -DMACOSX -D_DARWIN_C_SOURCE $(CFLAGS)
  48. else
  49. SHAREDLIBRARY = libminiupnpc.so
  50. SONAME = $(SHAREDLIBRARY).$(APIVERSION)
  51. endif
  52. EXECUTABLES = upnpc-static
  53. EXECUTABLES_ADDTESTS = testminixml minixmlvalid testupnpreplyparse \
  54. testigddescparse testminiwget
  55. TESTMINIXMLOBJS = minixml.o igd_desc_parse.o testminixml.o
  56. TESTMINIWGETOBJS = miniwget.o testminiwget.o miniupnpc.o minisoap.o \
  57. upnpcommands.o upnpreplyparse.o minixml.o \
  58. igd_desc_parse.o connecthostport.o
  59. TESTUPNPREPLYPARSE = testupnpreplyparse.o minixml.o upnpreplyparse.o
  60. TESTIGDDESCPARSE = testigddescparse.o igd_desc_parse.o minixml.o \
  61. miniupnpc.o miniwget.o upnpcommands.o upnpreplyparse.o \
  62. minisoap.o connecthostport.o
  63. ifneq ($(OS), AmigaOS)
  64. EXECUTABLES := $(EXECUTABLES) upnpc-shared
  65. TESTMINIWGETOBJS := $(TESTMINIWGETOBJS) minissdpc.o
  66. TESTIGDDESCPARSE := $(TESTIGDDESCPARSE) minissdpc.o
  67. endif
  68. # install directories
  69. INSTALLPREFIX ?= $(PREFIX)/usr
  70. INSTALLDIRINC = $(INSTALLPREFIX)/include/miniupnpc
  71. INSTALLDIRLIB = $(INSTALLPREFIX)/lib
  72. INSTALLDIRBIN = $(INSTALLPREFIX)/bin
  73. FILESTOINSTALL = $(LIBRARY) $(EXECUTABLES)
  74. ifneq ($(OS), AmigaOS)
  75. FILESTOINSTALL := $(FILESTOINSTALL) $(SHAREDLIBRARY)
  76. endif
  77. .PHONY: install clean depend all check everything installpythonmodule \
  78. validateminixml
  79. all: $(LIBRARY) $(EXECUTABLES)
  80. check: validateminixml
  81. everything: all $(EXECUTABLES_ADDTESTS)
  82. pythonmodule: $(LIBRARY) miniupnpcmodule.c setup.py
  83. python setup.py build
  84. touch $@
  85. installpythonmodule: pythonmodule
  86. python setup.py install
  87. validateminixml: minixmlvalid
  88. @echo "minixml validation test"
  89. ./minixmlvalid
  90. touch $@
  91. clean:
  92. $(RM) $(LIBRARY) $(SHAREDLIBRARY) $(EXECUTABLES) $(OBJS) miniupnpcstrings.h
  93. # clean python stuff
  94. $(RM) pythonmodule validateminixml
  95. $(RM) -r build/ dist/
  96. #python setup.py clean
  97. install: $(FILESTOINSTALL)
  98. $(INSTALL) -d $(INSTALLDIRINC)
  99. $(INSTALL) -m 644 $(HEADERS) $(INSTALLDIRINC)
  100. $(INSTALL) -d $(INSTALLDIRLIB)
  101. $(INSTALL) -m 644 $(LIBRARY) $(INSTALLDIRLIB)
  102. ifneq ($(OS), AmigaOS)
  103. $(INSTALL) -m 644 $(SHAREDLIBRARY) $(INSTALLDIRLIB)/$(SONAME)
  104. ln -fs $(SONAME) $(INSTALLDIRLIB)/$(SHAREDLIBRARY)
  105. endif
  106. $(INSTALL) -d $(INSTALLDIRBIN)
  107. ifeq ($(OS), AmigaOS)
  108. $(INSTALL) -m 755 upnpc-static $(INSTALLDIRBIN)/upnpc
  109. else
  110. $(INSTALL) -m 755 upnpc-shared $(INSTALLDIRBIN)/upnpc
  111. endif
  112. $(INSTALL) -m 755 external-ip.sh $(INSTALLDIRBIN)/external-ip
  113. cleaninstall:
  114. $(RM) -r $(INSTALLDIRINC)
  115. $(RM) $(INSTALLDIRLIB)/$(LIBRARY)
  116. $(RM) $(INSTALLDIRLIB)/$(SHAREDLIBRARY)
  117. depend:
  118. makedepend -Y -- $(CFLAGS) -- $(SRCS) 2>/dev/null
  119. $(LIBRARY): $(LIBOBJS)
  120. $(AR) crs $@ $?
  121. $(SHAREDLIBRARY): $(LIBOBJS)
  122. ifeq ($(OS), Darwin)
  123. $(CC) -dynamiclib $(LDFLAGS) -Wl,-install_name,$(SONAME) -o $@ $^
  124. else
  125. $(CC) -shared $(LDFLAGS) -Wl,-soname,$(SONAME) -o $@ $^
  126. endif
  127. upnpc-static: upnpc.o $(LIBRARY) $(LDLIBS)
  128. $(CC) $(LDFLAGS) -o $@ $^
  129. upnpc-shared: upnpc.o $(SHAREDLIBRARY) $(LDLIBS)
  130. $(CC) $(LDFLAGS) -o $@ $^
  131. testminixml: $(TESTMINIXMLOBJS)
  132. testminiwget: $(TESTMINIWGETOBJS)
  133. minixmlvalid: minixml.o minixmlvalid.o
  134. testupnpreplyparse: $(TESTUPNPREPLYPARSE)
  135. testigddescparse: $(TESTIGDDESCPARSE)
  136. miniupnpcstrings.h: miniupnpcstrings.h.in updateminiupnpcstrings.sh
  137. $(SH) updateminiupnpcstrings.sh
  138. jar: $(SHAREDLIBRARY)
  139. $(JAVA) -jar $(JNAERATOR) -library miniupnpc miniupnpc.h declspec.h upnpcommands.h upnpreplyparse.h igd_desc_parse.h miniwget.h upnperrors.h $(SHAREDLIBRARY) -package fr.free.miniupnp -o . -jar java/miniupnpc_$(OS).jar -v
  140. # DO NOT DELETE THIS LINE -- make depend depends on it.
  141. igd_desc_parse.o: igd_desc_parse.h
  142. miniupnpc.o: miniupnpc.h declspec.h igd_desc_parse.h minissdpc.h miniwget.h
  143. miniupnpc.o: minisoap.h minixml.h upnpcommands.h upnpreplyparse.h
  144. miniupnpc.o: connecthostport.h
  145. minixml.o: minixml.h
  146. minisoap.o: minisoap.h miniupnpcstrings.h
  147. miniwget.o: miniupnpc.h declspec.h igd_desc_parse.h miniupnpcstrings.h
  148. miniwget.o: miniwget.h connecthostport.h
  149. upnpc.o: miniwget.h declspec.h miniupnpc.h igd_desc_parse.h upnpcommands.h
  150. upnpc.o: upnpreplyparse.h upnperrors.h
  151. upnpcommands.o: upnpcommands.h upnpreplyparse.h declspec.h miniupnpc.h
  152. upnpcommands.o: igd_desc_parse.h
  153. upnpreplyparse.o: upnpreplyparse.h minixml.h
  154. testminixml.o: minixml.h igd_desc_parse.h
  155. minixmlvalid.o: minixml.h
  156. testupnpreplyparse.o: upnpreplyparse.h
  157. minissdpc.o: minissdpc.h miniupnpc.h declspec.h igd_desc_parse.h codelength.h
  158. upnperrors.o: upnperrors.h declspec.h upnpcommands.h upnpreplyparse.h
  159. testigddescparse.o: igd_desc_parse.h minixml.h miniupnpc.h declspec.h
  160. testminiwget.o: miniwget.h declspec.h
  161. connecthostport.o: connecthostport.h
粤ICP备19079148号