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 |
|