5 # Find quickjs include dirs and libraries.
10 # This module defines the following :ref:`Imported Targets <Imported Targets>`:
17 # This module defines the following variables:
21 # ``QUICKJS_INCLUDE_DIR``
23 # ``QUICKJS_LIBRARIES``
34 # Search results are saved persistently in CMake cache entries:
36 # ``QUICKJS_INCLUDE_DIR``
38 # ``QUICKJS_LTO_LIBRARY``
46 include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)
47 find_path(QUICKJS_INCLUDE_DIR NAMES quickjs.h PATH_SUFFIXES quickjs)
48 mark_as_advanced(QUICKJS_INCLUDE_DIR)
50 find_program(QJSC_EXECUTABLE NAMES qjsc)
51 mark_as_advanced(QJSC_EXECUTABLE)
53 find_program(QJS_EXECUTABLE NAMES qjs)
54 mark_as_advanced(QJS_EXECUTABLE)
56 if(EXISTS "${QJS_EXECUTABLE}")
57 execute_process(COMMAND ${QJS_EXECUTABLE} -h OUTPUT_VARIABLE QUICKJS_VERSION)
58 elseif(EXISTS "${QJSC_EXECUTABLE}")
59 execute_process(COMMAND ${QJSC_EXECUTABLE} -h OUTPUT_VARIABLE QUICKJS_VERSION)
62 string(REGEX REPLACE ".*version[ ]+([^\n ]+).*" "\\1" QUICKJS_VERSION "${QUICKJS_VERSION}")
65 find_library(QUICKJS_LTO_LIBRARY NAMES quickjs.lto PATH_SUFFIXES quickjs)
66 find_library(QUICKJS_LIBRARY NAMES quickjs PATH_SUFFIXES quickjs)
67 mark_as_advanced(QUICKJS_LTO_LIBRARY QUICKJS_LIBRARY)
70 get_filename_component(ext "${QUICKJS_LIBRARY}" EXT)
71 if(NOT APPLE AND UNIX)
72 find_library(QUICKJS_MATH_LIBRARY m)
73 mark_as_advanced(QUICKJS_MATH_LIBRARY)
74 if(EXISTS "${QUICKJS_MATH_LIBRARY}")
75 list(APPEND QUICKJS_LIBRARY2 ${QUICKJS_MATH_LIBRARY})
77 list(APPEND QUICKJS_LIBRARY2 m)
79 if(ext STREQUAL CMAKE_STATIC_LIBRARY_SUFFIX)
80 list(APPEND QUICKJS_LIBRARY2 ${CMAKE_DL_LIBS})
83 if(ext STREQUAL CMAKE_STATIC_LIBRARY_SUFFIX)
85 if(CMAKE_USE_PTHREADS_INIT)
86 list(APPEND QUICKJS_LIBRARY2 pthread)
90 if(EXISTS "${QUICKJS_LIBRARY}")
92 ${QUICKJS_LIBRARY} ${QUICKJS_LIBRARY2}
96 find_package_handle_standard_args(QuickJS
109 if(NOT TARGET quickjs.lto AND EXISTS "${QUICKJS_LTO_LIBRARY}")
110 add_library(quickjs.lto UNKNOWN IMPORTED)
111 set_target_properties(quickjs.lto PROPERTIES
112 IMPORTED_LINK_INTERFACE_LANGUAGES C
113 INTERFACE_INCLUDE_DIRECTORIES "${QUICKJS_INCLUDE_DIR}"
114 IMPORTED_LOCATION "${QUICKJS_LTO_LIBRARY}"
116 set_property(TARGET quickjs.lto APPEND PROPERTY
117 INTERFACE_LINK_LIBRARIES ${QUICKJS_LIBRARY2}
120 if(NOT TARGET quickjs AND EXISTS "${QUICKJS_LIBRARY}")
121 add_library(quickjs UNKNOWN IMPORTED)
122 set_target_properties(quickjs PROPERTIES
123 IMPORTED_LINK_INTERFACE_LANGUAGES C
124 INTERFACE_INCLUDE_DIRECTORIES "${QUICKJS_INCLUDE_DIR}"
125 IMPORTED_LOCATION "${QUICKJS_LIBRARY}"
127 set_property(TARGET quickjs APPEND PROPERTY
128 INTERFACE_LINK_LIBRARIES ${QUICKJS_LIBRARY2}