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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
diff --git a/build-flags b/build-flags
index d8f340e..4d8918a 100755
--- a/build-flags
+++ b/build-flags
@@ -6,6 +6,11 @@ ALL=( "python" "numpy" "gr" )
SUPPORTED_OS=( "Darwin" "Linux" )
OS=$(uname -s)
+SCRIPT_DIR="$(git rev-parse --show-toplevel)"
+
+if [[ -z "${CONDA_PREFIX}" ]]; then
+ CONDA_PREFIX="${SCRIPT_DIR}/env"
+fi
array_contains() {
@@ -15,43 +20,24 @@ array_contains() {
return 1
}
+relpath() {
+ "${CONDA_PREFIX}/bin/python2" -c "import os.path; print(os.path.relpath('$1','${2:-$(pwd)}'))"
+}
+
python_flags() {
- local DARWIN_CONDA_INCLUDE="${CONDA_PREFIX}/include/python2.7"
- local DARWIN_CONDA_LIB="${CONDA_PREFIX}/lib"
- local DARWIN_LOCAL_FRAMEWORK="/usr/local/Library/Frameworks"
- local DARWIN_FRAMEWORK="/System/Library/Frameworks"
- local DARWIN_LOCAL_INCLUDE="/usr/local/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7"
- local DARWIN_INCLUDE="/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7"
- local LINUX_LOCAL_INCLUDE="/usr/local/include/python2.7"
- local LINUX_INCLUDE="/usr/include/python2.7"
- local LINUX_LOCAL_LIB="/usr/local/lib/python2.7"
- local LINUX_LIB="/usr/lib/python2.7"
+ local CONDA_INCLUDE="${CONDA_PREFIX}/include/python2.7"
+ local CONDA_LIB="${CONDA_PREFIX}/lib"
+ local RPATH
local INC_FLAGS
local LIB_FLAGS
- case "${OS}" in
- Darwin)
- if [ -n "${CONDA_PREFIX}" ]; then
- INC_FLAGS="-I${DARWIN_CONDA_INCLUDE}"
- LIB_FLAGS="-L${DARWIN_CONDA_LIB} -lpython2.7"
- elif [ -d "${DARWIN_LOCAL_FRAMEWORK}" ]; then
- INC_FLAGS="-F${DARWIN_LOCAL_FRAMEWORK} -I${DARWIN_LOCAL_INCLUDE}"
- LIB_FLAGS="-F${DARWIN_LOCAL_FRAMEWORK} -framework Python"
- else
- INC_FLAGS="-F${DARWIN_FRAMEWORK} -I${DARWIN_INCLUDE}"
- LIB_FLAGS="-F${DARWIN_FRAMEWORK} -framework Python"
- fi
- ;;
- Linux)
- if [ -d "${LINUX_LOCAL_INCLUDE}" ]; then
- INC_FLAGS="-I${LINUX_LOCAL_INCLUDE}"
- LIB_FLAGS="-L${LINUX_LOCAL_LIB} -lpython2.7"
- else
- INC_FLAGS="-I${LINUX_INCLUDE}"
- LIB_FLAGS="-L${LINUX_LIB} -lpython2.7"
- fi
- ;;
- esac
+ if [[ "${OS}" == "Darwin" ]]; then
+ RPATH="@loader_path/$(relpath "${CONDA_LIB}")"
+ else
+ RPATH="\\\$ORIGIN/$(relpath "${CONDA_LIB}")"
+ fi
+ INC_FLAGS="-I${CONDA_INCLUDE}"
+ LIB_FLAGS="-L${CONDA_LIB} -lpython2.7 -Wl,-rpath,'${RPATH}'"
eval "${1}=\"${INC_FLAGS}\""
eval "${2}=\"${LIB_FLAGS}\""
@@ -62,11 +48,7 @@ numpy_flags() {
local PYTHON_EXEC
local INC_FLAGS
- if [ -f "/usr/local/bin/python" ]; then
- PYTHON_EXEC="/usr/local/bin/python"
- else
- PYTHON_EXEC=$(which python)
- fi
+ PYTHON_EXEC="${CONDA_PREFIX}/bin/python"
INC_FLAGS=$(${PYTHON_EXEC} <<EOF
import numpy
@@ -81,17 +63,18 @@ EOF
}
gr_flags() {
- local POSSIBLE_GR_DIRS=( "/usr/local/gr" "/usr/gr" "/opt/gr" )
+ local GR_DIR="${CONDA_PREFIX}/lib/python2.7/site-packages/gr"
+ local RPATH
local INC_FLAGS
local LIB_FLAGS
- for i in ${POSSIBLE_GR_DIRS[@]}; do
- if [ -d "${i}" ]; then
- INC_FLAGS="-I${i}/include"
- LIB_FLAGS="-L${i}/lib -lGR -lGR3"
- break
- fi
- done
+ if [[ "${OS}" == "Darwin" ]]; then
+ RPATH="@loader_path/$(relpath "${GR_DIR}")/lib"
+ else
+ RPATH="\\\$ORIGIN/$(relpath "${GR_DIR}")/lib"
+ fi
+ INC_FLAGS="-I${GR_DIR}/include"
+ LIB_FLAGS="-L${GR_DIR}/lib -lGR -lGR3 -Wl,-rpath,'${RPATH}'"
eval "${1}=\"${INC_FLAGS}\""
eval "${2}=\"${LIB_FLAGS}\""
diff --git a/src/Makefile b/src/Makefile
index f8387f8..074beee 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -4,7 +4,6 @@ SUBDIRS = computation gui util visualization config core statistics
all:
for i in $(SUBDIRS); do make -C $$i PYLIBPATH=$(PYLIBPATH) EXTRA_LD_FLAGS=$(EXTRA_LD_FLAGS) all; done
-EXTRA_LD_FLAGS = -Wl,-rpath,/usr/local/gr/lib
app_extension_modules: clean all
clean:
|