Blame Makefile.vc

Packit 9c6abc
#
Packit 9c6abc
# Stem for static libs and DLLs
Packit 9c6abc
#
Packit 9c6abc
LIBWEBPDECODER_BASENAME = libwebpdecoder
Packit 9c6abc
LIBWEBP_BASENAME = libwebp
Packit 9c6abc
LIBWEBPMUX_BASENAME = libwebpmux
Packit 9c6abc
LIBWEBPDEMUX_BASENAME = libwebpdemux
Packit 9c6abc
Packit 9c6abc
!IFNDEF ARCH
Packit 9c6abc
!IF ! [ cl 2>&1 | find "x86" > NUL ]
Packit 9c6abc
ARCH = x86
Packit 9c6abc
!ELSE IF ! [ cl 2>&1 | find "x64" > NUL ]
Packit 9c6abc
ARCH = x64
Packit 9c6abc
!ELSE IF ! [ cl 2>&1 | find "ARM" > NUL ]
Packit 9c6abc
ARCH = ARM
Packit 9c6abc
!ELSE
Packit 9c6abc
!ERROR Unable to auto-detect toolchain architecture! \
Packit 9c6abc
If cl.exe is in your PATH rerun nmake with ARCH=<arch>.
Packit 9c6abc
!ENDIF
Packit 9c6abc
!ENDIF
Packit 9c6abc
Packit 9c6abc
!IF "$(ARCH)" == "x86"
Packit 9c6abc
PLATFORM_LDFLAGS = /SAFESEH
Packit 9c6abc
!ENDIF
Packit 9c6abc
Packit 9c6abc
#############################################################
Packit 9c6abc
## Nothing more to do below this line!
Packit 9c6abc
Packit 9c6abc
NOLOGO     = /nologo
Packit 9c6abc
CCNODBG    = cl.exe $(NOLOGO) /O2 /DNDEBUG
Packit 9c6abc
CCDEBUG    = cl.exe $(NOLOGO) /Od /Gm /Zi /D_DEBUG /RTC1
Packit 9c6abc
CFLAGS     = /I. /Isrc $(NOLOGO) /W3 /EHsc /c
Packit 9c6abc
CFLAGS     = $(CFLAGS) /DWIN32 /D_CRT_SECURE_NO_WARNINGS /DWIN32_LEAN_AND_MEAN
Packit 9c6abc
LDFLAGS    = /LARGEADDRESSAWARE /MANIFEST /NXCOMPAT /DYNAMICBASE
Packit 9c6abc
LDFLAGS    = $(LDFLAGS) $(PLATFORM_LDFLAGS)
Packit 9c6abc
LNKDLL     = link.exe /DLL $(NOLOGO)
Packit 9c6abc
LNKEXE     = link.exe $(NOLOGO)
Packit 9c6abc
LNKLIB     = lib.exe $(NOLOGO)
Packit 9c6abc
MT         = mt.exe $(NOLOGO)
Packit 9c6abc
RCNODBG    = rc.exe $(NOLOGO) /l"0x0409"  # 0x409 = U.S. English
Packit 9c6abc
RCDEBUG    = $(RCNODBG) /D_DEBUG
Packit 9c6abc
Packit 9c6abc
!IF "$(ARCH)" == "ARM"
Packit 9c6abc
CFLAGS = $(CFLAGS) /DWINAPI_FAMILY=WINAPI_FAMILY_PHONE_APP /DWEBP_USE_THREAD
Packit 9c6abc
!ELSE
Packit 9c6abc
CFLAGS = $(CFLAGS) /DHAVE_WINCODEC_H /DWEBP_USE_THREAD
Packit 9c6abc
!ENDIF
Packit 9c6abc
Packit 9c6abc
CFGSET     = FALSE
Packit 9c6abc
!IF "$(OBJDIR)" == ""
Packit 9c6abc
OUTDIR = ..\obj\
Packit 9c6abc
!ELSE
Packit 9c6abc
OUTDIR = $(OBJDIR)
Packit 9c6abc
!ENDIF
Packit 9c6abc
Packit 9c6abc
!IF "$(HAVE_AVX2)" == "1"
Packit 9c6abc
CFLAGS = $(CFLAGS) /DWEBP_HAVE_AVX2
Packit 9c6abc
AVX2_FLAGS = /arch:AVX2
Packit 9c6abc
!ENDIF
Packit 9c6abc
Packit 9c6abc
##############################################################
Packit 9c6abc
# Runtime library configuration
Packit 9c6abc
!IF "$(RTLIBCFG)" == "static"
Packit 9c6abc
RTLIB  = /MT
Packit 9c6abc
RTLIBD = /MTd
Packit 9c6abc
!ELSE IF "$(RTLIBCFG)" == "legacy"
Packit 9c6abc
RTLIBCFG = static
Packit 9c6abc
RTLIB  = /MT
Packit 9c6abc
RTLIBD = /MTd
Packit 9c6abc
CFLAGS = $(CFLAGS) /GS- /arch:IA32
Packit 9c6abc
!ELSE
Packit 9c6abc
RTLIB   = /MD
Packit 9c6abc
RTLIBD  = /MDd
Packit 9c6abc
!ENDIF
Packit 9c6abc
DIRBASE = $(OUTDIR)\$(CFG)\$(ARCH)
Packit 9c6abc
DIROBJ = $(DIRBASE)\obj
Packit 9c6abc
DIRLIB = $(DIRBASE)\lib
Packit 9c6abc
DIRINC = $(DIRBASE)\include
Packit 9c6abc
DIRBIN = $(DIRBASE)\bin
Packit 9c6abc
LIBWEBP_PDBNAME = $(DIROBJ)\$(LIBWEBP_BASENAME).pdb
Packit 9c6abc
OUTPUT_DIRS = $(DIRBIN) $(DIRINC) $(DIRLIB) \
Packit 9c6abc
              $(DIROBJ)\dec \
