option(PSEMEK_PACKAGE_MODE "Enable packaging mode" OFF)
set(PSEMEK_PACKAGE_ROOT "" CACHE PATH "Packaging environment root")

if(PSEMEK_PACKAGE_MODE)

	if(WIN32)
		set(PSEMEK_PACKAGE_SUFFIX_RAW win)
	elseif(UNIX AND (NOT APPLE))
		set(PSEMEK_PACKAGE_SUFFIX_RAW linux)
	elseif(UNIX AND APPLE)
		set(PSEMEK_PACKAGE_SUFFIX_RAW mac)
	else()
		message(FATAL "Uknown system for packaging")
	endif()
	set(PSEMEK_PACKAGE_SUFFIX ${PSEMEK_PACKAGE_SUFFIX_RAW} CACHE INTERNAL "Packaging suffix" FORCE)

	set(PSEMEK_PACKAGE_LINK_FLAGS_RAW)
	if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang"))
		list(APPEND PSEMEK_PACKAGE_LINK_FLAGS_RAW "-static-libgcc" "-static-libstdc++")
	endif()
	set(PSEMEK_PACKAGE_LINK_FLAGS ${PSEMEK_PACKAGE_LINK_FLAGS_RAW} CACHE INTERNAL "Packaging CXX flags" FORCE)

	set(PSEMEK_COPY_FILES_RAW)

	# SDL2
	find_package(SDL2 REQUIRED)
	list(LENGTH SDL2_LIBRARIES SDL2_LIBRARIES_COUNT)
	if(NOT (SDL2_LIBRARIES_COUNT EQUAL 1))
		message(FATAL "SDL2_LIBRARIES contains more than 1 entry: ${SDL2_LIBRARIES}")
		message(FATAL "Aborting packaging")
	endif()
	list(APPEND PSEMEK_COPY_FILES_RAW ${SDL2_LIBRARIES})

	set(PSEMEK_COPY_FILES_DIR "${CMAKE_CURRENT_BINARY_DIR}/copy_files")
	set(PSEMEK_COPY_FILES_ABSOLUTE)
	foreach(FILE ${PSEMEK_COPY_FILES_RAW})
		get_filename_component(REALPATH "${FILE}" REALPATH)
		get_filename_component(NAME "${REALPATH}" NAME)
		configure_file("${REALPATH}" "${PSEMEK_COPY_FILES_DIR}/${NAME}" COPYONLY)
		list(APPEND PSEMEK_COPY_FILES_ABSOLUTE "${PSEMEK_COPY_FILES_DIR}/${NAME}")
	endforeach()
	set(PSEMEK_COPY_FILES ${PSEMEK_COPY_FILES_ABSOLUTE} CACHE INTERNAL "List of external files to copy into the package" FORCE)

endif()

function(psemek_package_target target)
	if(PSEMEK_PACKAGE_MODE)

		target_link_options(${target} PUBLIC ${PSEMEK_PACKAGE_LINK_FLAGS})

		set_target_properties(${target} PROPERTIES
			BUILD_RPATH "."
		)

		add_custom_command(TARGET ${target} POST_BUILD
			COMMAND ${CMAKE_STRIP} $<TARGET_FILE:${target}>
			COMMAND chrpath -r . $<TARGET_FILE:${target}>
			COMMAND zip ${CMAKE_CURRENT_SOURCE_DIR}/${target}-${PSEMEK_PACKAGE_SUFFIX}.zip -j $<TARGET_FILE:${target}> ${PSEMEK_COPY_FILES}
		)

	endif()
endfunction()
