CMakeLists.txt 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. cmake_minimum_required(VERSION 3.5)
  2. PROJECT(uqmi C)
  3. OPTION(BUILD_STATIC OFF)
  4. ADD_DEFINITIONS(-Os -ggdb -Wall -Werror --std=gnu99 -Wmissing-declarations -Wno-enum-conversion -Wno-dangling-pointer)
  5. SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "")
  6. FIND_PATH(ubox_include_dir libubox/usock.h)
  7. FIND_PATH(blobmsg_json_include_dir libubox/blobmsg_json.h)
  8. FIND_PATH(json_include_dir json-c/json.h json/json.h json.h)
  9. IF(BUILD_STATIC)
  10. FIND_LIBRARY(json_library NAMES libjson.a libjson-c.a)
  11. FIND_LIBRARY(blobmsg_json_library NAMES libblobmsg_json.a)
  12. FIND_LIBRARY(ubox_library NAMES libubox.a)
  13. ELSE(BUILD_STATIC)
  14. FIND_LIBRARY(json_library NAMES json-c json)
  15. FIND_LIBRARY(blobmsg_json_library NAMES blobmsg_json)
  16. FIND_LIBRARY(ubox_library NAMES ubox)
  17. ENDIF(BUILD_STATIC)
  18. SET(LIBS ${ubox_library} ${blobmsg_json_library} ${json_library})
  19. IF(DEBUG_PACKET)
  20. ADD_DEFINITIONS(-DDEBUG_PACKET)
  21. ENDIF()
  22. IF(DEBUG)
  23. ADD_DEFINITIONS(-DDEBUG -g3)
  24. ENDIF()
  25. SET(service_headers)
  26. SET(service_sources)
  27. FOREACH(service ctl dms nas pds wds wms wda uim)
  28. ADD_CUSTOM_COMMAND(
  29. OUTPUT qmi-message-${service}.h
  30. PRE_BUILD
  31. COMMAND ${CMAKE_SOURCE_DIR}/data/gen-header.pl ${service}_ ${CMAKE_SOURCE_DIR}/data/qmi-service-${service}.json > qmi-message-${service}.h
  32. DEPENDS ${CMAKE_SOURCE_DIR}/data/gen-header.pl ${CMAKE_SOURCE_DIR}/data/qmi-service-${service}.json ${CMAKE_SOURCE_DIR}/data/gen-common.pm
  33. )
  34. SET_SOURCE_FILES_PROPERTIES(qmi-message-${service}.h PROPERTIES GENERATED 1)
  35. SET(service_headers ${service_headers} qmi-message-${service}.h)
  36. ADD_CUSTOM_COMMAND(
  37. OUTPUT qmi-message-${service}.c
  38. PRE_BUILD
  39. COMMAND ${CMAKE_SOURCE_DIR}/data/gen-code.pl ${service}_ ${CMAKE_SOURCE_DIR}/data/qmi-service-${service}.json > qmi-message-${service}.c
  40. DEPENDS ${CMAKE_SOURCE_DIR}/data/gen-code.pl ${CMAKE_SOURCE_DIR}/data/qmi-service-${service}.json ${CMAKE_SOURCE_DIR}/data/gen-common.pm qmi-message-${service}.h
  41. )
  42. SET(service_sources ${service_sources} qmi-message-${service}.c)
  43. SET_SOURCE_FILES_PROPERTIES(qmi-message-${service}.c PROPERTIES GENERATED 1)
  44. set_property(SOURCE qmi-message-${service}.c PROPERTY COMPILE_FLAGS "-Wno-unused")
  45. ENDFOREACH()
  46. ADD_CUSTOM_COMMAND(
  47. OUTPUT ${CMAKE_SOURCE_DIR}/qmi-errors.c
  48. PRE_BUILD
  49. COMMAND ${CMAKE_SOURCE_DIR}/data/gen-error-list.pl ${CMAKE_SOURCE_DIR}/qmi-errors.h > qmi-errors.c
  50. DEPENDS ${CMAKE_SOURCE_DIR}/data/gen-error-list.pl ${CMAKE_SOURCE_DIR}/qmi-errors.h
  51. )
  52. SET_SOURCE_FILES_PROPERTIES(qmi-errors.c PROPERTIES GENERATED 1)
  53. ADD_CUSTOM_TARGET(gen-errors DEPENDS qmi-errors.c)
  54. ADD_CUSTOM_TARGET(gen-headers DEPENDS ${service_headers})
  55. INCLUDE_DIRECTORIES(common ${CMAKE_BINARY_DIR})
  56. ADD_LIBRARY(qmigen ${service_sources})
  57. ADD_DEPENDENCIES(qmigen gen-headers gen-errors)
  58. ADD_SUBDIRECTORY(common)
  59. ADD_SUBDIRECTORY(uqmi)