cmake_minimum_required (VERSION 3.6)

project(LibJpeg C)

set(SOURCE 
    jaricom.c
    jcapimin.c
    jcapistd.c
    jcarith.c
    jccoefct.c
    jccolor.c
    jcdctmgr.c
    jchuff.c
    jcinit.c
    jcmainct.c
    jcmarker.c
    jcmaster.c
    jcomapi.c
    jcparam.c
    jcprepct.c
    jcsample.c
    jctrans.c
    jdapimin.c
    jdapistd.c
    jdarith.c
    jdatadst.c
    jdatasrc.c
    jdcoefct.c
    jdcolor.c
    jddctmgr.c
    jdhuff.c
    jdinput.c
    jdmainct.c
    jdmarker.c
    jdmaster.c
    jdmerge.c
    jdpostct.c
    jdsample.c
    jdtrans.c
    jerror.c
    jfdctflt.c
    jfdctfst.c
    jfdctint.c
    jidctflt.c
    jidctfst.c
    jidctint.c
    jmemmgr.c
    jmemnobs.c
    jquant1.c
    jquant2.c
    jutils.c
)

set(INCLUDE 
    jconfig.h
    jdct.h
    jerror.h
    jinclude.h
    jmemsys.h
    jmorecfg.h
    jpegint.h
    jpeglib.h
    jversion.h
)

add_library(LibJpeg STATIC ${SOURCE} ${INCLUDE})
set_common_target_properties(LibJpeg)

target_include_directories(LibJpeg PUBLIC .)

target_link_libraries(LibJpeg PRIVATE BuildSettings)

if(MSVC)
    # Disable MSVC-specific warnings
    # - w4244: '+=': conversion from 'int' to 'JCOEF', possible loss of data
    # - w4127: conditional expression is constant
    target_compile_options(LibJpeg PRIVATE /wd4244 /wd4127)
    target_compile_definitions(LibJpeg PRIVATE -D_CRT_SECURE_NO_WARNINGS)
    if(PLATFORM_UNIVERSAL_WINDOWS)
        target_compile_definitions(LibJpeg PRIVATE -DNO_GETENV)
    endif()
endif(MSVC)

source_group("src" FILES ${SOURCE})
source_group("include" FILES ${INCLUDE})

set_target_properties(LibJpeg PROPERTIES
    FOLDER Tools/External
)