SUBDIRS = tests # We kind of want openconnect to be built before we try to test it check-recursive: openconnect$(EXEEXT) # And even *building* some of tests/*.c needs libopenconnect install-recursive: libopenconnect.la all-recursive: libopenconnect.la if BUILD_WWW SUBDIRS += www endif if USE_NLS SUBDIRS += po endif if BUILD_NSIS noinst_DATA = openconnect-installer-$(INSTALLER_SUFFIX).exe endif lib_LTLIBRARIES = libopenconnect.la sbin_PROGRAMS = openconnect man8_MANS = openconnect.8 bin_PROGRAMS := sbin_SCRIPTS := noinst_PROGRAMS := AM_CFLAGS = @WFLAGS@ AM_CPPFLAGS = -DLOCALEDIR="\"$(localedir)\"" openconnect_SOURCES = xml.c main.c openconnect_CFLAGS = $(AM_CFLAGS) $(SSL_CFLAGS) $(DTLS_SSL_CFLAGS) \ $(LIBXML2_CFLAGS) $(JSON_CFLAGS) $(LIBPROXY_CFLAGS) \ $(ZLIB_CFLAGS) $(LIBSTOKEN_CFLAGS) $(LIBPSKC_CFLAGS) \ $(GSSAPI_CFLAGS) $(INTL_CFLAGS) $(ICONV_CFLAGS) \ $(LIBPCSCLITE_CFLAGS) openconnect_LDADD = libopenconnect.la $(SSL_LIBS) $(LIBXML2_LIBS) \ $(LIBPROXY_LIBS) $(INTL_LIBS) $(ICONV_LIBS) if OPENCONNECT_WIN32 openconnect_SOURCES += openconnect.rc sbin_SCRIPTS += vpnc-script-win.js endif library_srcs = ssl.c http.c textbuf.c http-auth.c auth-common.c \ auth-html.c library.c compat.c lzs.c mainloop.c script.c \ ntlm.c digest.c mtucalc.c openconnect-internal.h lib_srcs_cisco = auth.c cstp.c hpke.c multicert.c lib_srcs_juniper = oncp.c lzo.c auth-juniper.c lib_srcs_pulse = pulse.c lib_srcs_globalprotect = gpst.c win32-ipicmp.h auth-globalprotect.c lib_srcs_array = array.c lib_srcs_oath = oath.c lib_srcs_oidc = oidc.c lib_srcs_ppp = ppp.c ppp.h lib_srcs_nullppp = nullppp.c lib_srcs_f5 = f5.c lib_srcs_fortinet = fortinet.c lib_srcs_json = jsondump.c library_srcs += $(lib_srcs_juniper) $(lib_srcs_cisco) $(lib_srcs_oath) \ $(lib_srcs_globalprotect) $(lib_srcs_pulse) \ $(lib_srcs_oidc) $(lib_srcs_ppp) $(lib_srcs_nullppp) \ $(lib_srcs_f5) $(lib_srcs_fortinet) $(lib_srcs_json) \ $(lib_srcs_array) lib_srcs_gnutls = gnutls.c gnutls_tpm.c gnutls_tpm2.c lib_srcs_openssl = openssl.c openssl-pkcs11.c lib_srcs_win32 = wintun.c tun-win32.c sspi.c lib_srcs_posix = tun.c lib_srcs_gssapi = gssapi.c lib_srcs_iconv = iconv.c lib_srcs_yubikey = yubikey.c lib_srcs_stoken = stoken.c lib_srcs_esp = esp.c esp-seqno.c lib_srcs_dtls = dtls.c lib_srcs_vhost = vhost.c POTFILES = $(openconnect_SOURCES) gnutls-esp.c gnutls-dtls.c openssl-esp.c openssl-dtls.c \ $(lib_srcs_esp) $(lib_srcs_dtls) gnutls_tpm2_esys.c gnutls_tpm2_ibm.c \ $(lib_srcs_openssl) $(lib_srcs_gnutls) $(library_srcs) \ $(lib_srcs_win32) $(lib_srcs_posix) $(lib_srcs_gssapi) $(lib_srcs_iconv) \ $(lib_srcs_yubikey) $(lib_srcs_stoken) $(lib_srcs_oidc) $(lib_srcs_vhost) if OPENCONNECT_VHOST library_srcs += $(lib_srcs_vhost) endif if OPENCONNECT_LIBPCSCLITE library_srcs += $(lib_srcs_yubikey) endif if OPENCONNECT_STOKEN library_srcs += $(lib_srcs_stoken) endif if OPENCONNECT_GSSAPI library_srcs += $(lib_srcs_gssapi) endif if OPENCONNECT_GNUTLS library_srcs += $(lib_srcs_gnutls) lib_srcs_esp += gnutls-esp.c lib_srcs_dtls += gnutls-dtls.c endif if OPENCONNECT_TSS2_ESYS library_srcs += gnutls_tpm2_esys.c endif if OPENCONNECT_TSS2_IBM library_srcs += gnutls_tpm2_ibm.c endif if OPENCONNECT_OPENSSL library_srcs += $(lib_srcs_openssl) lib_srcs_esp += openssl-esp.c lib_srcs_dtls += openssl-dtls.c endif if OPENCONNECT_DTLS lib_srcs_cisco += $(lib_srcs_dtls) endif if OPENCONNECT_ESP lib_srcs_juniper += $(lib_srcs_esp) endif if OPENCONNECT_ICONV library_srcs += $(lib_srcs_iconv) endif if BUILTIN_JSON library_srcs += json/json.c json/json.h endif if OPENCONNECT_WIN32 library_srcs += $(lib_srcs_win32) .rc.o: $(WINDRES) $^ -o $@ %.o : %.rc $(WINDRES) $^ -o $@ else library_srcs += $(lib_srcs_posix) endif libopenconnect_la_SOURCES = version.c $(library_srcs) libopenconnect_la_CFLAGS = $(AM_CFLAGS) $(SSL_CFLAGS) $(DTLS_SSL_CFLAGS) \ $(LIBXML2_CFLAGS) $(JSON_CFLAGS) $(LIBPROXY_CFLAGS) $(ZLIB_CFLAGS) \ $(P11KIT_CFLAGS) $(TSS_CFLAGS) $(LIBSTOKEN_CFLAGS) $(LIBPSKC_CFLAGS) \ $(GSSAPI_CFLAGS) $(INTL_CFLAGS) $(ICONV_CFLAGS) $(LIBPCSCLITE_CFLAGS) \ $(LIBP11_CFLAGS) $(LIBLZ4_CFLAGS) libopenconnect_la_LIBADD = $(SSL_LIBS) $(DTLS_SSL_LIBS) \ $(LIBXML2_LIBS) $(LIBPROXY_LIBS) $(ZLIB_LIBS) $(P11KIT_LIBS) \ $(TSS_LIBS) $(LIBSTOKEN_LIBS) $(LIBPSKC_LIBS) $(GSSAPI_LIBS) \ $(INTL_LIBS) $(ICONV_LIBS) $(LIBPCSCLITE_LIBS) $(LIBP11_LIBS)\ $(LIBLZ4_LIBS) ${JSON_LIBS} if OPENBSD_LIBTOOL # OpenBSD's libtool doesn't have -version-number, but its -version-info arg # does what GNU libtool's -version-number does. Which arguably is what the # GNU -version-info arg ought to do too. I hate libtool. LT_VER_ARG = -version-info else LT_VER_ARG = -version-number endif libopenconnect_la_LDFLAGS = $(LT_VER_ARG) @APIMAJOR@:@APIMINOR@ -no-undefined noinst_HEADERS = openconnect-internal.h openconnect.h gnutls.h lzo.h include_HEADERS = openconnect.h if HAVE_VSCRIPT libopenconnect_la_LDFLAGS += @VSCRIPT_LDFLAGS@,libopenconnect.map libopenconnect_la_DEPENDENCIES = libopenconnect.map endif if OPENCONNECT_JNI if JNI_STANDALONE libopenconnect_la_SOURCES += jni.c libopenconnect_la_CFLAGS += $(JNI_CFLAGS) -Wno-missing-declarations else lib_LTLIBRARIES += libopenconnect-wrapper.la libopenconnect_wrapper_la_SOURCES = jni.c libopenconnect_wrapper_la_CFLAGS = $(AM_CFLAGS) $(JNI_CFLAGS) -Wno-missing-declarations libopenconnect_wrapper_la_LIBADD = libopenconnect.la endif endif if OPENCONNECT_SYSTEM_KEYS if OPENCONNECT_WIN32 #install list-system-keys on Windows bin_PROGRAMS += list-system-keys else #Don't install list-system-keys #It breaks the Linux COPR builds since the native RPM doesn't list it as #one of the files that are expected to be installed. #see commit 17887b53e171ec7223340092dc042298a29defb0 noinst_PROGRAMS += list-system-keys endif #OPENCONNECT_WIN32 list_system_keys_SOURCES = list-system-keys.c list_system_keys_CFLAGS = $(GNUTLS_CFLAGS) list_system_keys_LDADD = $(GNUTLS_LIBS) endif if !OPENCONNECT_WIN32 noinst_PROGRAMS += os-tcp-mtu os_tcp_mtu_SOURCES = os-tcp-mtu.c endif pkgconfig_DATA = openconnect.pc EXTRA_DIST = AUTHORS version.sh COPYING.LGPL openconnect.ico $(POTFILES) openconnect.nsi.in EXTRA_DIST += json/AUTHORS json/LICENSE json/json.c json/json.h libopenconnect5.symbols gensymbols.sed EXTRA_DIST += $(shell cd "$(top_srcdir)" && \ git ls-tree HEAD -r --name-only -- android/ java/ trojans/ bash/ 2>/dev/null) DISTCLEANFILES = $(pkgconfig_DATA) version.c pkglibexec_SCRIPTS = trojans/csd-post.sh trojans/csd-wrapper.sh trojans/tncc-wrapper.py \ trojans/hipreport.sh trojans/hipreport-android.sh trojans/tncc-emulate.py bashcompletiondir = $(datadir)/bash-completion/completions bashcompletion_DATA = bash/openconnect # main.c includes version.c openconnect-main.$(OBJEXT): version.c version.c: $(library_srcs) $(lib_openssl_srcs) $(lib_gnutls_srcs) \ $(openconnect_SOURCES) Makefile.am configure.ac \ openconnect.h openconnect-internal.h version.sh @GITVERSIONDEPS@ @cd $(srcdir) && ./version.sh $(abs_builddir)/version.c AUTHORS: @GITVERSIONDEPS@ @git shortlog -sen > AUTHORS tmp-dist: uncommitted-check $(MAKE) $(AM_MAKEFLAGS) VERSION=$(patsubst v%,%,$(shell git describe --tags)) DISTHOOK=0 dist tmp-distdir: uncommitted-check $(MAKE) $(AM_MAKEFLAGS) VERSION=$(patsubst v%,%,$(shell git describe --tags)) DISTHOOK=0 distdir uncommitted-check: @if ! git update-index --refresh --unmerged || \ ! git diff-index --name-only --exit-code HEAD; then \ echo "*** ERROR: Uncommitted changes in above files"; exit 1; fi DISTHOOK=1 dist-hook: uncommitted-check @if [ $(DISTHOOK) = 1 ]; then \ if ! git rev-parse --verify v$(VERSION) &> /dev/null; then \ echo "*** ERROR: Version v$(VERSION) is not tagged"; exit 1; fi ; \ if ! git diff --name-only --exit-code v$(VERSION) HEAD > /dev/null; then \ echo "*** ERROR: Git checkout not at version v$(VERSION)"; exit 1; fi ; \ fi sign-dist: dist @for a in $(DIST_ARCHIVES); do \ gpg --default-key 67E2F359 --detach-sign -a $$a ; \ done tag: uncommitted-check @if git rev-parse --verify v$(VERSION) &> /dev/null; then \ echo "*** ERROR: Version v$(VERSION) is already tagged"; exit 1; fi @sed 's/AC_INIT.*/AC_INIT([openconnect], [$(VERSION)])/' -i $(srcdir)/configure.ac @sed 's/^v=.*/v="v$(VERSION)"/' -i $(srcdir)/version.sh @( echo '1,//p' ;\ echo '//,$$p' ;\ echo '//a\' ;\ echo 'The latest release is OpenConnect v$(VERSION)\' ;\ echo '(PGP signature),\' ;\ echo 'released on $(shell date +%Y-%m-%d) with the following changelog:

