liba 0.1.15

An algorithm library based on C/C++
Documentation
if(LIBA_WITH_QUICKJS)
  include(${CMAKE_CURRENT_LIST_DIR}/quickjs.cmake)
  add_subdirectory(${QUICKJS_SOURCE_DIR} ${QUICKJS_BINARY_DIR})
  set(QJS_EXECUTABLE ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:qjs>)
else()
  include(../cmake/QuickJSPIC.cmake)
endif()

if(LIBA_CXX)
  file_scaner(SOURCES RECURSE src EXT c h cc hh cpp hpp)
else()
  file_scaner(SOURCES RECURSE src EXT c h)
endif()

set(CMAKE_SHARED_MODULE_PREFIX "")
set(CMAKE_SHARED_MODULE_SUFFIX .so)
add_library(aqjs MODULE $<TARGET_OBJECTS:a> ${SOURCES})
set_target_properties(aqjs PROPERTIES DEFINE_SYMBOL A_EXPORTS OUTPUT_NAME ${PROJECT_NAME})
target_include_directories(aqjs PRIVATE ${QUICKJS_INCLUDE_DIR})
add_library_properties(aqjs PRIVATE alib)
set_library_options(aqjs)

if(LIBA_WITH_QUICKJS OR QUICKJS_PIC)
  if(LIBA_IPO)
    target_link_libraries(aqjs PRIVATE quickjs.lto)
  else()
    target_link_libraries(aqjs PRIVATE quickjs)
  endif()
endif()

if("${LIBA_INSTALL}" MATCHES "^$|[Qq]uick[Jj][Ss]")
  install(TARGETS aqjs
    ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/quickjs
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/quickjs
  )
endif()

if(EXISTS ${CMAKE_CURRENT_LIST_DIR}/test/CMakeLists.txt AND QJS_EXECUTABLE)
  get_property(IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)

  if(NOT CMAKE_VERSION VERSION_LESS 3.0)
    set(WORKING_DIRECTORY $<TARGET_FILE_DIR:aqjs>)
  elseif(IS_MULTI_CONFIG)
    set(WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>)
  else()
    set(WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
  endif()

  add_subdirectory(test)
endif()