Packit 9c6abc
              $(DIROBJ)\demux \
Packit 9c6abc
              $(DIROBJ)\dsp \
Packit 9c6abc
              $(DIROBJ)\enc \
Packit 9c6abc
              $(DIROBJ)\examples \
Packit 9c6abc
              $(DIROBJ)\extras \
Packit 9c6abc
              $(DIROBJ)\imageio \
Packit 9c6abc
              $(DIROBJ)\mux \
Packit 9c6abc
              $(DIROBJ)\utils \
Packit 9c6abc
Packit 9c6abc
# Target configuration
Packit 9c6abc
!IF "$(CFG)" == "release-static"
Packit 9c6abc
CC             = $(CCNODBG)
Packit 9c6abc
STATICLIBBUILD = TRUE
Packit 9c6abc
!ELSE IF "$(CFG)" == "debug-static"
Packit 9c6abc
CC             = $(CCDEBUG)
Packit 9c6abc
RTLIB          = $(RTLIBD)
Packit 9c6abc
STATICLIBBUILD = TRUE
Packit 9c6abc
LIBWEBPDECODER_BASENAME = $(LIBWEBPDECODER_BASENAME)_debug
Packit 9c6abc
LIBWEBP_BASENAME = $(LIBWEBP_BASENAME)_debug
Packit 9c6abc
LIBWEBPMUX_BASENAME = $(LIBWEBPMUX_BASENAME)_debug
Packit 9c6abc
LIBWEBPDEMUX_BASENAME = $(LIBWEBPDEMUX_BASENAME)_debug
Packit 9c6abc
!ELSE IF "$(CFG)" == "release-dynamic"
Packit 9c6abc
CC        = $(CCNODBG)
Packit 9c6abc
RC        = $(RCNODBG)
Packit 9c6abc
DLLBUILD  = TRUE
Packit 9c6abc
!ELSE IF "$(CFG)" == "debug-dynamic"
Packit 9c6abc
CC        = $(CCDEBUG)
Packit 9c6abc
RC        = $(RCDEBUG)
Packit 9c6abc
RTLIB     = $(RTLIBD)
Packit 9c6abc
DLLBUILD  = TRUE
Packit 9c6abc
LIBWEBPDECODER_BASENAME = $(LIBWEBPDECODER_BASENAME)_debug
Packit 9c6abc
LIBWEBP_BASENAME = $(LIBWEBP_BASENAME)_debug
Packit 9c6abc
LIBWEBPMUX_BASENAME = $(LIBWEBPMUX_BASENAME)_debug
Packit 9c6abc
LIBWEBPDEMUX_BASENAME = $(LIBWEBPDEMUX_BASENAME)_debug
Packit 9c6abc
!ENDIF
Packit 9c6abc
Packit 9c6abc
!IF "$(STATICLIBBUILD)" == "TRUE"
Packit 9c6abc
CC     = $(CC) $(RTLIB)
Packit 9c6abc
CFGSET = TRUE
Packit 9c6abc
LIBWEBPDECODER = $(DIRLIB)\$(LIBWEBPDECODER_BASENAME).lib
Packit 9c6abc
LIBWEBP = $(DIRLIB)\$(LIBWEBP_BASENAME).lib
Packit 9c6abc
LIBWEBPMUX = $(DIRLIB)\$(LIBWEBPMUX_BASENAME).lib
Packit 9c6abc
LIBWEBPDEMUX = $(DIRLIB)\$(LIBWEBPDEMUX_BASENAME).lib
Packit 9c6abc
!ELSE IF "$(DLLBUILD)" == "TRUE"
Packit 9c6abc
DLLINC = webp_dll.h
Packit 9c6abc
CC     = $(CC) /I$(DIROBJ) /FI$(DLLINC) $(RTLIB) /DWEBP_DLL
Packit 9c6abc
LIBWEBPDECODER = $(DIRLIB)\$(LIBWEBPDECODER_BASENAME)_dll.lib
Packit 9c6abc
LIBWEBP = $(DIRLIB)\$(LIBWEBP_BASENAME)_dll.lib
Packit 9c6abc
LIBWEBPMUX = $(DIRLIB)\$(LIBWEBPMUX_BASENAME)_dll.lib
Packit 9c6abc
LIBWEBPDEMUX = $(DIRLIB)\$(LIBWEBPDEMUX_BASENAME)_dll.lib
Packit 9c6abc
LIBWEBP_PDBNAME = $(DIROBJ)\$(LIBWEBP_BASENAME)_dll.pdb
Packit 9c6abc
CFGSET = TRUE
Packit 9c6abc
!ENDIF
Packit 9c6abc
Packit 9c6abc
#######################
Packit 9c6abc
# Usage
Packit 9c6abc
#
Packit 9c6abc
!IF "$(CFGSET)" == "FALSE"
Packit 9c6abc
!MESSAGE Usage: nmake /f Makefile.vc [CFG=<config>]
Packit 9c6abc
!MESSAGE .          [OBJDIR=<path>] [RTLIBCFG=<rtlib>] [<target>]
Packit 9c6abc
!MESSAGE
Packit 9c6abc
!MESSAGE where <config> is one of:
Packit 9c6abc
!MESSAGE -  release-static                - release static library
Packit 9c6abc
!MESSAGE -  debug-static                  - debug static library
Packit 9c6abc
!MESSAGE -  release-dynamic               - release dynamic link library (DLL)
Packit 9c6abc
!MESSAGE -  debug-dynamic                 - debug dynamic link library (DLL)
Packit 9c6abc
!MESSAGE
Packit 9c6abc
!MESSAGE <target> may be:
Packit 9c6abc
!MESSAGE -  clean                         - perform a clean for CFG
Packit 9c6abc
!MESSAGE -  experimental                  - build CFG with experimental
Packit 9c6abc
!MESSAGE .                                  features enabled.
Packit 9c6abc
!MESSAGE - (empty)                        - build libwebp-based targets for CFG
Packit 9c6abc
!MESSAGE - all                            - build (de)mux-based targets for CFG
Packit 9c6abc
!MESSAGE - gif2webp                       - requires libgif & >= VS2013
Packit 9c6abc
!MESSAGE - anim_diff                      - requires libgif & >= VS2013
Packit 9c6abc
!MESSAGE - anim_dump
Packit 9c6abc
!MESSAGE
Packit 9c6abc
!MESSAGE RTLIBCFG controls the runtime library linkage - 'static' or 'dynamic'.
Packit 9c6abc
!MESSAGE   'legacy' will produce a Windows 2000 compatible library.
Packit 9c6abc
!MESSAGE OBJDIR is the path where you like to build (obj, bins, etc.),
Packit 9c6abc
!MESSAGE   defaults to ..\obj
Packit 9c6abc
Packit 9c6abc
!IF "$(CFG)" != ""
Packit 9c6abc
!MESSAGE
Packit 9c6abc
!ERROR please choose a valid configuration instead of "$(CFG)"
Packit 9c6abc
!ENDIF
Packit 9c6abc
!ENDIF
Packit 9c6abc
Packit 9c6abc
#######################
Packit 9c6abc
# Rules
Packit 9c6abc
#
Packit 9c6abc
!IF "$(CFGSET)" == "TRUE"
Packit 9c6abc
# A config was provided, so the library can be built.
Packit 9c6abc
#
Packit 9c6abc
Packit 9c6abc
DEC_OBJS = \
Packit 9c6abc
    $(DIROBJ)\dec\alpha_dec.obj \
