summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Dolan <mu@netsoc.tcd.ie>2013-05-08 02:30:08 +0100
committerStephen Dolan <mu@netsoc.tcd.ie>2013-05-08 02:42:23 +0100
commitd121420757001950604473f5b0f7a592caa1433e (patch)
treefe1d5c043fdc81d8b431d2558e83120860bf11c2
parent1ebb3825400074dc62e92d161f76a57ef4fd40d4 (diff)
Clean up autotools config.
Remove some of @stagrlee's hard work since jq's testsuite is less silly than when he wrote the autotools config.
-rw-r--r--Makefile.am175
-rw-r--r--configure.ac32
-rw-r--r--jq_test.c30
-rwxr-xr-xsetup.sh2
-rw-r--r--tests/all.test (renamed from testdata)0
-rwxr-xr-xtests/run3
6 files changed, 55 insertions, 187 deletions
diff --git a/Makefile.am b/Makefile.am
index 2aa2dda0..5018439f 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,164 +1,83 @@
-# Converted to automake by thompson@dtosolutions.com 26NOV12
+### C source files to be built
-# setup is only used by distribution developers, not package developers.
-# Still, as a matter of allowing patching, its not a bad idea to distribute
-# the developer setup script in the tarball.
-EXTRA_DIST = \
- setup.sh \
- config.h.in \
- ChangeLog \
- VERSION \
- lexer.l \
- lexer.h \
- gen_utf8_tables.py \
- jq.spec \
- testdata \
- docs/content/1.tutorial/default.yml \
- docs/content/2.download/default.yml \
- docs/content/3.manual/manual.yml \
- docs/content/index/index.yml \
- docs/Gemfile \
- docs/Gemfile.lock \
- docs/public/.htaccess \
- docs/public/bootstrap/css/bootstrap-responsive.css \
- docs/public/bootstrap/css/bootstrap-responsive.min.css \
- docs/public/bootstrap/css/bootstrap.css \
- docs/public/bootstrap/css/bootstrap.min.css \
- docs/public/bootstrap/img/glyphicons-halflings-white.png \
- docs/public/bootstrap/img/glyphicons-halflings.png \
- docs/public/bootstrap/js/bootstrap.js \
- docs/public/bootstrap/js/bootstrap.min.js \
- docs/public/css/base.scss \
- docs/public/jq.png \
- docs/public/robots.txt \
- docs/Rakefile \
- docs/site.yml \
- docs/templates/default.liquid \
- docs/templates/index.liquid \
- docs/templates/manual.liquid \
- docs/templates/shared/_footer.liquid \
- docs/templates/shared/_head.liquid \
- docs/templates/shared/_header.liquid
+JQ_INCS = jq_parser.h builtin.h bytecode.h compile.h execute.h \
+ forkable_stack.h frame_layout.h jv.h jv_alloc.h jv_aux.h jv_dtoa.h \
+ jv_parse.h jv_unicode.h locfile.h opcode.h opcode_list.h parser.y \
+ jv_utf8_tables.h
-# README.md is expected in Github projects, good stuff in it, so we'll
-# distribute it and install it with the package in the doc directory.
-docdir = ${datadir}/doc/${PACKAGE}
-dist_doc_DATA = README.md INSTALL COPYING AUTHORS README NEWS
+JQ_SRC = opcode.c bytecode.c compile.c execute.c builtin.c jv.c \
+ jv_parse.c jv_print.c jv_dtoa.c jv_unicode.c jv_aux.c jv_alloc.c \
+ lexer.c jq_test.c ${JQ_INCS}
+
+
+### C build options
-JQ_INCS = \
- jq_parser.h \
- builtin.h \
- bytecode.h \
- compile.h \
- execute.h \
- forkable_stack.h \
- frame_layout.h \
- jv.h \
- jv_alloc.h \
- jv_aux.h \
- jv_dtoa.h \
- jv_parse.h \
- jv_unicode.h \
- locfile.h \
- opcode.h \
- opcode_list.h \
- parser.y \
- jv_utf8_tables.gen.h
-
-JQ_SRC = \
- opcode.c \
- bytecode.c \
- compile.c \
- execute.c \
- builtin.c \
- jv.c \
- jv_parse.c \
- jv_print.c \
- jv_dtoa.c \
- jv_unicode.c \
- jv_aux.c \
- jv_alloc.c \
- lexer.c \
- ${JQ_INCS}
-
-if DEVELOPMENT_ENABLED
-DEVCFLAGS = -Wextra -Wall -Wno-missing-field-initializers -Wno-unused-parameter -std=gnu99 -ggdb -Wno-unused-function -O0 -DJQ_DEBUG=1
-RPMBINS = jq jq_test
-else
-DEVCFLAGS = -DJQ_DEBUG=0
-RPMBINS = jq
-endif
+AM_CFLAGS = -Wextra -Wall -Wno-missing-field-initializers \
+ -Wno-unused-parameter -Wno-unused-function
+
+
+### Generating the lexer and parser
+
+# While there is some autoconf macro support for lex/flex, it doesn't support
+# header file creation so we'll use good old make
+BUILT_SOURCES = lexer.h lexer.c
+lexer.c: lexer.l
+ flex -o lexer.c --header-file=lexer.h lexer.l
+lexer.h: lexer.c
# Tell YACC (bison) autoconf macros that you want a header file created.
# If the --warnings=all fails, you probably have an old version of bison
# OSX ships an old bison, so update with homebrew or macports
AM_YFLAGS = --warnings=all -d
-bin_PROGRAMS = jq
-BUILT_SOURCES = jv_utf8_tables.gen.h lexer.h lexer.c
-jq_SOURCES = ${JQ_SRC} main.c
-jq_CPPFLAGS = ${DEVCFLAGS}
-# always test, but conditionally distribute to /usr/libexec/jq/jq_test
-if DEVELOPMENT_ENABLED
- pkglibexec_PROGRAMS = jq_test
- # automake doesn't like putting data in libexec (pkglibexec_DATA)
- # so we'll create our own macro and distribute testdata
- mydatadir = ${libexecdir}/${PACKAGE}
- mydata_DATA = testdata
- DEVBUILD=yes
-else
- noinst_PROGRAMS = jq_test
+### Building the jq binary
- DEVBUILD=no
-endif
+main.c: config.h
-jq_test_SOURCES = ${JQ_SRC} jq_test.c
-jq_test_CPPFLAGS = ${DEVCFLAGS}
+bin_PROGRAMS = jq
+jq_SOURCES = ${JQ_SRC} main.c
-# this is what gets "make check" to work
-TESTS = jq_test
-LOG_COMPILER = valgrind
-AM_LOG_FLAGS = --error-exitcode=1 -q --leak-check=full
-man_MANS = jq.1
+### Tests
-jq.1 :
- cd ${abs_srcdir}/docs; rake manpage > ${abs_builddir}/$@
+# this is what gets "make check" to work
+TESTS = tests/all.test
+TEST_LOG_COMPILER = tests/run
-# nasty circular dependency on header files between the generated C files
-parser.o: lexer.c
-lexer.o: parcer.c
-lexer.c: parser.h
+### Packaging
-# While there is some autoconf macro support for lex/flex, it doesn't support
-# header file creation so we'll use good old make
-lexer.c: lexer.l
- flex -o lexer.c --header-file=lexer.h lexer.l
-lexer.h: lexer.c
+# setup is only used by distribution developers, not package developers.
+# Still, as a matter of allowing patching, its not a bad idea to distribute
+# the developer setup script in the tarball.
+EXTRA_DIST = setup.sh config.h.in ChangeLog VERSION lexer.l lexer.h \
+ gen_utf8_tables.py jq.spec testdata
-jv_utf8_tables.gen.h: gen_utf8_tables.py
- python $^ > $@
+# README.md is expected in Github projects, good stuff in it, so we'll
+# distribute it and install it with the package in the doc directory.
+docdir = ${datadir}/doc/${PACKAGE}
+dist_doc_DATA = README.md INSTALL COPYING AUTHORS README NEWS
-jv_unicode.c: jv_utf8_tables.gen.h
+man_MANS = jq.1
+
+jq.1 :
+ cd ${abs_srcdir}/docs; rake manpage > ${abs_builddir}/$@
ChangeLog:
git log --name-status > $@ || echo "no changelog" > $@
-main.c: config.h
-
releasetag:
git tag -s "jq-$$(cat VERSION)" -m "jq release $$(cat VERSION)"
RELEASE ?= 1
-rpm: ${RPMBINS}
+rpm: jq
@echo "Packaging jq as an RPM ..."
mkdir -p rpm/SOURCES rpm/BUILD rpm/BUILDROOT rpm/RPMS rpm/SPECS
cp jq-$$(cat VERSION).tar.gz rpm/SOURCES/
- rpmbuild -tb --define "_topdir ${PWD}/rpm" --define "_prefix /usr" --define "myver $$(cat VERSION)" --define "myrel ${RELEASE}" --define "devbuild ${DEVBUILD}" rpm/SOURCES/jq-$$(cat VERSION).tar.gz
+ rpmbuild -tb --define "_topdir ${PWD}/rpm" --define "_prefix /usr" --define "myver $$(cat VERSION)" --define "myrel ${RELEASE}" rpm/SOURCES/jq-$$(cat VERSION).tar.gz
find rpm/RPMS/ -name "*.rpm" -exec mv {} ./ \;
rm -rf rpm
diff --git a/configure.ac b/configure.ac
index 5f939493..fe81d972 100644
--- a/configure.ac
+++ b/configure.ac
@@ -16,33 +16,10 @@ AM_PROG_CC_C_O
dnl couldn't use AM_PROG_LEX as it doesn't support header files like the
dnl AC_PROG_YACC macros...
-dnl CFLAGS is concidered a packagers variable, not a developer variable
-dnl in Auto-tools. For developer ease of use, CFLAGS are set how the
-dnl developers like them by default but the packager can disable if so
-dnl desired. This is useful if something other than gcc is needed or
-dnl for distros that need to heavily tweek the compiler (gentoo, ARM cpu
-dnl linux's, etc)
-AC_ARG_ENABLE(
- [devel],
- [AC_HELP_STRING(
- [--enable-devel],
- [Build the tests and enable the same CFLAGS used by jq developers @<:@default=no@:>@])],
- [],
- [enable_devel=no]
-)
-AC_MSG_RESULT($enable_devel)
-AM_CONDITIONAL([DEVELOPMENT_ENABLED], [test x$enable_devel = xyes])
-
dnl
dnl these program checks should probably be deleted
dnl
-dnl Check for sed
-AC_CHECK_PROGS(regex_cmd, sed)
-if test x$regex_cmd = "x" ; then
- AC_MSG_NOTICE([sed is required to patch jq.])
-fi
-
dnl Check for flex
AC_CHECK_PROGS(flex_cmd, flex)
if test x$flex_cmd = "x" ; then
@@ -55,12 +32,6 @@ if test x$bison_cmd = "x" ; then
AC_MSG_NOTICE([bison is required to patch jq.])
fi
-dnl Check for python
-AC_CHECK_PROGS(python_cmd, python)
-if test x$python_cmd = "x" ; then
- AC_MSG_NOTICE([python is required to patch jq.])
-fi
-
dnl Check for valgrind
AC_CHECK_PROGS(valgrind_cmd, valgrind)
if test x$valgrind_cmd = "x" ; then
@@ -72,3 +43,6 @@ AC_CONFIG_HEADERS(config.h)
AM_INIT_AUTOMAKE([-Wall dist-bzip2 dist-zip])
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
+
+
+dnl FIXME should disable colour output on windows somehow
diff --git a/jq_test.c b/jq_test.c
index 39f2664f..294a27f7 100644
--- a/jq_test.c
+++ b/jq_test.c
@@ -10,39 +10,11 @@ static void run_jq_tests();
int jq_testsuite(int argc, char* argv[]) {
- FILE* testdata;
jv_test();
- if (argc == 1) {
- testdata = fopen("testdata", "r");
- if ( NULL == testdata )
- {
- /* in an autoconf distcheck, the binary file will be in a _build subdirectory */
- testdata = fopen("../testdata", "r");
- if ( NULL == testdata )
- {
- fprintf(stderr, "Could not find testdata file\n");
- exit(1);
- }
- }
-
- } else if (argc == 2) {
- if (!strcmp(argv[1], "-")) {
- testdata = stdin;
- } else {
- testdata = fopen(argv[1], "r");
- }
- } else {
- printf("usage: %s OR cat testdata | %s - OR %s testdata\n", argv[0], argv[0], argv[0]);
- return 127;
- }
- run_jq_tests(testdata);
- if (testdata != stdin) fclose(testdata);
+ run_jq_tests(stdin);
return 0;
}
-
-
-
static int skipline(const char* buf) {
int p = 0;
while (buf[p] == ' ' || buf[p] == '\t') p++;
diff --git a/setup.sh b/setup.sh
index ef92f88a..50cc4eea 100755
--- a/setup.sh
+++ b/setup.sh
@@ -24,7 +24,7 @@ elif [ "superclean" == "$1" ]; then
fi
else
autoreconf --install
- ./configure --enable-devel --prefix=/opt/junk
+ ./configure --prefix=/opt/junk
make check
mkdir tmp
make DESTDIR=./tmp install
diff --git a/testdata b/tests/all.test
index 83f91dae..83f91dae 100644
--- a/testdata
+++ b/tests/all.test
diff --git a/tests/run b/tests/run
new file mode 100755
index 00000000..a4b5b320
--- /dev/null
+++ b/tests/run
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+cat $@ | valgrind --error-exitcode=1 -q --leak-check=full ./jq --run-tests \ No newline at end of file