Skip to content

Commit 6720db1

Browse files
authored
Merge pull request #11 from nim65s/devel
packaging: install package.xml & check examples as unit-tests
2 parents 16a9bce + a063dcc commit 6720db1

File tree

4 files changed

+40
-28
lines changed

4 files changed

+40
-28
lines changed

CMakeLists.txt

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ EXPORT_BOOST_DEFAULT_OPTIONS()
4646

4747
IF(BUILD_WITH_CPPAD_CODEGEN_BINDINGS)
4848
ADD_PROJECT_DEPENDENCY(cppadcg 2.4.1 REQUIRED PKG_CONFIG_REQUIRES "cppadcg >= 2.4.1") # CppADCodeGen 2.4.1 is the first version to check the minimal version of CppAD
49-
ADD_DEFINITIONS(-DPYCPPAD_WITH_CPPAD_CODEGEN_BINDINGS)
49+
ADD_DEFINITIONS(-DPYCPPAD_WITH_CPPAD_CODEGEN_BINDINGS)
5050
ENDIF(BUILD_WITH_CPPAD_CODEGEN_BINDINGS)
5151

5252
ADD_PROJECT_DEPENDENCY(cppad 20180000.0 REQUIRED PKG_CONFIG_REQUIRES "cppad >= 20180000.0")
@@ -89,18 +89,18 @@ ENDIF(SUFFIX_SO_VERSION)
8989
TARGET_LINK_BOOST_PYTHON(${PROJECT_NAME} PUBLIC)
9090
TARGET_LINK_LIBRARIES(${PROJECT_NAME} PUBLIC ${cppad_LIBRARY} eigenpy::eigenpy)
9191
IF(BUILD_WITH_CPPAD_CODEGEN_BINDINGS)
92-
TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME}
92+
TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME}
9393
SYSTEM PUBLIC
9494
${cppadcg_INCLUDE_DIR}
9595
)
9696
TARGET_LINK_LIBRARIES(${PROJECT_NAME} PUBLIC ${CMAKE_DL_LIBS})
9797
ENDIF(BUILD_WITH_CPPAD_CODEGEN_BINDINGS)
9898

99-
TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME}
99+
TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME}
100100
SYSTEM PUBLIC
101101
${Boost_INCLUDE_DIRS}
102102
${EIGEN3_INCLUDE_DIR}
103-
${PYTHON_INCLUDE_DIRS}
103+
${PYTHON_INCLUDE_DIRS}
104104
$<INSTALL_INTERFACE:include>)
105105
TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME} PUBLIC $<INSTALL_INTERFACE:include>)
106106

@@ -116,7 +116,11 @@ ADD_HEADER_GROUP(${PROJECT_NAME}_HEADERS)
116116
ADD_SOURCE_GROUP(${PROJECT_NAME}_SOURCES)
117117

118118
ADD_SUBDIRECTORY(python)
119+
ADD_SUBDIRECTORY(example)
119120

120121
PKG_CONFIG_APPEND_LIBS(${PROJECT_NAME})
121122
PKG_CONFIG_APPEND_CFLAGS("-I${PYTHON_INCLUDE_DIRS}")
122123
PKG_CONFIG_APPEND_BOOST_LIBS(${BOOST_COMPONENTS})
124+
125+
# Install catkin package.xml
126+
INSTALL(FILES package.xml DESTINATION share/${PROJECT_NAME})

example/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
ADD_PYTHON_UNIT_TEST("add_eq" "example/add_eq.py" "python")
2+
ADD_PYTHON_UNIT_TEST("cppad_type" "example/cppad_type.py" "python")

example/add_eq.py

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,48 +3,51 @@
33
from pycppad import AD, Independent, ADFun, Value
44
import numpy as np
55

6-
76
# domain space vector
8-
n = 1;
7+
n = 1
98
x0 = 0.5
109

