diff options
author | Stephen Dolan <mu@netsoc.tcd.ie> | 2013-05-08 02:30:08 +0100 |
---|---|---|
committer | Stephen Dolan <mu@netsoc.tcd.ie> | 2013-05-08 02:42:23 +0100 |
commit | d121420757001950604473f5b0f7a592caa1433e (patch) | |
tree | fe1d5c043fdc81d8b431d2558e83120860bf11c2 | |
parent | 1ebb3825400074dc62e92d161f76a57ef4fd40d4 (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.am | 175 | ||||
-rw-r--r-- | configure.ac | 32 | ||||
-rw-r--r-- | jq_test.c | 30 | ||||
-rwxr-xr-x | setup.sh | 2 | ||||
-rw-r--r-- | tests/all.test (renamed from testdata) | 0 | ||||
-rwxr-xr-x | tests/run | 3 |
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 @@ -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++; @@ -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 |