-
Notifications
You must be signed in to change notification settings - Fork 180
Expand file tree
/
Copy pathbuild.sh
More file actions
executable file
·64 lines (52 loc) · 1.78 KB
/
Copy pathbuild.sh
File metadata and controls
executable file
·64 lines (52 loc) · 1.78 KB
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
. $PREFIX/config/utils.sh
if [ $# -ge 1 ]; then
TOOLCHAIN=$1
else
echo "Syntax: ros2 run micro_ros_setup build_firmware.sh <CMake toolchain file> [Colcon meta file]"
exit 1
fi
if [ $# -ge 2 ]; then
COLCON_META=$2
echo "Using provided meta: $COLCON_META"
else
COLCON_META=$FW_TARGETDIR/mcu_ws/colcon.meta
echo "Using default meta: $COLCON_META"
fi
BUILD_DIR=$FW_TARGETDIR/build
pushd $FW_TARGETDIR/mcu_ws >/dev/null
rm -rf build install log
colcon build \
--merge-install \
--packages-ignore-regex=.*_cpp \
--metas $COLCON_META \
--cmake-args \
"--no-warn-unused-cli" \
-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=OFF \
-DTHIRDPARTY=ON \
-DBUILD_SHARED_LIBS=OFF \
-DBUILD_TESTING=OFF \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_TOOLCHAIN_FILE=$TOOLCHAIN \
-DCMAKE_VERBOSE_MAKEFILE=ON; \
mkdir -p $FW_TARGETDIR/libmicroros; cd $FW_TARGETDIR/libmicroros; \
for file in $(find $FW_TARGETDIR/mcu_ws/install/lib/ -name '*.a'); do \
folder=$(echo $file | sed -E "s/(.+)\/(.+).a/\2/"); \
mkdir -p $folder; cd $folder; ar x $file; \
for f in *; do \
mv $f ../$folder-$f; \
done; \
cd ..; rm -rf $folder; \
done ; \
ar rc libmicroros.a $(ls *.o *.obj 2> /dev/null); mkdir -p $BUILD_DIR; cp libmicroros.a $BUILD_DIR; ranlib $BUILD_DIR/libmicroros.a; \
cp -R $FW_TARGETDIR/mcu_ws/install/include $BUILD_DIR/; \
cd ..; rm -rf libmicroros;
######## Fix include paths ########
INCLUDE_ROS2_PACKAGES=$(cd $FW_TARGETDIR/mcu_ws && colcon list | awk '{print $1}' | awk -v d=" " '{s=(NR==1?s:s d)$0}END{print s}')
for var in ${INCLUDE_ROS2_PACKAGES}; do
if [ -d "$BUILD_DIR/include/${var}/${var}" ]
then
rsync -r $BUILD_DIR/include/${var}/${var}/* $BUILD_DIR/include/${var}/ || true
rm -rf $BUILD_DIR/include/${var}/${var}/
fi
done
popd >/dev/null