Clean up Transifex import some more
[platform/upstream/openconnect.git] / Makefile.am
1
2 SUBDIRS =
3 if BUILD_WWW
4 SUBDIRS += www
5 endif
6 if USE_NLS
7 SUBDIRS += po
8 endif
9
10 lib_LTLIBRARIES = libopenconnect.la
11 sbin_PROGRAMS = openconnect
12 man8_MANS = openconnect.8
13
14 AM_CPPFLAGS = -DLOCALEDIR="\"$(localedir)\""
15 openconnect_SOURCES = xml.c main.c dtls.c cstp.c mainloop.c tun.c
16
17 openconnect_CFLAGS = $(SSL_CFLAGS) $(DTLS_SSL_CFLAGS) $(LIBXML2_CFLAGS) $(LIBPROXY_CFLAGS) $(ZLIB_CFLAGS)
18 openconnect_LDADD = libopenconnect.la $(SSL_LIBS) $(DTLS_SSL_LIBS) $(LIBXML2_LIBS) $(LIBPROXY_LIBS) $(ZLIB_LIBS) $(LIBINTL)
19
20 library_srcs = ssl.c http.c auth.c library.c compat.c
21 lib_srcs_gnutls = gnutls.c gnutls_pkcs12.c gnutls_tpm.c
22 lib_srcs_openssl = openssl.c
23
24 POTFILES = $(openconnect_SOURCES) $(lib_srcs_openssl) $(lib_srcs_gnutls) $(library_srcs)
25
26 if OPENCONNECT_GNUTLS
27 library_srcs += $(lib_srcs_gnutls)
28 endif
29 if OPENCONNECT_OPENSSL
30 library_srcs += $(lib_srcs_openssl)
31 endif
32 libopenconnect_la_SOURCES = version.c $(library_srcs)
33 libopenconnect_la_CFLAGS = $(SSL_CFLAGS) $(LIBXML2_CFLAGS) $(LIBPROXY_CFLAGS) $(P11KIT_CFLAGS) $(TSS_CFLAGS)
34 libopenconnect_la_LIBADD = $(SSL_LIBS) $(LIBXML2_LIBS) $(LIBPROXY_LIBS) $(LIBINTL) $(P11KIT_LIBS) $(TSS_LIBS)
35 libopenconnect_la_LDFLAGS = -version-number @APIMAJOR@:@APIMINOR@
36 noinst_HEADERS = openconnect-internal.h openconnect.h gnutls.h
37 include_HEADERS = openconnect.h
38 if HAVE_SYMBOL_VERSIONING
39 libopenconnect_la_LDFLAGS += -Wl,@VERSION_SCRIPT_ARG@,libopenconnect.map
40 libopenconnect_la_DEPENDENCIES = libopenconnect.map
41 endif
42
43 pkgconfig_DATA = openconnect.pc
44
45 EXTRA_DIST = version.sh COPYING.LGPL $(lib_srcs_openssl) $(lib_srcs_gnutls) Android.mk
46
47 DISTCLEANFILES = $(pkgconfig_DATA)
48
49 main.o: version.c
50 version.c: $(library_srcs) $(lib_openssl_srcs) $(lib_gnutls_srcs) \
51            $(openconnect_SOURCES) Makefile.am configure.ac \
52            openconnect.h openconnect-internal.h version.sh @GITVERSIONDEPS@
53         @cd $(srcdir) && ./version.sh $(abs_builddir)/version.c
54
55 tmp-dist: uncommitted-check
56         $(MAKE) $(AM_MAKEFLAGS) VERSION=$(patsubst v%,%,$(shell git describe --tags)) DISTHOOK=0 dist
57
58 uncommitted-check:
59         @if ! git update-index --refresh --unmerged || \
60             ! git diff-index --name-only --exit-code HEAD; then \
61                 echo "*** ERROR: Uncommitted changes in above files"; exit 1; fi
62
63 DISTHOOK=1
64 dist-hook: uncommitted-check
65         @if [ $(DISTHOOK) = 1 ]; then \
66             if ! git rev-parse --verify v$(VERSION) &> /dev/null; then \
67                 echo "*** ERROR: Version v$(VERSION) is not tagged"; exit 1; fi ; \
68             if ! git diff --name-only --exit-code v$(VERSION) HEAD > /dev/null; then \
69                 echo "*** ERROR: Git checkout not at version v$(VERSION)"; exit 1; fi ; \
70         fi
71
72 sign-dist: dist
73         @for a in $(DIST_ARCHIVES); do \
74                 gpg --default-key 67E2F359 --detach-sign -a $$a ; \
75         done
76
77 tag: uncommitted-check
78         @if git rev-parse --verify v$(VERSION) &> /dev/null; then \
79                 echo "*** ERROR: Version v$(VERSION) is already tagged"; exit 1; fi
80         @sed 's/AC_INIT.*/AC_INIT(openconnect, $(VERSION))/' -i $(srcdir)/configure.ac
81         @sed 's/^v=.*/v="v$(VERSION)"/' -i $(srcdir)/version.sh
82         @( echo '1,/<!-- latest-release-start -->/p' ;\
83            echo '/<!-- latest-release-end -->/,$$p' ;\
84            echo  '/<!-- latest-release-start -->/a\' ;\
85            echo  'The latest release is <a href="ftp://ftp.infradead.org/pub/openconnect/openconnect-$(VERSION).tar.gz">OpenConnect v$(VERSION)</a>\' ;\
86            echo  '<i>(<a href="ftp://ftp.infradead.org/pub/openconnect/openconnect-$(VERSION).tar.gz.asc">PGP signature</a>)</i>,\' ;\
87            echo 'released on $(shell date +%Y-%m-%d) with the following changelog:</p>\' ;\
88            sed '0,/<b>OpenConnect HEAD/d;/<\/ul><br\/>/,$$d;s/$$/\\/' $(srcdir)/www/changelog.xml ;\
89            echo '     </ul>' ) | \
90          sed -n -f - -i $(srcdir)/www/download.xml
91         @( echo "s/Last modified: .*/Last modified: $(shell date)/" ;\
92            echo '/  <li><b>OpenConnect HEAD/a\' ;\
93            echo '     <ul>\' ;\
94            echo '       <li><i>No changelog entries yet</i></li>\';\
95            echo '     </ul><br/>\' ;  echo '  </li>\' ;\
96            echo '  <li><b><a href="ftp://ftp.infradead.org/pub/openconnect/openconnect-$(VERSION).tar.gz">OpenConnect v$(VERSION)</a></b>\' ;\
97            echo '     <i>(<a href="ftp://ftp.infradead.org/pub/openconnect/openconnect-$(VERSION).tar.gz.asc">PGP signature</a>)</i> &#8212; $(shell date +%Y-%m-%d)' ) | \
98                 sed -f - -i $(srcdir)/www/changelog.xml
99 # stupid syntax highlighting '
100         @cd $(srcdir) && git commit -s -m "Tag version $(VERSION)" configure.ac version.sh www/download.xml www/changelog.xml
101         @git tag v$(VERSION)
102         @cd $(srcdir) && ./autogen.sh
103
104 update-translations: po/$(PACKAGE).pot
105         @cd $(top_srcdir); if ! git diff-index --name-only --exit-code HEAD -- po/; then \
106                 echo "*** ERROR: Uncommitted changes in above files"; exit 1; \
107         else \
108                 for a in po/*.po; do \
109                         msgmerge -q -N -F $$a $(abs_builddir)/po/$(PACKAGE).pot | egrep -v PO-Revision-Date:\|Language-Team: > $$a.old ; \
110                 done && \
111                 tx pull -af && \
112                 for a in po/*.po; do \
113                         msgmerge -q -N -F $$a $(abs_builddir)/po/$(PACKAGE).pot | egrep -v PO-Revision-Date:\|Language-Team: > $$a.new ; \
114                         if ! git ls-tree --name-only HEAD $$a | grep -q $$a; then \
115                                 echo New file $$a ; \
116                                 git add $$a ; \
117                         elif ! diff -u $$a.old $$a.new; then \
118                                 echo New changes for $$a; \
119                                 mv $$a.new $$a; \
120                         else \
121                                 git checkout -f HEAD $$a ; \
122                         fi ; \
123                         rm -f $$a.old $$a.new ; \
124                 done && \
125                 ls po/*.po | sed 's%^po/\(.*\)\.po%\1%' > po/LINGUAS ; \
126                 if ! git update-index -q --refresh --unmerged || \
127                    ! git diff-index --name-only --exit-code HEAD -- po/ >/dev/null; then \
128                         git commit -s -m "Update translations from Transifex" -- po/ ; \
129                 else \
130                         echo No changes to commit ; \
131                 fi ; \
132         fi
133
134 upload-pot: po/$(PACKAGE).pot
135         @if [ ${abs_top_builddir} != $(abs_top_srcdir) ]; then \
136                 ln -sf ${abs_top_srcdir}/.tx .tx; fi
137         @tx push -s
138
139 po/$(PACKAGE).pot: $(POTFILES) Makefile
140         @echo "Regenerating $@" ; rm -f $@ && \
141         xgettext --directory=$(top_srcdir) --from-code=UTF-8 \
142           --add-comments --keyword=_ --keyword=N_ \
143           --package-name="@PACKAGE@" --package-version="@VERSION@" \
144           --msgid-bugs-address=openconnect-devel@lists.infradead.org \
145           -o $@ $(POTFILES)
146
147 Android.mk: Makefile.am
148         @for a in openconnect_SOURCES library_srcs lib_srcs_openssl noinst_HEADERS; do \
149                 FILES=`grep "^$$a = " $(top_srcdir)/Makefile.am`; \
150                 sed "s/^$$a = .*/$$FILES/" -i $(top_srcdir)/Android.mk;  \
151         done