Packit 9c6abc
    $(DIROBJ)\dec\buffer_dec.obj \
Packit 9c6abc
    $(DIROBJ)\dec\frame_dec.obj \
Packit 9c6abc
    $(DIROBJ)\dec\idec_dec.obj \
Packit 9c6abc
    $(DIROBJ)\dec\io_dec.obj \
Packit 9c6abc
    $(DIROBJ)\dec\quant_dec.obj \
Packit 9c6abc
    $(DIROBJ)\dec\tree_dec.obj \
Packit 9c6abc
    $(DIROBJ)\dec\vp8_dec.obj \
Packit 9c6abc
    $(DIROBJ)\dec\vp8l_dec.obj \
Packit 9c6abc
    $(DIROBJ)\dec\webp_dec.obj \
Packit 9c6abc
Packit 9c6abc
DEMUX_OBJS = \
Packit 9c6abc
    $(DIROBJ)\demux\anim_decode.obj \
Packit 9c6abc
    $(DIROBJ)\demux\demux.obj \
Packit 9c6abc
Packit 9c6abc
DSP_DEC_OBJS = \
Packit 9c6abc
    $(DIROBJ)\dsp\alpha_processing.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\alpha_processing_mips_dsp_r2.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\alpha_processing_neon.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\alpha_processing_sse2.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\alpha_processing_sse41.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\cpu.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\dec.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\dec_clip_tables.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\dec_mips32.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\dec_mips_dsp_r2.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\dec_msa.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\dec_neon.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\dec_sse2.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\dec_sse41.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\filters.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\filters_mips_dsp_r2.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\filters_msa.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\filters_neon.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\filters_sse2.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\lossless.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\lossless_mips_dsp_r2.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\lossless_msa.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\lossless_neon.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\lossless_sse2.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\rescaler.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\rescaler_mips32.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\rescaler_mips_dsp_r2.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\rescaler_msa.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\rescaler_neon.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\rescaler_sse2.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\upsampling.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\upsampling_mips_dsp_r2.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\upsampling_msa.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\upsampling_neon.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\upsampling_sse2.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\upsampling_sse41.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\yuv.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\yuv_mips32.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\yuv_mips_dsp_r2.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\yuv_neon.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\yuv_sse2.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\yuv_sse41.obj \
