Statistics
| Branch: | Revision:

root / python / CMakeLists.txt @ 9f38e25a

History | View | Annotate | Download (5.2 kB)

1
# Copyright 2014 GRNET S.A. All rights reserved.
2
#
3
# Redistribution and use in source and binary forms, with or
4
# without modification, are permitted provided that the following
5
# conditions are met:
6
#
7
#   1. Redistributions of source code must retain the above
8
#      copyright notice, this list of conditions and the following
9
#      disclaimer.
10
#
11
#   2. Redistributions in binary form must reproduce the above
12
#      copyright notice, this list of conditions and the following
13
#      disclaimer in the documentation and/or other materials
14
#      provided with the distribution.
15
#
16
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27
# POSSIBILITY OF SUCH DAMAGE.
28
#
29
# The views and conclusions contained in the software and
30
# documentation are those of the authors and should not be
31
# interpreted as representing official policies, either expressed
32
# or implied, of GRNET S.A.
33

    
34
cmake_minimum_required(VERSION 2.8)
35

    
36
project(xseg_python)
37

    
38
set(VERSIONCMD ${CMAKE_CURRENT_SOURCE_DIR}/version.sh
39
	${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
40

    
41
ADD_CUSTOM_COMMAND (OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/xseg/version.py
42
		    COMMAND ${VERSIONCMD}
43
		    #DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/xseg/version.py"
44
		   )
45
ADD_CUSTOM_TARGET (pyversion DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/xseg/version.py)
46

    
47
set(ENV "env")
48

    
49
#set(H2XML "h2xml")
50
set(H2XML_FLAGS "-c")
51
set(H2XML_DEPS "")
52
set(H2XML_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../src/include")
53
set(H2XML_INCLUDE_DIR2 "${CMAKE_CURRENT_BINARY_DIR}/../src/include")
54

    
55
set(H2XML_OUTPUT_XSEG "${CMAKE_CURRENT_BINARY_DIR}/xseg.xml")
56
set(H2XML_INPUT_XSEG "${CMAKE_CURRENT_SOURCE_DIR}/../src/include/xseg/xseg.h")
57
set(H2XML_OUTPUT_PROTOCOL "${CMAKE_CURRENT_BINARY_DIR}/protocol.xml")
58
set(H2XML_INPUT_PROTOCOL "${CMAKE_CURRENT_SOURCE_DIR}/../src/include/xseg/protocol.h")
59

    
60
#set(XML2PY "xml2py")
61
set(XML2PY_FLAGS "-d -k defst -c")
62
set(XML2PY_ENV "LD_LIBRARY_PATH=\"../src\"")
63

    
64
set(XML2PY_DEPS_XSEG "${H2XML_OUTPUT_XSEG}")
65
set(XML2PY_OUTPUT_XSEG "${CMAKE_CURRENT_BINARY_DIR}/xseg/xseg_api.py")
66
set(XML2PY_DEPS_PROTOCOL "${H2XML_OUTPUT_PROTOCOL}")
67
set(XML2PY_OUTPUT_PROTOCOL "${CMAKE_CURRENT_BINARY_DIR}/xseg/xprotocol.py")
68

    
69
set(XSEG_LIB "libxseg.so.${MAJOR}")
70
set(OUTPUT ${XML2PY_OUTPUT_PROTOCOL} ${XML2PY_OUTPUT_XSEG})
71
set(DEPS "")
72

    
73
set (SED1 sed -i -e 's/xseg_get_data_nonstatic.restype = STRING/xseg_get_data_nonstatic.restype = POINTER(c_char)/g' xseg/xseg_api.py)
74
set(SED2 sed -i -e 's/xseg_get_target_nonstatic.restype = STRING/xseg_get_target_nonstatic.restype = POINTER(c_char)/g' xseg/xseg_api.py)
75
set(SED3 sed -i -e 's/xseg_get_signal_desc_nonstatic.restype = STRING/xseg_get_signal_desc_nonstatic.restype = POINTER(c_char)/g' xseg/xseg_api.py)
76

    
77
set(SED4 sed -i -e 's/xseg_reply_map_scatterlist \\* 0/POINTER(xseg_reply_map_scatterlist)/g' xseg/xprotocol.py)
78

    
79

    
80
SET(SETUP_PY_IN ${CMAKE_CURRENT_SOURCE_DIR}/setup.py)
81
SET(SETUP_PY ${CMAKE_CURRENT_BINARY_DIR}/setup.py)
82
SET(SETUP_PY_BUILD_OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/build)
83

    
84
SET(DISTSETUP_PY_IN ${CMAKE_CURRENT_SOURCE_DIR}/distribute_setup.py)
85
SET(DISTSETUP_PY ${CMAKE_CURRENT_BINARY_DIR}/distribute_setup.py)
86
configure_file(${SETUP_PY_IN} ${SETUP_PY})
87
configure_file(${DISTSETUP_PY_IN} ${DISTSETUP_PY})
88

    
89
ADD_CUSTOM_COMMAND( OUTPUT ${H2XML_OUTPUT_XSEG} ${H2XML_OUTPUT_PROTOCOL} ${XML2PY_OUTPUT_PROTOCOL} ${XML2PY_OUTPUT_XSEG} ${SETUP_PY_BUILD_OUTPUT} ${CMAKE_CURRENT_BINARY_DIR}/xseg ${CMAKE_CURRENT_BINARY_DIR}/xseg.egg-info
90
	            COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/xseg
91
		    COMMAND touch ${CMAKE_CURRENT_BINARY_DIR}/xseg/__init__.py
92

    
93
		    COMMAND ${H2XML} ${H2XML_FLAGS} -I ${H2XML_INCLUDE_DIR} -I ${H2XML_INCLUDE_DIR2} -o ${H2XML_OUTPUT_XSEG} ${H2XML_INPUT_XSEG}
94
		    COMMAND ${ENV} ${XML2PY_ENV} ${XML2PY} ${H2XML_OUTPUT_XSEG} -d -k defst -c -l ${XSEG_LIB} -o ${XML2PY_OUTPUT_XSEG}
95
		    COMMAND ${SED1}
96
		    COMMAND ${SED2}
97
		    COMMAND ${SED3}
98

    
99
		    COMMAND ${H2XML} ${H2XML_FLAGS} -I ${H2XML_INCLUDE_DIR} -I ${H2XML_INCLUDE_DIR2} -o ${H2XML_OUTPUT_PROTOCOL} ${H2XML_INPUT_PROTOCOL}
100
		    COMMAND ${ENV} ${XML2PY_ENV} ${XML2PY}
101
		    ${H2XML_OUTPUT_PROTOCOL} -d -k defst -c -l ${XSEG_LIB} -o ${XML2PY_OUTPUT_PROTOCOL}
102

    
103
		    COMMAND ${SED4}
104

    
105

    
106
		    COMMAND pwd
107
		    COMMAND python ${SETUP_PY} build
108

    
109
		    #		    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/xseg/version.py
110
		    #DEPENDS version
111
		    #                    DEPENDS ${DEPS}
112
		    COMMENT "Generating python bindings")
113

    
114
ADD_CUSTOM_TARGET(python ALL DEPENDS ${OUTPUT} )
115
ADD_DEPENDENCIES(python xseg)
116
ADD_DEPENDENCIES(python pyversion)
117

    
118
install(CODE "execute_process(COMMAND python ${SETUP_PY} install --install-layout=deb --root=$DESTDIR)")
119

    
120