project(MagiTerm)

add_definitions("-DINI_ALLOW_MULTILINE=0")

cmake_minimum_required(VERSION 3.0)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${MagiTerm_SOURCE_DIR}/cmake/")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
if ( CMAKE_SYSTEM_NAME MATCHES "NetBSD" )
	SET(CMAKE_INSTALL_RPATH "/usr/pkg/lib;/usr/X11R7/lib")
endif()
if (WIN32)
	add_executable(${PROJECT_NAME} WIN32 main.cpp Terminal.cpp dialdirectory.cpp filechooser.cpp yesno.cpp inih/ini.c sexyz/zmodem.c sexyz/crc16.c sexyz/crc32.c url-parser-c/url_parser.c MagiTerm.rc)
elseif(APPLE)
	add_executable(${PROJECT_NAME} MACOSX_BUNDLE main.cpp Terminal.cpp dialdirectory.cpp filechooser.cpp yesno.cpp inih/ini.c sexyz/zmodem.c sexyz/crc16.c sexyz/crc32.c url-parser-c/url_parser.c resources/MagiTermIcon.icns)
else()
	add_executable(${PROJECT_NAME} main.cpp Terminal.cpp dialdirectory.cpp filechooser.cpp yesno.cpp inih/ini.c sexyz/zmodem.c sexyz/crc16.c sexyz/crc32.c url-parser-c/url_parser.c)
endif()
find_package(SDL2 REQUIRED)
find_package(LibSSH REQUIRED)
find_package(SDL2_image REQUIRED)

if (WIN32)
	INCLUDE_DIRECTORIES(${SDL2_INCLUDE_DIR} ${LIBSSH_INCLUDE_DIRS} ${SDL2_IMAGE_INCLUDE_DIRS} ${MagiTerm_SOURCE_DIR}/resources)
	TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${SDL2_LIBRARY} ${LIBSSH_LIBRARIES} ${SDL2_IMAGE_LIBRARIES} ws2_32)
	install(FILES resources/ssh.dll DESTINATION bin)
	install(FILES resources/SDL2.dll DESTINATION bin)
	install(FILES resources/SDL2_image.dll DESTINATION bin)
	install(FILES resources/zlib1.dll DESTINATION bin)
	install(FILES resources/libpng16-16.dll DESTINATION bin)
	install(FILES resources/libcrypto-3.dll DESTINATION bin)
	install(FILES resources/FONTS.LICENSE DESTINATION bin)
	install(FILES resources/OPENSSL.LICENSE DESTINATION bin)
	install(FILES resources/LIBSSH.LICENSE DESTINATION bin)
	install(FILES resources/SDL2.LICENSE DESTINATION bin)
	install(FILES resources/SDL2_image.LICENSE DESTINATION bin)
	install(FILES resources/LIBPNG.LICENSE DESTINATION bin)
	install(TARGETS ${PROJECT_NAME} DESTINATION bin)
elseif (CMAKE_HOST_SOLARIS)
	find_package(LibSecret REQUIRED)
	INCLUDE_DIRECTORIES(${SDL2_INCLUDE_DIR} ${SDL2_IMAGE_INCLUDE_DIRS} ${LIBSSH_INCLUDE_DIR} ${LIBSECRET_INCLUDE_DIRS})
	TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${SDL2_LIBRARY} ${LIBSSH_LIBRARIES} ${SDL2_IMAGE_LIBRARIES} ${LIBSECRET_LIBRARIES})
	install(TARGETS ${PROJECT_NAME} DESTINATION bin)
	install(FILES resources/MagiTerm.png DESTINATION share/pixmaps)
	install(FILES resources/MagiTerm.desktop DESTINATION share/applications)
elseif(APPLE)
    set(CMAKE_MACOSX_RPATH TRUE)
    set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/release)
    find_library(COREFOUNDATION_LIBRARY CoreFoundation REQUIRED)
	find_library(SECURITY_LIBRARY Security REQUIRED)
	INCLUDE_DIRECTORIES(${SDL2_INCLUDE_DIR} ${SDL2_IMAGE_INCLUDE_DIRS} ${LIBSSH_INCLUDE_DIR})
	TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${SDL2_LIBRARY} ${LIBSSH_LIBRARIES} ${SDL2_IMAGE_LIBRARIES} ${COREFOUNDATION_LIBRARY} ${SECURITY_LIBRARY} -lutil)
	set(MACOSX_BUNDLE_ICON_FILE MagiTermIcon.icns)
	set(MACOSX_BUNDLE_LONG_VERSION_STRING "1.1.16")
	set(MACOSX_BUNDLE_SHORT_VERSION_STRING "1.1.16")
	set(MACOSX_BUNDLE_BUNDLE_NAME ${PROJECT_NAME})
	set(MACOSX_BUNDLE_BUNDLE_VERSION "1.1.16")
	set(MACOSX_BUNDLE_GUI_IDENTIFIER "com.magickabbs.magiterm")
