Annotation of embedaddon/miniupnpd/miniupnpc/Makefile.mingw, revision 1.1.1.1

1.1       misho       1: # $Id: Makefile.mingw,v 1.21 2015/09/18 12:45:16 nanard Exp $
                      2: # Miniupnp project.
                      3: # http://miniupnp.free.fr/ or https://miniupnp.tuxfamily.org/
                      4: # (c) 2005-2020 Thomas Bernard
                      5: # This Makefile is made for MinGW
                      6: #
                      7: # To cross compile on a *nix machine :
                      8: # make -f Makefile.mingw DLLWRAP=mingw32-dllwrap CC=mingw32-gcc AR=mingw32-ar WINDRES=mingw32-windres
                      9: #
                     10: SRCDIR = src
                     11: INCDIR = include
                     12: 
                     13: CC ?= gcc
                     14: SETUP_COMPILER_FLAG?=
                     15: DLLWRAP = dllwrap
                     16: WINDRES = windres
                     17: SH = /bin/sh
                     18: ZIP = zip
                     19: ifeq ($(OS),Windows_NT)
                     20: RM = del
                     21: else
                     22: RM = rm -f
                     23: endif
                     24: 
                     25: CFLAGS ?= -Os
                     26: CFLAGS += -Wall
                     27: CFLAGS += -W -Wstrict-prototypes
                     28: 
                     29: CPPFLAGS += -DNDEBUG -D_WIN32_WINNT=0x501
                     30: CPPFLAGS += -Iinclude
                     31: CPPFLAGS += -I.
                     32: 
                     33: # -liphlpapi is needed for GetBestRoute() and GetIpAddrTable()
                     34: LDLIBS = -lws2_32 -liphlpapi
                     35: 
                     36: PYTHON=\utils\python25\python
                     37: OBJS=miniwget.o minixml.o igd_desc_parse.o minisoap.o \
                     38:      minissdpc.o \
                     39:      miniupnpc.o upnpreplyparse.o upnpcommands.o upnperrors.o \
                     40:      connecthostport.o portlistingparse.o receivedata.o \
                     41:      upnpdev.o addr_is_reserved.o
                     42: OBJSDLL=$(addprefix dll-, $(OBJS)) winres.o
                     43: BINARIES=upnpc-static.exe upnpc-shared.exe \
                     44:          listdevices-static.exe listdevices-shared.exe \
                     45:          miniupnpc.dll libminiupnpc.a \
                     46:          testminixml.exe
                     47: ifneq ($(GITHUB_SHA),)
                     48: COMMITREF=$(GITHUB_SHA)
                     49: else
                     50: ifneq ($(CI_COMMIT_SHORT_SHA),)
                     51: COMMITREF=$(CI_COMMIT_SHORT_SHA)
                     52: else
                     53: COMMITREF=$(shell git rev-parse --short HEAD)
                     54: endif
                     55: endif
                     56: DISTFILE:=$(shell echo "miniupnpc-bin-win32-`cat VERSION`-$(COMMITREF).zip")
                     57: 
                     58: LIBDIR ?= lib
                     59: # install directories
                     60: ifeq ($(strip $(PREFIX)),)
                     61: INSTALLPREFIX ?= /usr
                     62: else
                     63: INSTALLPREFIX ?= $(PREFIX)
                     64: endif
                     65: 
                     66: .PHONY:        all dist clean
                     67: 
                     68: all:   $(BINARIES)
                     69: 
                     70: dist:  $(DISTFILE)
                     71: 
                     72: clean:
                     73:        $(RM) miniupnpcstrings.h
                     74:        $(RM) *.o
                     75:        $(RM) *.exe
                     76:        $(RM) miniupnpc.dll miniupnpc.lib miniupnpc.dll.def
                     77:        $(RM) libminiupnpc.a
                     78:        $(RM) $(DISTFILE)
                     79: 
                     80: $(DISTFILE):   $(BINARIES)
                     81:        $(ZIP) $@ *.exe *.dll *.lib *.def *.a LICENSE README Changelog.txt
                     82: 
                     83: libminiupnpc.a:        $(OBJS)
                     84:        $(AR) cr $@ $?
                     85: 
                     86: pythonmodule:  libminiupnpc.a
                     87:        $(PYTHON) setupmingw32.py build $(SETUP_COMPILER_FLAG)
                     88:        $(PYTHON) setupmingw32.py install --skip-build
                     89:        $(PYTHON) setupmingw32.py bdist_wheel --skip-build
                     90: 
                     91: miniupnpc.dll: miniupnpc.def $(OBJSDLL)
                     92:        $(DLLWRAP) -k --driver-name $(CC) \
                     93:        --def miniupnpc.def \
                     94:        --output-def miniupnpc.dll.def \
                     95:        --implib miniupnpc.lib -o $@ \
                     96:        $(OBJSDLL) $(LDLIBS)
                     97: 
                     98: miniupnpc.lib: miniupnpc.dll
                     99: 
                    100: %.o:   $(SRCDIR)/%.c
                    101:        $(CC) $(CFLAGS) $(CPPFLAGS) -DMINIUPNP_STATICLIB -c -o $@ $<
                    102: 
                    103: dll-%.o:       $(SRCDIR)/%.c
                    104:        $(CC) $(CFLAGS) $(CPPFLAGS) -DMINIUPNP_EXPORTS -c -o $@ $<
                    105: 
                    106: %-shared.o:    $(SRCDIR)/%.c
                    107:        $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
                    108: 
                    109: # --enable-stdcall-fixup
                    110: %-static.exe:  %.o libminiupnpc.a
                    111:        $(CC) -static -o $@ $^ $(LDLIBS)
                    112: 
                    113: %-shared.exe:  %-shared.o miniupnpc.lib
                    114:        $(CC) -o $@ $^ $(LDLIBS)
                    115: 
                    116: # To make miniupnpcstrings.h from miniupnpcstrings.h.in we either
                    117: # use a custom executable (if running make under windows) or use
                    118: # sed (if cross compiling from another platform).
                    119: ifeq ($(OS),Windows_NT)
                    120: wingenminiupnpcstrings.exe:    wingenminiupnpcstrings.c
                    121:        $(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $^
                    122: 
                    123: miniupnpcstrings.h: miniupnpcstrings.h.in wingenminiupnpcstrings.exe VERSION
                    124:        .\wingenminiupnpcstrings.exe $< $@ rc_version.h
                    125: 
                    126: rc_version.h:  miniupnpcstrings.h
                    127: else
                    128: miniupnpcstrings.h:    miniupnpcstrings.h.in VERSION
                    129:        sed 's|OS_STRING ".*"|OS_STRING "Windows/Mingw32"|' $< | \
                    130:        sed 's|MINIUPNPC_VERSION_STRING ".*"|MINIUPNPC_VERSION_STRING "$(shell cat VERSION)"|' > $@
                    131: 
                    132: rc_version.h:  VERSION
                    133:        echo "#define LIBMINIUPNPC_DOTTED_VERSION \"$(shell cat VERSION)\"" > $@.tmp
                    134:        echo "#define LIBMINIUPNPC_MAJOR_VERSION $(shell cat VERSION|cut -d. -f1)" >> $@.tmp
                    135:        echo "#define LIBMINIUPNPC_MINOR_VERSION $(shell cat VERSION|cut -d. -f2)" >> $@.tmp
                    136:        echo "#define LIBMINIUPNPC_MICRO_VERSION $(shell cat VERSION|cut -d. -f3)" >> $@.tmp
                    137:        mv $@.tmp $@
                    138: endif
                    139: 
                    140: miniupnpc.pc:  VERSION
                    141:        $(RM) $@
                    142:        echo "prefix=$(INSTALLPREFIX)" >> $@
                    143:        echo "exec_prefix=\$${prefix}" >> $@
                    144:        echo "libdir=\$${exec_prefix}/$(LIBDIR)" >> $@
                    145:        echo "includedir=\$${prefix}/include" >> $@
                    146:        echo "" >> $@
                    147:        echo "Name: miniUPnPc" >> $@
                    148:        echo "Description: UPnP IGD client lightweight library" >> $@
                    149:        echo "Version: $(shell cat VERSION)" >> $@
                    150:        echo "Libs: -L\$${libdir} -lminiupnpc" >> $@
                    151:        echo "Cflags: -I\$${includedir}" >> $@
                    152: 
                    153: winres.o:      miniupnpc.rc rc_version.h
                    154:        $(WINDRES) -D INTERNAL_NAME=\\\"miniupnpc.dll\\0\\\" -i $< -o $@
                    155: 
                    156: testminixml.exe:       testminixml.o minixml.o igd_desc_parse.o
                    157:        $(CC) -static -o $@ $^
                    158: 
                    159: minixml.o:     $(SRCDIR)/minixml.c $(SRCDIR)/minixml.h
                    160: 
                    161: upnpc.o:       include/miniwget.h $(SRCDIR)/minisoap.h include/miniupnpc.h include/igd_desc_parse.h
                    162: upnpc.o:       include/upnpreplyparse.h include/upnpcommands.h include/upnperrors.h miniupnpcstrings.h
                    163: 
                    164: miniwget.o:    $(SRCDIR)/miniwget.c include/miniwget.h miniupnpcstrings.h $(SRCDIR)/connecthostport.h
                    165: 
                    166: minisoap.o:    $(SRCDIR)/minisoap.c $(SRCDIR)/minisoap.h miniupnpcstrings.h
                    167: 
                    168: miniupnpc.o:   $(SRCDIR)/miniupnpc.c include/miniupnpc.h $(SRCDIR)/minisoap.h \
                    169:        include/miniwget.h $(SRCDIR)/minixml.h $(SRCDIR)/addr_is_reserved.h
                    170: 
                    171: igd_desc_parse.o:      $(SRCDIR)/igd_desc_parse.c include/igd_desc_parse.h
                    172: 
                    173: upnpreplyparse.o:      $(SRCDIR)/upnpreplyparse.c include/upnpreplyparse.h $(SRCDIR)/minixml.h
                    174: 
                    175: upnpcommands.o:        $(SRCDIR)/upnpcommands.c include/upnpcommands.h include/upnpreplyparse.h \
                    176:        include/miniupnpc.h include/portlistingparse.h
                    177: 
                    178: minissdpc.o:   $(SRCDIR)/minissdpc.c $(SRCDIR)/minissdpc.h $(SRCDIR)/receivedata.h
                    179: 
                    180: upnpdev.o:     $(SRCDIR)/upnpdev.c include/upnpdev.h
                    181: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>