cmake_minimum_required(VERSION 3.10)
string(REGEX MATCH [[[0-9](\.[0-9])*]] VERSION "$ENV{GITHUB_REF_NAME}")
if(NOT VERSION)
  set(VERSION 0.0.0.0)
endif()
if(ENV{GITHUB_REPOSITORY})
  set(HOMEPAGE_URL "https://github.com/$ENV{GITHUB_REPOSITORY}")
  string(REGEX REPLACE ".*/tree-sitter-([^/]*)$" "\\1" NAME $ENV{GITHUB_REPOSITORY})
else()
  set(HOMEPAGE_URL "")
  file(GLOB NAME "${CMAKE_CURRENT_SOURCE_DIR}/bindings/python/*")
  string(REGEX REPLACE ".*/tree_sitter_([^/]*)$" "\\1" NAME ${NAME})
endif()
project(
  tree-sitter-${NAME}
  VERSION ${VERSION}
  DESCRIPTION tree-sitter-${NAME}
  HOMEPAGE_URL "${HOMEPAGE_URL}")
include_directories(src)
add_library(${NAME} SHARED src/parser.c)
set_target_properties(${NAME} PROPERTIES PREFIX "")
if(DEFINED SKBUILD_DATA_DIR)
  set(CMAKE_INSTALL_FULL_LIBDIR ${SKBUILD_DATA_DIR}/lib)
endif()
# https://docs.python.org/3/library/ctypes.html#finding-shared-libraries
if(DEFINED SKBUILD_PLATLIB_DIR)
  # it may be better to determine the shared library name at development time, and hardcode that into the wrapper module
  configure_file(__init__.py.in ${SKBUILD_PLATLIB_DIR}/tree_sitter_${NAME}/__init__.py)
endif()
if(NOT DEFINED CMAKE_INSTALL_FULL_LIBDIR)
  include(GNUInstallDirs)
endif()
install(TARGETS ${NAME} DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}/parser)

set(CPACK_PACKAGE_CONTACT ${HOMEPAGE_URL}/issues)
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Wu Zhenyu <wuzhenyu@ustc.edu>")
set(CPACK_RPM_PACKAGE_LICENSE GPL3)
set(CPACK_RPM_PACKAGE_URL ${HOMEPAGE_URL})
include(CPack)
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
set(CPACK_ARCHIVE_THREADS 0)
set(CPACK_THREADS 0)
