22# DO NOT EDIT!
33set -eo pipefail
44
5- rm -rf build
6- mkdir build
7- cd build
5+ BUILD_DIR=@BUILD_DIR@
6+
7+ if [ ! -d " $BUILD_DIR " ]; then
8+ mkdir -p " $BUILD_DIR "
9+ fi
10+ pushd $BUILD_DIR
11+
12+ BUILD_TYPE=@BUILD_TYPE@
813
914# necessary for correctly linking SIP files (from python_qt_bindings)
1015export LINK=$CXX
1116
1217if [[ " $CONDA_BUILD_CROSS_COMPILATION " != " 1" ]]; then
1318 PYTHON_EXECUTABLE=$PREFIX /bin/python
1419 PKG_CONFIG_EXECUTABLE=$PREFIX /bin/pkg-config
15- OSX_DEPLOYMENT_TARGET= " 10.15 "
20+ export QT_HOST_PATH= " $PREFIX "
1621else
1722 PYTHON_EXECUTABLE=$BUILD_PREFIX /bin/python
1823 PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX /bin/pkg-config
19- OSX_DEPLOYMENT_TARGET=" 11.0"
20- fi
21-
22- if [[ " ${CONDA_BUILD_CROSS_COMPILATION:- } " == " 1" ]]; then
2324 export QT_HOST_PATH=" $BUILD_PREFIX "
24- else
25- export QT_HOST_PATH=" $PREFIX "
2625fi
2726
28- echo " USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE} "
29- echo " USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE} "
30-
31- export ROS_PYTHON_VERSION=` $PYTHON_EXECUTABLE -c " import sys; print('%i.%i' % (sys.version_info[0:2]))" `
32- echo " Using Python ${ROS_PYTHON_VERSION} "
33-
34- # see https://github.com/conda-forge/cross-python-feedstock/issues/24
35- if [[ " $CONDA_BUILD_CROSS_COMPILATION " == " 1" ]]; then
36- find $PREFIX /lib/cmake -type f -exec sed -i " s~\$ {_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION} /site-packages~${BUILD_PREFIX} /lib/python${ROS_PYTHON_VERSION} /site-packages~g" {} + || true
37- find $PREFIX /share/rosidl* -type f -exec sed -i " s~${PREFIX} /lib/python${ROS_PYTHON_VERSION} /site-packages~${BUILD_PREFIX} /lib/python${ROS_PYTHON_VERSION} /site-packages~g" {} + || true
38- find $PREFIX /share/rosidl* -type f -exec sed -i " s~\$ {_IMPORT_PREFIX}/lib/python${ROS_PYTHON_VERSION} /site-packages~${BUILD_PREFIX} /lib/python${ROS_PYTHON_VERSION} /site-packages~g" {} + || true
39- find $PREFIX /lib/cmake -type f -exec sed -i " s~message(FATAL_ERROR \" The imported target~message(WARNING \" The imported target~g" {} + || true
40- fi
27+ # Only support 11.0+ for now
28+ OSX_DEPLOYMENT_TARGET=" 11.0"
4129
30+ # Added to help make portable builds when using <inttypes.h> in C++ code.
4231if [[ $target_platform =~ linux.* ]]; then
4332 export CFLAGS=" ${CFLAGS} -D__STDC_FORMAT_MACROS=1"
4433 export CXXFLAGS=" ${CXXFLAGS} -D__STDC_FORMAT_MACROS=1"
4534fi ;
4635
47- # Needed for qt-gui-cpp ..
48- if [[ $target_platform =~ linux.* ]]; then
49- ln --symbolic --force $GCC ${BUILD_PREFIX} /bin/gcc
50- ln --symbolic --force $GXX ${BUILD_PREFIX} /bin/g++
51- fi ;
52-
53-
54- # PYTHON_INSTALL_DIR should be a relative path, see
55- # https://github.com/ament/ament_cmake/blob/2.3.2/ament_cmake_python/README.md
56- # So we compute the relative path of $SP_DIR w.r.t. to $PREFIX,
57- # but it is not trivial to do this in bash scripting, so let's do it via python
36+ echo " USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE} "
37+ echo " USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE} "
38+ export ROS_PYTHON_VERSION=3
39+ echo " Using Python ${ROS_PYTHON_VERSION} "
5840echo " Using PREFIX: $PREFIX "
59- # TODO: Remove when SPD_DIR is available in the environment
60- export SP_DIR=${SP_DIR:- $PREFIX / lib/ python3.12/ site-packages}
61- export PY_VER=3.12
6241echo " Using SP_DIR: $SP_DIR "
6342echo " Using CONDA_BUILD: $CONDA_BUILD "
6443echo " Using CPU_COUNT: $CPU_COUNT "
44+ export PY_VER=${ROS_PYTHON_VERSION}
6545echo " Using PY_VER: $PY_VER "
6646echo " Using PYTHON: $PYTHON "
6747echo " Using STDLIB_DIR: $STDLIB_DIR "
6848echo " Using ROS_PYTHON_VERSION: $ROS_PYTHON_VERSION "
6949echo " Using SRC_DIR: $SRC_DIR "
70-
71- export PYTHON_INSTALL_DIR=` python -c " import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))" `
50+ export PYTHON_INSTALL_DIR=$( realpath --relative-to=" $PREFIX " " $SP_DIR " )
7251echo " Using PYTHON_INSTALL_DIR: $PYTHON_INSTALL_DIR "
7352
74- if [[ $target_platform =~ emscripten.* ]]; then
75- export CONDA_BUILD_CROSS_COMPILATION=" 1"
76- PYTHON_EXECUTABLE=$BUILD_PREFIX /bin/python$PY_VER
77- echo " set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS TRUE)" > $SRC_DIR /__vinca_shared_lib_patch.cmake
78- echo " set(CMAKE_STRIP FALSE) # used by default in pybind11 on .so modules" >> $SRC_DIR /__vinca_shared_lib_patch.cmake
79- echo " set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH) # fixes an error where numpy header files are not found correctly" >> $SRC_DIR /__vinca_shared_lib_patch.cmake
80-
81- # if [ "${PKG_NAME}" == "ros-humble-examples-rclcpp-minimal-publisher" ] || [ "${PKG_NAME}" == "ros-humble-examples-rclcpp-minimal-subscriber" ] || [ "${PKG_NAME}" == "ros-humble-rclcpp-components" ]; then
82- # echo "set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS \"-s ASSERTIONS=1 -s SIDE_MODULE=1 -sWASM_BIGINT -s USE_PTHREADS=0 -s DEMANGLE_SUPPORT=1 -s ALLOW_MEMORY_GROWTH=1 \")">> $SRC_DIR/__vinca_shared_lib_patch.cmake
83- # echo "set(CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS \"-s ASSERTIONS=1 -s SIDE_MODULE=1 -sWASM_BIGINT -s USE_PTHREADS=0 -s DEMANGLE_SUPPORT=1 -s ALLOW_MEMORY_GROWTH=1 -sASYNCIFY -O3 -s ASYNCIFY_STACK_SIZE=24576 \")">> $SRC_DIR/__vinca_shared_lib_patch.cmake
84- # echo "set(CMAKE_EXE_LINKER_FLAGS \"-sMAIN_MODULE=1 -sASSERTIONS=1 -fexceptions -lembind -sWASM_BIGINT -s USE_PTHREADS=0 -s DEMANGLE_SUPPORT=1 -sALLOW_MEMORY_GROWTH=1 -sASYNCIFY -O3 -s ASYNCIFY_STACK_SIZE=24576 -L$SRC_DIR/build -L$PREFIX/lib\") # remove SIDE_MODULE from exe linker flags">> $SRC_DIR/__vinca_shared_lib_patch.cmake
85- # else
86- echo " set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS \" -s ASSERTIONS=1 -s SIDE_MODULE=1 -sWASM_BIGINT -s USE_PTHREADS=0 -s ALLOW_MEMORY_GROWTH=1 -s DEMANGLE_SUPPORT=1 \" )" >> $SRC_DIR /__vinca_shared_lib_patch.cmake
87- echo " set(CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS \" -s ASSERTIONS=1 -s SIDE_MODULE=1 -sWASM_BIGINT -s USE_PTHREADS=0 -s ALLOW_MEMORY_GROWTH=1 -s DEMANGLE_SUPPORT=1 \" )" >> $SRC_DIR /__vinca_shared_lib_patch.cmake
88- echo " set(CMAKE_EXE_LINKER_FLAGS \" -sMAIN_MODULE=1 -sASSERTIONS=1 -fexceptions -lembind -sWASM_BIGINT -s USE_PTHREADS=0 -sALLOW_MEMORY_GROWTH=1 -s DEMANGLE_SUPPORT=1 -L$SRC_DIR /build -L$PREFIX /lib\" ) # remove SIDE_MODULE from exe linker flags" >> $SRC_DIR /__vinca_shared_lib_patch.cmake
89- # fi
90-
91- export BUILD_TYPE=" Debug"
92- export EXTRA_CMAKE_ARGS=" \
93- -DPYTHON_SOABI=" cpython-${ROS_PYTHON_VERSION// ./ } -wasm32-emscripten" \
94- -DRMW_IMPLEMENTATION=rmw_wasm_cpp \
95- -DCMAKE_FIND_ROOT_PATH=$PREFIX \
96- -DCMAKE_POSITION_INDEPENDENT_CODE=TRUE \
97- -DCMAKE_PROJECT_INCLUDE=$SRC_DIR /__vinca_shared_lib_patch.cmake \
98- "
99-
100- unset -f cmake
101- export CMAKE_GEN=" emcmake cmake"
102- export CMAKE_BLD=" cmake"
103-
104- export STATIC_ROSIDL_TYPESUPPORT_C=rosidl_typesupport_introspection_c
105- export STATIC_ROSIDL_TYPESUPPORT_CPP=rosidl_typesupport_introspection_cpp
106- else
107- export BUILD_TYPE=" Release"
108- export CMAKE_GEN=" cmake"
109- export CMAKE_BLD=" cmake"
110- fi ;
111-
112- if [ " ${PKG_NAME} " == " ros-humble-rmw-wasm-cpp" ]; then
113- WORK_DIR=$SRC_DIR /$PKG_NAME /src/work/rmw_wasm_cpp
114- elif [ " ${PKG_NAME} " == " ros-humble-wasm-cpp" ]; then
115- WORK_DIR=$SRC_DIR /$PKG_NAME /src/work/wasm_cpp
116- elif [ " ${PKG_NAME} " == " dynmsg" ]; then
117- WORK_DIR=$SRC_DIR /$PKG_NAME /src/work/dynmsg
118- else
119- WORK_DIR=$SRC_DIR
120- fi ;
121-
12253if [ ! -f " build.ninja" ]; then
123- $CMAKE_GEN \
54+ cmake \
12455 -G " Ninja" \
12556 -S @SRC_DIR@ \
12657 -DCMAKE_BUILD_TYPE=$BUILD_TYPE \
@@ -137,7 +68,7 @@ if [ ! -f "build.ninja" ]; then
13768 -DSETUPTOOLS_DEB_LAYOUT=OFF \
13869 -DCATKIN_SKIP_TESTING=$SKIP_TESTING \
13970 -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \
140- -DBUILD_SHARED_LIBS=ON \
71+ -DBUILD_SHARED_LIBS=ON \
14172 -DBUILD_TESTING=OFF \
14273 -DCMAKE_IGNORE_PREFIX_PATH=" /opt/homebrew;/usr/local/homebrew" \
14374 -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \
@@ -146,4 +77,4 @@ if [ ! -f "build.ninja" ]; then
14677 .
14778fi
14879
149- $CMAKE_BLD --build . --config $BUILD_TYPE --target install
80+ cmake --build . --config $BUILD_TYPE --target install
0 commit comments