#  set_target_properties(${PROJECT_NAME} PROPERTIES INSTALL_RPATH "@loader_path/../../../../lib;@loader_path/../lib;@loader_path/../Frameworks;@executable_path/../Frameworks;")
	SET_SOURCE_FILES_PROPERTIES(${CMAKE_CURRENT_SOURCE_DIR}/resources/MagiTermIcon.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
	STRING(REPLACE "-framework Cocoa" "" DIRS ${SDL2_LIBRARY})
    	install(TARGETS ${PROJECT_NAME} DESTINATION .)
	install(FILES resources/SDL2.LICENSE DESTINATION Licenses)
	install(FILES resources/LIBSSH.LICENSE DESTINATION Licenses)
	install(FILES resources/FONTS.LICENSE DESTINATION Licenses)
    	list(APPEND DIRS /Users/andrew/libssh-build/src/)

    	INSTALL(CODE "include(BundleUtilities)
    	fixup_bundle(\"${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}.app\" \"\" \"${DIRS}\")" COMPONENT Runtime)
elseif ( CMAKE_SYSTEM_NAME MATCHES "NetBSD" )
	find_package(LibSecret REQUIRED)
	INCLUDE_DIRECTORIES(${SDL2_INCLUDE_DIR} ${LIBSSH_INCLUDE_DIR} ${SDL2_IMAGE_INCLUDE_DIRS} ${LIBSECRET_INCLUDE_DIRS} /usr/X11R7/include)
	TARGET_LINK_LIBRARIES(${PROJECT_NAME} -L/usr/pkg/lib ${SDL2_LIBRARY} ${LIBSSH_LIBRARIES} ${SDL2_IMAGE_LIBRARIES} ${LIBSECRET_LIBRARIES} -lutil -L/usr/X11R7/lib -rpath=/usr/X11R7/lib -lX11)
	install(TARGETS ${PROJECT_NAME} DESTINATION bin)
	install(FILES resources/MagiTerm.png DESTINATION share/pixmaps)
	install(FILES resources/MagiTerm.desktop DESTINATION share/applications)
elseif ( CMAKE_SYSTEM_NAME MATCHES "Haiku" )
	INCLUDE_DIRECTORIES(${SDL2_INCLUDE_DIR} ${SDL2_IMAGE_INCLUDE_DIRS} ${LIBSSH_INCLUDE_DIR})
	TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${SDL2_LIBRARY} ${LIBSSH_LIBRARIES} ${SDL2_IMAGE_LIBRARIES}  -lnetwork -lssp -lbe)
else()
	find_package(LibSecret REQUIRED)
	INCLUDE_DIRECTORIES(${SDL2_INCLUDE_DIR} ${SDL2_IMAGE_INCLUDE_DIRS} ${LIBSSH_INCLUDE_DIR} ${LIBSECRET_INCLUDE_DIRS})
	TARGET_LINK_LIBRARIES(${PROJECT_NAME} -L/usr/local/lib ${SDL2_LIBRARY} ${LIBSSH_LIBRARIES} ${SDL2_IMAGE_LIBRARIES} ${LIBSECRET_LIBRARIES} -lutil -lX11)
	install(TARGETS ${PROJECT_NAME} DESTINATION bin)
	install(FILES resources/MagiTerm.png DESTINATION share/pixmaps)
	install(FILES resources/MagiTerm.desktop DESTINATION share/applications)
endif()

INCLUDE(InstallRequiredSystemLibraries)

SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "SSH/Telnet Terminal for Bulletin Board Systems")
SET(CPACK_PACKAGE_VENDOR "Andrew Pamment")
SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README.MD")
SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING")
SET(CPACK_PACKAGE_VERSION_MAJOR "1")
SET(CPACK_PACKAGE_VERSION_MINOR "1")
SET(CPACK_PACKAGE_VERSION_PATCH "16")
SET(CPACK_PACKAGE_INSTALL_DIRECTORY "MagiTerm")
IF(WIN32)
  # There is a bug in NSI that does not handle full unix paths properly. Make
  # sure there is at least one set of four (4) backlasshes.
  SET(CPACK_NSIS_MUI_ICON  "${CMAKE_CURRENT_SOURCE_DIR}\\\\resources\\\\icon.ico")
  SET(CPACK_NSIS_MUI_UNIICON  "${CMAKE_CURRENT_SOURCE_DIR}\\\\resources\\\\icon.ico")
  SET(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/resources\\\\win_icon.bmp")
  SET(CPACK_NSIS_INSTALLED_ICON_NAME "MagiTerm.exe")
  SET(CPACK_NSIS_DISPLAY_NAME "MagiTerm")
  SET(CPACK_NSIS_HELP_LINK "https:\\\\\\\\gitlab.com\\\\magickabbs\\\\MagiTerm")
  SET(CPACK_NSIS_URL_INFO_ABOUT "https:\\\\\\\\gitlab.com\\\\magickabbs\\\\MagiTerm")
  SET(CPACK_NSIS_CONTACT "apamment@yandex.com")
  SET(CPACK_PACKAGE_EXECUTABLES "MagiTerm" "MagiTerm")
ELSEIF(APPLE)
    set(CPACK_GENERATOR DragNDrop ${CPACK_GENERATOR})
    set(CPACK_GENERATOR "DragNDrop")
    SET(CPACK_DMG_VOLUME_NAME "MagiTerm")
    SET(CPACK_DMG_DS_STORE "${CMAKE_CURRENT_SOURCE_DIR}/resources/DS_Store")
    SET(CPACK_DMG_BACKGROUND_IMAGE "${CMAKE_CURRENT_SOURCE_DIR}/resources/MacOSBackdrop.png")
ELSE()
  SET(CPACK_STRIP_FILES "MagiTerm")
  SET(CPACK_SOURCE_STRIP_FILES "")
   SET(CPACK_PACKAGE_EXECUTABLES "MagiTerm" "MagiTerm")
ENDIF()

INCLUDE(CPack)
