-SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")
-
-ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS})
-TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS})
-
-ADD_CUSTOM_TARGET(netconfig-iface-network-state-glue.h
- COMMAND dbus-binding-tool --mode=glib-server --prefix=netconfig_iface_network_state
- --output=${CMAKE_SOURCE_DIR}/include/netconfig-iface-network-state-glue.h
- ${CMAKE_SOURCE_DIR}/interfaces/netconfig-iface-network-state.xml
- DEPENDS ${CMAKE_SOURCE_DIR}/interfaces/netconfig-iface-network-state.xml
-)
-ADD_CUSTOM_TARGET(netconfig-iface-network-statistics-glue.h
- COMMAND dbus-binding-tool --mode=glib-server --prefix=netconfig_iface_network_statistics
- --output=${CMAKE_SOURCE_DIR}/include/netconfig-iface-network-statistics-glue.h
- ${CMAKE_SOURCE_DIR}/interfaces/netconfig-iface-network-statistics.xml
- DEPENDS ${CMAKE_SOURCE_DIR}/interfaces/netconfig-iface-network-statistics.xml
-)
-ADD_CUSTOM_TARGET(netconfig-iface-wifi-glue.h
- COMMAND dbus-binding-tool --mode=glib-server --prefix=netconfig_iface_wifi
- --output=${CMAKE_SOURCE_DIR}/include/netconfig-iface-wifi-glue.h
- ${CMAKE_SOURCE_DIR}/interfaces/netconfig-iface-wifi.xml
- DEPENDS ${CMAKE_SOURCE_DIR}/interfaces/netconfig-iface-wifi.xml
-)
-
-ADD_DEPENDENCIES(${PROJECT_NAME} netconfig-iface-network-state-glue.h)
-ADD_DEPENDENCIES(${PROJECT_NAME} netconfig-iface-network-statistics-glue.h)
-ADD_DEPENDENCIES(${PROJECT_NAME} netconfig-iface-wifi-glue.h)
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie")
+
+ADD_CUSTOM_COMMAND(
+ WORKING_DIRECTORY
+ OUTPUT ${CMAKE_SOURCE_DIR}/generated-code.c
+ COMMAND gdbus-codegen --interface-prefix net.netconfig.
+ --generate-c-code generated-code
+ --c-generate-object-manager
+ --generate-docbook generated-code-docs
+ ${INTERFACES}/netconfig-iface-network-state.xml ${INTERFACES}/netconfig-iface-network-statistics.xml ${INTERFACES}/netconfig-iface-wifi.xml ${INTERFACES}/netconfig-iface-vpnsvc.xml ${INTERFACES}/netconfig-iface-mptcp.xml
+ COMMENT "Generating GDBus .c/.h")
+
+ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS} ${CMAKE_SOURCE_DIR}/generated-code.c)
+
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS} ${PCAP_LIB} "-ldl")