1# Simple makefile for building and testing libgd under MSYS/MinGW on 2# Windows 3 4 5# The version 6LIBVER=3.0.1 7 8# Misc. config flags. 9CDEFS=-DHAVE_ICONV -DHAVE_ICONV_H \ 10-DHAVE_ICONV_T_DEF -DHAVE_INTTYPES_H \ 11-DHAVE_STDINT_H -DHAVE_VISIBILITY -DICONV_CONST \ 12-DENABLE_GD_FORMATS=1 13 14# GnuWin32 libs should all be installed in one place. 15GNUDIR=/c/tools/GnuWin32 16GNUINC=-I$(GNUDIR)/include 17GNULIB=-L$(GNUDIR)/lib 18GNUDLL=$(GNUDIR)/bin/ 19 20# Various optional components. Comment-out the ones you don't have 21# and edit the paths and options as needed if you do. The default 22# assumes GnuWin32 packages installed in /c/Program Files/GnuWin32. 23JPEG_D=-DHAVE_LIBJPEG 24JPEG_L=-ljpeg 25JPEG_I=$(GNUINC) 26JPEG_LIBDIR=$(GNULIB) 27JPEG_DLLDIR=$(GNUDLL) 28 29PNG_D=-DHAVE_LIBPNG 30PNG_L=-lpng 31PNG_I= #$(GNUINC) 32PNG_LIBDIR= #$(GNULIB) 33PNG_DLLDIR= #$(GNUDLL) 34 35TIFF_D=-DHAVE_LIBTIFF 36TIFF_L=-ltiff 37TIFF_I= #$(GNUINC) 38TIFF_LIBDIR= #$(GNULIB) 39TIFF_DLLDIR= #$(GNUDLL) 40 41LIBZ_D=-DHAVE_LIBZ 42LIBZ_L=-lz 43LIBZ_I= #$(GNUINC) 44LIBZ_LIBDIR= #$(GNULIB) 45LIBZ_DLLDIR= #$(GNUDLL) 46 47# LIBXPM_D=-DHAVE_LIBXPM 48# LIBXPM_L=-lxpm 49# LIBXPM_I= #$(GNUINC) 50# LIBXPM_LIBDIR= #$(GNULIB) 51 52FREETYPE_D=-DHAVE_LIBFREETYPE -DHAVE_FT2BUILD_H 53FREETYPE_L=-lfreetype 54FREETYPE_I=$(GNUINC)/freetype2/ 55FREETYPE_LIBDIR= #$(GNULIB) 56FREETYPE_DLLDIR= #$(GNUDLL) 57 58# FONTCONFIG_D=-DHAVE_LIBFONTCONFIG 59# FONTCONFIG_L= 60# FONTCONFIG_I= 61# FONTCONFIG_LIBDIR= 62 63ALL_D=$(FREETYPE_D) $(JPEG_D) $(PNG_D) $(TIFF_D) $(LIBZ_D) $(LIBXPM_D) 64ALL_L=$(FREETYPE_L) $(JPEG_L) $(PNG_L) $(TIFF_L) $(LIBZ_L) $(LIBXPM_L) 65ALL_I=$(FREETYPE_I) $(JPEG_I) $(PNG_I) $(TIFF_I) $(LIBZ_I) $(LIBXPM_I) 66ALL_LIBDIR=$(FREETYPE_LIBDIR) $(JPEG_LIBDIR) $(PNG_LIBDIR) $(TIFF_LIBDIR) \ 67 $(LIBZ_LIBDIR) $(LIBXPM_LIBDIR) 68ALL_DLLDIR=$(FREETYPE_DLLDIR) $(JPEG_DLLDIR) $(PNG_DLLDIR) $(TIFF_DLLDIR) \ 69 $(LIBZ_DLLDIR) $(LIBXPM_DLLDIR) 70 71# We need libiconv for internationalization. We default to static 72# linking because that reduces the number of dependencies. However, 73# libiconv is released under the GNU GPL which may impose extra 74# restrictions on redistribution. 75LIBICONV=/c/MinGW/lib/libiconv.a 76#LIBICONV=-liconv 77 78 79DEFS=$(CDEFS) $(ALL_D) 80INCLUDES=$(ALL_I) 81 82CC=gcc 83CFLAGS=-g -O2 -I. -std=gnu99 -fvisibility=hidden -static-libgcc \ 84 -D_WIN32 -DBGDWIN32 $(DEFS) $(INCLUDES) 85 86LD=gcc 87LDFLAGS=-g -O2 -fvisibility=hidden -static-libgcc $(ALL_LIBDIR) 88LIBS=$(ALL_L) $(LIBICONV) 89 90ZIP=zip -j9 91DIST=libgd-win.zip 92 93# Get this list from c files in libgd_la_SOURCES in Makefile.mk 94SRC=gd.c gd_color.c gd_color_map.c gd_transform.c gdfx.c \ 95gd_security.c gd_gd.c gd_gd2.c gd_io.c gd_io_dp.c gd_gif_in.c \ 96gd_gif_out.c gd_io_file.c gd_io_ss.c gd_jpeg.c gd_png.c gd_ss.c \ 97gd_topal.c gd_wbmp.c gdcache.c gdfontg.c gdfontl.c gdfontmb.c \ 98gdfonts.c gdfontt.c gdft.c gdhelpers.c gdkanji.c gdtables.c gdxpm.c \ 99wbmp.c gd_filter.c gd_nnquant.c gd_rotate.c gd_matrix.c \ 100gd_interpolation.c gd_crop.c gd_webp.c gd_tiff.c gd_tga.c \ 101gd_bmp.c gd_xbm.c gd_color_match.c gd_version.c gd_filename.c 102 103OBJ=$(SRC:.c=.o) 104 105TARGETBASE=libgd 106TARGET=$(TARGETBASE).dll 107TARGET_A=$(TARGETBASE).a 108 109all: 110 (cd ../../src; make -f ../windows/msys/Makefile $(TARGET)) 111 112# BUG: this sucks in all the DLLs in the lib installation directory, 113# including those you may not need. 114dist: all 115 (cd ../..; $(ZIP) $(DIST) src/*.dll src/*.a $$(for d in $(ALL_DLLDIR); do echo $$d/*.dll; done | sort -u) ) 116 117 118clean: 119 -rm ../../$(DIST) 120 (cd ../../src; rm -f *.dll *.a $(OBJ) deps.mk; true) 121 122check: all 123 bash run_tests.sh "$(GNUDIR)/bin" "$(INCLUDES)" 124 125deps.mk: 126 [ -f gd.h ] # Sanity check: we're in src/, right? 127 gcc -MM $(DEFS) $(INCLUDES) $(SRC) > deps.mk 128 129$(TARGET): $(OBJ) 130 gcc -shared -o $(TARGET) $(LDFLAGS) -Wl,--out-implib,$(TARGET_A) \ 131 $(OBJ) $(LIBS) 132 133include deps.mk 134