Ensure we reautoconf the packag

Currently since configure.in in is in a subdirectory, we don't reautoconf the 
recipe. We really need to do this, to update things like the libtool script used
and fix various issues such as those that could creep in if a reautoconf is 
triggered for some reason. Since this source only calls AM_INIT_AUTOMAKE to 
gain the PACKAGE and VERSION definitions and that macro now errors if Makefile.am 
doesn't exist, we need to add these definitions manually. 

These changes avoid failures like: 
---- 
| ... 
| DssslApp.cxx:117:36: error: 'PACKAGE' was not declared in this scope 
| DssslApp.cxx:118:36: error: 'VERSION' was not declared in this scope 
| make[2]: *** [DssslApp.lo] Error 1 ----

Upstream-Status: Pending

RP 2012/6/12

Index: openjade-1.3.2/acinclude.m4
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ openjade-1.3.2/acinclude.m4	2012-06-12 12:48:54.871365344 +0000
@@ -0,0 +1,39 @@
+dnl Configure-time switch with default
+dnl
+dnl Each switch defines an --enable-FOO and --disable-FOO option in
+dnl the resulting configure script.
+dnl
+dnl Usage:
+dnl smr_SWITCH(name, description, default, pos-def, neg-def)
+dnl
+dnl where:
+dnl
+dnl name        name of switch; generates --enable-name & --disable-name
+dnl             options
+dnl description help string is set to this prefixed by "enable" or
+dnl             "disable", whichever is the non-default value
+dnl default     either "on" or "off"; specifies default if neither
+dnl             --enable-name nor --disable-name is specified
+dnl pos-def     a symbol to AC_DEFINE if switch is on (optional)
+dnl neg-def     a symbol to AC_DEFINE if switch is off (optional)
+dnl
+AC_DEFUN(smr_SWITCH, [
+    AC_MSG_CHECKING(whether to enable $2)
+    AC_ARG_ENABLE(
+        $1,
+        ifelse($3, on,
+            [  --disable-[$1]    disable [$2]],
+            [  --enable-[$1]     enable [$2]]),
+        [ if test "$enableval" = yes; then
+            AC_MSG_RESULT(yes)
+            ifelse($4, , , AC_DEFINE($4))
+        else
+            AC_MSG_RESULT(no)
+            ifelse($5, , , AC_DEFINE($5))
+        fi ],
+        ifelse($3, on,
+           [ AC_MSG_RESULT(yes)
+             ifelse($4, , , AC_DEFINE($4)) ],
+           [ AC_MSG_RESULT(no)
+            ifelse($5, , , AC_DEFINE($5))]))])
+
Index: openjade-1.3.2/config/configure.in
===================================================================
--- openjade-1.3.2.orig/config/configure.in	2012-06-12 12:47:20.735365445 +0000
+++ openjade-1.3.2/config/configure.in	2012-06-12 12:48:17.507364080 +0000
@@ -12,9 +12,12 @@
 dnl  Credits: this autoconf script was largely "inspired" <g> by the
 dnl  autoconf script around SP made by Henry Thompson.
 dnl
-AC_INIT(dsssl)
+AC_INIT([openjade], [1.3.2])
 AC_CONFIG_AUX_DIR(config)
-AM_INIT_AUTOMAKE( openjade, 1.3.2)
+AC_SUBST([PACKAGE], [openjade])
+AC_SUBST([VERSION], [1.3.2])
+AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
+AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
 TOP=`pwd`
 AC_SUBST(TOP)
 dnl