Packit 9c6abc
Packit 9c6abc
DSP_ENC_OBJS = \
Packit 9c6abc
    $(DIROBJ)\dsp\cost.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\cost_mips32.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\cost_mips_dsp_r2.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\cost_sse2.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\enc.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\enc_avx2.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\enc_mips32.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\enc_mips_dsp_r2.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\enc_msa.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\enc_neon.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\enc_sse2.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\enc_sse41.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\lossless_enc.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\lossless_enc_mips32.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\lossless_enc_mips_dsp_r2.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\lossless_enc_msa.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\lossless_enc_neon.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\lossless_enc_sse2.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\lossless_enc_sse41.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\ssim.obj \
Packit 9c6abc
    $(DIROBJ)\dsp\ssim_sse2.obj \
Packit 9c6abc
Packit 9c6abc
EX_ANIM_UTIL_OBJS = \
Packit 9c6abc
    $(DIROBJ)\examples\anim_util.obj \
Packit 9c6abc
Packit 9c6abc
IMAGEIO_DEC_OBJS = \
Packit 9c6abc
    $(DIROBJ)\imageio\image_dec.obj \
Packit 9c6abc
    $(DIROBJ)\imageio\jpegdec.obj \
Packit 9c6abc
    $(DIROBJ)\imageio\metadata.obj \
Packit 9c6abc
    $(DIROBJ)\imageio\pngdec.obj \
Packit 9c6abc
    $(DIROBJ)\imageio\pnmdec.obj \
Packit 9c6abc
    $(DIROBJ)\imageio\tiffdec.obj \
Packit 9c6abc
    $(DIROBJ)\imageio\webpdec.obj \
Packit 9c6abc
    $(DIROBJ)\imageio\wicdec.obj \
Packit 9c6abc
Packit 9c6abc
IMAGEIO_ENC_OBJS = \
Packit 9c6abc
    $(DIROBJ)\imageio\image_enc.obj \
Packit 9c6abc
Packit 9c6abc
EX_GIF_DEC_OBJS = \
Packit 9c6abc
    $(DIROBJ)\examples\gifdec.obj \
Packit 9c6abc
Packit 9c6abc
EX_UTIL_OBJS = \
Packit 9c6abc
    $(DIROBJ)\examples\example_util.obj \
Packit 9c6abc
Packit 9c6abc
ENC_OBJS = \
Packit 9c6abc
    $(DIROBJ)\enc\alpha_enc.obj \
Packit 9c6abc
    $(DIROBJ)\enc\analysis_enc.obj \
Packit 9c6abc
    $(DIROBJ)\enc\backward_references_cost_enc.obj \
Packit 9c6abc
    $(DIROBJ)\enc\backward_references_enc.obj \
Packit 9c6abc
    $(DIROBJ)\enc\config_enc.obj \
Packit 9c6abc
    $(DIROBJ)\enc\cost_enc.obj \
Packit 9c6abc
    $(DIROBJ)\enc\filter_enc.obj \
Packit 9c6abc
    $(DIROBJ)\enc\frame_enc.obj \
Packit 9c6abc
    $(DIROBJ)\enc\histogram_enc.obj \
Packit 9c6abc
    $(DIROBJ)\enc\iterator_enc.obj \
Packit 9c6abc
    $(DIROBJ)\enc\near_lossless_enc.obj \
Packit 9c6abc
    $(DIROBJ)\enc\picture_enc.obj \
Packit 9c6abc
    $(DIROBJ)\enc\picture_csp_enc.obj \
Packit 9c6abc
    $(DIROBJ)\enc\picture_psnr_enc.obj \
Packit 9c6abc
    $(DIROBJ)\enc\picture_rescale_enc.obj \
Packit 9c6abc
    $(DIROBJ)\enc\picture_tools_enc.obj \
Packit 9c6abc
    $(DIROBJ)\enc\predictor_enc.obj \
Packit 9c6abc
    $(DIROBJ)\enc\quant_enc.obj \
Packit 9c6abc
    $(DIROBJ)\enc\syntax_enc.obj \
Packit 9c6abc
    $(DIROBJ)\enc\token_enc.obj \
Packit 9c6abc
    $(DIROBJ)\enc\tree_enc.obj \
Packit 9c6abc
    $(DIROBJ)\enc\vp8l_enc.obj \
Packit 9c6abc
    $(DIROBJ)\enc\webp_enc.obj \
Packit 9c6abc
Packit 9c6abc
EXTRAS_OBJS = \
Packit 9c6abc
    $(DIROBJ)\extras\extras.obj \
Packit 9c6abc
    $(DIROBJ)\extras\quality_estimate.obj \
Packit 9c6abc
Packit 9c6abc
IMAGEIO_UTIL_OBJS = \
Packit 9c6abc
    $(DIROBJ)\imageio\imageio_util.obj \
Packit 9c6abc
Packit 9c6abc
MUX_OBJS = \
Packit 9c6abc
    $(DIROBJ)\mux\anim_encode.obj \
Packit 9c6abc
    $(DIROBJ)\mux\muxedit.obj \
Packit 9c6abc
    $(DIROBJ)\mux\muxinternal.obj \
