File: configure.ac

package info (click to toggle)
unity-java 1.1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,760 kB
  • sloc: ansic: 7,600; java: 6,850; sh: 349; yacc: 263; makefile: 197
file content (181 lines) | stat: -rw-r--r-- 6,813 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
dnl  Give the version number as the next/target release version.
dnl  Ie, do not include beta/rc numbers.
dnl  See README-developer.md for notes on marking releases.
dnl  The release date is generated from the date of the repository snapshot.
AC_INIT([unity], [1.1], [norman.gray@glasgow.ac.uk])

AC_PREFIX_DEFAULT([/usr/local])

AC_SUBST(LIBRARY_HOMEPAGE, [https://purl.org/nxg/dist/unity])
AC_SUBST(LIBRARY_REPOSITORY, [https://heptapod.host/nxg/unity])
AC_SUBST(LIBRARY_BUGPARADE, [https://heptapod.host/nxg/unity])
AC_SUBST(LIBRARY_DISTURL, [https://heptapod.host/nxg/unity/-/packages/])

dnl  This integer matches the package-version at the top,
dnl  and will be the same for (eg) all betas.
PACKAGE_VERSION_INTEGER=[`echo ${PACKAGE_VERSION}-0 | awk -F'[^0-9]*' '{printf "%d", $1*1000000 + $2*1000 + $3}'`]
AC_SUBST(PACKAGE_VERSION_INTEGER)
AC_DEFINE_UNQUOTED([PACKAGE_VERSION_INTEGER],
                   [$PACKAGE_VERSION_INTEGER],
                   [Version number as an integer: major*1e6+minor*1e3+release])

dnl  Ensure that all the parts of the tree list the same set of parsers
PARSERLIST="fits ogip cds vounits"
AC_SUBST(PARSERLIST)

AC_PROG_CC([cc clang gcc])
AC_PROG_INSTALL
AC_PROG_MKDIR_P  dnl don't want the fuss of install.sh at present

AC_CONFIG_HEADERS(src/c/config.h)

dnl  The calls to AC_PATH_PROG set the corresponding variables to full
dnl  paths.  If the tool isn't present, then we either (i) give a default
dnl  in the third argument, (ii) give no third argument, so that a
dnl  Makefile can detect that the tools is missing, or (iii) give a
dnl  flag third argument, for certain crucial tools, to let us produce
dnl  a 'this isn't going to go well' warning at the end of the script.

dnl  Yes, we should use Libtool....
AC_PATH_PROG(AR, ar, ar)
AC_PROG_RANLIB
dnl  DOXYGEN and DOT will be "" if not present
dnl  (and this is how their absence is detected in the Makefiles)
AC_PATH_PROG(DOXYGEN, doxygen)
AC_PATH_PROG(DOT, dot)
# Doxygen requires that DOT be the directory where the dot executable lives,
# not the path to the executable itself.
if test -n "$DOT"; then
   DOT=`dirname $DOT`
fi

dnl  java parser tools
AC_PATH_PROG(JAVA, java, NOJAVA)
AC_PATH_PROG(JAVAC, javac, NOJAVAC)
AC_PATH_PROG(JAR, jar, NOJAR)
AC_PATH_PROG(JAVADOC, javadoc, NOJAVADOC)

AC_PATH_PROG(BYACCJ, byaccj, NOBYACCJ)
dnl if test $BYACCJ != NOBYACCJ; then
dnl     YACC=$BYACCJ
dnl fi

dnl  C parser tools
AC_PROG_LEX(noyywrap)
dnl  The following is like AC_PROG_YACC, except that we default to
dnl  'NOYACC' instead of 'yacc'; this is so that we can substitute
dnl  BYACCJ in this case.  This means that we don't rely on bison
dnl  being present.
AC_CHECK_PROGS(YACC, ['bison -y' byacc yacc], NOYACC)
if test "$YACC" = NOYACC -a "$BYACCJ" != NOBYACCJ; then
   YACC=$BYACCJ
fi

AC_PATH_PROG(TAR, tar, tar)
AC_PATH_PROG(ZIP, zip, zip)


AC_SUBST(LIBCLASSPATH)
AC_SUBST(HAVE_JUNIT)
dnl  Use the presence of src/README.hacking (managed by ./Makefile.in)
dnl  to determine whether we're in a checkout or distribution tree.
dnl  If the file is present, we're in a distribution tree, and won't insist on junit.
AC_SUBST(IN_SOURCE_TREE)
AC_MSG_CHECKING([whether we're in a checkout or a distribution])
if test -f src/README.hacking; then
   IN_SOURCE_TREE=false
   AC_MSG_RESULT([distribution])
   dnl  We now check to see whether JUnit is in the classpath.
   dnl  This is a pretty basic test of this -- there are more
   dnl  sophisticated ways of doing this: see
   dnl  http://git.savannah.gnu.org/cgit/autoconf-archive.git/tree/m4/ax_prog_java.m4
   dnl  or http://ac-archive.sourceforge.net/ac-archive/ac_check_class.html
   cat >ConfTest.java <<EOD
   import org.junit.Test;
   public class ConfTest { @Test public void testTest() {}}
EOD
   AC_MSG_CHECKING([whether JUnit is present in CLASSPATH])
   if $JAVAC -cp $CLASSPATH ConfTest.java >/dev/null 2>&1; then
      LIBCLASSPATH=$CLASSPATH
      HAVE_JUNIT=:
   else
      HAVE_JUNIT=false
      LIBCLASSPATH=
   fi
   if $HAVE_JUNIT; then AC_MSG_RESULT(yes); else AC_MSG_RESULT(no); fi
   rm -f ConfTest.*
else
   IN_SOURCE_TREE=:
   AC_MSG_RESULT([checkout])
   dnl  Check to see if the classpath has right-looking jars in it
   dnl  (again, there's probably a more robust way of doing this)
   AC_MSG_CHECKING([whether library classpath looks sane])
   LIBCLASSPATH=`echo $PWD/lib/*.jar | sed s,\ ,:,g`
   classpathok=:
   expr "$LIBCLASSPATH" : '.*/jflex' >/dev/null || classpathok=false
   expr "$LIBCLASSPATH" : '.*/rdf4j' >/dev/null || classpathok=false
   expr "$LIBCLASSPATH" : '.*/junit' >/dev/null || classpathok=false
   if $classpathok; then
      AC_MSG_RESULT(yes)
   else
      AC_MSG_RESULT(no)
      echo "Library classpath seems to have missing jars: expected to see jflex, rdf4j and junit"
      echo '  ("mvn dependency:copy-dependencies" will fetch them; then run configure again)'
      echo "  Classpath: $LIBCLASSPATH"
   fi
   HAVE_JUNIT=:
fi

if $IN_SOURCE_TREE; then
   missing_tools=false
   for tool in JAVA JAVAC JAR JAVADOC YACC; do
       if eval test -n "$tool" -a \"\$$tool\" = NO$tool; then
          AC_MSG_WARN([can't find $tool])
          missing_tools=:
       fi
   done
   dnl  It would be good to check the presence of lex, but the
   dnl  AC_PROG_LEX seems to expand to ':' if this is missing, though the
   dnl  autoconf docs document it as expanding to 'lex'.  The
   dnl  inconsistency worries me, but I suspect there's little we can
   dnl  really do to help the user at this point.
   if $missing_tools; then
      AC_MSG_WARN([missing tools; you probably won't be able to build this library])
   fi
fi

AC_MSG_CHECKING([how to format stat .st_size])
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -Wall -Werror"
have_st_size_printf=false
for spec in '"%d"' '"%zd"' '"%ld"' '"%lld"'; do
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <sys/stat.h>
#include <stdio.h>
void f(void) { extern struct stat S; printf($spec, S.st_size);}]])],
                   have_st_size_printf=:,
                   ST_SIZE_PRINTF=NO)
    if "$have_st_size_printf"; then
        AC_DEFINE_UNQUOTED(ST_SIZE_PRINTF, $spec, [How do we format stat st_size])
        AC_MSG_RESULT([$spec])
        break
    fi
done
if ! $have_st_size_printf; then
    AC_MSG_RESULT([don't know! set it to %zd and hope for the best])
    AC_DEFINE(ST_SIZE_PRINTF, "%zd", [How do we format stat st_size])
fi
CFLAGS="$saved_CFLAGS"

AC_CONFIG_FILES([Makefile
                 src/c/Makefile
                 src/c/test/Makefile
                 src/java/Makefile
                 src/java/test/Makefile])
dnl  The following files aren't distributed, and so appear only in the checked out source tree
if $IN_SOURCE_TREE; then
  AC_CONFIG_FILES([pom.xml
                   src/grammar/Makefile
                   src/buildtools/Makefile])
fi

AC_OUTPUT