| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- # $Id: Makefile,v 1.23 2013/11/26 16:38:15 nanard Exp $
- # This Makefile is designed for use with GNU make
- # libnatpmp
- # (c) 2007-2013 Thomas Bernard
- # http://miniupnp.free.fr/libnatpmp.html
- OS = $(shell uname -s)
- CC = gcc
- INSTALL = install -p
- ARCH = $(shell uname -m | sed -e s/i.86/i686/)
- VERSION = $(shell cat VERSION)
- ifeq ($(OS), Darwin)
- JARSUFFIX=mac
- endif
- ifeq ($(OS), Linux)
- JARSUFFIX=linux
- endif
- ifneq (,$(findstring WIN,$(OS)))
- JARSUFFIX=win32
- endif
- # APIVERSION is used in soname
- APIVERSION = 1
- #LDFLAGS = -Wl,--no-undefined
- CFLAGS ?= -Os
- #CFLAGS = -g -O0
- CFLAGS += -fPIC
- CFLAGS += -Wall
- #CFLAGS += -Wextra
- CFLAGS += -DENABLE_STRNATPMPERR
- #CFLAGS += -Wstrict-aliasing
- LIBOBJS = natpmp.o getgateway.o
- OBJS = $(LIBOBJS) testgetgateway.o natpmpc.o natpmp-jni.o
- STATICLIB = libnatpmp.a
- ifeq ($(OS), Darwin)
- SHAREDLIB = libnatpmp.dylib
- JNISHAREDLIB = libjninatpmp.dylib
- SONAME = $(basename $(SHAREDLIB)).$(APIVERSION).dylib
- CFLAGS := -DMACOSX -D_DARWIN_C_SOURCE $(CFLAGS)
- SONAMEFLAGS=-Wl,-install_name,$(JNISHAREDLIB) -dynamiclib -framework JavaVM
- else
- ifneq (,$(findstring WIN,$(OS)))
- SHAREDLIB = natpmp.dll
- JNISHAREDLIB = jninatpmp.dll
- CC = i686-w64-mingw32-gcc
- EXTRA_LD = -lws2_32 -lIphlpapi -Wl,--no-undefined -Wl,--enable-runtime-pseudo-reloc --Wl,kill-at
- else
- SHAREDLIB = libnatpmp.so
- JNISHAREDLIB = libjninatpmp.so
- SONAME = $(SHAREDLIB).$(APIVERSION)
- SONAMEFLAGS=-Wl,-soname,$(JNISHAREDLIB)
- endif
- endif
- HEADERS = natpmp.h
- EXECUTABLES = testgetgateway natpmpc-shared natpmpc-static
- INSTALLPREFIX ?= $(PREFIX)/usr
- INSTALLDIRINC = $(INSTALLPREFIX)/include
- INSTALLDIRLIB = $(INSTALLPREFIX)/lib
- INSTALLDIRBIN = $(INSTALLPREFIX)/bin
- JAVA ?= java
- JAVAC ?= javac
- JAVAH ?= javah
- JAVAPACKAGE = fr/free/miniupnp/libnatpmp
- JAVACLASSES = $(JAVAPACKAGE)/NatPmp.class $(JAVAPACKAGE)/NatPmpResponse.class $(JAVAPACKAGE)/LibraryExtractor.class $(JAVAPACKAGE)/URLUtils.class
- JNIHEADERS = fr_free_miniupnp_libnatpmp_NatPmp.h
- .PHONY: all clean depend install cleaninstall installpythonmodule
- all: $(STATICLIB) $(SHAREDLIB) $(EXECUTABLES)
- pythonmodule: $(STATICLIB) libnatpmpmodule.c setup.py
- python setup.py build
- touch $@
- installpythonmodule: pythonmodule
- python setup.py install
- clean:
- $(RM) $(OBJS) $(EXECUTABLES) $(STATICLIB) $(SHAREDLIB) $(JAVACLASSES) $(JNISHAREDLIB)
- $(RM) pythonmodule
- $(RM) -r build/ dist/ libraries/
- depend:
- makedepend -f$(MAKEFILE_LIST) -Y $(OBJS:.o=.c) 2>/dev/null
- install: $(HEADERS) $(STATICLIB) $(SHAREDLIB) natpmpc-shared
- $(INSTALL) -d $(INSTALLDIRINC)
- $(INSTALL) -m 644 $(HEADERS) $(INSTALLDIRINC)
- $(INSTALL) -d $(INSTALLDIRLIB)
- $(INSTALL) -m 644 $(STATICLIB) $(INSTALLDIRLIB)
- $(INSTALL) -m 644 $(SHAREDLIB) $(INSTALLDIRLIB)/$(SONAME)
- $(INSTALL) -d $(INSTALLDIRBIN)
- $(INSTALL) -m 755 natpmpc-shared $(INSTALLDIRBIN)/natpmpc
- ln -s -f $(SONAME) $(INSTALLDIRLIB)/$(SHAREDLIB)
- $(JNIHEADERS): fr/free/miniupnp/libnatpmp/NatPmp.class
- $(JAVAH) -jni fr.free.miniupnp.libnatpmp.NatPmp
- %.class: %.java
- $(JAVAC) -cp . $<
- $(JNISHAREDLIB): $(SHAREDLIB) $(JNIHEADERS) $(JAVACLASSES)
- ifeq (,$(JAVA_HOME))
- @echo "Check your JAVA_HOME environement variable" && false
- endif
- ifneq (,$(findstring WIN,$(OS)))
- $(CC) -m32 -D_JNI_Implementation_ -Wl,--kill-at \
- -I"$(JAVA_HOME)/include" -I"$(JAVA_HOME)/include/win32" \
- natpmp-jni.c -shared \
- -o $(JNISHAREDLIB) -L. -lnatpmp -lws2_32 -lIphlpapi
- else
- $(CC) $(CFLAGS) -c -I"$(JAVA_HOME)/include" -I"$(JAVA_HOME)/include/win32" natpmp-jni.c
- $(CC) $(CFLAGS) -o $(JNISHAREDLIB) -shared $(SONAMEFLAGS) natpmp-jni.o -lc -L. -lnatpmp
- endif
- jar: $(JNISHAREDLIB)
- find fr -name '*.class' -print > classes.list
- $(eval JNISHAREDLIBPATH := $(shell java fr.free.miniupnp.libnatpmp.LibraryExtractor))
- mkdir -p libraries/$(JNISHAREDLIBPATH)
- mv $(JNISHAREDLIB) libraries/$(JNISHAREDLIBPATH)/$(JNISHAREDLIB)
- jar cf natpmp_$(JARSUFFIX).jar @classes.list libraries/$(JNISHAREDLIBPATH)/$(JNISHAREDLIB)
- $(RM) classes.list
- jnitest: $(JNISHAREDLIB) JavaTest.class
- $(RM) libjninatpmp.so
- $(JAVA) -Djna.nosys=true -cp . JavaTest
- mvn_install:
- mvn install:install-file -Dfile=java/natpmp_$(JARSUFFIX).jar \
- -DgroupId=com.github \
- -DartifactId=natpmp \
- -Dversion=$(VERSION) \
- -Dpackaging=jar \
- -Dclassifier=$(JARSUFFIX) \
- -DgeneratePom=true \
- -DcreateChecksum=true
- cleaninstall:
- $(RM) $(addprefix $(INSTALLDIRINC), $(HEADERS))
- $(RM) $(INSTALLDIRLIB)/$(SONAME)
- $(RM) $(INSTALLDIRLIB)/$(SHAREDLIB)
- $(RM) $(INSTALLDIRLIB)/$(STATICLIB)
- testgetgateway: testgetgateway.o getgateway.o
- $(CC) $(LDFLAGS) -o $@ $^ $(EXTRA_LD)
- natpmpc-static: natpmpc.o $(STATICLIB)
- $(CC) $(LDFLAGS) -o $@ $^ $(EXTRA_LD)
- natpmpc-shared: natpmpc.o $(SHAREDLIB)
- $(CC) $(LDFLAGS) -o $@ $^ $(EXTRA_LD)
- $(STATICLIB): $(LIBOBJS)
- $(AR) crs $@ $?
- $(SHAREDLIB): $(LIBOBJS)
- ifeq ($(OS), Darwin)
- $(CC) -dynamiclib -Wl,-install_name,$(SONAME) -o $@ $^
- else
- $(CC) -shared -Wl,-soname,$(SONAME) -o $@ $^ $(EXTRA_LD)
- endif
- # DO NOT DELETE
- natpmp.o: natpmp.h getgateway.h declspec.h
- getgateway.o: getgateway.h declspec.h
- testgetgateway.o: getgateway.h declspec.h
- natpmpc.o: natpmp.h
|