summaryrefslogtreecommitdiff
path: root/enhanced-position-service/api/CMakeLists.txt
blob: 3f2ab2476b09c8c920d65ec073e3e6d534bcfe37 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
###########################################################################
# @licence app begin@
# SPDX-License-Identifier: MPL-2.0
#
# Component Name: enhanced-position-service
#
# Author: Philippe Colliot
#
# Copyright (C) 2014, PCA Peugeot Citroën
# 
# License:
# This Source Code Form is subject to the terms of the
# Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with
# this file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# @licence end@
###########################################################################
project(enhanced-position-service)
cmake_minimum_required(VERSION 2.8)

message(STATUS "generation of DBus files for enhanced-position-service")

find_program(XSLTPROC xsltproc REQUIRED)
find_program(DBUSXML2CPP dbusxx-xml2cpp REQUIRED)

set(cmake_create_dir cmake -E make_directory)

set(API_DIR ${CMAKE_CURRENT_SOURCE_DIR})

execute_process(
	WORKING_DIRECTORY ${API_DIR}
        COMMAND ${cmake_create_dir} include
)

set(TARGET_GENERATED_API_DIR ${API_DIR}/include)

file (GLOB XML_TO_DBUS_PROXY 
	${CMAKE_CURRENT_SOURCE_DIR}/genivi-positioning-configuration.xml
	${CMAKE_CURRENT_SOURCE_DIR}/genivi-positioning-enhancedposition.xml
	${CMAKE_CURRENT_SOURCE_DIR}/genivi-positioning-positionfeedback.xml
)
foreach (RAW_FILE ${XML_TO_DBUS_PROXY})
	get_filename_component(FILE ${RAW_FILE} NAME_WE)
	if(NOT EXISTS ${TARGET_GENERATED_API_DIR}/${FILE}_proxy.h)
		execute_process(
			COMMAND ${DBUSXML2CPP} ${RAW_FILE} --proxy=${TARGET_GENERATED_API_DIR}/${FILE}_proxy.h  
		)
	else()
		if(${RAW_FILE} IS_NEWER_THAN ${TARGET_GENERATED_API_DIR}/${FILE}_proxy.h)
			execute_process(
				COMMAND ${DBUSXML2CPP} ${RAW_FILE} --proxy=${TARGET_GENERATED_API_DIR}/${FILE}_proxy.h  
			)
		endif()
	endif()
endforeach()

file (GLOB XML_TO_DBUS_ADAPTOR
	${CMAKE_CURRENT_SOURCE_DIR}/genivi-positioning-configuration.xml
	${CMAKE_CURRENT_SOURCE_DIR}/genivi-positioning-enhancedposition.xml
	${CMAKE_CURRENT_SOURCE_DIR}/genivi-positioning-positionfeedback.xml
)
foreach (RAW_FILE ${XML_TO_DBUS_ADAPTOR})
	get_filename_component(FILE ${RAW_FILE} NAME_WE)
	if(NOT EXISTS ${TARGET_GENERATED_API_DIR}/${FILE}_adaptor.h)
		execute_process(
			COMMAND ${DBUSXML2CPP} ${RAW_FILE} --adaptor=${TARGET_GENERATED_API_DIR}/${FILE}_adaptor.h  
		)
	else()
		if(${RAW_FILE} IS_NEWER_THAN ${TARGET_GENERATED_API_DIR}/${FILE}_adaptor.h)
			execute_process(
				COMMAND ${DBUSXML2CPP} ${RAW_FILE} --adaptor=${TARGET_GENERATED_API_DIR}/${FILE}_adaptor.h  
			)
		endif()
	endif()
endforeach()

file (GLOB XML_TO_DBUS_CONSTANT
	${CMAKE_CURRENT_SOURCE_DIR}/genivi-positioning-constants.xml
)
foreach (RAW_FILE ${XML_TO_DBUS_CONSTANT})
	get_filename_component(FILE ${RAW_FILE} NAME_WE)
	if(NOT EXISTS ${TARGET_GENERATED_API_DIR}/${FILE}.h)
		execute_process(
			OUTPUT_FILE ${TARGET_GENERATED_API_DIR}/${FILE}.h
			COMMAND ${XSLTPROC} ${CMAKE_CURRENT_SOURCE_DIR}/enum.xsl ${RAW_FILE}        
		)
	else()
		if(${RAW_FILE} IS_NEWER_THAN ${TARGET_GENERATED_API_DIR}/${FILE}.h)
			execute_process(
				OUTPUT_FILE ${TARGET_GENERATED_API_DIR}/${FILE}.h
				COMMAND ${XSLTPROC} ${CMAKE_CURRENT_SOURCE_DIR}/enum.xsl ${RAW_FILE}        
			)
		endif()
	endif()
endforeach()