diff options
author | Nathanael Jones <nathanael.jones@gmail.com> | 2014-10-17 12:54:48 -0400 |
---|---|---|
committer | Nathanael Jones <nathanael.jones@gmail.com> | 2015-01-07 01:52:00 -0500 |
commit | 7c2b0713e78d0d6caa09d6aa58318441801794ea (patch) | |
tree | 9c8c42c0c879e9116c965557c8b84a362fbf1877 /windows | |
parent | 07c3fde37ee7fb798cf13c5ea1be4d8ae9510066 (diff) | |
download | libgd-7c2b0713e78d0d6caa09d6aa58318441801794ea.tar.gz |
Replace windows MSVC makefile; update msys iconv path.
Diffstat (limited to 'windows')
-rw-r--r-- | windows/Makefile.vc | 183 | ||||
-rwxr-xr-x | windows/Makefile.w32 | 177 | ||||
-rw-r--r-- | windows/msys/Makefile | 2 | ||||
-rw-r--r-- | windows/readme.md | 11 | ||||
-rw-r--r-- | windows/run_tests.bat | 38 |
5 files changed, 233 insertions, 178 deletions
diff --git a/windows/Makefile.vc b/windows/Makefile.vc new file mode 100644 index 0000000..f17c50d --- /dev/null +++ b/windows/Makefile.vc @@ -0,0 +1,183 @@ +# To build locally get a copy of the dependancies (https://github.com/imazen/gd-win-dependencies) +# 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' + +CC=cl +LD=link +LB=lib + + +!IFNDEF PLATFORM +PLATFORM=x86 +!ENDIF +# detect x64 cross-compiler env +!IF "$(PREFERREDTOOLARCHITECTURE)" == "x64" +PLATFORM=x64 +!ENDIF +PLATFORM=$(PLATFORM:X=x) + + +BUILD_DIR=build_msvc12_$(PLATFORM) +GD_DLL=libgd.dll +GD_LIB=libgd_a.lib + +SDR=$(BUILD_DIR)\obj^\ +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 +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 + +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 + +LDFLAGS=/nologo /nodefaultlib:libcmt /libpath:gd-win-dependencies\$(PLATFORM)\lib /MACHINE:$(PLATFORM) + +CFLAGS=/nologo /O2 /Qvec-report:1 /MD /TC\ + /DWIN32=1\ + /D_WIN32=1\ + /DMSWIN32=1\ + /DBGDWIN32=1\ + /DHAVE_FT2BUILD_H=1\ + /DHAVE_GD_H=1\ + /DHAVE_PNG_H=1\ + /DHAVE_ICONV_H=1\ + /DHAVE_GD_BUNDLED=1\ + /DHAVE_LIBFREETYPE=1\ + /DHAVE_LIBJPEG=1\ + /DHAVE_LIBPNG=1\ + /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)] +!ENDIF +!IF [@copy NUL $(TEST_MK) > nul] +!ENDIF +!IF [@for %F in ($(TESTS)) do @echo TEST_EXES=$(TDR)%~nF.exe ^$(TEST_EXES) >> $(TEST_MK)] +!ENDIF +!IF [@for %F in ($(TESTS)) do @echo $(SDR)%~nF.obj: tests\%F.c; @^$(CC) ^$(TEST_CFLAGS) /c ^$** /Fo:^$@ >> $(TEST_MK)] +!ENDIF +!IF [@for %F in ($(TESTS)) do @echo $(TDR)%~nF.exe: $(SDR)%~nF.obj; @$(LD) $(TEST_LDFLAGS) ^$** /out:^$@ >> $(TEST_MK)] +!ENDIF +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 + +clean: + @if exist $(SDR) rd $(SDR) /s /q + @if exist $(TDR) rd $(TDR) /s /q + @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: + @if not exist $(BUILD_DIR) mkdir $(BUILD_DIR) + @if not exist $(SDR) mkdir $(SDR) + +run_tests: + @windows\run_tests + + + + +# libgd + +$(TARGETDLL): $(OBJECTS) + @$(LD) /DLL /OUT:$@ $(OBJECTS) $(LIBS_GD) $(LIBS) $(LDFLAGS) + +$(TARGETLIB): $(OBJECTS) + @$(LB) /OUT:$@ $(OBJECTS) $(LDFLAGS) + +{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 + @$(CC) $(CFLAGS) /c tests\gdtest\gdtest.c /Fo$(SDR)gdtest.obj + +$(TEST_CONFIG): + @echo #define GDTEST_TOP_DIR "$(MAKEDIR:\=\\)\\tests" > tests\test_config.h + @echo #define snprintf _snprintf >> tests\test_config.h + +$(TEST_LIST): $(TARGETDLL) + @if not exist $(TDR) mkdir $(TDR) + @copy $(TARGETDLL) $(TDR)$(GD_DLL) + @copy NUL $(TDR)testlist.txt + @for %%F in ($(TESTS)) do @echo %%F >> $(TDR)testlist.txt
\ No newline at end of file diff --git a/windows/Makefile.w32 b/windows/Makefile.w32 deleted file mode 100755 index 22e0256..0000000 --- a/windows/Makefile.w32 +++ /dev/null @@ -1,177 +0,0 @@ -# Makefile form Microsoft C++ nmake.exe -# $Id$ -!IFNDEF WITH_DEVEL -WITH_DEVEL = ../../deps -!ENDIF - -!IFNDEF WITH_BUILD -WITH_BUILD = ..\..\gdbuild -!ENDIF - -!IFDEF WITH_PNG -!IF "$(WITH_PNG)"=="dll" -PNG_LIBS = libpng.lib -USE_LIBPNG = true -PNG = dll -!ELSEIF "$(WITH_PNG)"=="static" -PNG_LIBS = libpng_a.lib -USE_LIBPNG = true -PNG = static -!ELSE -USE_LIBPNG = false -!ENDIF -!ENDIF - -!IFDEF WITH_JPEG -!IF "$(WITH_JPEG)"=="dll" -JPEG_LIBS = libjpeg.lib -USE_LIBJPEG = true -PNG = dll -!ELSEIF "$(WITH_JPEG)"=="static" -JPEG_LIBS = libjpeg_a.lib -USE_LIBJPEG = true -PNG = static -!ELSE -USE_LIBJPEG = false -!ENDIF -!ENDIF - -EXTRA_INCLUDE=$(WITH_DEVEL)/include -EXTRA_LIBS=/libpath:$(WITH_DEVEL)/lib - -CC=cl.exe -LD=link.exe -BUILD=Release -#BUILD=Debug - -LIBGD_SRC_DIR=..\src -LIBGD_OBJ_DIR=$(WITH_BUILD) -LIBGD_BIN_DIR=$(WITH_BUILD)\bin - -!MESSAGE library source: $(LIBGD_SRC_DIR) -!MESSAGE library objects: $(LIBGD_OBJ_DIR) - -LIBGDCFLAGS= \ - /D PATHSEPARATOR="\";\"" \ - /D DEFAULT_FONTPATH="\"C:\\WINDOWS\\FONTS;C:\\WINNT\\FONTS\"" \ - -#LIBS=libjpeg.lib freetype2.lib libpng.lib zlib.lib kernel32.lib user32.lib advapi32.lib -LIBS=kernel32.lib user32.lib advapi32.lib - -!IF "$(USE_LIBPNG)" == "true" -LIBPNG_CFLAGS = $(LIBPNG_CFLAGS) /I"$(WITH_DEVEL)/include/libpng15" /D HAVE_LIBPNG -LIBS= $(LIBS) libpng_a.lib -!ENDIF - -CFLAGS=/c -I. -I.. -I../src -I$(EXTRA_INCLUDE) -nologo -DWIN32 -D_WIN32 -DMSWIN32 -DBGDWIN32 $(LIBGDCFLAGS) -#LIBS=libjpeg.lib freetype2.lib libpng.lib zlib.lib kernel32.lib user32.lib advapi32.lib - -!if "$(BUILD)" == "Debug" -CFLAGS=$(CFLAGS) /Od /Zi /MTd /D_DEBUG /LDd -LDFLAGS=/DEBUG $(LDFLAGS) /nodefaultlib:msvcrt.lib $(EXTRA_LIBS) -LIBS=$(LIBS) msvcrtd.lib -!else -CFLAGS=$(CFLAGS) /Oi /O2 /Oy /GF /MT /DNDEBUG /LD -LDFLAGS=/nodefaultlib:msvcrtd.lib $(EXTRA_LIBS) -LIBS=$(LIBS) msvcrt.lib -!endif - -CPPFLAGS=$(CFLAGS) - -!if "$(DLLNAME)" == "" -DLLNAME=libgd.dll -!endif - -DYNAMICLIB=$(DLLNAME:.dll=.lib) - -!if "$(STATICLIB)" == "" -STATICLIB=libgd_a.lib -!endif - -LIB_OBJS= \ - $(LIBGD_OBJ_DIR)\gd.obj \ - $(LIBGD_OBJ_DIR)\gdcache.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_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 - -EXE_OBJS= \ - annotate.obj \ - circletexttest.obj \ - fontconfigtest.obj \ - fontsizetest.obj \ - fontwheeltest.obj \ - gd2copypal.obj \ - gd2togif.obj \ - gd2topng.obj \ - gdcmpgif.obj \ - gdparttopng.obj \ - gdtopng.obj \ - giftogd2.obj \ - gdtest.obj \ - gdtestft.obj \ - gifanimtest.obj \ - pngtogd.obj \ - pngtogd2.obj \ - testac.obj \ - testtr.obj \ - webpng.obj - -$(LIBGD_OBJ_DIR): - @if not exist $(LIBGD_OBJ_DIR) mkdir $(LIBGD_OBJ_DIR) - -$(LIBGD_BIN_DIR): - @if not exist $(LIBGD_BIN_DIR) mkdir $(LIBGD_BIN_DIR) - -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"$@" $< - -$(STATICLIB): $(LIB_OBJS) - $(LD) /lib /out:$(LIBGD_BIN_DIR)/$(STATICLIB) $(LIB_OBJS) - -dist: all - -rmdir /s /q distro - mkdir distro - mkdir distro\bin - copy *.exe distro\bin - copy *.dll distro\bin - mkdir distro\include - copy ..\*.h distro\include - mkdir distro\lib - copy *.lib distro\lib - copy ..\COPYING distro\COPYING.TXT - -clean: - -del /q $(LIBGD_OBJ_DIR)\*.obj $(LIBGD_OBJ_DIR)\*.dll $(LIBGD_OBJ_DIR)\*.lib $(LIBGD_OBJ_DIR)\*.ilk $(LIBGD_OBJ_DIR)\*.pdb $(LIBGD_OBJ_DIR)\*.exp $(LIBGD_OBJ_DIR)\*.exe $(LIBGD_OBJ_DIR)\*.png $(LIBGD_OBJ_DIR)\*.res - -rmdir /s /q distro
\ No newline at end of file diff --git a/windows/msys/Makefile b/windows/msys/Makefile index 65c00fe..7e7f155 100644 --- a/windows/msys/Makefile +++ b/windows/msys/Makefile @@ -72,7 +72,7 @@ ALL_DLLDIR=$(FREETYPE_DLLDIR) $(JPEG_DLLDIR) $(PNG_DLLDIR) $(TIFF_DLLDIR) \ # linking because that reduces the number of dependencies. However, # libiconv is released under the GNU GPL which may impose extra # restrictions on redistribution. -LIBICONV=/mingw/lib/libiconv.a +LIBICONV=/c/MinGW/lib/libiconv.a #LIBICONV=-liconv diff --git a/windows/readme.md b/windows/readme.md new file mode 100644 index 0000000..8753b70 --- /dev/null +++ b/windows/readme.md @@ -0,0 +1,11 @@ +# Building on Windows with Visual Studio 2013 + +Open the VS2013 x64 Native Tools Command Prompt. 2012 will *not* work. +Change to the gd-libgd folder. +git clone https://github.com/imazen/gd-win-dependencies into the folder. +Run +nmake /f windows/Makefile.vc all +nmake /f windows/Makefile.vc check + +Before rebuilding, run: +nmake /f windows/Makefile.vc clean
\ No newline at end of file diff --git a/windows/run_tests.bat b/windows/run_tests.bat new file mode 100644 index 0000000..5dadb05 --- /dev/null +++ b/windows/run_tests.bat @@ -0,0 +1,38 @@ +@echo off +setlocal EnableDelayedExpansion +if [%PLATFORM%]==[] set PLATFORM=x86 +if [%PREFERREDTOOLARCHITECTURE%]==[x64] set PLATFORM=x64 +set PLATFORM=%PLATFORM:X=x% + +if exist build_msvc12_%PLATFORM%\tests (cd build_msvc12_%PLATFORM%\tests) else ( + if exist ..\build_%PLATFORM%\tests (cd ..\build_msvc12_%PLATFORM%\tests) else ( + echo unable to find test dir + exit /b 1 + ) +) + + + +for /f %%T in (testlist.txt) do ( + set test=%%T + set output=test: !test!.................................................................... + + set target=%%~nT.exe + if not exist !target! SET result=NotFound + call !target! && (SET result=Passed) || (SET result=Failed) + + rem > last_test.out 2> last_test.err + rem set /p testerr=<last_test.err + rem set /p testout=<last_test.out + + echo !output:~0,70!!result! + + rem if defined testerr echo error: !testerr! + rem if defined testout echo msg: !testout! + + if defined APPVEYOR ( + appveyor AddTest "!test! %PLATFORM%" -Outcome !result! -Framework Custom -Filename %%~nT.exe -Duration 0 + ) +) + +exit /b 0
\ No newline at end of file |