Prepare build system for gpgme-js and dist it
authorAndre Heinecke <aheinecke@intevation.de>
Tue, 19 Jun 2018 14:40:40 +0000 (16:40 +0200)
committerAndre Heinecke <aheinecke@intevation.de>
Tue, 19 Jun 2018 14:40:40 +0000 (16:40 +0200)
* configure.ac: Add js as language.
* lang/Makefile.am: Add js as dist language.
* lang/js/BrowserTestExtension/Makefile.am,
lang/js/DemoExtension/Makefile.am,
lang/js/Makefile.am,
lang/js/src/Makefile.am: Populate EXTRA_DIST variables.

--
There is no actual build done yet as there seems to be
no way to build it with debian stable tools. This needs
clarification.

configure.ac
lang/Makefile.am
lang/js/BrowserTestExtension/Makefile.am [new file with mode: 0644]
lang/js/DemoExtension/Makefile.am [new file with mode: 0644]
lang/js/Makefile.am [new file with mode: 0644]
lang/js/src/Makefile.am [new file with mode: 0644]

index a1da1e3..69d7132 100644 (file)
@@ -187,7 +187,7 @@ have_w64_system=no
 have_macos_system=no
 build_w32_glib=no
 build_w32_qt=no
-available_languages="cl cpp python python2 python3 qt"
+available_languages="cl cpp python python2 python3 qt js"
 default_languages="cl cpp python qt"
 case "${host}" in
     x86_64-*mingw32*)
@@ -479,6 +479,28 @@ fi
 
 AC_SUBST(ENABLED_LANGUAGES, $enabled_languages)
 
+# The javascript bindings
+LIST_MEMBER("js", $enabled_languages)
+if test "$found" = "1"; then
+    AC_CHECK_PROGS([NPX], [npx])
+    if test -z "$NPX"; then
+        if test "$explicit_languages" = "1"; then
+            AC_MSG_ERROR([[
+***
+*** Node.js (npx) is required for the JavaScript binding.
+***]])
+        else
+            AC_MSG_WARN([
+***
+*** Node.js (npx) not found - JavaScript binding will not be built.
+***])
+            enabled_languages=$(echo $enabled_languages | sed 's/js//')
+        fi
+    fi
+fi
+AM_CONDITIONAL([BUILD_JS_BINDINGS],
+               [test -n "$NPX"])
+
 #
 # Provide information about the build.
 #
@@ -899,6 +921,9 @@ AC_CONFIG_FILES(lang/qt/tests/Makefile)
 AC_CONFIG_FILES(lang/qt/src/qgpgme_version.h)
 AC_CONFIG_FILES([lang/Makefile lang/cl/Makefile lang/cl/gpgme.asd])
 AM_COND_IF([HAVE_DOXYGEN], [AC_CONFIG_FILES([lang/qt/doc/Doxyfile])])
+AC_CONFIG_FILES([lang/js/Makefile lang/js/src/Makefile
+                 lang/js/BrowserTestExtension/Makefile
+                 lang/js/DemoExtension/Makefile])
 AC_CONFIG_FILES(lang/qt/doc/Makefile)
 AC_CONFIG_FILES([lang/python/Makefile
                 lang/python/version.py
index fd3ce4e..1bf7331 100644 (file)
@@ -18,6 +18,6 @@
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
 
 SUBDIRS = $(ENABLED_LANGUAGES)
-DIST_SUBDIRS = cl cpp qt python
+DIST_SUBDIRS = cl cpp qt python js
 
 EXTRA_DIST = README
diff --git a/lang/js/BrowserTestExtension/Makefile.am b/lang/js/BrowserTestExtension/Makefile.am
new file mode 100644 (file)
index 0000000..340d7ad
--- /dev/null
@@ -0,0 +1,42 @@
+# Makefile.am for GPGME-JS.
+# Copyright (C) 2018 Intevation GmbH
+#
+# This file is part of GPGME.
+#
+# GPGME-CL is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# GPGME-CL is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA
+
+EXTRA_DIST = browsertest.html \
+             index.html \
+             longTests.html \
+             Makefile.am \
+             manifest.json \
+             popup.html \
+             popup.js \
+             runbrowsertest.js \
+             rununittests.js \
+             setup_testing.js \
+             testicon.png \
+             testkey2.pub \
+             testkey.pub \
+             testkey.sec \
+             tests/encryptDecryptTest.js \
+             tests/encryptTest.js \
+             tests/inputvalues.js \
+             tests/KeyImportExport.js \
+             tests/longRunningTests.js \
+             tests/signTest.js \
+             tests/startup.js \
+             unittests.html
diff --git a/lang/js/DemoExtension/Makefile.am b/lang/js/DemoExtension/Makefile.am
new file mode 100644 (file)
index 0000000..e93d0f6
--- /dev/null
@@ -0,0 +1,27 @@
+# Makefile.am for GPGME-JS.
+# Copyright (C) 2018 Intevation GmbH
+#
+# This file is part of GPGME-CL.
+#
+# GPGME-CL is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# GPGME-CL is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA
+
+EXTRA_DIST = manifest.json \
+             popup.html \
+             entry.js \
+             maindemo.js \
+             mainui.html \
+             testicon.png \
+             ui.css
diff --git a/lang/js/Makefile.am b/lang/js/Makefile.am
new file mode 100644 (file)
index 0000000..4b5c717
--- /dev/null
@@ -0,0 +1,34 @@
+# Makefile.am for GPGME-JS.
+# Copyright (C) 2018 2018 Bundesamt für Sicherheit in der Informationstechnik
+#
+# This file is part of GPGME-JS.
+#
+# GPGME-JS is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# GPGME-JS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA
+
+SUBDIRS = src BrowserTestExtension DemoExtension
+
+EXTRA_DIST = build_extensions.sh \
+             CHECKLIST \
+             CHECKLIST_build \
+             .eslintrc.json \
+             Makefile.am \
+             package.json \
+             README \
+             README_testing \
+             unittest_inputvalues.js \
+             unittests.js \
+             webpack.conf.js \
+             webpack.conf_unittests.js
diff --git a/lang/js/src/Makefile.am b/lang/js/src/Makefile.am
new file mode 100644 (file)
index 0000000..dd330d5
--- /dev/null
@@ -0,0 +1,30 @@
+# Makefile.am for GPGME-JS.
+# Copyright (C) 2018 Intevation GmbH
+#
+# This file is part of GPGME.
+#
+# GPGME-CL is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# GPGME-CL is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA
+
+EXTRA_DIST = Connection.js \
+             Errors.js \
+             gpgmejs.js \
+             Helpers.js \
+             index.js \
+             Key.js \
+             Keyring.js \
+             Message.js \
+             permittedOperations.js \
+             Signature.js