updated
[gnutls:gnutls.git] / cross.mk
1 GNUTLS_VERSION:=3.2.5
2 GNUTLS_FILE:=gnutls-$(GNUTLS_VERSION).tar.xz
3 GNUTLS_DIR:=gnutls-$(GNUTLS_VERSION)
4
5 GMP_VERSION=5.1.1
6 GMP_FILE:=gmp-$(GMP_VERSION).tar.bz2
7 GMP_DIR:=gmp-$(GMP_VERSION)
8
9 P11_KIT_VERSION=0.18.2
10 P11_KIT_FILE:=p11-kit-$(P11_KIT_VERSION).tar.gz
11 P11_KIT_DIR:=p11-kit-$(P11_KIT_VERSION)
12
13 NETTLE_VERSION=2.7.1
14 NETTLE_FILE:=nettle-$(NETTLE_VERSION).tar.gz
15 NETTLE_DIR:=nettle-$(NETTLE_VERSION)
16
17 CROSS_DIR:=$(PWD)/win32
18 BIN_DIR:=$(CROSS_DIR)/bin
19 LIB_DIR:=$(CROSS_DIR)/lib
20 HEADERS_DIR:=$(CROSS_DIR)/include
21 DEVCPP_DIR:=$(PWD)/devcpp
22
23 all: update-gpg-keys gnutls-w32
24
25 upload: gnutls-w32 devpak
26         ../build-aux/gnupload --to ftp.gnu.org:gnutls/w32 $(GNUTLS_DIR)-w32.zip
27         ../build-aux/gnupload --to ftp.gnu.org:gnutls/w32 gnutls-$(GNUTLS_VERSION)-1gn.DevPak
28
29 update-gpg-keys:
30         gpg --recv-keys 96865171 B565716F D92765AF A8F4C2FD DB899F46
31
32 $(GNUTLS_DIR)-w32.zip: $(LIB_DIR) $(BIN_DIR) $(GNUTLS_DIR)/.installed
33         rm -rf $(CROSS_DIR)/etc $(CROSS_DIR)/share $(CROSS_DIR)/lib/include $(CROSS_DIR)/lib/pkgconfig
34         cd $(CROSS_DIR) && zip -r $(PWD)/$@ *
35         gpg --sign --detach $(GNUTLS_DIR)-w32.zip
36
37 gnutls-$(GNUTLS_VERSION)-1gn.DevPak: $(GNUTLS_DIR)-w32.zip devcpp.tar
38         rm -rf $(DEVCPP_DIR)
39         mkdir -p $(DEVCPP_DIR)
40         cd $(DEVCPP_DIR) && unzip ../$(GNUTLS_DIR)-w32.zip 
41         cd $(DEVCPP_DIR) && tar xf ../devcpp.tar && sed -i 's/@VERSION@/$(GNUTLS_VERSION)/g' gnutls.DevPackage
42         cd $(DEVCPP_DIR) && tar -cjf ../$@ .
43
44 devpak: gnutls-$(GNUTLS_VERSION)-1gn.DevPak
45
46 gnutls-w32: $(GNUTLS_DIR)-w32.zip
47
48 nettle: $(NETTLE_DIR)/.installed
49
50 gmp: $(GMP_DIR)/.installed
51
52 $(BIN_DIR):
53         mkdir -p $(BIN_DIR)
54
55 $(LIB_DIR):
56         mkdir -p $(LIB_DIR)
57
58 CONFIG_FLAGS := --prefix=$(CROSS_DIR) --host=i686-w64-mingw32 --enable-shared --disable-static --bindir=$(BIN_DIR) --libdir=$(LIB_DIR) --includedir=$(HEADERS_DIR)
59
60 $(P11_KIT_DIR)/.configured:
61         test -f $(P11_KIT_FILE) || wget http://p11-glue.freedesktop.org/releases/$(P11_KIT_FILE)
62         test -f $(P11_KIT_FILE).sig || wget http://p11-glue.freedesktop.org/releases/$(P11_KIT_FILE).sig
63         gpg --verify $(P11_KIT_FILE).sig
64         test -d $(P11_KIT_DIR) || tar -xf $(P11_KIT_FILE)
65         cd $(P11_KIT_DIR) && ./configure $(CONFIG_FLAGS) --without-libtasn1 && cd ..
66         touch $@
67
68 $(P11_KIT_DIR)/.installed: $(P11_KIT_DIR)/.configured
69         make -C $(P11_KIT_DIR) -j2
70         make -C $(P11_KIT_DIR) install -i
71         -rm -rf $(HEADERS_DIR)/p11-kit
72         -mv $(HEADERS_DIR)/p11-kit-1/p11-kit $(HEADERS_DIR)
73         -rm -rf $(HEADERS_DIR)/p11-kit-1
74         rm -f $(BIN_DIR)/p11-kit.exe
75         touch $@
76
77 $(GMP_DIR)/.configured: 
78         test -f $(GMP_FILE) || wget ftp://ftp.gmplib.org/pub/$(GMP_DIR)/$(GMP_FILE)
79         test -f $(GMP_FILE).sig || wget ftp://ftp.gmplib.org/pub/$(GMP_DIR)/$(GMP_FILE).sig
80         gpg --verify $(GMP_FILE).sig
81         test -d $(GMP_DIR) || tar -xf $(GMP_FILE)
82         cd $(GMP_DIR) && ./configure $(CONFIG_FLAGS) --enable-fat --exec-prefix=$(LIB_DIR)  --oldincludedir=$(HEADERS_DIR) && cd ..
83         touch $@
84
85 $(GMP_DIR)/.installed: $(GMP_DIR)/.configured
86         make -C $(GMP_DIR) -j2
87         make -C $(GMP_DIR) install -i
88         -mkdir -p $(HEADERS_DIR)
89         mv $(LIB_DIR)/include/* $(HEADERS_DIR)/
90         rmdir $(LIB_DIR)/include/
91         touch $@
92
93 $(NETTLE_DIR)/.configured: $(GMP_DIR)/.installed
94         test -f $(NETTLE_FILE) || wget http://www.lysator.liu.se/~nisse/archive/$(NETTLE_FILE)
95         test -f $(NETTLE_FILE).sig || wget http://www.lysator.liu.se/~nisse/archive/$(NETTLE_FILE).sig
96         gpg --verify $(NETTLE_FILE).sig
97         test -d $(NETTLE_DIR) || tar -xf $(NETTLE_FILE)
98         cd $(NETTLE_DIR) && CFLAGS="-I$(HEADERS_DIR)" CXXFLAGS="-I$(HEADERS_DIR)" ./configure $(CONFIG_FLAGS) --with-lib-path=$(LIB_DIR) && cd ..
99         touch $@
100
101 #nettle messes up installation
102 $(NETTLE_DIR)/.installed: $(NETTLE_DIR)/.configured
103         make -C $(NETTLE_DIR) -j2 -i
104         make -C $(NETTLE_DIR) install -i
105         rm -f $(LIB_DIR)/libnettle.a $(LIB_DIR)/libhogweed.a $(BIN_DIR)/nettle-hash.exe $(BIN_DIR)/nettle-lfib-stream.exe $(BIN_DIR)/pkcs1-conv.exe $(BIN_DIR)/sexp-conv.exe
106         cp $(NETTLE_DIR)/libnettle.dll.a $(NETTLE_DIR)/libhogweed.dll.a $(LIB_DIR)/
107         cp $(NETTLE_DIR)/libnettle*.dll $(NETTLE_DIR)/libhogweed*.dll $(BIN_DIR)/
108         touch $@
109
110 $(GNUTLS_DIR)/.installed: $(GNUTLS_DIR)/.configured
111         make -C $(GNUTLS_DIR) -j2
112         make -C $(GNUTLS_DIR) -C tests check
113         make -C $(GNUTLS_DIR) install -i
114         cp $(GNUTLS_DIR)/COPYING $(GNUTLS_DIR)/COPYING.LESSER $(CROSS_DIR)
115         touch $@
116
117 $(GNUTLS_DIR)/.configured: $(NETTLE_DIR)/.installed $(P11_KIT_DIR)/.installed
118         test -f $(GNUTLS_FILE) || wget ftp://ftp.gnutls.org/gcrypt/gnutls/v3.2/$(GNUTLS_FILE)
119         test -f $(GNUTLS_FILE).sig || wget ftp://ftp.gnutls.org/gcrypt/gnutls/v3.2/$(GNUTLS_FILE).sig
120         gpg --verify $(GNUTLS_FILE).sig
121         test -d $(GNUTLS_DIR) || tar -xf $(GNUTLS_FILE)
122         cd $(GNUTLS_DIR) && \
123                 P11_KIT_CFLAGS="-I$(HEADERS_DIR)" \
124                 P11_KIT_LIBS="$(LIB_DIR)/libp11-kit.la" \
125                 LDFLAGS="-L$(LIB_DIR)" CFLAGS="-I$(HEADERS_DIR)" CXXFLAGS="-I$(HEADERS_DIR)" \
126                 ./configure $(CONFIG_FLAGS) --enable-local-libopts --with-libnettle-prefix=$(LIB_DIR) \
127                 --disable-libdane --disable-openssl-compatibility --with-included-libtasn1 && cd ..
128         touch $@
129
130 clean:
131         rm -rf $(CROSS_DIR) $(GNUTLS_DIR)/.installed $(NETTLE_DIR)/.installed $(GMP_DIR)/.installed $(P11_KIT_DIR)/.installed
132
133 dirclean:
134         rm -rf $(CROSS_DIR) $(GNUTLS_DIR) $(NETTLE_DIR) $(GMP_DIR) $(P11_KIT_DIR)
135