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