Packit 9c6abc
    $(DIROBJ)\mux\muxread.obj \
Packit 9c6abc
Packit 9c6abc
UTILS_DEC_OBJS = \
Packit 9c6abc
    $(DIROBJ)\utils\bit_reader_utils.obj \
Packit 9c6abc
    $(DIROBJ)\utils\color_cache_utils.obj \
Packit 9c6abc
    $(DIROBJ)\utils\filters_utils.obj \
Packit 9c6abc
    $(DIROBJ)\utils\huffman_utils.obj \
Packit 9c6abc
    $(DIROBJ)\utils\quant_levels_dec_utils.obj \
Packit 9c6abc
    $(DIROBJ)\utils\rescaler_utils.obj \
Packit 9c6abc
    $(DIROBJ)\utils\random_utils.obj \
Packit 9c6abc
    $(DIROBJ)\utils\thread_utils.obj \
Packit 9c6abc
    $(DIROBJ)\utils\utils.obj \
Packit 9c6abc
Packit 9c6abc
UTILS_ENC_OBJS = \
Packit 9c6abc
    $(DIROBJ)\utils\bit_writer_utils.obj \
Packit 9c6abc
    $(DIROBJ)\utils\huffman_encode_utils.obj \
Packit 9c6abc
    $(DIROBJ)\utils\quant_levels_utils.obj \
Packit 9c6abc
Packit 9c6abc
LIBWEBPDECODER_OBJS = $(DEC_OBJS) $(DSP_DEC_OBJS) $(UTILS_DEC_OBJS)
Packit 9c6abc
LIBWEBP_OBJS = $(LIBWEBPDECODER_OBJS) $(ENC_OBJS) $(DSP_ENC_OBJS) \
Packit 9c6abc
               $(UTILS_ENC_OBJS) $(DLL_OBJS)
Packit 9c6abc
LIBWEBPMUX_OBJS = $(MUX_OBJS) $(LIBWEBPMUX_OBJS)
Packit 9c6abc
LIBWEBPDEMUX_OBJS = $(DEMUX_OBJS) $(LIBWEBPDEMUX_OBJS)
Packit 9c6abc
Packit 9c6abc
OUT_LIBS = $(LIBWEBPDECODER) $(LIBWEBP)
Packit 9c6abc
!IF "$(ARCH)" == "ARM"
Packit 9c6abc
ex: $(OUT_LIBS)
Packit 9c6abc
all: ex
Packit 9c6abc
!ELSE
Packit 9c6abc
OUT_EXAMPLES = $(DIRBIN)\cwebp.exe $(DIRBIN)\dwebp.exe
Packit 9c6abc
EXTRA_EXAMPLES = $(DIRBIN)\vwebp.exe $(DIRBIN)\webpmux.exe \
Packit 9c6abc
                 $(DIRBIN)\img2webp.exe $(DIRBIN)\get_disto.exe \
Packit 9c6abc
                 $(DIRBIN)\webp_quality.exe $(DIRBIN)\vwebp_sdl.exe \
Packit 9c6abc
                 $(DIRBIN)\webpinfo.exe
