IF(NOT CHARLS_NAMESPACE)
  SET(CHARLS_NAMESPACE "CHARLS")
  SET(CHARLS_STANDALONE 1)
ENDIF(NOT CHARLS_NAMESPACE)
# In all cases:
STRING(TOLOWER ${CHARLS_NAMESPACE} CHARLS_LIBRARY_NAME)

PROJECT(${CHARLS_NAMESPACE} CXX)
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)

#-----------------------------------------------------------------------------
# CHARLS version number
SET(CHARLS_MAJOR_VERSION 1)
SET(CHARLS_MINOR_VERSION 0)
SET(CHARLS_BUILD_VERSION 0)
SET(CHARLS_VERSION
      "${CHARLS_MAJOR_VERSION}.${CHARLS_MINOR_VERSION}.${CHARLS_BUILD_VERSION}")

#-----------------------------------------------------------------------------
#SET (EXECUTABLE_OUTPUT_PATH ${CHARLS_BINARY_DIR}/bin CACHE PATH "Single output directory for building all executables.")
#SET (LIBRARY_OUTPUT_PATH ${CHARLS_BINARY_DIR}/bin CACHE PATH "Single output directory for building all libraries.")
#MARK_AS_ADVANCED(LIBRARY_OUTPUT_PATH EXECUTABLE_OUTPUT_PATH)

IF(NOT CHARLS_INSTALL_BIN_DIR)
  SET(CHARLS_INSTALL_BIN_DIR "bin")
ENDIF(NOT CHARLS_INSTALL_BIN_DIR)
IF(NOT CHARLS_INSTALL_LIB_DIR)
  SET(CHARLS_INSTALL_LIB_DIR "lib")
ENDIF(NOT CHARLS_INSTALL_LIB_DIR)
IF(NOT CHARLS_INSTALL_INCLUDE_DIR)
  SET(CHARLS_INSTALL_INCLUDE_DIR "include")
ENDIF(NOT CHARLS_INSTALL_INCLUDE_DIR)

#SET(MANGLE_PREFIX ${JPEGLS_LIBRARY_NAME})
#CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/jpegls_mangle.h.in
#               ${CMAKE_CURRENT_BINARY_DIR}/jpegls_mangle.h
#               @ONLY )



# When user specify build type do not override settings:
IF(NOT CMAKE_BUILD_TYPE)
  # The following compiler option are only meant for GCC:
  IF(CMAKE_COMPILER_IS_GNUCC)
    #SET(CMAKE_CXX_FLAGS "-Wall -O3 -g" )
  ENDIF(CMAKE_COMPILER_IS_GNUCC)
ENDIF(NOT CMAKE_BUILD_TYPE)

#OPTION(charls_BUILD_SHARED_LIBS "Build CharLS with shared libraries." OFF)
#SET(BUILD_SHARED_LIBS ${charls_BUILD_SHARED_LIBS})

add_library(${CHARLS_LIBRARY_NAME} header.cpp  interface.cpp  jpegls.cpp
  stdafx.cpp
  )
SET_TARGET_PROPERTIES(${CHARLS_LIBRARY_NAME} PROPERTIES ${GDCM_LIBRARY_PROPERTIES} LINK_INTERFACE_LIBRARIES "")

# Install library
IF(NOT CHARLS_INSTALL_NO_LIBRARIES)
  # Runtime
  INSTALL(TARGETS ${CHARLS_LIBRARY_NAME}
    EXPORT ${GDCM_TARGETS_NAME}
    RUNTIME DESTINATION ${CHARLS_INSTALL_BIN_DIR} COMPONENT Applications
    LIBRARY DESTINATION ${CHARLS_INSTALL_LIB_DIR} COMPONENT Libraries ${NAMELINK_SKIP}
    ARCHIVE DESTINATION ${CHARLS_INSTALL_LIB_DIR} COMPONENT DebugDevel
  )
  #Development
  if(NAMELINK_ONLY)
    INSTALL(TARGETS ${CHARLS_LIBRARY_NAME}
    EXPORT ${GDCM_TARGETS_NAME}
      LIBRARY DESTINATION ${CHARLS_INSTALL_LIB_DIR} COMPONENT DebugDevel ${NAMELINK_ONLY}
    )
  endif(NAMELINK_ONLY)
ENDIF(NOT CHARLS_INSTALL_NO_LIBRARIES)

IF(NOT CHARLS_INSTALL_NO_DEVELOPMENT)
  FILE(GLOB header_files "*.h")
  INSTALL(FILES ${header_files}
    DESTINATION ${CHARLS_INSTALL_INCLUDE_DIR} COMPONENT Headers
  )
ENDIF(NOT CHARLS_INSTALL_NO_DEVELOPMENT)
#add_executable(charlstest test/test.cpp test/time.cpp)
#target_link_libraries (charlstest CharLS)

#include(CTest)
#add_test(charlstest charlstest)