\' ;\ sed '0,/OpenConnect HEAD/d;/<\/ul>/,$$d;s/$$/\\/' $(srcdir)/www/changelog.xml ;\ echo ' ' ) | \ sed -n -f - -i $(srcdir)/www/download.xml @( echo "s/Last modified: .*/Last modified: $(shell date)/" ;\ echo '/
  • OpenConnect HEAD/a\' ;\ echo '
      \' ;\ echo '
    • No changelog entries yet
    • \';\ echo '

    \' ; echo '
  • \' ;\ echo '
  • OpenConnect v$(VERSION)\' ;\ echo ' (PGP signature) — $(shell date +%Y-%m-%d)' ) | \ sed -f - -i $(srcdir)/www/changelog.xml @echo '/API version [0-9]\+\.[0-9]\+:$$/s/:/ (v$(VERSION); $(shell date +%Y-%m-%d)):/' | \ sed -f - -i $(srcdir)/openconnect.h @sed -Enf $(srcdir)/gensymbols.sed $(srcdir)/openconnect.h | \ sed -Enf- $(srcdir)/libopenconnect.map.in > $(srcdir)/libopenconnect5.symbols # stupid syntax highlighting ' @cd $(srcdir) && git commit -s -m "Tag version $(VERSION)" configure.ac version.sh www/download.xml www/changelog.xml openconnect.h libopenconnect5.symbols @git tag v$(VERSION) @cd $(srcdir) && ./autogen.sh ########################################################################### # # Translations are handled in the NetworkManager-openconnect repository by # GNOME translation teams. We export all our translatable strings to a file # 'openconnect-strings.txt' which is included in their set of files to be # translated. # # We have an 'import-strings' make target which, for each translation, does # a merge of their file with ours and compares with a canonicalised version # of ours to see if there are any substantive changes. The strings from # NetworkManager-openconnect take precedence over ours, so if there are # any *corrections* to translations they need to be applied there first, # because changes in openconnect to a string which is already translated # in NetworkManager-openconnect will get overwritten on the next sync. # # Given that precedence, the 'export-strings' target is mostly only useful # when we add *new* strings which already have translations, which happens # occasionally when we change a non-translated part of a string (e.g. when # we recently replaced URLs and email addresses with '%s' and could do that # without 'losing' the existing translations by changing those too). # # A decent guess at where NetworkManager-openconnect might be checked out... NMO_DIR := $(srcdir)/../NetworkManager-openconnect NMO_POT := $(NMO_DIR)/po/NetworkManager-openconnect.pot NMO_STRINGS := $(NMO_DIR)/openconnect-strings.txt NMO_LINGUAS = $(wildcard $(NMO_DIR)/po/*.po) OC_LINGUAS = $(shell grep -v ^\# $(srcdir)/po/LINGUAS) # Generate the openconnect-strings.txt file in the NetworkManager-openconnect # repository, which 'injects' our strings there to be translated. $(NMO_STRINGS): po/$(PACKAGE).pot uncommitted-check $(srcdir)/export-strings.sh $@ $< .PHONY: $(NMO_POT) $(NMO_POT): $(NMO_STRINGS) make -C $(NMO_DIR)/po NetworkManager-openconnect.pot # Sync translations from our own po/ directory to NetworkManager-openconnect, # with theirs taking precedence. Use a strange path with extra 'po/..' to # avoid circular dependencies. $(NMO_DIR)/po/../po/%.po: $(srcdir)/po/%.po $(NMO_POT) po/$(PACKAGE).pot @msgattrib -F --no-fuzzy $< > $@.openconnect # Merge using local strings as additional compendium @msgmerge -q -N -F $@ -C $@.openconnect ${NMO_POT} > $@.merged # Dummy merge (cleanup) for comparison. @msgmerge -q -N -F $@ ${NMO_POT} > $@.unmerged # If the result is different, update the NM version. @if ! cmp $@.merged $@.unmerged; then \ echo "New changes for NetworkManager-openconnect $(notdir $@)"; \ mv $@.merged $@; \ else \ echo "No changes for NetworkManager-openconnect $(notdir $@)"; \ fi @rm -f $@.openconnect $@.merged $@.unmerged # Sync translations from NetworkManager-openconnect, with theirs taking # precedence. $(srcdir)/po/../po/%.po: $(NMO_DIR)/po/%.po $(NMO_POT) po/$(PACKAGE).pot @msgattrib -F --no-fuzzy $< > $@.nmo # Merge NM against openconnect.pot, using local strings as additional compendium @msgmerge -q -N -C $@ -F $@.nmo po/$(PACKAGE).pot > $@.merged1 # Remove fuzzy and obsolete translations @msgattrib -F --no-fuzzy --no-obsolete $@.merged1 > $@.merged2 # Unmerged, clean up for simple comparison @msgmerge -q -N -F $@ po/$(PACKAGE).pot > $@.unmerged @if ! cmp $@.merged2 $@.unmerged; then \ echo "New changes for $(notdir $@)"; \ mv $@.merged2 $@; \ else \ echo "No changes for $(notdir $@)"; \ fi @rm -f $@.nmo $@.merged1 $@.merged2 $@.unmerged # Import translated strings from NetworkManager-openconnect import-strings: $(patsubst $(NMO_DIR)/%,$(srcdir)/po/../%,$(NMO_LINGUAS)) if ! git update-index -q --refresh --unmerged || \ ! git diff-index --name-only --exit-code HEAD -- $(srcdir)/po/ >/dev/null; then \ git commit -s -m "Import translations from GNOME" -- $(srcdir)/po/ ; \ else \ echo No changes to commit ; \ fi # Export our translatable strings to NetworkManager-openconnect export-strings: $(patsubst $(NMO_DIR)/%,$(NMO_DIR)/po/../%,$(NMO_LINGUAS)) # Just resync the translation comments to reflect accurate line numbers, etc. update-po: po/$(PACKAGE).pot @cd $(top_srcdir); if ! git diff-index --name-only --exit-code HEAD -- po/; then \ echo "*** ERROR: Uncommitted changes in above files"; exit 1; \ else \ > po/LINGUAS; \ for a in po/*.po; do \ msgmerge -q -N -F $$a $(abs_builddir)/po/$(PACKAGE).pot > $$a.merge ; \ msgattrib -F --no-fuzzy --no-obsolete $$a.merge > $$a ; \ rm $$a.merge ; \ if msgattrib --translated $$a | grep -q msgstr; then \ echo $$a | sed 's%^po/\(.*\)\.po%\1%' >> po/LINGUAS ; \ fi ; \ done && \ if ! git update-index -q --refresh --unmerged || \ ! git diff-index --name-only --exit-code HEAD -- po/ >/dev/null; then \ git commit -s -m "Resync translations with sources" -- po/ ; \ else \ echo No changes to commit ; \ fi; \ fi po/$(PACKAGE).pot: $(POTFILES) version.sh @echo "Regenerating $@" ; rm -f $@ && \ xgettext --directory=$(top_srcdir) --from-code=UTF-8 \ --sort-by-file --add-comments --keyword=_ --keyword=N_ \ --package-name="@PACKAGE@" --package-version="@VERSION@" \ --msgid-bugs-address=openconnect-devel@lists.infradead.org \ -o $@ $(POTFILES) ACLOCAL_AMFLAGS = -I m4 if BUILD_NSIS DISTCLEANFILES += .*.dll.d .*.exe.d file-list*.txt instfiles.nsh uninstfiles.nsh vpnc-script-win.js openconnect.nsi openconnect-installer-*.exe # Including openconnect-gui.exe and Qt bits (as a hack) #EXTRA_EXECUTABLES := openconnect-gui.exe qwindows.dll qwindowsvistastyle.dll #EXTRA_NSIS_FILES := $(OPENCONNECT_GUI_DIR)/nsis/qt.conf #EXTRA_DLLDIRS := $(OPENCONNECT_GUI_DIR)/bin $(libdir)/qt5/plugins/platforms $(libdir)/qt5/plugins/styles DLL_EXECUTABLES := openconnect$(EXEEXT) $(EXTRA_EXECUTABLES) endif if OPENCONNECT_WINTUN WINTUN_DLL = .libs/wintun.dll DISTCLEANFILES += $(WINTUN_DLL) sbin_SCRIPTS += .libs/wintun.dll if BUILD_NSIS DLL_EXECUTABLES += wintun.dll endif endif if BUILD_NSIS if OPENCONNECT_SYSTEM_KEYS DLL_EXECUTABLES += list-system-keys$(EXEEXT) endif # DLL dependencies are found recursively with make, with each .foo.dll.d being # generated automatically from foo.dll by a pattern rule. However, we don't # want the normal top-level Makefile doing that directly because it would try # to do so *every* time it's invoked, just because of the -include directives. # So we split it out to a *separate* Makefile.dlldeps to be invoked only when # we are actually building the NSIS installer. # # The 'file-list.txt' contains the full transitive list of executables and # DLLs to be included in the installer. It potentially needs to be rebuilt if # any of them change (as they may now link against a different set of DLLs), # and *that* much does need to be visible to this top-level Makefile, so # include them if they exist. -include $(patsubst %,.%.d,$(DLL_EXECUTABLES)) export V AM_DEFAULT_VERBOSITY bindir libdir OBJDUMP DLL_EXECUTABLES EXTRA_DLLDIRS file-list.txt: Makefile.dlldeps openconnect$(EXEEXT) libopenconnect.la $(WINTUN_DLL) @$(MAKE) --no-print-directory -f $< $@ endif #BUILD_NSIS # Wintun Layer 3 TUN driver for Windows 7 and newer # (see https://wintun.net) WINTUNDRIVER = wintun-0.14.1.zip WINTUNSHA256 = 07c256185d6ee3652e09fa55c0b673e2624b565e02c4b9091c79ca7d2f24ef51 $(WINTUNDRIVER): ( test -f "/opt/$(WINTUNDRIVER)" && cp "/opt/$(WINTUNDRIVER)" ./ ) || curl https://www.wintun.net/builds/$(WINTUNDRIVER) -o $@ .libs/wintun.dll: $(WINTUNDRIVER) echo $(WINTUNSHA256) $< | sha256sum -c unzip -DD -o -j -d .libs $< wintun/bin/$(WINTUN_ARCH)/wintun.dll # Latest vpnc-script-win.js, annotated with a header documenting the # exact source revision. vpnc-script-win.js: curl 'https://gitlab.com/api/v4/projects/openconnect%2Fvpnc-scripts/repository/commits?path=vpnc-script-win.js&branch=master' | \ jq -r '.[0] | "// This script matches the version found at " + (.web_url | sub("/commit/"; "/blob/")) + "/vpnc-script-win.js\n// Updated on " + .authored_date[:10] + " by " + .author_name + " <" + .author_email + "> (\"" + .title + "\")\n//"' > $@ curl https://gitlab.com/openconnect/vpnc-scripts/raw/master/vpnc-script-win.js >> $@ if BUILD_NSIS # Let make find the file in VPATH file-list-%.txt: % echo $< > $@ file-list-extra.txt: $(AM_V_GEN) for f in $(EXTRA_NSIS_FILES); do echo "$${f}" ; done > $@ # Rather than trying to get clever in NSIS and iterate over lists, # just emit raw snippets to be included separately in the install # and uninstall sections. instfiles.nsh: file-list.txt file-list-vpnc-script-win.js.txt file-list-extra.txt $(AM_V_GEN) ( grep -hv "^$(libdir)/qt5/plugins" $^ | sed 's%\(.*\)%File "\1"%' ; \ grep -h "^$(libdir)/qt5/plugins" $^ | sed 's%\(.*/qt5/plugins\)/\([^/]*\)/\([^/]*\)%SetOutPath "$$INSTDIR\\\\\2"\nFile "\1/\2/\3"%' ) > $@ uninstfiles.nsh: file-list.txt file-list-vpnc-script-win.js.txt file-list-extra.txt $(AM_V_GEN) ( grep -hv "^$(libdir)/qt5/plugins" $^ | sed 's%\(.*/\)\?\([^/]*\)%Delete /rebootok "$$INSTDIR\\\\\2"%' ; \ grep -h "^$(libdir)/qt5/plugins" $^ | sed 's%.*/qt5/plugins/\([^/]*\)/\([^/]*\)%Delete /rebootok "$$INSTDIR\\\\\1\\\\\2"\nRMDir "$$INSTDIR\\\\\1"%' ) > $@ # Theoretically makensis can define symbols with the -D command line # option and much of this could just be done that way, but I couldn't # get it to work and life's too short. openconnect.nsi: version.c $(AM_V_GEN) VERSION=$$(cut -f2 -d\" version.c); \ PROD_VERSION=$$(echo "$$VERSION" | perl -ne 'm|v(\d+)\.(\d+)(?:\.git\.\|\-)?(\d+)?(?:-g.+\|.*)|; printf("%1d.%1d.%1d.0",$$1,$$2,$$3)'); \ if grep -E -q '^#define OPENCONNECT_GNUTLS' config.h; then \ TLS_LIBRARY=GnuTLS; \ elif grep -E -q '^#define OPENCONNECT_OPENSSL' config.h; then \ TLS_LIBRARY=OpenSSL; \ else \ TLS_LIBRARY="Unknown_TLS_library"; \ fi; \ INSTALLER_NAME="openconnect-installer-$(INSTALLER_SUFFIX)-$${VERSION}.exe"; \ ( echo "VIProductVersion \"$$PROD_VERSION\""; \ echo "VIAddVersionKey ProductVersion \"$$VERSION\""; \ echo "VIAddVersionKey Comments \"OpenConnect multi-protocol VPN client for Windows (command-line version, built with $$TLS_LIBRARY). For more information, visit https://www.infradead.org/openconnect/\""; \ echo "OutFile \"$$INSTALLER_NAME\""; \ cat "$(srcdir)/openconnect.nsi.in" ) > $@ AM_V_MAKENSIS = $(am__v_MAKENSIS_$(V)) am__v_MAKENSIS_ = $(am__v_MAKENSIS_$(AM_DEFAULT_VERBOSITY)) am__v_MAKENSIS_0 = @echo " MAKENSIS " $@; am__v_MAKENSIS_1 = openconnect-installer-$(INSTALLER_SUFFIX).exe: openconnect.nsi instfiles.nsh uninstfiles.nsh $(srcdir)/openconnect.nsi.in html-recursive $(AM_V_MAKENSIS) $(MAKENSIS) $< ln -f "$$(grep -E '^OutFile' openconnect.nsi | cut -f2 -d\")" $@ endif #BUILD_NSIS