summaryrefslogtreecommitdiff
path: root/windows
diff options
context:
space:
mode:
authorPierre Joye <pierre.php@gmail.com>2016-07-11 01:27:56 +0700
committerPierre Joye <pierre.php@gmail.com>2016-07-11 01:27:56 +0700
commitf3d82b237a9c9da5f940b1bbab6889b7f2265be5 (patch)
treea44cf4571e872c43eabe2a57b3641f9edfd9b0d9 /windows
parentd5ed6e9254576f840d3c1c8aa312559019126ba6 (diff)
downloadlibgd-f3d82b237a9c9da5f940b1bbab6889b7f2265be5.tar.gz
#249 first set of fixes, now builds with nmake and ../deps, more to fix
Diffstat (limited to 'windows')
-rw-r--r--windows/Makefile.vc143
1 files changed, 79 insertions, 64 deletions
diff --git a/windows/Makefile.vc b/windows/Makefile.vc
index c6562a1..4d136b5 100644
--- a/windows/Makefile.vc
+++ b/windows/Makefile.vc
@@ -1,4 +1,6 @@
-# To build locally get a copy of the dependancies (https://github.com/imazen/gd-win-dependencies)
+# To build locally get a copy of the dependancies (http://windows.php.net/downloads/php-sdk/deps/)
+# These are the dependencies used by PHP and largely used and tested. These binaries are built using
+# the sources available at https://github.com/winlibs
# Then run 'nmake /f windows\Makefile.vc' in MS dev console
# To build tests as well 'nmake /f windows\Makefile.vc all'
# To build tests and execute them 'nmake /f windows\Makefile.vc check'
@@ -7,6 +9,17 @@ CC=cl
LD=link
LB=lib
+!IFNDEF WITH_DEVEL
+WITH_DEVEL=..\deps
+!ENDIF
+
+!IFNDEF WITH_BUILD
+WITH_BUILD=..\gdbuild
+!ENDIF
+
+LIBGD_SRC_DIR=src
+LIBGD_OBJ_DIR=$(WITH_BUILD)
+LIBGD_BIN_DIR=$(WITH_BUILD)\bin
!IFNDEF PLATFORM
PLATFORM=x86
@@ -17,26 +30,67 @@ PLATFORM=x64
!ENDIF
PLATFORM=$(PLATFORM:X=x)
+BUILD_DIR=$(WITH_BUILD)
+
+!MESSAGE library source: $(LIBGD_SRC_DIR)
+
-BUILD_DIR=build_msvc12_$(PLATFORM)
GD_DLL=libgd.dll
GD_LIB=libgd_a.lib
-SDR=$(BUILD_DIR)\obj^\
+SDR=$(BUILD_DIR)^\
TDR=$(BUILD_DIR)\tests^\
TARGETDLL=$(BUILD_DIR)\$(GD_DLL)
TARGETLIB=$(BUILD_DIR)\$(GD_LIB)
-OBJECTS=$(SDR)gd.obj $(SDR)gd_color.obj $(SDR)gd_color_map.obj $(SDR)gd_transform.obj $(SDR)gdfx.obj $(SDR)gd_security.obj $(SDR)gd_gd.obj $(SDR)gd_gd2.obj $(SDR)gd_io.obj $(SDR)gd_io_dp.obj $(SDR)gd_gif_in.obj $(SDR)gd_gif_out.obj $(SDR)gd_io_file.obj $(SDR)gd_io_ss.obj $(SDR)gd_jpeg.obj $(SDR)gd_png.obj $(SDR)gd_ss.obj $(SDR)gd_topal.obj $(SDR)gd_wbmp.obj $(SDR)gdcache.obj $(SDR)gdfontg.obj $(SDR)gdfontl.obj $(SDR)gdfontmb.obj $(SDR)gdfonts.obj $(SDR)gdfontt.obj $(SDR)gdft.obj $(SDR)gdhelpers.obj $(SDR)gdkanji.obj $(SDR)gdtables.obj $(SDR)gdxpm.obj $(SDR)wbmp.obj $(SDR)gd_filter.obj $(SDR)gd_nnquant.obj $(SDR)gd_rotate.obj $(SDR)gd_matrix.obj $(SDR)gd_interpolation.obj $(SDR)gd_crop.obj $(SDR)webpimg.obj $(SDR)gd_webp.obj $(SDR)gd_tiff.obj $(SDR)gd_tga.obj $(SDR)gd_bmp.obj $(SDR)gd_xbm.obj $(SDR)gd_color_match.obj $(SDR)gd_version.obj $(SDR)gd_filename.obj
+LIB_OBJS= \
+ $(LIBGD_OBJ_DIR)\gd.obj \
+ $(LIBGD_OBJ_DIR)\gdcache.obj \
+ $(LIBGD_OBJ_DIR)\gd_color.obj \
+ $(LIBGD_OBJ_DIR)\gd_color_match.obj \
+ $(LIBGD_OBJ_DIR)\gdfontg.obj \
+ $(LIBGD_OBJ_DIR)\gdfontl.obj \
+ $(LIBGD_OBJ_DIR)\gdfontmb.obj \
+ $(LIBGD_OBJ_DIR)\gdfonts.obj \
+ $(LIBGD_OBJ_DIR)\gdfontt.obj \
+ $(LIBGD_OBJ_DIR)\gdft.obj \
+ $(LIBGD_OBJ_DIR)\gdfx.obj \
+ $(LIBGD_OBJ_DIR)\gd_gd2.obj \
+ $(LIBGD_OBJ_DIR)\gd_gd.obj \
+ $(LIBGD_OBJ_DIR)\gd_gif_in.obj \
+ $(LIBGD_OBJ_DIR)\gd_gif_out.obj \
+ $(LIBGD_OBJ_DIR)\gdhelpers.obj \
+ $(LIBGD_OBJ_DIR)\gd_io.obj \
+ $(LIBGD_OBJ_DIR)\gd_io_dp.obj \
+ $(LIBGD_OBJ_DIR)\gd_io_file.obj \
+ $(LIBGD_OBJ_DIR)\gd_io_ss.obj \
+ $(LIBGD_OBJ_DIR)\gd_jpeg.obj \
+ $(LIBGD_OBJ_DIR)\gd_security.obj \
+ $(LIBGD_OBJ_DIR)\gdkanji.obj \
+ $(LIBGD_OBJ_DIR)\gd_nnquant.obj \
+ $(LIBGD_OBJ_DIR)\gd_png.obj \
+ $(LIBGD_OBJ_DIR)\gd_ss.obj \
+ $(LIBGD_OBJ_DIR)\gdtables.obj \
+ $(LIBGD_OBJ_DIR)\gd_topal.obj \
+ $(LIBGD_OBJ_DIR)\gd_transform.obj \
+ $(LIBGD_OBJ_DIR)\gd_wbmp.obj \
+ $(LIBGD_OBJ_DIR)\gdxpm.obj \
+ $(LIBGD_OBJ_DIR)\wbmp.obj \
+ $(LIBGD_OBJ_DIR)\gd_interpolation.obj \
+ $(LIBGD_OBJ_DIR)\gd_matrix.obj \
+ $(LIBGD_OBJ_DIR)\gd_rotate.obj
+
+!MESSAGE library objects: $(LIBGD_OBJ_DIR)
+
TESTS=bmp\bmp_im2im bmp\bmp_null freetype\bug00132 gd\gd_im2im gd\gd_null gd\gd_num_colors gd\gd_versiontest gd2\gd2_empty_file gd2\gd2_im2im gd2\gd2_null gd2\gd2_read gdimagearc\bug00079 gdimagecolorclosest\gdimagecolorclosest gdimagecolordeallocate\gdimagecolordeallocate gdimagecolorexact\gdimagecolorexact gdimagecolorreplace\gdimagecolorreplace gdimagecolorresolve\gdimagecolorresolve gdimagecolortransparent\gdimagecolortransparent gdimagecopy\bug00007 gdimagecopy\bug00081 gdimagecopyrotated\bug00020 gdimagefile\gdnametest gdimagefill\bug00002_1 gdimagefill\bug00002_2 gdimagefill\bug00002_3 gdimagefill\bug00002_4 gdimagefilledellipse\bug00010 gdimagefilledellipse\bug00191 gdimagefilledpolygon\bug00100 gdimagefilledpolygon\gdimagefilledpolygon0 gdimagefilledpolygon\gdimagefilledpolygon1 gdimagefilledpolygon\gdimagefilledpolygon2 gdimagefilledpolygon\gdimagefilledpolygon3 gdimagefilledrectangle\bug00004 gdimagefilledrectangle\bug00078 gdimagefilledrectangle\bug00106_gdimagefilledrectangle gdimagefilltoborder\bug00037 gdimagefilter\gdCopyBlurred gdimageline\bug00072 gdimageline\bug00077 gdimageline\bug00111 gdimageline\gdImageAALine_thickness gdimageline\gdimageline_aa gdimageline\gdimageline_aa_outofrange gdimageline\gdimageline_bug5 gdimageopenpolygon\gdimageopenpolygon0 gdimageopenpolygon\gdimageopenpolygon1 gdimageopenpolygon\gdimageopenpolygon2 gdimageopenpolygon\gdimageopenpolygon3 gdimagepixelate\gdimagepixelate gdimagepolygon\gdimagepolygon0 gdimagepolygon\gdimagepolygon1 gdimagepolygon\gdimagepolygon2 gdimagepolygon\gdimagepolygon3 gdimagerectangle\bug00003 gdimagerectangle\bug00106_gdimagerectangle gdimagerotate\bug00067 gdimagerotate\php_bug_64898 gdimagescatterex\bug00208_1 gdimagescatterex\bug00208_2 gdimagesetpixel\bug00186 gdimagesetpixel\gdeffectmultiply gdimagesetpixel\gdeffectoverlay gdimagestringft\gdimagestringft_bbox gdimagestringftex\gdimagestringftex_returnfontpathname gdinterpolatedscale\gdModesAndPalettes gdinterpolatedscale\gdTrivialResize gdnewfilectx\gdnewfilectx_null gdtiled\bug00032 gif\bug00005 gif\bug00005_2 gif\bug00006 gif\bug00060 gif\bug00066 gif\bug00181 gif\bug00227 gif\gif_im2im gif\gif_null jpeg\jpeg_empty_file jpeg\jpeg_im2im jpeg\jpeg_null jpeg\jpeg_read jpeg\jpeg_resolution png\bug00011 png\bug00033 png\bug00086 png\bug00088 png\bug00193 png\png_im2im png\png_null png\png_resolution tga\tga_null
#tiff\tiff_im2im tiff\tiff_null wbmp\wbmp_im2im wbmp\wbmp_null xpm\bug00166 xpm\bug00185 xpm\color_name
LIBS=kernel32.lib ole32.lib user32.lib advapi32.lib shell32.lib ws2_32.lib Dnsapi.lib Gdi32.Lib
-LIBS_GD=turbojpeg-static.lib freetype_a.lib libpng_a.lib libiconv_a.lib zlib_a.lib
+LIBS_GD=libjpeg_a.lib freetype_a.lib libpng_a.lib libiconv_a.lib zlib_a.lib
-INCLUDES=/Isrc /Igd-win-dependencies\$(PLATFORM)\include -Igd-win-dependencies\$(PLATFORM)\include\libjpeg-turbo -Igd-win-dependencies\$(PLATFORM)\include\libpng15 -Igd-win-dependencies\$(PLATFORM)\include\freetype /Itests /Itests\gdtest
+INCLUDES=/Isrc /I$(WITH_DEVEL)\include -I$(WITH_DEVEL)\include\libpng16 -I$(WITH_DEVEL)\include\freetype /Itests /Itests\gdtest -I$(WITH_DEVEL)\include\
-LDFLAGS=/nologo /nodefaultlib:libcmt /libpath:gd-win-dependencies\$(PLATFORM)\lib /MACHINE:$(PLATFORM)
+LDFLAGS=/nologo /nodefaultlib:libcmt /libpath:$(WITH_DEVEL)\lib /MACHINE:$(PLATFORM)
CFLAGS=/nologo /O2 /Qvec-report:1 /MD /TC\
/DWIN32=1\
@@ -53,54 +107,16 @@ CFLAGS=/nologo /O2 /Qvec-report:1 /MD /TC\
/DHAVE_LIBZ=1\
$(INCLUDES)
-# /DHAVE_LIBXPM
-
-# These flags are not present in this fork of libgd (they may be used in php's):
-# /DHAVE_GD_WBMP
-# /DHAVE_GD_GIF_READ=1\
-# /DHAVE_GD_GIF_CREATE=1\
-# /DHAVE_GD_GD2=1\
-# /DHAVE_GDIMAGECOLORRESOLVE=1\
-# /DHAVE_GD_IMAGESETBRUSH=1\
-# /DHAVE_GD_IMAGESETTILE=1\
-# /DHAVE_GD_FONTCACHESHUTDOWN=1\
-# /DHAVE_GD_FONTMUTEX=1\
-# /DHAVE_GD_STRINGFTEX=1\
-# /DHAVE_GD_STRINGTTF=1\
-# /DHAVE_GD_FREETYPE=1\
-# /DHAVE_LIBGD13=1\
-# /DHAVE_LIBGD15=1\
-# /DHAVE_LIBGD20=1\
-# /DHAVE_LIBGD204=1\
-# /DHAVE_COLORCLOSESTHWB\
-# /DUSE_GD_IMGSTRTTF\
-# /DUSE_GD_IOCTX\
-# /DHAVE_GD_JPG\
-# /DHAVE_GD_PNG\
-# /DHAVE_GD_DYNAMIC_CTX_EX=1\
-# /DHAVE_XPM\
-# /DHAVE_GD_XBM\
-# /DHAVE_GD_XPM\
-# /DHAVE_XPM_H=1\
-
# These flags may be set wrong; not sure of precise purpose
-# HAVE_GD_BUNDLED
# NDEBUG
-
-
-
-
TEST_CFLAGS=$(CFLAGS) /FItest_config.h
TEST_LDFLAGS=$(LDFLAGS) $(SDR)gdtest.obj $(BUILD_DIR)\libgd.lib
TEST_CONFIG=tests\test_config.h
TEST_LIST=$(TDR)testlist.txt
TEST_MK=$(TDR)Maketests.vc
-
-
# generate test makefile from TESTS macro
-
!IF [if not exist $(BUILD_DIR) mkdir $(BUILD_DIR)]
!ENDIF
!IF [if not exist $(TDR) mkdir $(TDR)]
@@ -116,13 +132,7 @@ TEST_MK=$(TDR)Maketests.vc
TEST_OBJS=$(TEST_EXES:tests=obj)
TEST_OBJS=$(TEST_OBJS:exe=obj)
-
-
-
-
-
# pseudotargets
-
build_libs: make_dirs $(TARGETDLL) $(TARGETLIB)
all: build_libs build_tests
check: all run_tests
@@ -133,9 +143,6 @@ clean:
@if exist $(BUILD_DIR)\*.exe del $(BUILD_DIR)\*.exe /q
@if exist tests\test_config.h del tests\test_config.h /q
-
-
-
# helpers
make_dirs:
@@ -145,27 +152,35 @@ make_dirs:
run_tests:
@windows\run_tests
-
-
-
# libgd
+$(LIBGD_OBJ_DIR):
+ @if not exist $(LIBGD_OBJ_DIR) mkdir $(LIBGD_OBJ_DIR)
-$(TARGETDLL): $(OBJECTS)
- @$(LD) /DLL /OUT:$@ $(OBJECTS) $(LIBS_GD) $(LIBS) $(LDFLAGS)
+$(LIBGD_BIN_DIR):
+ @if not exist $(LIBGD_BIN_DIR) mkdir $(LIBGD_BIN_DIR)
-$(TARGETLIB): $(OBJECTS)
- @$(LB) /OUT:$@ $(OBJECTS) $(LDFLAGS)
+$(TARGETDLL): $(LIB_OBJS)
+ @$(LD) /DLL /OUT:$@ $(LIB_OBJS) $(LIBS_GD) $(LIBS) $(LDFLAGS)
-{src\}.c{$(SDR)}.obj::
- @$(CC) $(CFLAGS) /c $< /Fo$(SDR)
+$(TARGETLIB): $(LIB_OBJS)
+ @$(LB) /OUT:$@ $(LIB_OBJS) $(LDFLAGS)
+{$(LIBGD_SRC_DIR)\}.c{$(LIBGD_OBJ_DIR)\}.obj:
+ $(CC) $(CFLAGS) /Fo"$@" $<
+all: $(LIBGD_OBJ_DIR) $(LIBGD_BIN_DIR) $(LIB_OBJS) $(STATICLIB)
+.SUFFIXES: .c .obj .res
+{$(LIBGD_SRC_DIR)\}.c{$(LIBGD_OBJ_DIR)\}.obj:
+ $(CC) $(CFLAGS) /Fo"$@" $<
+
+{src\}.c{$(SDR)}.obj::
+ $(CC) $(CFLAGS) /c $< /Fo$(SDR)
+
# tests
!INCLUDE $(TEST_MK)
-
build_tests: $(TEST_LIST) $(SDR)gdtest.obj $(TEST_EXES)
$(SDR)gdtest.obj: $(TARGETDLL) $(TEST_CONFIG) tests\gdtest\gdtest.c