# makefile for Haru Free PDFLibrary II (Libharu)
# Copyright (C) 1999-2006 Takeshi Kanno
# For conditions of distribution and use, see copyright notice in hpdf.h
#
# To compile, type:
#   ./configure; make
# If you wish to build zlib as a shared library, use: ./configure -s
# To install /usr/local/lib/libhpdf.* and /usr/local/include/hpdf.h, type:
#    make install
# To install in $HOME instead of /usr/local, use:
#    make install prefix=$HOME

CC=gcc
PREFIX=/usr/local

LIBNAME=libhpdf.a
SONAME=libhpdf.dll
SOVER1=
SOVER2=
LIBTARGET=libhpdf.dll
CFLAGS=-Iinclude -O2 -Wall -DHPDF_DLL_MAKE_CDECL 
CFLAGS_DEMO=-Iinclude -O2 -Wall -DHPDF_DLL_CDECL
CFLAGS_EXE=-o 
LDFLAGS=-L. -lpng -lz 
LDFLAGS_DEMO1=
LDFLAGS_DEMO2=-L. -lhpdf 
DEFNAME=win32/mingw/libhpdf_cdecl.def
RESNAME=win32/mingw/libhpdf_cygwin.res

OBJS = \
	src/hpdf_utils.o \
	src/hpdf_error.o \
	src/hpdf_mmgr.o \
	src/hpdf_list.o \
	src/hpdf_streams.o \
	src/hpdf_objects.o \
	src/hpdf_null.o \
	src/hpdf_boolean.o \
	src/hpdf_number.o \
	src/hpdf_real.o \
	src/hpdf_name.o \
	src/hpdf_array.o \
	src/hpdf_dict.o \
	src/hpdf_xref.o \
	src/hpdf_encoder.o \
	src/hpdf_string.o \
	src/hpdf_binary.o \
	src/hpdf_encrypt.o \
	src/hpdf_encryptdict.o \
	src/hpdf_fontdef.o \
	src/hpdf_fontdef_tt.o \
	src/hpdf_fontdef_type1.o \
	src/hpdf_fontdef_base14.o \
	src/hpdf_fontdef_cid.o \
	src/hpdf_font.o \
	src/hpdf_font_type1.o \
	src/hpdf_font_tt.o \
	src/hpdf_font_cid.o \
	src/hpdf_doc.o \
	src/hpdf_info.o \
	src/hpdf_catalog.o \
	src/hpdf_page_label.o\
	src/hpdf_gstate.o \
	src/hpdf_pages.o \
	src/hpdf_page_operator.o \
	src/hpdf_destination.o \
	src/hpdf_annotation.o \
	src/hpdf_outline.o \
	src/hpdf_image.o \
	src/hpdf_encoder_jp.o \
	src/hpdf_encoder_kr.o \
	src/hpdf_encoder_cns.o \
	src/hpdf_encoder_cnt.o \
	src/hpdf_fontdef_jp.o \
	src/hpdf_fontdef_kr.o \
	src/hpdf_fontdef_cns.o \
	src/hpdf_fontdef_cnt.o \
	src/hpdf_image_png.o \
	src/hpdf_image_ccitt.o \
	src/hpdf_doc_png.o \
	src/hpdf_ext_gstate.o \
	src/hpdf_3dmeasure.o \
	src/hpdf_namedict.o \
	src/hpdf_exdata.o \
	src/hpdf_u3d.o 

PROGRAMS = \
	demo/encoding_list \
	demo/font_demo \
	demo/text_demo \
	demo/text_demo2 \
	demo/image_demo \
	demo/jpeg_demo \
	demo/jpfont_demo \
	demo/line_demo \
	demo/link_annotation \
	demo/outline_demo \
	demo/png_demo \
	demo/text_annotation \
	demo/ttfont_demo \
	demo/character_map \
	demo/grid_sheet \
	demo/arc_demo \
	demo/raw_image_demo \
	demo/encryption \
	demo/permission \
	demo/slide_show_demo \
	demo/ext_gstate_demo \

.SUFFIXES:  .c .o

all: $(LIBTARGET)

$(LIBNAME): $(OBJS)
	ar rc $(LIBNAME) $(OBJS)
	ranlib $(LIBNAME)

