liba 0.1.15

An algorithm library based on C/C++
Documentation
# .rst:
# FindQuickJS
# -----------
#
# Find quickjs include dirs and libraries.
#
# Imported Targets
# ^^^^^^^^^^^^^^^^
#
# This module defines the following :ref:`Imported Targets <Imported Targets>`:
#
# ``quickjs``
#
# Result Variables
# ^^^^^^^^^^^^^^^^
#
# This module defines the following variables:
#
# ``QUICKJS_FOUND``
#
# ``QUICKJS_INCLUDE_DIR``
#
# ``QUICKJS_LIBRARIES``
#
# ``QUICKJS_VERSION``
#
# ``QJSC_EXECUTABLE``
#
# ``QJS_EXECUTABLE``
#
# Cache variables
# ^^^^^^^^^^^^^^^
#
# Search results are saved persistently in CMake cache entries:
#
# ``QUICKJS_INCLUDE_DIR``
#
# ``QUICKJS_LTO_LIBRARY``
#
# ``QUICKJS_LIBRARY``
#
# ``QJSC_EXECUTABLE``
#
# ``QJS_EXECUTABLE``
#
include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)
find_path(QUICKJS_INCLUDE_DIR NAMES quickjs.h PATH_SUFFIXES quickjs)
mark_as_advanced(QUICKJS_INCLUDE_DIR)

find_program(QJSC_EXECUTABLE NAMES qjsc)
mark_as_advanced(QJSC_EXECUTABLE)

find_program(QJS_EXECUTABLE NAMES qjs)
mark_as_advanced(QJS_EXECUTABLE)

if(EXISTS "${QJS_EXECUTABLE}")
  execute_process(COMMAND ${QJS_EXECUTABLE} -h OUTPUT_VARIABLE QUICKJS_VERSION)
elseif(EXISTS "${QJSC_EXECUTABLE}")
  execute_process(COMMAND ${QJSC_EXECUTABLE} -h OUTPUT_VARIABLE QUICKJS_VERSION)
endif()
if(QUICKJS_VERSION)
  string(REGEX REPLACE ".*version[ ]+([^\n ]+).*" "\\1" QUICKJS_VERSION "${QUICKJS_VERSION}")
endif()

find_library(QUICKJS_LTO_LIBRARY NAMES quickjs.lto PATH_SUFFIXES quickjs)
find_library(QUICKJS_LIBRARY NAMES quickjs PATH_SUFFIXES quickjs)
mark_as_advanced(QUICKJS_LTO_LIBRARY QUICKJS_LIBRARY)

set(QUICKJS_LIBRARY2)
get_filename_component(ext "${QUICKJS_LIBRARY}" EXT)
if(NOT APPLE AND UNIX)
  find_library(QUICKJS_MATH_LIBRARY m)
  mark_as_advanced(QUICKJS_MATH_LIBRARY)
  if(EXISTS "${QUICKJS_MATH_LIBRARY}")
    list(APPEND QUICKJS_LIBRARY2 ${QUICKJS_MATH_LIBRARY})
  else()
    list(APPEND QUICKJS_LIBRARY2 m)
  endif()
  if(ext STREQUAL CMAKE_STATIC_LIBRARY_SUFFIX)
    list(APPEND QUICKJS_LIBRARY2 ${CMAKE_DL_LIBS})
  endif()
endif()
if(ext STREQUAL CMAKE_STATIC_LIBRARY_SUFFIX)
  find_package(Threads)
  if(CMAKE_USE_PTHREADS_INIT)
    list(APPEND QUICKJS_LIBRARY2 pthread)
  endif()
endif()

if(EXISTS "${QUICKJS_LIBRARY}")
  set(QUICKJS_LIBRARIES
    ${QUICKJS_LIBRARY} ${QUICKJS_LIBRARY2}
  )
endif()

find_package_handle_standard_args(QuickJS
  FOUND_VAR
    QUICKJS_FOUND
  REQUIRED_VARS
    QUICKJS_LIBRARIES
    QUICKJS_INCLUDE_DIR
    QJSC_EXECUTABLE
    QJS_EXECUTABLE
  VERSION_VAR
    QUICKJS_VERSION
)

if(QUICKJS_FOUND)
  if(NOT TARGET quickjs.lto AND EXISTS "${QUICKJS_LTO_LIBRARY}")
    add_library(quickjs.lto UNKNOWN IMPORTED)
    set_target_properties(quickjs.lto PROPERTIES
      IMPORTED_LINK_INTERFACE_LANGUAGES C
      INTERFACE_INCLUDE_DIRECTORIES "${QUICKJS_INCLUDE_DIR}"
      IMPORTED_LOCATION "${QUICKJS_LTO_LIBRARY}"
    )
    set_property(TARGET quickjs.lto APPEND PROPERTY
      INTERFACE_LINK_LIBRARIES ${QUICKJS_LIBRARY2}
    )
  endif()
  if(NOT TARGET quickjs AND EXISTS "${QUICKJS_LIBRARY}")
    add_library(quickjs UNKNOWN IMPORTED)
    set_target_properties(quickjs PROPERTIES
      IMPORTED_LINK_INTERFACE_LANGUAGES C
      INTERFACE_INCLUDE_DIRECTORIES "${QUICKJS_INCLUDE_DIR}"
      IMPORTED_LOCATION "${QUICKJS_LIBRARY}"
    )
    set_property(TARGET quickjs APPEND PROPERTY
      INTERFACE_LINK_LIBRARIES ${QUICKJS_LIBRARY2}
    )
  endif()
endif()