text: if(NOT DEFINED CMAKE_MINIMUM_REQUIRED_VERSION)
    cmake_minimum_required(VERSION 2.8.7)
  endif()
  
  if(NOT JPEG_NAMESPACE)
    set(JPEG_NAMESPACE "JPEG")
    set(JPEG_STANDALONE 1)
    set(JPEG_INSTALL_BIN_DIR bin)
    set(JPEG_INSTALL_LIB_DIR lib)
    set(JPEG_INSTALL_INCLUDE_DIR include/ljpeg-62)
    option(JPEG_BUILD_SHARED_LIBS "Build IJG/JPEG with shared libraries." OFF)
    set(BUILD_SHARED_LIBS ${JPEG_BUILD_SHARED_LIBS})
  endif()
  # In all cases:
  string(TOLOWER ${JPEG_NAMESPACE} JPEG_LIBRARY_NAME)
  
  
  project(${JPEG_NAMESPACE} C)
  
  foreach(p
      CMP0042
      CMP0063
      )
    if(POLICY ${p})
      cmake_policy(SET ${p} NEW)
    endif()
  endforeach()
  
  # Do full dependency headers.
  include_regular_expression("^.*$")
  
  # let advanced user the option to define JPEG_API_VERSION:
  if(NOT DEFINED JPEG_API_VERSION)
    set(JPEG_API_VERSION "${GDCM_MAJOR_VERSION}.${GDCM_MINOR_VERSION}")
  endif()
  set(JPEG_LIBRARY_PROPERTIES ${JPEG_LIBRARY_PROPERTIES}
    VERSION "${GDCM_VERSION}"
    SOVERSION "${JPEG_API_VERSION}"
  )
  
  
  # memmgr back ends: compile only one of these into a working library
  # (For now, let's use the mode that requires the image fit into memory.
  # This is the recommended mode for Win32 anyway.)
  set(systemdependent_SRCS jmemnobs.c)
  
  # library object files common to compression and decompression
  set(common_SRCS
  jcomapi.c jutils.c jerror.c jmemmgr.c
  #jmemsrc.c
  )
  
  # compression library object files
  set(compression_SRCS
  jcapimin.c jcapistd.c jctrans.c jcparam.c  jcinit.c
  jcmaster.c jcmarker.c jcmainct.c jcprepct.c jccoefct.c jccolor.c
  jcsample.c jchuff.c jcphuff.c jcdctmgr.c jfdctfst.c jfdctflt.c
  jdatadst.c
  )
  
  # Lossy (DCT) codec:
  set(comp_lossy_SRCS
  jfdctint.c
  jclossy.c
  
  # lossless
  jclossls.c
  
  #jdarith.c
  jcodec.c
  jcscale.c
  jcshuff.c
  jclhuff.c
  jcpred.c
  jcdiffct.c
  )
  
  # decompression library object files
  set(decompression_SRCS
  jdapimin.c jdapistd.c jdtrans.c  jdmaster.c
  jdinput.c jdmarker.c jdhuff.c jdphuff.c jdmainct.c jdcoefct.c
  jdpostct.c jddctmgr.c jidctfst.c jidctflt.c jidctint.c jidctred.c
  jdsample.c jdcolor.c jquant1.c jquant2.c jdmerge.c
  jdatasrc.c
  )
  
  set(decomp_lossy_SRCS
   jdlossls.c jdlossy.c
   #jcarith.c
  jdlhuff.c
  jddiffct.c
  jdpred.c
  jdscale.c
  jdshuff.c
  )
  
  set(JPEG_HEADER_FILES
    jchuff.h
    jdct.h
    jdhuff.h
    jerror.h
    jinclude.h
    jmemsys.h
    jmorecfg.h
    jpegint.h
    jpeglib.h
    jversion.h
    jlossy.h
    jlossls.h
    )
  
  set(JPEG_SOURCES)
  foreach(src
    ${systemdependent_SRCS}
    ${common_SRCS}
    ${compression_SRCS}
    ${decompression_SRCS}
    ${comp_lossy_SRCS}
    ${decomp_lossy_SRCS}
    )
    set(JPEG_SOURCES ${JPEG_SOURCES}
      "${CMAKE_CURRENT_SOURCE_DIR}/${src}")
  endforeach()
  
  if (BUILD_SHARED_LIBS)
    set(JPEGDLL 1)
  else ()
    set(JPEGSTATIC 1)
  endif ()
  
  # Generate three libraries: jpeg 8bits, 12bits and 16bits
  # using only one source directory
  
  #-----------------------------------------------------------------------------
  include (${CMAKE_ROOT}/Modules/CheckIncludeFile.cmake)
  CHECK_INCLUDE_FILE("stddef.h"       HAVE_STDDEF_H)
  CHECK_INCLUDE_FILE("stdlib.h"       HAVE_STDLIB_H)
  
  include_directories(${CMAKE_CURRENT_BINARY_DIR})
  # Particular case jpegcmake.h needs to be specified either 8, 12 or 16 bits:
  # also configure the name mangling
  foreach(bits 8 12 16)
    set(CMAKE_BITS_IN_JSAMPLE ${bits})
    configure_file(${CMAKE_CURRENT_SOURCE_DIR}/jpegcmake.h.in
                   ${CMAKE_CURRENT_BINARY_DIR}/${bits}/jpegcmake.h
                   @ONLY)
    set(MANGLE_PREFIX ${JPEG_LIBRARY_NAME}${bits})
    configure_file(${CMAKE_CURRENT_SOURCE_DIR}/mangle_jpeg.h.in
                   ${CMAKE_CURRENT_BINARY_DIR}/${bits}/mangle_jpeg${bits}bits.h
                   @ONLY)
  
  
    # FIXME FIXME FIXME
    configure_file(${CMAKE_CURRENT_SOURCE_DIR}/jmorecfg.h
                   ${CMAKE_CURRENT_BINARY_DIR}/${bits}/jmorecfg.h
                   COPYONLY)
    configure_file(${CMAKE_CURRENT_SOURCE_DIR}/jconfig.h
                   ${CMAKE_CURRENT_BINARY_DIR}/${bits}/jconfig.h
                   COPYONLY)
    configure_file(${CMAKE_CURRENT_SOURCE_DIR}/jpeglib.h
                   ${CMAKE_CURRENT_BINARY_DIR}/${bits}/jpeglib.h
                   COPYONLY)
    configure_file(${CMAKE_CURRENT_SOURCE_DIR}/jerror.h
                   ${CMAKE_CURRENT_BINARY_DIR}/${bits}/jerror.h
                   COPYONLY)
    configure_file(${CMAKE_CURRENT_SOURCE_DIR}/jinclude.h
                   ${CMAKE_CURRENT_BINARY_DIR}/${bits}/jinclude.h
                   COPYONLY)
  endforeach()
  
  # I could not get the depencencies in CMake to work properly so instead
  # have multiple directory for each target that will ensure proper recompilation
  # of the objects files
  add_subdirectory(8)
  add_subdirectory(12)
  add_subdirectory(16)
  
  if(NOT JPEG_INSTALL_NO_DEVELOPMENT)
    file(GLOB header_files "*.h")
    install(FILES ${header_files}
      DESTINATION ${JPEG_INSTALL_INCLUDE_DIR} COMPONENT Headers
    )
  endif()
  