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 /Makefile.am | |
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.
Diffstat (limited to 'Makefile.am')
-rw-r--r-- | Makefile.am | 175 |
1 files changed, 47 insertions, 128 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 |