Packit 9c6abc
Packit 9c6abc
ex: $(OUT_LIBS) $(OUT_EXAMPLES)
Packit 9c6abc
all: ex $(EXTRA_EXAMPLES)
Packit 9c6abc
# NB: gif2webp.exe and anim_diff.exe are excluded from 'all' as libgif requires
Packit 9c6abc
# C99 support which is only available from VS2013 onward.
Packit 9c6abc
gif2webp: $(DIRBIN)\gif2webp.exe
Packit 9c6abc
anim_diff: $(DIRBIN)\anim_diff.exe
Packit 9c6abc
anim_dump: $(DIRBIN)\anim_dump.exe
Packit 9c6abc
Packit 9c6abc
$(DIRBIN)\anim_diff.exe: $(DIROBJ)\examples\anim_diff.obj $(EX_ANIM_UTIL_OBJS)
Packit 9c6abc
$(DIRBIN)\anim_diff.exe: $(EX_UTIL_OBJS) $(IMAGEIO_UTIL_OBJS)
Packit 9c6abc
$(DIRBIN)\anim_diff.exe: $(EX_GIF_DEC_OBJS) $(LIBWEBPDEMUX) $(LIBWEBP)
Packit 9c6abc
$(DIRBIN)\anim_dump.exe: $(DIROBJ)\examples\anim_dump.obj $(EX_ANIM_UTIL_OBJS)
Packit 9c6abc
$(DIRBIN)\anim_dump.exe: $(EX_UTIL_OBJS) $(IMAGEIO_UTIL_OBJS)
Packit 9c6abc
$(DIRBIN)\anim_dump.exe: $(EX_GIF_DEC_OBJS) $(LIBWEBPDEMUX) $(LIBWEBP)
Packit 9c6abc
$(DIRBIN)\anim_dump.exe: $(IMAGEIO_ENC_OBJS)
Packit 9c6abc
$(DIRBIN)\cwebp.exe: $(DIROBJ)\examples\cwebp.obj $(IMAGEIO_DEC_OBJS)
Packit 9c6abc
$(DIRBIN)\cwebp.exe: $(IMAGEIO_UTIL_OBJS)
Packit 9c6abc
$(DIRBIN)\cwebp.exe: $(LIBWEBPDEMUX)
Packit 9c6abc
$(DIRBIN)\dwebp.exe: $(DIROBJ)\examples\dwebp.obj $(IMAGEIO_DEC_OBJS)
Packit 9c6abc
$(DIRBIN)\dwebp.exe: $(IMAGEIO_ENC_OBJS)
Packit 9c6abc
$(DIRBIN)\dwebp.exe: $(IMAGEIO_UTIL_OBJS)
Packit 9c6abc
$(DIRBIN)\dwebp.exe: $(LIBWEBPDEMUX)
Packit 9c6abc
$(DIRBIN)\gif2webp.exe: $(DIROBJ)\examples\gif2webp.obj $(EX_GIF_DEC_OBJS)
Packit 9c6abc
$(DIRBIN)\gif2webp.exe: $(EX_UTIL_OBJS) $(IMAGEIO_UTIL_OBJS) $(LIBWEBPMUX)
Packit 9c6abc
$(DIRBIN)\gif2webp.exe: $(LIBWEBP)
Packit 9c6abc
$(DIRBIN)\vwebp.exe: $(DIROBJ)\examples\vwebp.obj $(EX_UTIL_OBJS)
Packit 9c6abc
$(DIRBIN)\vwebp.exe: $(IMAGEIO_UTIL_OBJS) $(LIBWEBPDEMUX) $(LIBWEBP)
Packit 9c6abc
$(DIRBIN)\vwebp_sdl.exe: $(DIROBJ)\extras\vwebp_sdl.obj
Packit 9c6abc
$(DIRBIN)\vwebp_sdl.exe: $(DIROBJ)\extras\webp_to_sdl.obj
Packit 9c6abc
$(DIRBIN)\vwebp_sdl.exe: $(IMAGEIO_UTIL_OBJS) $(LIBWEBP)
Packit 9c6abc
$(DIRBIN)\webpmux.exe: $(DIROBJ)\examples\webpmux.obj $(LIBWEBPMUX)
Packit 9c6abc
$(DIRBIN)\webpmux.exe: $(EX_UTIL_OBJS) $(IMAGEIO_UTIL_OBJS) $(LIBWEBP)
Packit 9c6abc
$(DIRBIN)\img2webp.exe: $(DIROBJ)\examples\img2webp.obj $(LIBWEBPMUX)
Packit 9c6abc
$(DIRBIN)\img2webp.exe: $(IMAGEIO_DEC_OBJS)
Packit 9c6abc
$(DIRBIN)\img2webp.exe: $(EX_UTIL_OBJS) $(IMAGEIO_UTIL_OBJS)
Packit 9c6abc
$(DIRBIN)\img2webp.exe: $(LIBWEBPDEMUX) $(LIBWEBP)
Packit 9c6abc
$(DIRBIN)\get_disto.exe: $(DIROBJ)\extras\get_disto.obj
Packit 9c6abc
$(DIRBIN)\get_disto.exe: $(IMAGEIO_DEC_OBJS) $(IMAGEIO_UTIL_OBJS)
Packit 9c6abc
$(DIRBIN)\get_disto.exe: $(LIBWEBPDEMUX) $(LIBWEBP)
Packit 9c6abc
$(DIRBIN)\webp_quality.exe: $(DIROBJ)\extras\webp_quality.obj
Packit 9c6abc
$(DIRBIN)\webp_quality.exe: $(IMAGEIO_UTIL_OBJS)
Packit 9c6abc
$(DIRBIN)\webp_quality.exe: $(EXTRAS_OBJS) $(LIBWEBP)
Packit 9c6abc
$(DIRBIN)\webpinfo.exe: $(DIROBJ)\examples\webpinfo.obj
Packit 9c6abc
$(DIRBIN)\webpinfo.exe: $(IMAGEIO_DEC_OBJS)
Packit 9c6abc
$(DIRBIN)\webpinfo.exe: $(EX_UTIL_OBJS) $(IMAGEIO_UTIL_OBJS)
Packit 9c6abc
$(DIRBIN)\webpinfo.exe: $(LIBWEBPDEMUX) $(LIBWEBP)
Packit 9c6abc
Packit 9c6abc
$(OUT_EXAMPLES): $(EX_UTIL_OBJS) $(LIBWEBP)
Packit 9c6abc
$(EX_UTIL_OBJS) $(IMAGEIO_UTIL_OBJS): $(OUTPUT_DIRS)
Packit 9c6abc
$(IMAGEIO_DEC_OBJS) $(IMAGEIO_ENC_OBJS) $(EXTRAS_OBJS): $(OUTPUT_DIRS)
Packit 9c6abc
!ENDIF  # ARCH == ARM
Packit 9c6abc
Packit 9c6abc
$(LIBWEBPDECODER): $(LIBWEBPDECODER_OBJS)
Packit 9c6abc
$(LIBWEBP): $(LIBWEBP_OBJS)
Packit 9c6abc
$(LIBWEBPMUX): $(LIBWEBPMUX_OBJS)
Packit 9c6abc
$(LIBWEBPDEMUX): $(LIBWEBPDEMUX_OBJS)
Packit 9c6abc
Packit 9c6abc
$(LIBWEBP_OBJS) $(LIBWEBPMUX_OBJS) $(LIBWEBPDEMUX_OBJS): $(OUTPUT_DIRS)
Packit 9c6abc
Packit 9c6abc
!IF "$(DLLBUILD)" == "TRUE"
Packit 9c6abc
$(LIBWEBP_OBJS) $(LIBWEBPMUX_OBJS) $(LIBWEBPDEMUX_OBJS): \
Packit 9c6abc
    $(DIROBJ)\$(DLLINC)
