1d4afb5ceSopenharmony_cicmake_minimum_required(VERSION 2.8.12) 2d4afb5ceSopenharmony_cifind_package(libwebsockets CONFIG REQUIRED) 3d4afb5ceSopenharmony_ci 4d4afb5ceSopenharmony_ciif(NOT DEFINED CMAKE_BUILD_TYPE) 5d4afb5ceSopenharmony_ci set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type") 6d4afb5ceSopenharmony_ciendif() 7d4afb5ceSopenharmony_ci 8d4afb5ceSopenharmony_ci# This shows one way to build a standalone plugin 9d4afb5ceSopenharmony_ci# outside of lws itself 10d4afb5ceSopenharmony_ci 11d4afb5ceSopenharmony_ciproject(lws-protocol-plugin-example C) 12d4afb5ceSopenharmony_ci 13d4afb5ceSopenharmony_ciset(PACKAGE "lws-protocol-plugin-example") 14d4afb5ceSopenharmony_ciset(CPACK_PACKAGE_NAME "${PACKAGE}") 15d4afb5ceSopenharmony_ciset(CPACK_PACKAGE_VERSION "0.1") 16d4afb5ceSopenharmony_ciset(CPACK_PACKAGE_VENDOR "andy@warmcat.com") 17d4afb5ceSopenharmony_ciset(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PACKAGE} ${PACKAGE_VERSION}") 18d4afb5ceSopenharmony_ciset(SOVERSION "1") 19d4afb5ceSopenharmony_ciset(VERSION "0.1") 20d4afb5ceSopenharmony_ci 21d4afb5ceSopenharmony_ciset(PLUGIN_NAME "protocol_example_standalone") 22d4afb5ceSopenharmony_ci# space-separated list of sources 23d4afb5ceSopenharmony_ciset(PLUGIN_SRCS protocol_example_standalone.c) 24d4afb5ceSopenharmony_ci 25d4afb5ceSopenharmony_ciset(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake/") 26d4afb5ceSopenharmony_ci 27d4afb5ceSopenharmony_cimessage(STATUS "CMAKE_TOOLCHAIN_FILE='${CMAKE_TOOLCHAIN_FILE}'") 28d4afb5ceSopenharmony_ci 29d4afb5ceSopenharmony_ci# Try to find the current Git hash. 30d4afb5ceSopenharmony_cifind_package(Git) 31d4afb5ceSopenharmony_ciif(GIT_EXECUTABLE) 32d4afb5ceSopenharmony_ci execute_process( 33d4afb5ceSopenharmony_ci WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" 34d4afb5ceSopenharmony_ci COMMAND "${GIT_EXECUTABLE}" describe 35d4afb5ceSopenharmony_ci OUTPUT_VARIABLE GIT_HASH 36d4afb5ceSopenharmony_ci OUTPUT_STRIP_TRAILING_WHITESPACE 37d4afb5ceSopenharmony_ci ) 38d4afb5ceSopenharmony_ci execute_process( 39d4afb5ceSopenharmony_ci WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" 40d4afb5ceSopenharmony_ci COMMAND "whoami" 41d4afb5ceSopenharmony_ci OUTPUT_VARIABLE GIT_USER 42d4afb5ceSopenharmony_ci OUTPUT_STRIP_TRAILING_WHITESPACE 43d4afb5ceSopenharmony_ci ) 44d4afb5ceSopenharmony_ci execute_process( 45d4afb5ceSopenharmony_ci WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" 46d4afb5ceSopenharmony_ci COMMAND "hostname" 47d4afb5ceSopenharmony_ci OUTPUT_VARIABLE GIT_HOST 48d4afb5ceSopenharmony_ci OUTPUT_STRIP_TRAILING_WHITESPACE 49d4afb5ceSopenharmony_ci ) 50d4afb5ceSopenharmony_ci string(REGEX REPLACE "([^\\])[\\]([^\\])" "\\1\\\\\\\\\\2" GIT_USER ${GIT_USER}) 51d4afb5ceSopenharmony_ci set(LWS_BUILD_HASH ${GIT_USER}@${GIT_HOST}-${GIT_HASH}) 52d4afb5ceSopenharmony_ci message("Git commit hash: ${LWS_BUILD_HASH}") 53d4afb5ceSopenharmony_ciendif() 54d4afb5ceSopenharmony_ci 55d4afb5ceSopenharmony_ciset(CMAKE_C_FLAGS "-fPIC ${CMAKE_C_FLAGS}") 56d4afb5ceSopenharmony_ci 57d4afb5ceSopenharmony_cisource_group("Headers Private" FILES ${PLUGIN_HDR}) 58d4afb5ceSopenharmony_cisource_group("Sources" FILES ${PLUGIN_SRCS}) 59d4afb5ceSopenharmony_ciadd_library(${PLUGIN_NAME} SHARED ${PLUGIN_SRCS} ${PLUGIN_HDR}) 60d4afb5ceSopenharmony_citarget_compile_definitions(${PLUGIN_NAME} PRIVATE LWS_BUILDING_SHARED) 61d4afb5ceSopenharmony_ci 62d4afb5ceSopenharmony_citarget_link_libraries(${PLUGIN_NAME} -lwebsockets ${LIBWEBSOCKETS_DEP_LIBS}) 63d4afb5ceSopenharmony_ci 64d4afb5ceSopenharmony_ci# Set test app specific defines. 65d4afb5ceSopenharmony_ciset_property(TARGET ${PLUGIN_NAME} 66d4afb5ceSopenharmony_ci PROPERTY COMPILE_DEFINITIONS 67d4afb5ceSopenharmony_ci INSTALL_DATADIR="${CMAKE_INSTALL_PREFIX}/plugins" 68d4afb5ceSopenharmony_ci) 69d4afb5ceSopenharmony_ci 70d4afb5ceSopenharmony_cilist(APPEND PLUGINS_LIST ${PLUGIN_NAME}) 71d4afb5ceSopenharmony_ci 72d4afb5ceSopenharmony_ciinstall(TARGETS ${PLUGINS_LIST} 73d4afb5ceSopenharmony_ci PERMISSIONS OWNER_WRITE OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE OWNER_READ GROUP_READ WORLD_READ 74d4afb5ceSopenharmony_ci DESTINATION share/libwebsockets-test-server/plugins 75d4afb5ceSopenharmony_ci COMPONENT plugins) 76