cmake_minimum_required(VERSION 3.0)
project(AutoSave VERSION 1.2.2)

set(CMAKE_CXX_FLAGS "-static -static-libgcc -static-libstdc++ -Wall -Werror")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -O2 -DTSFUNCS_DEBUG=false")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} -g -Og")

add_compile_definitions(PROJECT_NAME="${CMAKE_PROJECT_NAME}")
add_compile_definitions(PROJECT_EXPORT=${CMAKE_PROJECT_NAME})
add_compile_definitions(PROJECT_VERSION="${CMAKE_PROJECT_VERSION}")

set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "" FORCE)

if (NOT CMAKE_BUILD_TYPE MATCHES Release AND NOT CMAKE_BUILD_TYPE MATCHES Debug)
	set(CMAKE_BUILD_TYPE Release)
endif ()

find_package(TSFUNCS REQUIRED)

include_directories("${TSFUNCS_INCLUDE_DIRS};${CMAKE_SOURCE_DIR}/include")
link_directories(${TSFUNCS_LIBRARY_DIRS})

set(CMAKE_FIND_LIBRARY_PREFIXES "" "lib")
set(CMAKE_FIND_LIBRARY_SUFFIXES "" ".lib" ".a")

find_library(MINHOOK_LIB_RELEASE_LOC
	NAMES minhook libminhook minhook.x32 minhook.x64
	PATHS ${TSFUNCS_LIBRARY_DIRS}
	REQUIRED
)

find_library(MINHOOK_LIB_DEBUG_LOC
	NAMES minhookd libminhookd minhook.x32d minhook.x64d
	PATHS ${TSFUNCS_LIBRARY_DIRS}
	REQUIRED
)

if (CMAKE_BUILD_TYPE STREQUAL "Debug")
	set(TSFUNCS_LIB "tsfuncsd")
	set(MINHOOK_LIB_LOC ${MINHOOK_LIB_DEBUG_LOC})
else ()
	set(TSFUNCS_LIB "tsfuncs")
	set(MINHOOK_LIB_LOC ${MINHOOK_LIB_RELEASE_LOC})
endif ()

add_library(minhook STATIC IMPORTED)
set_target_properties(minhook PROPERTIES IMPORTED_LOCATION "${MINHOOK_LIB_LOC}")

add_library(${CMAKE_PROJECT_NAME} SHARED src/main.cpp)

set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES PREFIX "")

target_link_libraries(${CMAKE_PROJECT_NAME}
	${TSFUNCS_LIB}
	minhook
	psapi
	gdiplus
	shlwapi
)
