if (NOT LINUX)
   if (UNIX)
       message(WARNING "This file has not been tested on non-linux unix systems. It may not work!")
       # TODO: Do more testing on non-linux UNIX systems.
   else()
       message(FATAL_ERROR "This file is only for use with unix systems")
   endif()
endif()

if (CTAN_BUILD)
   message(FATAL_ERROR "system install is not supported for CTAN builds.")
endif()

# Requires gnu-install-macros to be ran already


set(PERMISSION_755_LIST
       OWNER_READ OWNER_WRITE OWNER_EXECUTE
       GROUP_READ GROUP_EXECUTE
       WORLD_READ WORLD_EXECUTE
)

set(PERMISSION_644_LIST
       OWNER_READ OWNER_WRITE
       GROUP_READ
       WORLD_READ
)

set(ASY_BASE_EXTRA_FILES_NAME
       asy-mode.el asy-init.el asy.vim
       asy_filetype.vim asy-kate.sh asymptote.py
       reload.js nopapersize.ps)

list(
       TRANSFORM ASY_BASE_EXTRA_FILES_NAME
       PREPEND ${ASY_SOURCE_BASE_DIR}/
       OUTPUT_VARIABLE ASY_BASE_EXTRA_FILES
)


set(ASY_INSTALL_SYSDIR_VALUE ${CMAKE_INSTALL_DATADIR}/asymptote)
set(ASY_BASE_INSTALL_COMPONENT asy)
# installing files

#region base files
install(
       TARGETS asy
       PERMISSIONS ${PERMISSION_755_LIST}
       COMPONENT ${ASY_BASE_INSTALL_COMPONENT}
       DESTINATION ${CMAKE_INSTALL_BINDIR}
)

# base/* -> <sysdir>/
install(
       DIRECTORY ${ASY_BUILD_BASE_DIR}/
       DESTINATION ${ASY_INSTALL_SYSDIR_VALUE}
       COMPONENT ${ASY_BASE_INSTALL_COMPONENT}
       FILE_PERMISSIONS ${PERMISSION_644_LIST}
)

# extra base files -> <sysdir>/
install(
       FILES ${ASY_MISC_FILES_OUT_DIR}/asy-keywords.el ${ASY_BASE_EXTRA_FILES}
       DESTINATION ${ASY_INSTALL_SYSDIR_VALUE}
       COMPONENT ${ASY_BASE_INSTALL_COMPONENT}
       PERMISSIONS ${PERMISSION_644_LIST}
)
#endregion

#region example files
set(ASYMPTOTE_EXAMPLESDIR_VALUE ${ASY_INSTALL_SYSDIR_VALUE}/examples)

# example files
install(
       DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/examples/
       DESTINATION ${ASYMPTOTE_EXAMPLESDIR_VALUE}
       COMPONENT ${ASY_BASE_INSTALL_COMPONENT}
       FILE_PERMISSIONS ${PERMISSION_644_LIST}
)

# extra examples from docs -> examples
install(
       DIRECTORY ${ASY_DOC_DIR}/extra/
       DESTINATION ${ASYMPTOTE_EXAMPLESDIR_VALUE}
       COMPONENT ${ASY_BASE_INSTALL_COMPONENT}
       FILES_MATCHING PATTERN "*.asy"
       PERMISSIONS ${PERMISSION_644_LIST}
)

# DOCEXTRA files -> examples
install(
       DIRECTORY ${ASY_DOC_DIR}/
       DESTINATION ${ASYMPTOTE_EXAMPLESDIR_VALUE}
       COMPONENT ${ASY_BASE_INSTALL_COMPONENT}
       FILES_MATCHING
           PATTERN "*.asy"
           PATTERN "*.csv"
           PATTERN "*.dat"
       PERMISSIONS ${PERMISSION_644_LIST}
)

set(ASY_DOCEXTRA_FILE_NAMES latexusage.tex externalprc.tex pixel.pdf)
list(
       TRANSFORM ASY_DOCEXTRA_FILE_NAMES
       PREPEND ${ASY_DOC_DIR}/
       OUTPUT_VARIABLE ASY_DOCEXTRA_FILES
)

install(
       FILES ${ASY_DOCEXTRA_FILES}
       DESTINATION ${ASYMPTOTE_EXAMPLESDIR_VALUE}
       COMPONENT ${ASY_BASE_INSTALL_COMPONENT}
       PERMISSIONS ${PERMISSION_644_LIST}
)
#endregion

#region documentation files
if (ENABLE_DOCGEN)
   set(ASY_DOCS_INSTALL_COMPONENT asy-docs)
   set(ASY_INSTALL_DOCDIR_VALUE ${CMAKE_INSTALL_DATADIR}/asymptote/doc)

   set(ASY_DOCFILE_PDF_FILES ${BASE_ASYMPTOTE_DOC_AND_TEX_FILES})
   list(FILTER ASY_DOCFILE_PDF_FILES INCLUDE REGEX "^.*\.pdf$")
   list(APPEND ASY_DOCFILE_PDF_FILES ${ASY_TEX_BUILD_ROOT}/asymptote.pdf)

   # pdf files
   install(
           FILES ${ASY_DOCFILE_PDF_FILES}
           COMPONENT ${ASY_DOCS_INSTALL_COMPONENT}
           DESTINATION ${ASY_INSTALL_DOCDIR_VALUE}
           PERMISSIONS ${PERMISSION_644_LIST}
   )

   # manpage
   install(
           FILES ${ASY_TEX_BUILD_ROOT}/asy.1
           COMPONENT ${ASY_DOCS_INSTALL_COMPONENT}
           DESTINATION ${CMAKE_INSTALL_MANDIR}/man1
           PERMISSIONS ${PERMISSION_644_LIST}
   )
endif()
#endregion