$(SONAME): $(OBJS)
	$(CC) -Wall -shared -o $(SONAME) $(OBJS) $(DEFNAME) $(RESNAME) -Wl,--kill-at,--enable-stdcall-fixup $(LDFLAGS)
	dlltool -k -d $(DEFNAME) -l $(LIBNAME)
	strip $(SONAME)
	cp -p $(SONAME) demo
	

demo: $(LIBTARGET) $(PROGRAMS)

clean:
	rm -f src/*.o src/*.obj ./*.a ./*.so* ./*.lib demo/*.exe

install: all installfiles

installfiles:
	if [ ! -d $(PREFIX) ]; then mkdir -p $(PREFIX); fi
	if [ ! -d $(PREFIX)/include ]; then mkdir -p $(PREFIX)/include; fi
	if [ ! -d $(PREFIX)/lib ]; then mkdir -p $(PREFIX)/lib; fi
	cp include/hpdf.h include/hpdf_consts.h include/hpdf_types.h $(PREFIX)/include/; chmod 644 $(PREFIX)/include/hpdf*.h
	cp -p $(SONAME)$(SOVER1)$(SOVER2) $(PREFIX)/lib/
	cp -p $(LIBNAME) $(PREFIX)/lib/
	

.c.o:
	$(CC) -o $@ $(CFLAGS) -c $*.c

demo/encoding_list : demo/encoding_list.c $(LIBTARGET)
	$(CC) $(CFLAGS_EXE)$@ $(CFLAGS_DEMO) $(LDFLAGS_DEMO1) demo/encoding_list.c  $(LDFLAGS_DEMO2)
	cd demo/ ; ./encoding_list 

demo/font_demo : demo/font_demo.c $(LIBTARGET)
	$(CC) $(CFLAGS_EXE)$@ $(CFLAGS_DEMO) $(LDFLAGS_DEMO1) demo/font_demo.c $(LDFLAGS_DEMO2)
	cd demo/ ; ./font_demo 

demo/text_demo : demo/text_demo.c demo/grid_sheet.c $(LIBTARGET)
	$(CC) $(CFLAGS_EXE)$@ $(CFLAGS_DEMO) $(LDFLAGS_DEMO1) demo/text_demo.c demo/grid_sheet.c $(LDFLAGS_DEMO2)
	cd demo/ ; ./text_demo 

demo/text_demo2 : demo/text_demo2.c demo/grid_sheet.c $(LIBTARGET)
	$(CC) $(CFLAGS_EXE)$@ $(CFLAGS_DEMO) $(LDFLAGS_DEMO1) demo/text_demo2.c demo/grid_sheet.c $(LDFLAGS_DEMO2)
	cd demo/ ; ./text_demo2 

demo/image_demo : demo/image_demo.c $(LIBTARGET)
	$(CC) $(CFLAGS_EXE)$@ $(CFLAGS_DEMO) $(LDFLAGS_DEMO1) demo/image_demo.c $(LDFLAGS_DEMO2)
	cd demo/ ; ./image_demo 

demo/jpeg_demo : demo/jpeg_demo.c $(LIBTARGET)
	$(CC) $(CFLAGS_EXE)$@ $(CFLAGS_DEMO) $(LDFLAGS_DEMO1) demo/jpeg_demo.c $(LDFLAGS_DEMO2)
	cd demo/ ; ./jpeg_demo 

demo/jpfont_demo : demo/jpfont_demo.c $(LIBTARGET)
	$(CC) $(CFLAGS_EXE)$@ $(CFLAGS_DEMO) $(LDFLAGS_DEMO1) demo/jpfont_demo.c $(LDFLAGS_DEMO2)
	cd demo/ ; ./jpfont_demo 

demo/line_demo : demo/line_demo.c $(LIBTARGET)
	$(CC) $(CFLAGS_EXE)$@ $(CFLAGS_DEMO) $(LDFLAGS_DEMO1) demo/line_demo.c $(LDFLAGS_DEMO2)
	cd demo/ ; ./line_demo 

demo/link_annotation : demo/link_annotation.c $(LIBTARGET)
	$(CC) $(CFLAGS_EXE)$@ $(CFLAGS_DEMO) $(LDFLAGS_DEMO1) demo/link_annotation.c $(LDFLAGS_DEMO2)
	cd demo/ ; ./link_annotation 

demo/outline_demo : demo/outline_demo.c $(LIBTARGET)
	$(CC) $(CFLAGS_EXE)$@ $(CFLAGS_DEMO) $(LDFLAGS_DEMO1) demo/outline_demo.c $(LDFLAGS_DEMO2)
	cd demo/ ; ./outline_demo 

demo/png_demo : demo/png_demo.c $(LIBTARGET)
	$(CC) $(CFLAGS_EXE)$@ $(CFLAGS_DEMO) $(LDFLAGS_DEMO1) demo/png_demo.c $(LDFLAGS_DEMO2)
	cd demo/ ; ./png_demo 

demo/text_annotation : demo/text_annotation.c $(LIBTARGET)
	$(CC) $(CFLAGS_EXE)$@ $(CFLAGS_DEMO) $(LDFLAGS_DEMO1) demo/text_annotation.c $(LDFLAGS_DEMO2)
	cd demo/ ; ./text_annotation 

demo/encryption : demo/encryption.c $(LIBTARGET)
	$(CC) $(CFLAGS_EXE)$@ $(CFLAGS_DEMO) $(LDFLAGS_DEMO1) demo/encryption.c $(LDFLAGS_DEMO2)
	cd demo/ ; ./encryption 

demo/permission : demo/permission.c $(LIBTARGET)
	$(CC) $(CFLAGS_EXE)$@ $(CFLAGS_DEMO) $(LDFLAGS_DEMO1) demo/permission.c $(LDFLAGS_DEMO2)
	cd demo/ ; ./permission 

demo/ttfont_demo : demo/ttfont_demo.c $(LIBTARGET)
	$(CC) $(CFLAGS_EXE)$@ $(CFLAGS_DEMO) $(LDFLAGS_DEMO1) demo/ttfont_demo.c $(LDFLAGS_DEMO2)
	cd demo/ ; ./ttfont_demo ttfont/PenguinAttack.ttf -E 

demo/character_map : demo/character_map.c $(LIBTARGET)
	$(CC) $(CFLAGS_EXE)$@ $(CFLAGS_DEMO) $(LDFLAGS_DEMO1) demo/character_map.c $(LDFLAGS_DEMO2)

demo/raw_image_demo : demo/raw_image_demo.c $(LIBTARGET)
	$(CC) $(CFLAGS_EXE)$@ $(CFLAGS_DEMO) $(LDFLAGS_DEMO1) demo/grid_sheet.c demo/raw_image_demo.c $(LDFLAGS_DEMO2)
	cd demo/ ; ./raw_image_demo 

demo/arc_demo : demo/arc_demo.c demo/grid_sheet.c $(LIBTARGET)
	$(CC) $(CFLAGS_EXE)$@ $(CFLAGS_DEMO) $(LDFLAGS_DEMO1) demo/grid_sheet.c demo/arc_demo.c $(LDFLAGS_DEMO2) 
	cd demo/ ; ./arc_demo 

demo/grid_sheet : demo/grid_sheet.c $(LIBTARGET)
	$(CC) $(CFLAGS_EXE)$@ $(CFLAGS_DEMO) -DSTAND_ALONE $(LDFLAGS_DEMO1) demo/grid_sheet.c $(LDFLAGS_DEMO2) 
	cd demo/ ; ./grid_sheet 

demo/slide_show_demo : demo/slide_show_demo.c $(LIBTARGET)
	$(CC) $(CFLAGS_EXE)$@ $(CFLAGS_DEMO) $(LDFLAGS_DEMO1) demo/slide_show_demo.c $(LDFLAGS_DEMO2) 
	cd demo/ ; ./slide_show_demo 

demo/ext_gstate_demo : demo/ext_gstate_demo.c $(LIBTARGET)
	$(CC) $(CFLAGS_EXE)$@ $(CFLAGS_DEMO) $(LDFLAGS_DEMO1) demo/ext_gstate_demo.c $(LDFLAGS_DEMO2) 
	cd demo/ ; ./ext_gstate_demo