cmake_minimum_required(VERSION 2.8)
project(PilLite)

set(Python_ADDITIONAL_VERSIONS 3.3)
find_package(PythonLibs REQUIRED)

set(SRC_PATH ${CMAKE_CURRENT_SOURCE_DIR})
set(THIRDPARTY_PATH ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty)

set(STB_PATH ${THIRDPARTY_PATH}/stb)
set(JPEG_COMPRESSOR_PATH ${THIRDPARTY_PATH}/jpeg-compressor)
set(BOOST_PYTHON_PATH ${THIRDPARTY_PATH}/boost-python)

file(GLOB MAIN_SRC ${SRC_PATH}/*.cpp)
file(GLOB MAIN_HDR ${SRC_PATH}/*.h)
source_group("main" FILES ${MAIN_SRC} ${MAIN_HDR})

file(GLOB STB_IMAGE_SRC ${STB_PATH}/*.c)
file(GLOB STB_IMAGE_HDR ${STB_PATH}/*.h)
source_group("stb_image" FILES ${STB_IMAGE_SRC} ${STB_IMAGE_HDR})

file(GLOB JPEG_COMPRESSOR_SRC ${JPEG_COMPRESSOR_PATH}/*.cpp)
file(GLOB JPEG_COMPRESSOR_HDR ${JPEG_COMPRESSOR_PATH}/*.h)
source_group("jpeg" FILES ${JPEG_COMPRESSOR_SRC} ${JPEG_COMPRESSOR_HDR})

file(GLOB_RECURSE BOOST_PYTHON_SRC ${BOOST_PYTHON_PATH}/libs/python/src/*.cpp)
file(GLOB_RECURSE BOOST_PYTHON_HDR ${BOOST_PYTHON_PATH}/*.hpp)
source_group("boostpython" FILES ${BOOST_PYTHON_SRC} ${BOOST_PYTHON_HDR})

set(SRC ${MAIN_SRC} ${STB_IMAGE_SRC} ${JPEG_COMPRESSOR_SRC} ${BOOST_PYTHON_SRC})
set(HDR ${MAIN_HDR} ${STB_IMAGE_HDR} ${JPEG_COMPRESSOR_HDR} ${BOOST_PYTHON_HDR})

set(SIZEOF_VOIDP ${CMAKE_SIZEOF_VOID_P})
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
  set(ARCH_64 TRUE)
else()
  set(ARCH_64 FALSE)
endif(CMAKE_SIZEOF_VOID_P EQUAL 8)

if(UNIX OR MINGW)
  #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -Werror")
endif()
if(WIN32 AND MSVC)
  #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /WX")
  add_definitions(-D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE)
  add_definitions(-DWIN32 -DHAVE_ROUND)
endif()
if(WIN32 AND ARCH_64 AND NOT MSVC)
  add_definitions(-DMS_WIN64)
endif()
if(WIN32)
  add_definitions(-DMS_NO_COREDLL -DPy_ENABLE_SHARED)
endif()

add_definitions(-DBOOST_PYTHON_SOURCE -DBOOST_MULTI_INDEX_DISABLE_SERIALIZATION
-DBOOST_PYTHON_STATIC_LIB) #-DBOOST_PYTHON_STATIC_MODULE)

if (NOT ${PYTHON_LIBRARY_DEBUG} STREQUAL ${PYTHON_LIBRARY_RELEASE})
	add_definitions(-DBOOST_DEBUG_PYTHON)
endif()

include_directories(
    ${SRC_PATH}
    ${THIRDPARTY_PATH}
    ${STB_PATH}
    ${JPEG_COMPRESSOR_PATH}
    ${BOOST_PYTHON_PATH}
    ${PYTHON_INCLUDE_DIRS}
)

add_library(PilLite SHARED ${SRC} ${HDR})

target_link_libraries(PilLite
    debug ${PYTHON_LIBRARY_DEBUG}
    optimized ${PYTHON_LIBRARY_RELEASE})
