blob: 115e5f9908a87ab79607c5fdf8ad725e91f5c0a1 [file] [log] [blame]
cristy16af1cb2009-12-11 21:38:29 +00001# Copyright 1999-2010 ImageMagick Studio LLC, a non-profit organization
cristy3ed852e2009-09-05 21:47:34 +00002# dedicated to making software imaging solutions freely available.
3#
4# You may not use this file except in compliance with the License. You may
5# obtain a copy of the License at
6#
7# http://www.imagemagick.org/script/license.php
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14#
15# Copyright (C) 2003 - 2008 GraphicsMagick Group
16#
17# Top-Level Makefile for building ImageMagick.
18#
19
20AUTOMAKE_OPTIONS = 1.11 subdir-objects parallel-tests color-tests dist-zip dist-bzip2 dist-xz foreign
21
22topincludedir = @includedir@/ImageMagick
23
24AM_CPPFLAGS = -I$(top_builddir) -I$(top_srcdir)
25
26ACLOCAL_AMFLAGS = -I m4
27
cristyf5ee5be2009-11-06 02:22:56 +000028MODULECOMMONFLAGS = -no-undefined -export-symbols-regex ".*" -shared -module -avoid-version
cristy3ed852e2009-09-05 21:47:34 +000029
30# Options to pass when running configure in the distcheck target.
31#
32# We want to preserve user-provided option variables so the same
33# compiler, headers, and libraries are used as for a normal build.
34DISTCHECK_CONFIGURE_FLAGS=$(DISTCHECK_CONFIG_FLAGS)
35
36## Make sure these will be cleaned even when they're not built by default.
37CLEANFILES = \
38 $(LTDL_CLEANFILES) \
39 $(WAND_CLEANFILES) \
40 $(MAGICKPP_CLEANFILES) \
41 $(UTILITIES_CLEANFILES) \
cristy52cf7f12010-02-07 18:07:56 +000042 $(TESTS_CLEANFILES)
cristy3ed852e2009-09-05 21:47:34 +000043
44bin_PROGRAMS = \
45 $(UTILITIES_PGMS)
46
47# Binary scripts
48bin_SCRIPTS = \
49 $(MAGICK_BIN_SCRPTS) \
50 $(WAND_BIN_SCRPTS) \
51 $(MAGICKPP_SCRPTS)
52
53include_HEADERS = \
54 $(LTDL_INSTALLHEADERS)
55
56# Headers which are not installed but which are distributed
57noinst_HEADERS = \
58 $(LIBLTDL_NOINST_HDRS) \
59 $(MAGICK_NOINST_HDRS)
60
61if WIN32_NATIVE_BUILD
62SRCDIR='$(shell @WinPathScript@ $(srcdir)/)'
63else
64SRCDIR="$(srcdir)/"
65endif
66
67# Environment parameters to be used during tests
68TESTS_ENVIRONMENT = \
69 COMPARE="$(MEMCHECK) @abs_top_builddir@/utilities/compare" \
70 COMPOSITE="$(MEMCHECK) @abs_top_builddir@/utilities/composite" \
71 CONJURE="$(MEMCHECK) @abs_top_builddir@/utilities/conjure" \
72 CONVERT="$(MEMCHECK) @abs_top_builddir@/utilities/convert" \
73 DISPLAY="$(MEMCHECK) @abs_top_builddir@/utilities/display" \
74 MONTAGE="$(MEMCHECK) @abs_top_builddir@/utilities/montage" \
75 VALIDATE="$(MEMCHECK) @abs_top_builddir@/tests/validate" \
76 LD_LIBRARY_PATH="@abs_top_builddir@/magick/.libs:${LD_LIBRARY_PATH}" \
77 MAGICK_CODER_MODULE_PATH='@MAGICK_CODER_MODULE_PATH@' \
78 MAGICK_CONFIGURE_PATH='@MAGICK_CONFIGURE_BUILD_PATH@@DIRSEP@@MAGICK_CONFIGURE_SRC_PATH@' \
79 MAGICK_FILTER_MODULE_PATH='@MAGICK_FILTER_MODULE_PATH@' \
80 MAKE="$(MAKE)" \
81 MAKEFLAGS="$(MAKEFLAGS)" \
82 MEMCHECK="$(MEMCHECK)" \
83 PATH="@abs_top_builddir@/utilities:${PATH}" \
84 SRCDIR=$(SRCDIR)
85
86# Test extensions
87TEST_EXTENSIONS = .sh
88
89# Tests to run
90TESTS = \
cristy3ed852e2009-09-05 21:47:34 +000091 $(TESTS_TESTS) \
92 $(MAGICKPP_TESTS) \
93 $(WAND_TESTS) \
94 $(UTILITIES_TESTS)
95
96# Tests which are expected to fail
97XFAIL_TESTS = \
98 $(TESTS_XFAIL_TESTS) \
99 $(UTILITIES_XFAIL_TESTS)
100
101TOP_EXTRA_DIST = \
102 AUTHORS.txt \
103 ChangeLog \
104 LICENSE \
105 QuickStart.txt \
106 NOTICE \
107 Install-mac.txt \
108 Install-unix.txt \
109 Install-vms.txt \
110 Install-windows.txt \
111 magick.sh.in \
112 Magickshr.opt \
113 Make.com \
114 NEWS.txt \
115 Platforms.txt \
116 README.txt \
117 index.html \
118 version.sh \
119 winpath.sh
120
121# Additional files to distribute
122EXTRA_DIST = \
123 $(TOP_EXTRA_DIST) \
124 $(CONFIG_EXTRA_DIST) \
125 $(MAGICK_EXTRA_DIST) \
126 $(WAND_EXTRA_DIST) \
127 $(MAGICKPP_EXTRA_DIST) \
128 $(UTILITIES_EXTRA_DIST) \
129 $(TESTS_EXTRA_DIST)
130
131lib_LTLIBRARIES = $(MAGICKCORE_LIBS) $(MAGICKWAND_LIBS) $(MAGICKPP_LIBS)
132AM_LDFLAGS =
133noinst_LTLIBRARIES =
134EXTRA_LTLIBRARIES =
135BUILT_SOURCES =
136MOSTLYCLEANFILES =
137
138check_PROGRAMS = \
139 $(TESTS_CHECK_PGRMS) \
140 $(MAGICKPP_CHECK_PGRMS) \
141 $(WAND_CHECK_PGRMS)
142
143include m4/Makefile.am
144include config/Makefile.am
145include ltdl/Makefile.inc
146include coders/Makefile.am
147include magick/Makefile.am
148include filters/Makefile.am
149include wand/Makefile.am
150include Magick++/Makefile.am
151include utilities/Makefile.am
152include tests/Makefile.am
153include PerlMagick/Makefile.am
154
155# Pkgconfig directory
156pkgconfigdir = $(libdir)/pkgconfig
157
158# Files to install in Pkgconfig directory
159pkgconfig_DATA = \
160 $(MAGICK_PKGCONFIG) \
161 $(WAND_PKGCONFIG) \
162 $(MAGICKPP_PKGCONFIG)
163
164# Manual pages to install
165man_MANS = \
166 $(MAGICK_MANS) \
167 $(WAND_MANS) \
168 $(MAGICKPP_MANS) \
169 $(UTILITIES_MANS)
170
171# Architecture independent data files installed in the package's data directory
172docdir = $(SHARE_PATH)
173doc_DATA = \
174 LICENSE \
175 ChangeLog \
176 NEWS.txt
177
178if MAINTAINER_MODE
179MAINTAINER_TARGETS = magick-version
180endif
181
182all-local: $(MAGICKPP_LOCAL_TARGETS) $(PERLMAGICK_ALL_LOCAL_TARGETS) $(MAINTAINER_TARGETS)
183
184install-exec-local: $(PERLMAGICK_INSTALL_EXEC_LOCAL_TARGETS)
185
186install-data-local: $(MAGICK_INSTALL_DATA_LOCAL_TARGETS) $(PERLMAGICK_INSTALL_DATA_LOCAL_TARGETS) $(HTML_INSTALL_DATA_TARGETS)
187
188uninstall-local: $(MAGICK_UNINSTALL_LOCAL_TARGETS) $(PERLMAGICK_UNINSTALL_LOCAL_TARGETS) $(HTML_UNINSTALL_DATA_TARGETS)
189
190clean-local: $(PERLMAGICK_CLEAN_LOCAL_TARGETS)
191
192distclean-local: $(PERLMAGICK_DISTCLEAN_LOCAL_TARGETS)
193
194maintainer-clean-local: $(PERLMAGICK_MAINTAINER_CLEAN_LOCAL_TARGETS)
195
196check-local: $(PERLMAGICK_CHECK_LOCAL_TARGETS)
197
198drd:
199 $(MAKE) MEMCHECK='valgrind --tool=drd --check-stack-var=yes --var-info=yes --quiet $(VALGRIND_EXTRA_OPTS)' check
200
201helgrind:
202 $(MAKE) MEMCHECK='valgrind --tool=helgrind --quiet $(VALGRIND_EXTRA_OPTS)' check
203
204memcheck:
205 $(MAKE) MEMCHECK='valgrind --tool=memcheck --leak-check=full --num-callers=12 --quiet $(VALGRIND_EXTRA_OPTS)' check
206
207ptrcheck:
208 $(MAKE) MEMCHECK='valgrind --tool=exp-ptrcheck --quiet $(VALGRIND_EXTRA_OPTS)' check
209
210# Non-Automake subdirectories to distribute
211DISTDIRS = images scenes scripts www PerlMagick
212dist-hook:
213 ( \
214 builddir=`pwd` ; \
215 cd $(srcdir) && \
216 ( \
217 for dir in $(DISTDIRS) ; do \
218 find $$dir -depth -print | egrep -v '(~$$)|(/CVS)|(/\.#)|(/\.deps)|(/\.svn)' \
219 | cpio -pdum $$builddir/$(distdir) 2> /dev/null ; \
220 done \
221 ) \
222 )
223
224#
225# Additional install rules
226#
227
228# Install HTML files
229pkgdocdir = $(DOCUMENTATION_PATH)
230DOCDIRS = images www www/api www/api/MagickCore www/api/MagickWand www/Magick++
231HTML_INSTALL_DATA_TARGETS = install-data-html
232install-data-html:
233 $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)
234 $(INSTALL_DATA) $(srcdir)/index.html $(DESTDIR)$(pkgdocdir)
235 @for dir in $(DOCDIRS) ; do \
236 $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$$dir && \
237 for file in $(srcdir)/$$dir/*.* ; do \
238 echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgdocdir)/$$dir" ; \
239 $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgdocdir)/$$dir ; \
240 done ; \
241 done
242
243# Uninstall HTML files
244HTML_UNINSTALL_DATA_TARGETS = uninstall-data-html
245uninstall-data-html:
246 rm -f $(DESTDIR)$(pkgdocdir)/index.html
247 for dir in $(DOCDIRS) ; do \
248 rm -f -r $(DESTDIR)$(pkgdocdir)/$$dir ; \
249 done
250
251# Ensure that version.h at $(srcdir)/magick/version.h is kept up to date.
252magick-version: magick/version.h
253 @if test -f "$(srcdir)/VisualMagick/installer/inc/version.isx.in" ; then \
254 ./config.status --file="$(srcdir)/../VisualMagick/installer/inc/version.isx" 2> /dev/null ; \
255 fi
256 @if test -n "$(VPATH)" ; then \
257 cmp magick/version.h $(srcdir)/magick/version.h > /dev/null ; \
258 if test $$? -eq 1 ; then \
259 echo "Updating $(srcdir)/magick/version.h ..."; \
260 cp magick/version.h $(srcdir)/magick/version.h ; \
261 fi ; \
262 fi ; \
263 touch magick-version
264
265${srcdir}/configure: ${srcdir}/version.sh
266
267# Automagically reconfigure libtool
268LIBTOOL_DEPS = @LIBTOOL_DEPS@
269libtool: $(LIBTOOL_DEPS)
270 $(SHELL) ./config.status --recheck
271
272# Format C API documentation
273html:
274 doxygen config/MagickCore.dox
275 doxygen config/MagickWand.dox
276
277#
278# Build Windows source Zip and 7Zip balls
279#
280if ZIP_DELEGATE
cristy15a88782010-01-31 23:24:49 +0000281DIST_WINDOWS_SRC_ZIP=$(PACKAGE_NAME)-$(PACKAGE_VERSION)$(PACKAGE_VERSION_ADDENDUM)-windows.zip
cristy3ed852e2009-09-05 21:47:34 +0000282else
283DIST_WINDOWS_SRC_ZIP=
284endif
285if P7ZIP_DELEGATE
cristy15a88782010-01-31 23:24:49 +0000286DIST_WINDOWS_SRC_7ZIP=$(PACKAGE_NAME)-$(PACKAGE_VERSION)$(PACKAGE_VERSION_ADDENDUM)-windows.7z
cristy3ed852e2009-09-05 21:47:34 +0000287else
288DIST_WINDOWS_SRC_7ZIP=
289endif
290$(DIST_WINDOWS_SRC_ZIP) $(DIST_WINDOWS_SRC_7ZIP) windows-dist:
cristy15a88782010-01-31 23:24:49 +0000291 if test -d $(PACKAGE_NAME)-$(PACKAGE_VERSION)$(PACKAGE_VERSION_ADDENDUM) ; then \
292 chmod -R u+w $(PACKAGE_NAME)-$(PACKAGE_VERSION)$(PACKAGE_VERSION_ADDENDUM) ; \
293 rm -rf $(PACKAGE_NAME)-$(PACKAGE_VERSION)$(PACKAGE_VERSION_ADDENDUM) ; \
cristy3ed852e2009-09-05 21:47:34 +0000294 fi
cristy15a88782010-01-31 23:24:49 +0000295 svn export https://subversion.imagemagick.org/subversion/ImageMagick-Windows/trunk $(PACKAGE_NAME)-$(PACKAGE_VERSION)$(PACKAGE_VERSION_ADDENDUM)
cristy3ed852e2009-09-05 21:47:34 +0000296if ZIP_DELEGATE
297 rm -f $(DIST_WINDOWS_SRC_ZIP)
cristy15a88782010-01-31 23:24:49 +0000298 $(ZIP) -r -9 -q $(DIST_WINDOWS_SRC_ZIP) $(PACKAGE_NAME)-$(PACKAGE_VERSION)$(PACKAGE_VERSION_ADDENDUM)
cristy3ed852e2009-09-05 21:47:34 +0000299endif # ZIP_DELEGATE
300if P7ZIP_DELEGATE
301 rm -f $(DIST_WINDOWS_SRC_7ZIP)
cristy15a88782010-01-31 23:24:49 +0000302 $(P7ZIP) a -t7z -mx=9 $(DIST_WINDOWS_SRC_7ZIP) $(PACKAGE_NAME)-$(PACKAGE_VERSION)$(PACKAGE_VERSION_ADDENDUM)
cristy3ed852e2009-09-05 21:47:34 +0000303 chmod 644 $(DIST_WINDOWS_SRC_7ZIP)
304endif # P7ZIP_DELEGATE
cristy15a88782010-01-31 23:24:49 +0000305 rm -rf $(PACKAGE_NAME)-$(PACKAGE_VERSION)$(PACKAGE_VERSION_ADDENDUM)
cristy3ed852e2009-09-05 21:47:34 +0000306
307#
308# RPM build support
309#
310if RPM_DELEGATE
311
cristybd107232010-02-02 01:09:44 +0000312DIST_ARCHIVE_SRPM=$(distdir).src.rpm
cristy3ed852e2009-09-05 21:47:34 +0000313.PHONY: srpm
314$(DIST_ARCHIVE_SRPM) srpm: dist-bzip2
315 rm -f $(DIST_ARCHIVE_SRPM)
316 $(RPM) --define="_sourcedir `pwd`" --define="_srcrpmdir `pwd`" --nodeps --bs ImageMagick.spec
317 @echo ==============================================================
318 @echo $(DIST_ARCHIVE_SRPM) is ready for distribution.
319 @echo ==============================================================
320
321RPMDIR=redhat
322RPMARCH=i386
323
324DIST_ARCHIVE_RPM= \
cristy15a88782010-01-31 23:24:49 +0000325 $(RPMDIR)/$(RPMARCH)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)$(PACKAGE_VERSION_ADDENDUM)-$(PACKAGE_RELEASE).$(RPMARCH).rpm \
326 $(RPMDIR)/$(RPMARCH)/$(PACKAGE_NAME)-c++-$(PACKAGE_VERSION)$(PACKAGE_VERSION_ADDENDUM)-$(PACKAGE_RELEASE).$(RPMARCH).rpm \
327 $(RPMDIR)/$(RPMARCH)/$(PACKAGE_NAME)-c++-devel-$(PACKAGE_VERSION)$(PACKAGE_VERSION_ADDENDUM)-$(PACKAGE_RELEASE).$(RPMARCH).rpm \
328 $(RPMDIR)/$(RPMARCH)/$(PACKAGE_NAME)-devel-$(PACKAGE_VERSION)$(PACKAGE_VERSION_ADDENDUM)-$(PACKAGE_RELEASE).$(RPMARCH).rpm \
329 $(RPMDIR)/$(RPMARCH)/$(PACKAGE_NAME)-perl-$(PACKAGE_VERSION)$(PACKAGE_VERSION_ADDENDUM)-$(PACKAGE_RELEASE).$(RPMARCH).rpm
cristy3ed852e2009-09-05 21:47:34 +0000330
331.PHONY: rpm
332rpm:
333 rm -rf $(RPMDIR)
334 mkdir $(RPMDIR)
335 mkdir $(RPMDIR)/BUILD
336 mkdir $(RPMDIR)/RPMS
337 $(MAKE) distcheck
338 $(RPM) --define="_sourcedir `pwd`" --define="_rpmdir `pwd`/$(RPMDIR)/RPMS" --define="_builddir `pwd`/$(RPMDIR)/BUILD" --nodeps -bb ImageMagick.spec
339 rm -rf rpmbuild
340 @echo ==============================================================
341 @echo $(DIST_ARCHIVE_RPM) is ready for distribution.
342 @echo ==============================================================
343
344else
345DIST_ARCHIVE_RPM=
346endif # RPM_DELEGATE
347
348#
349# Build a validated snapshot release and move to the snapshots directory.
350#
351snapshot: distcheck
352 $(MAKE) $(DIST_ARCHIVE_SRPM)
353 $(MAKE) $(DIST_WINDOWS_SRC_ZIP)
354 $(MAKE) $(DIST_WINDOWS_SRC_7ZIP)
355 mv $(DIST_ARCHIVES) $(DIST_WINDOWS_SRC_ZIP) $(DIST_WINDOWS_SRC_7ZIP) $(DIST_ARCHIVE_SRPM) /var/ftp/pub/ImageMagick/beta/