11-
x = np.array([AD(x0),]*n)
10+
x = np.array([AD(x0)] * n)
1211

1312
# declare independent variables and start tape recording
1413
Independent(x)
1514

1615
# range space vector
17-
m = 2;
18-
y = np.zeros((m,),dtype=AD)
19-
y[0] = x[0]; # initial value
20-
y[0] += AD(2); # AD<double> += int
21-
y[0] += AD(4.); # AD<double> += double
16+
m = 2
17+
y = np.zeros(m, dtype=AD)
18+
y[0] = x[0]
19+
# initial value
20+
y[0] += AD(2)
21+
# AD<double> += int
22+
y[0] += AD(4.)
23+
# AD<double> += double
2224
y[0] += x[0]
23-
y[1] = y[0]; # use the result of a compound assignment
25+
y[1] = y[0]
26+
# use the result of a compound assignment
2427

2528
# create f: x -> y and stop tape recording
26-
f = ADFun(x,y);
27-
input("raw_input")
29+
f = ADFun(x, y)
30+
# input("raw_input")
2831

29-
#f.optimize("no_compare_op")
32+
# f.optimize("no_compare_op")
3033

31-
assert(Value(y[0]) == x0+2.+4.+x0)
32-
assert(Value(y[1]) == Value(y[0]))
34+
assert Value(y[0]) == x0 + 2. + 4. + x0
35+
assert Value(y[1]) == Value(y[0])
3336

3437
dx = np.zeros(n)
3538
dy = np.zeros(m)
3639

3740
dx[0] = 1.
38-
dy = f.Forward(1 ,dx)
39-
assert(dy[0] == 2.)
40-
assert(dy[1] == 2.)
41+
dy = f.Forward(1, dx)
42+
assert dy[0] == 2.
43+
assert dy[1] == 2.
4144

4245
# reverse computation of derivative of y[0]
43-
w = np.zeros((m,))
44-
dw = np.zeros((n),)
46+
w = np.zeros(m)
47+
dw = np.zeros(n)
4548

4649
w[0] = 1.
4750
w[1] = 0.
4851
dw = f.Reverse(1, w)
4952

50-
assert(dw[0] == 2.)
53+
assert dw[0] == 2.

python/CMakeLists.txt

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#
44

55
# --- LIBRARY --- #
6-
SET(PYWRAP ${PROJECT_NAME}_pywrap)
6+
SET(PYWRAP ${PROJECT_NAME}_pywrap)
77
SET(PYWRAP ${PYWRAP} PARENT_SCOPE)
88

99
MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/python/${PROJECT_NAME}")
@@ -27,16 +27,20 @@ ELSE()
2727
ENDIF()
2828

2929
SET_TARGET_PROPERTIES(${PYWRAP}
30-
PROPERTIES
30+
PROPERTIES
3131
PREFIX ""
3232
SUFFIX ${PYTHON_EXT_SUFFIX}
3333
OUTPUT_NAME "${PROJECT_NAME}"
3434
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/python/${PROJECT_NAME}"
3535
)
3636

37+
IF(UNIX AND NOT APPLE)
38+
SET_TARGET_PROPERTIES(${PYWRAP} PROPERTIES INSTALL_RPATH "\$ORIGIN/../../..")
39+
ENDIF()
40+
3741
INSTALL(TARGETS ${PYWRAP} DESTINATION ${${PYWRAP}_INSTALL_DIR})
3842

39-
# --- INSTALL SCRIPTS
43+
# --- INSTALL SCRIPTS
4044
SET(PYTHON_FILES
4145
__init__.py
4246
)
@@ -47,4 +51,3 @@ FOREACH(python ${PYTHON_FILES})
4751
"${CMAKE_CURRENT_SOURCE_DIR}/pycppad/${python}"
4852
DESTINATION ${${PYWRAP}_INSTALL_DIR})
4953
ENDFOREACH(python)
50-

0 commit comments

Comments
 (0)