summaryrefslogtreecommitdiff
path: root/Makefile.am
blob: 54d0f27438eafaccfffb91b86d5b1b8ab7abd708 (plain)
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
##  Makefile.am -- an automake template for Makefile.in file
##  Copyright (C) 2009 Chris Bagwell and Sane Developers.
##
##  This file is part of the "Sane" build infra-structure.  See
##  included LICENSE file for license information.

SUBDIRS = include lib sanei backend frontend tools doc po testsuite
DIST_SUBDIRS = include lib sanei backend frontend tools doc po japi testsuite

dist_doc_DATA = AUTHORS ChangeLog COPYING LICENSE NEWS PROBLEMS PROJECTS \
 README README.aix README.beos README.darwin README.djpeg README.freebsd \
 README.hp-ux README.linux README.netbsd README.openbsd README.os2 \
 README.solaris README.unixware2 README.unixware7 README.windows \
 README.zeta

EXTRA_DIST  = .editorconfig
EXTRA_DIST += po/README

#
# Keep the .gitignore files sorted, and use this target to do it.
# Note that git's negated ignore patterns introduce order dependency
# and should therefor be sorted with much more care than we do here.
# Until that has been taken care of, such files are best left alone.
#
PERL=perl
sort-gitignore:
	for f in `find . -name .gitignore`; do \
	  if test -n "`sed -n '/^\!/p' $$f`"; then \
	    echo "$$f: skipping file with negated pattern" >&2; \
	  fi; \
	  $(PERL) -e 'print sort <>;' < $$f > $$f.tmptmp; \
	  mv $$f.tmptmp $$f; \
	done

#
# Check to make sure only sane_ and sanei_ symbols are exported from
# the libraries
#
libcheck:
	@echo "Libraries exporting 'illegal' symbols:"
	@for lib in backend/.libs/*.so backend/.libs/*.a; do \
	lines=`nm -g $$lib|grep '\( T \)\|\( D \)'|egrep -v ' _fini| _init'|egrep -v ' sane_| sanei_'`; \
	if test -n "$$lines" ; then \
	  echo -e "*** $$lib:\n$$lines"; \
	  found_errors="yes"; \
	fi \
	done; \
	echo; \
	echo "Libraries exporting 'non-standard sane_*' symbols:"; \
	for lib in backend/.libs/*.so backend/.libs/*.a; do \
	lines=`nm -g $$lib|grep '\( T \)\|\( D \)'|egrep ' sane_' | egrep -v 'sane_.*init|sane_.*exit|sane_.*get_devices|sane_.*open|sane_.*close|sane_.*get_option_descriptor|sane_.*control_option|sane_.*get_parameters|sane_.*start|sane_.*read|sane_.*cancel|sane_.*set_io_mode|sane_.*get_select_fd|sane_strstatus'` ; \
	if test -n "$$lines" ; then \
	  echo -e "*** $$lib:\n$$lines"; \
	  found_errors="yes"; \
	fi \
	done;
	if test ! -z $$found_errors ; then \
	  exit 1; \
	fi

# Verify that backends do not contain any unwanted public symbols
# anytime check or distcheck is ran.
# TODO: Currently this doesn't pass.  Uncomment once symbols have
# been cleaned up.
#check-am: libcheck

# Run testsuite any time installcheck or distcheck is ran.
# Must run testsuite after install or else shared library backends
# will not be found (including test backend).
installcheck-local:
	cd testsuite && $(MAKE) test.local

md5: dist
	md5sum $(distdir).tar.gz > $(distdir).tar.gz.md5

sane-backends: md5

# Clean files created by custom targets in this file.
clean-local:
	rm -f $(distdir).tar.gz.md5

# Clean files created by configure
distclean-local:
	rm -f include/_stdint.h
	rm -f include/byteorder.h

ACLOCAL_AMFLAGS = -I m4

# Make potential issues stick out when running `make distcheck`.
DISTCHECK_CONFIGURE_FLAGS  = --enable-silent-rules