CMakeLists.txt 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. cmake_minimum_required(VERSION 2.8)
  2. if(NOT DEFINED CMAKE_BUILD_TYPE)
  3. set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type")
  4. endif()
  5. # This shows one way to build a standalone plugin
  6. # outside of lws itself
  7. project(lws-protocol-plugin-example C)
  8. set(PACKAGE "lws-protocol-plugin-example")
  9. set(CPACK_PACKAGE_NAME "${PACKAGE}")
  10. set(CPACK_PACKAGE_VERSION "0.1")
  11. set(CPACK_PACKAGE_VENDOR "andy@warmcat.com")
  12. set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PACKAGE} ${PACKAGE_VERSION}")
  13. set(SOVERSION "1")
  14. set(VERSION "0.1")
  15. set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake/")
  16. message(STATUS "CMAKE_TOOLCHAIN_FILE='${CMAKE_TOOLCHAIN_FILE}'")
  17. # Try to find the current Git hash.
  18. find_package(Git)
  19. if(GIT_EXECUTABLE)
  20. execute_process(
  21. WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
  22. COMMAND "${GIT_EXECUTABLE}" describe
  23. OUTPUT_VARIABLE GIT_HASH
  24. OUTPUT_STRIP_TRAILING_WHITESPACE
  25. )
  26. execute_process(
  27. WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
  28. COMMAND "whoami"
  29. OUTPUT_VARIABLE GIT_USER
  30. OUTPUT_STRIP_TRAILING_WHITESPACE
  31. )
  32. execute_process(
  33. WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
  34. COMMAND "hostname"
  35. OUTPUT_VARIABLE GIT_HOST
  36. OUTPUT_STRIP_TRAILING_WHITESPACE
  37. )
  38. string(REGEX REPLACE "([^\\])[\\]([^\\])" "\\1\\\\\\\\\\2" GIT_USER ${GIT_USER})
  39. set(LWS_BUILD_HASH ${GIT_USER}@${GIT_HOST}-${GIT_HASH})
  40. message("Git commit hash: ${LWS_BUILD_HASH}")
  41. endif()
  42. set(CMAKE_C_FLAGS "-fPIC ${CMAKE_C_FLAGS}")
  43. macro(create_plugin PLUGIN_NAME MAIN_SRC)
  44. set(PLUGIN_SRCS ${MAIN_SRC})
  45. source_group("Headers Private" FILES ${PLUGIN_HDR})
  46. source_group("Sources" FILES ${PLUGIN_SRCS})
  47. add_library(${PLUGIN_NAME} SHARED ${PLUGIN_SRCS} ${PLUGIN_HDR})
  48. target_link_libraries(${PLUGIN_NAME} -lwebsockets)
  49. # Set test app specific defines.
  50. set_property(TARGET ${PLUGIN_NAME}
  51. PROPERTY COMPILE_DEFINITIONS
  52. INSTALL_DATADIR="${CMAKE_INSTALL_PREFIX}/plugins"
  53. )
  54. list(APPEND PLUGINS_LIST ${PLUGIN_NAME})
  55. endmacro()
  56. create_plugin(protocol_example_standalone
  57. "protocol_example_standalone.c")
  58. install(TARGETS ${PLUGINS_LIST}
  59. PERMISSIONS OWNER_WRITE OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE OWNER_READ GROUP_READ WORLD_READ
  60. DESTINATION share/libwebsockets-test-server/plugins
  61. COMPONENT plugins)