diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..8b37e2e84845530c80a8aa5f20a90afed8f969fa --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,106 @@ +cmake_minimum_required(VERSION 3.16.5) + +set(LibjpegSrc "${PROJECT_SOURCE_DIR}/third_party/libjpeg") + +include_directories(${LibjpegSrc}) + +include(CheckIncludeFile) +include(CheckSymbolExists) +include(CheckCSourceCompiles) + +check_include_file(stddef.h HAVE_STDDEF_H) +check_include_file(stdlib.h HAVE_STDLIB_H) +check_include_file(string.h HAVE_STRING_H) +check_symbol_exists(size_t stddef.h stdlib.h stdio.h HAVE_ANSI_SIZE_T) +check_symbol_exists(setmode io.h USE_SETMODE) +check_c_source_compiles( +" +void f() +{ + char x[ (char)0xff ]; /* x[-1] if signed */ +} +" +CHAR_IS_UNSIGNED) + +check_c_source_compiles( +" +void f() +{ + char x[ ((signed char)0xff) >> 1 ]; /* x[-1] if signed */ +} +" +RIGHT_SHIFT_IS_UNSIGNED) + +if(NOT HAVE_STRING_H) + set(NEED_BSD_STRINGS TRUE) +else() + set(NEED_BSD_STRINGS FALSE) +endif() + +if(NOT HAVE_ANSI_SIZE_T) + set(NEED_SYS_TYPES_H TRUE) +else() + set(NEED_SYS_TYPES_H FALSE) +endif() + +configure_file(${LibjpegSrc}/jconfig.txt ${LibjpegSrc}/jconfig.h) + +add_library(libjpeg STATIC + ${LibjpegSrc}/cdjpeg.c + ${LibjpegSrc}/jaricom.c + ${LibjpegSrc}/jcapimin.c + ${LibjpegSrc}/jcapistd.c + ${LibjpegSrc}/jcarith.c + ${LibjpegSrc}/jccoefct.c + ${LibjpegSrc}/jccolor.c + ${LibjpegSrc}/jcdctmgr.c + ${LibjpegSrc}/jchuff.c + ${LibjpegSrc}/jcinit.c + ${LibjpegSrc}/jcmainct.c + ${LibjpegSrc}/jcmarker.c + ${LibjpegSrc}/jcmaster.c + ${LibjpegSrc}/jcomapi.c + ${LibjpegSrc}/jcparam.c + ${LibjpegSrc}/jcprepct.c + ${LibjpegSrc}/jcsample.c + ${LibjpegSrc}/jctrans.c + ${LibjpegSrc}/jdapimin.c + ${LibjpegSrc}/jdapistd.c + ${LibjpegSrc}/jdarith.c + ${LibjpegSrc}/jdatadst.c + ${LibjpegSrc}/jdatasrc.c + ${LibjpegSrc}/jdcoefct.c + ${LibjpegSrc}/jdcolor.c + ${LibjpegSrc}/jddctmgr.c + ${LibjpegSrc}/jdhuff.c + ${LibjpegSrc}/jdinput.c + ${LibjpegSrc}/jdmainct.c + ${LibjpegSrc}/jdmarker.c + ${LibjpegSrc}/jdmaster.c + ${LibjpegSrc}/jdmerge.c + ${LibjpegSrc}/jdpostct.c + ${LibjpegSrc}/jdsample.c + ${LibjpegSrc}/jdtrans.c + ${LibjpegSrc}/jerror.c + ${LibjpegSrc}/jfdctflt.c + ${LibjpegSrc}/jfdctfst.c + ${LibjpegSrc}/jfdctint.c + ${LibjpegSrc}/jidctflt.c + ${LibjpegSrc}/jidctfst.c + ${LibjpegSrc}/jidctint.c + ${LibjpegSrc}/jmemansi.c + ${LibjpegSrc}/jmemmgr.c + ${LibjpegSrc}/jquant1.c + ${LibjpegSrc}/jquant2.c + ${LibjpegSrc}/jutils.c + ${LibjpegSrc}/rdbmp.c + ${LibjpegSrc}/rdcolmap.c + ${LibjpegSrc}/rdgif.c + ${LibjpegSrc}/rdppm.c + ${LibjpegSrc}/rdrle.c + ${LibjpegSrc}/rdswitch.c + ${LibjpegSrc}/rdtarga.c + ${LibjpegSrc}/transupp.c + ) + +target_include_directories(libjpeg PUBLIC ${LibjpegSrc})