Packit 9c6abc
Packit 9c6abc
{$(DIROBJ)}.c{$(DIROBJ)}.obj:
Packit 9c6abc
	$(CC) $(CFLAGS) /Fd$(LIBWEBP_PDBNAME) /Fo$@  $<
Packit 9c6abc
Packit 9c6abc
{src}.rc{$(DIROBJ)}.res:
Packit 9c6abc
	$(RC) /fo$@ $<
Packit 9c6abc
{src\demux}.rc{$(DIROBJ)\demux}.res:
Packit 9c6abc
	$(RC) /fo$@ $<
Packit 9c6abc
{src\mux}.rc{$(DIROBJ)\mux}.res:
Packit 9c6abc
	$(RC) /fo$@ $<
Packit 9c6abc
Packit 9c6abc
$(LIBWEBP): $(DIROBJ)\$(LIBWEBP_BASENAME:_debug=).res
Packit 9c6abc
$(LIBWEBPDECODER): $(DIROBJ)\$(LIBWEBPDECODER_BASENAME:_debug=).res
Packit 9c6abc
$(LIBWEBPMUX): $(LIBWEBP) $(DIROBJ)\mux\$(LIBWEBPMUX_BASENAME:_debug=).res
Packit 9c6abc
$(LIBWEBPDEMUX): $(LIBWEBP) $(DIROBJ)\demux\$(LIBWEBPDEMUX_BASENAME:_debug=).res
Packit 9c6abc
Packit 9c6abc
$(LIBWEBPDECODER) $(LIBWEBP) $(LIBWEBPMUX) $(LIBWEBPDEMUX):
Packit 9c6abc
	$(LNKDLL) /out:$(DIRBIN)\$(@B:_dll=.dll) /implib:$@ $(LFLAGS) $**
Packit 9c6abc
	-xcopy $(DIROBJ)\*.pdb $(DIRLIB) /y
Packit 9c6abc
Packit 9c6abc
clean::
Packit 9c6abc
	@-erase /s $(DIROBJ)\$(DLLINC) 2> NUL
Packit 9c6abc
!ELSE
Packit 9c6abc
$(LIBWEBPDECODER) $(LIBWEBP) $(LIBWEBPMUX) $(LIBWEBPDEMUX):
Packit 9c6abc
	$(LNKLIB) /out:$@ $**
Packit 9c6abc
	-xcopy $(DIROBJ)\*.pdb $(DIRLIB) /y
Packit 9c6abc
!ENDIF
Packit 9c6abc
Packit 9c6abc
$(OUTPUT_DIRS):
Packit 9c6abc
	@if not exist "$(@)" mkdir "$(@)"
Packit 9c6abc
Packit 9c6abc
# generate a helper include to define WEBP_EXTERN suitable for the DLL build
Packit 9c6abc
$(DIROBJ)\$(DLLINC):
Packit 9c6abc
	@echo #ifndef WEBP_DLL_H_ > $@
Packit 9c6abc
	@echo #define WEBP_DLL_H_ >> $@
Packit 9c6abc
	@echo #define WEBP_EXTERN __declspec(dllexport) >> $@
Packit 9c6abc
	@echo #endif  /* WEBP_DLL_H_ */ >> $@
Packit 9c6abc
Packit 9c6abc
.SUFFIXES: .c .obj .res .exe
Packit 9c6abc
# File-specific flag builds. Note batch rules take precedence over wildcards,
Packit 9c6abc
# so for now name each file individually.
Packit 9c6abc
$(DIROBJ)\dsp\enc_avx2.obj: src\dsp\enc_avx2.c
Packit 9c6abc
	$(CC) $(CFLAGS) $(AVX2_FLAGS) /Fd$(LIBWEBP_PDBNAME) /Fo$(DIROBJ)\dsp\ \
Packit 9c6abc
	  src\dsp\$(@B).c
Packit 9c6abc
$(DIROBJ)\examples\anim_diff.obj: examples\anim_diff.c
Packit 9c6abc
	$(CC) $(CFLAGS) /DWEBP_HAVE_GIF /Fd$(LIBWEBP_PDBNAME) \
Packit 9c6abc
	  /Fo$(DIROBJ)\examples\ examples\$(@B).c
Packit 9c6abc
$(DIROBJ)\examples\anim_dump.obj: examples\anim_dump.c
Packit 9c6abc
	$(CC) $(CFLAGS) /DWEBP_HAVE_GIF /Fd$(LIBWEBP_PDBNAME) \
Packit 9c6abc
	  /Fo$(DIROBJ)\examples\ examples\$(@B).c
