#  Copyright 1999-2016 ImageMagick Studio LLC, a non-profit organization
#  dedicated to making software imaging solutions freely available.
#
#  You may not use this file except in compliance with the License.  You may
#  obtain a copy of the License at
#
#    http://www.imagemagick.org/script/license.php
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.
#
#  Makefile for building MagickWand API.
#

MagickWandincdir = $(INCLUDE_PATH)/MagickWand

MAGICKWAND_CPPFLAGS = $(AM_CPPFLAGS)

MAGICKWAND_SOURCES = \
	MagickWand/MagickWand.h \
	MagickWand/animate.c \
	MagickWand/animate.h \
	MagickWand/compare.c \
	MagickWand/compare.h \
	MagickWand/composite.c \
	MagickWand/composite.h \
	MagickWand/conjure.c \
	MagickWand/conjure.h \
	MagickWand/convert.c \
	MagickWand/convert.h \
	MagickWand/deprecate.h \
	MagickWand/deprecate.c \
	MagickWand/display.c \
	MagickWand/display.h \
	MagickWand/drawing-wand.c \
	MagickWand/drawing-wand.h \
	MagickWand/identify.c \
	MagickWand/identify.h \
	MagickWand/import.c \
	MagickWand/import.h \
	MagickWand/magick-cli.c \
	MagickWand/magick-cli.h \
	MagickWand/magick-image.c \
	MagickWand/magick-image.h \
	MagickWand/magick-property.c \
	MagickWand/magick-property.h \
	MagickWand/magick-wand.c \
	MagickWand/magick-wand-private.h \
	MagickWand/method-attribute.h \
	MagickWand/mogrify.c \
	MagickWand/mogrify.h \
	MagickWand/mogrify-private.h \
	MagickWand/montage.c \
	MagickWand/montage.h \
	MagickWand/operation.c \
	MagickWand/operation.h \
	MagickWand/operation-private.h \
	MagickWand/pixel-iterator.c \
	MagickWand/pixel-iterator.h \
	MagickWand/pixel-wand.c \
	MagickWand/pixel-wand.h \
	MagickWand/pixel-wand-private.h \
	MagickWand/script-token.c \
	MagickWand/script-token.h \
	MagickWand/stream.c \
	MagickWand/stream.h \
	MagickWand/studio.h \
	MagickWand/wand.c \
	MagickWand/wand.h \
	MagickWand/wandcli.c \
	MagickWand/wandcli.h \
	MagickWand/wandcli-private.h \
	MagickWand/wand-view.c \
	MagickWand/wand-view.h 

MAGICKWAND_INCLUDE_HDRS = \
	MagickWand/MagickWand.h \
	MagickWand/animate.h \
	MagickWand/compare.h \
	MagickWand/composite.h \
	MagickWand/conjure.h \
	MagickWand/convert.h \
	MagickWand/deprecate.h \
	MagickWand/display.h \
	MagickWand/drawing-wand.h \
	MagickWand/identify.h \
	MagickWand/import.h \
	MagickWand/magick-cli.h \
	MagickWand/magick-image.h \
	MagickWand/magick-property.h \
	MagickWand/method-attribute.h \
	MagickWand/mogrify.h \
	MagickWand/montage.h \
	MagickWand/operation.h \
	MagickWand/pixel-iterator.h \
	MagickWand/pixel-wand.h \
	MagickWand/stream.h \
	MagickWand/wandcli.h \
	MagickWand/wand-view.h

MAGICKWAND_NOINST_HDRS = \
	MagickWand/mogrify-private.h \
	MagickWand/magick-wand-private.h \
	MagickWand/operation-private.h \
	MagickWand/pixel-wand-private.h \
	MagickWand/script-token.h \
	MagickWand/studio.h \
	MagickWand/wand.h \
	MagickWand/wandcli-private.h

# Headers which are installed
MagickWandinc_HEADERS = \
	$(MAGICKWAND_INCLUDE_HDRS)

MAGICKWAND_BIN_SCRPTS = \
	MagickWand/MagickWand-config

MAGICKWAND_PKGCONFIG = \
	MagickWand/MagickWand.pc \
	MagickWand/MagickWand-@MAGICK_MAJOR_VERSION@.@MAGICK_ABI_SUFFIX@.pc

MAGICKWAND_MANS = \
	MagickWand/MagickWand-config.1

MAGICKWAND_BUILT_SRCS = 

MAGICKWAND_LIBS = MagickWand/libMagickWand-@MAGICK_MAJOR_VERSION@.@MAGICK_ABI_SUFFIX@.la

MagickWand_libMagickWand_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la_SOURCES = $(MAGICKWAND_SOURCES)
MagickWand_libMagickWand_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la_CPPFLAGS = $(MAGICKWAND_CPPFLAGS) $(LIBRARY_EXTRA_CPPFLAGS)

if HAVE_LD_VERSION_SCRIPT
MagickWand_libMagickWand_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la_LDFLAGS_VERSION =  -Wl,--version-script=$(top_srcdir)/MagickWand/libMagickWand.map
else
MagickWand_libMagickWand_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la_LDFLAGS_VERSION = -export-symbols-regex ".*"
endif

MagickWand_libMagickWand_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la_LDFLAGS = -no-undefined \
  $(MagickWand_libMagickWand_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la_LDFLAGS_VERSION) $(MAGICK_LT_RELEASE_OPTS) \
	$(MAGICK_LIBRARY_CURRENT):$(MAGICK_LIBRARY_REVISION):$(MAGICK_LIBRARY_AGE)
MagickWand_libMagickWand_@MAGICK_MAJOR_VERSION@_@MAGICK_ABI_SUFFIX@_la_LIBADD = $(MAGICKCORE_LIBS) $(X11_LIBS) $(GOMP_LIBS) $(MATH_LIBS)

MAGICKWAND_EXTRA_DIST = \
	MagickWand/ChangeLog \
	MagickWand/libMagickWand.map \
	MagickWand/MagickWand-config.1 \
	MagickWand/MagickWand.pc.in

MAGICKWAND_CLEANFILES =
