﻿cmake_minimum_required (VERSION 3.9)


project ("imaGL" VERSION 0.1.1 DESCRIPTION "A lightweight lib to load images in OpenGL applications")

# DO NOT REMOVE THE FOLLOWING COMMENT. It's needed for conan package.
# conan insert

option(BUILD_TESTING "Build test program" OFF)
option(BUILD_DOCUMENTATION "Build doxygen documentation" OFF)
option(STATIC_LIB "Build ImaGL as a static library" OFF)
option(SUPPORT_PNG "Build ImaGL with PNG file format support" ON)

set(CONAN_PROFILE default CACHE STRING "The conan profile you need to use to compile. See conan documentation on https://conan.io")

#set CC and CXX environment variables to this cmake instance compiler (needed if conan needs to build some packages)
set(ENV{CC} ${CMAKE_C_COMPILER})
set(ENV{CXX} ${CMAKE_CXX_COMPILER})

#for some mystical reasons, clang sometimes use a very old stdlib (libstdc++)
if(CMAKE_CXX_COMPILER MATCHES [[clang\+\+.*]])
	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
endif()

# Generate conanfile.txt from current cmake cache configuration
file(STRINGS conanfile.in CONANFILE)
file(WRITE "${CMAKE_BINARY_DIR}/conanfile.txt" "# Do not modify this file, it is automatically generated by CMake\n")
foreach(CONANFILE_LINE ${CONANFILE})
	#Test for new section
	string(REGEX MATCH [[^[ \t\r\n]*\[]] THISLINE ${CONANFILE_LINE})
	if(THISLINE)
		string(PREPEND CONANFILE_LINE "\n")
	endif()
	#Test for libPNG
	string(REGEX MATCH [[^.*libpng]] THISLINE ${CONANFILE_LINE})
	if(THISLINE AND NOT SUPPORT_PNG)
		string(PREPEND CONANFILE_LINE "# ")
	endif()
	#Test for catch2 (for testing)
	string(REGEX MATCH [[^.*catch2]] THISLINE ${CONANFILE_LINE})
	if(THISLINE AND NOT BUILD_TESTING)
		string(PREPEND CONANFILE_LINE "# ")
	endif()

	file(APPEND "${CMAKE_BINARY_DIR}/conanfile.txt" "${CONANFILE_LINE}\n")
endforeach()

# Execute conan to install dependencies in Release and / or Debug mode
get_property(is_multi_config GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
if(is_multi_config)
	message("Multi config generator")
	execute_process(COMMAND conan install "${CMAKE_BINARY_DIR}" --profile=${CONAN_PROFILE} --build missing -s build_type=Debug -if "${CMAKE_BINARY_DIR}" -g cmake_multi)
	execute_process(COMMAND conan install "${CMAKE_BINARY_DIR}" --profile=${CONAN_PROFILE} --build missing -s build_type=Release -if "${CMAKE_BINARY_DIR}" -g cmake_multi)
else()
	message("Build type : ${CMAKE_BUILD_TYPE}")
	execute_process(COMMAND conan install "${CMAKE_BINARY_DIR}" --profile=${CONAN_PROFILE} --build missing -s build_type=${CMAKE_BUILD_TYPE} -if "${CMAKE_BINARY_DIR}")
endif()

if(EXISTS ${CMAKE_BINARY_DIR}/conanbuildinfo_multi.cmake)
    include(${CMAKE_BINARY_DIR}/conanbuildinfo_multi.cmake)
else()
    include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
endif()
conan_basic_setup(TARGETS)

set(CMAKE_DEBUG_POSTFIX d)
set(CMAKE_STATIC_LIBRARY_SUFFIX "s${CMAKE_STATIC_LIBRARY_SUFFIX}")

# Add subdirectories

add_subdirectory ("imaGL")

if(BUILD_TESTING)
	enable_testing()
	add_subdirectory ("test")
endif()

if(BUILD_DOCUMENTATION)
	add_subdirectory("doc")
endif()