Packit 9c6abc
$(DIROBJ)\examples\anim_util.obj: examples\anim_util.c
Packit 9c6abc
	$(CC) $(CFLAGS) /DWEBP_HAVE_GIF /Fd$(LIBWEBP_PDBNAME) \
Packit 9c6abc
	  /Fo$(DIROBJ)\examples\ examples\$(@B).c
Packit 9c6abc
$(DIROBJ)\examples\gif2webp.obj: examples\gif2webp.c
Packit 9c6abc
	$(CC) $(CFLAGS) /DWEBP_HAVE_GIF /Fd$(LIBWEBP_PDBNAME) \
Packit 9c6abc
	  /Fo$(DIROBJ)\examples\ examples\$(@B).c
Packit 9c6abc
$(DIROBJ)\examples\gifdec.obj: examples\gifdec.c
Packit 9c6abc
	$(CC) $(CFLAGS) /DWEBP_HAVE_GIF /Fd$(LIBWEBP_PDBNAME) \
Packit 9c6abc
	  /Fo$(DIROBJ)\examples\ examples\$(@B).c
Packit 9c6abc
# Batch rules
Packit 9c6abc
{examples}.c{$(DIROBJ)\examples}.obj::
Packit 9c6abc
	$(CC) $(CFLAGS) /Fd$(DIROBJ)\examples\ /Fo$(DIROBJ)\examples\ $<
Packit 9c6abc
{extras}.c{$(DIROBJ)\extras}.obj::
Packit 9c6abc
	$(CC) $(CFLAGS) /Fd$(DIROBJ)\extras\ /Fo$(DIROBJ)\extras\ $<
Packit 9c6abc
{imageio}.c{$(DIROBJ)\imageio}.obj::
Packit 9c6abc
	$(CC) $(CFLAGS) /Fd$(DIROBJ)\imageio\ /Fo$(DIROBJ)\imageio\ $<
Packit 9c6abc
{src\dec}.c{$(DIROBJ)\dec}.obj::
Packit 9c6abc
	$(CC) $(CFLAGS) /Fd$(LIBWEBP_PDBNAME) /Fo$(DIROBJ)\dec\ $<
Packit 9c6abc
{src\demux}.c{$(DIROBJ)\demux}.obj::
Packit 9c6abc
	$(CC) $(CFLAGS) /Fd$(LIBWEBP_PDBNAME) /Fo$(DIROBJ)\demux\ $<
Packit 9c6abc
{src\dsp}.c{$(DIROBJ)\dsp}.obj::
Packit 9c6abc
	$(CC) $(CFLAGS) /Fd$(LIBWEBP_PDBNAME) /Fo$(DIROBJ)\dsp\ $<
Packit 9c6abc
{src\enc}.c{$(DIROBJ)\enc}.obj::
Packit 9c6abc
	$(CC) $(CFLAGS) /Fd$(LIBWEBP_PDBNAME) /Fo$(DIROBJ)\enc\ $<
Packit 9c6abc
{src\mux}.c{$(DIROBJ)\mux}.obj::
Packit 9c6abc
	$(CC) $(CFLAGS) /Fd$(LIBWEBP_PDBNAME) /Fo$(DIROBJ)\mux\ $<
Packit 9c6abc
{src\utils}.c{$(DIROBJ)\utils}.obj::
Packit 9c6abc
	$(CC) $(CFLAGS) /Fd$(LIBWEBP_PDBNAME) /Fo$(DIROBJ)\utils\ $<
Packit 9c6abc
Packit 9c6abc
{$(DIROBJ)\examples}.obj{$(DIRBIN)}.exe:
Packit 9c6abc
	$(LNKEXE) $(LDFLAGS) /OUT:$@ $** \
Packit 9c6abc
	    ole32.lib windowscodecs.lib shlwapi.lib
Packit 9c6abc
	$(MT) -manifest $@.manifest -outputresource:$@;1
Packit 9c6abc
	del $@.manifest
Packit 9c6abc
Packit 9c6abc
{$(DIROBJ)\extras}.obj{$(DIRBIN)}.exe:
Packit 9c6abc
	$(LNKEXE) $(LDFLAGS) /OUT:$@ $** \
Packit 9c6abc
	    ole32.lib windowscodecs.lib shlwapi.lib
Packit 9c6abc
	$(MT) -manifest $@.manifest -outputresource:$@;1
Packit 9c6abc
	del $@.manifest
Packit 9c6abc
Packit 9c6abc
clean::
Packit 9c6abc
	@-erase /s $(DIROBJ)\*.dll 2> NUL
Packit 9c6abc
	@-erase /s $(DIROBJ)\*.exp 2> NUL
Packit 9c6abc
	@-erase /s $(DIROBJ)\*.idb 2> NUL
Packit 9c6abc
	@-erase /s $(DIROBJ)\*.lib 2> NUL
Packit 9c6abc
	@-erase /s $(DIROBJ)\*.obj 2> NUL
Packit 9c6abc
	@-erase /s $(DIROBJ)\*.pch 2> NUL
Packit 9c6abc
	@-erase /s $(DIROBJ)\*.pdb 2> NUL
Packit 9c6abc
	@-erase /s $(DIROBJ)\*.res 2> NUL
Packit 9c6abc
Packit 9c6abc
!ENDIF  # End of case where a config was provided.