|
| 1 | +# Generated by vinca http://github.com/RoboStack/vinca. |
| 2 | +# DO NOT EDIT! |
| 3 | + |
| 4 | +set -eo pipefail |
| 5 | + |
| 6 | +rm -rf build |
| 7 | +mkdir build |
| 8 | +cd build |
| 9 | + |
| 10 | +# necessary for correctly linking SIP files (from python_qt_bindings) |
| 11 | +export LINK=$CXX |
| 12 | + |
| 13 | +if [[ "$CONDA_BUILD_CROSS_COMPILATION" != "1" ]]; then |
| 14 | + PYTHON_EXECUTABLE=$PREFIX/bin/python |
| 15 | + PKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkg-config |
| 16 | + OSX_DEPLOYMENT_TARGET="10.15" |
| 17 | +else |
| 18 | + PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python |
| 19 | + PKG_CONFIG_EXECUTABLE=$BUILD_PREFIX/bin/pkg-config |
| 20 | + OSX_DEPLOYMENT_TARGET="11.0" |
| 21 | +fi |
| 22 | + |
| 23 | +if [[ "${CONDA_BUILD_CROSS_COMPILATION:-}" == "1" ]]; then |
| 24 | + export QT_HOST_PATH="$BUILD_PREFIX" |
| 25 | +else |
| 26 | + export QT_HOST_PATH="$PREFIX" |
| 27 | +fi |
| 28 | + |
| 29 | +echo "USING PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}" |
| 30 | +echo "USING PKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}" |
| 31 | + |
| 32 | +export ROS_PYTHON_VERSION=`$PYTHON_EXECUTABLE -c "import sys; print('%i.%i' % (sys.version_info[0:2]))"` |
| 33 | +echo "Using Python ${ROS_PYTHON_VERSION}" |
| 34 | + |
| 35 | +# see https://github.com/conda-forge/cross-python-feedstock/issues/24 |
| 36 | +if [[ "$CONDA_BUILD_CROSS_COMPILATION" == "1" ]]; then |
| 37 | + 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 |
| 38 | + 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 |
| 39 | + 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 |
| 40 | + find $PREFIX/lib/cmake -type f -exec sed -i "s~message(FATAL_ERROR \"The imported target~message(WARNING \"The imported target~g" {} + || true |
| 41 | +fi |
| 42 | + |
| 43 | +if [[ $target_platform =~ linux.* ]]; then |
| 44 | + export CFLAGS="${CFLAGS} -D__STDC_FORMAT_MACROS=1" |
| 45 | + export CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS=1" |
| 46 | +fi; |
| 47 | + |
| 48 | +# Needed for qt-gui-cpp .. |
| 49 | +if [[ $target_platform =~ linux.* ]]; then |
| 50 | + ln -s $GCC ${BUILD_PREFIX}/bin/gcc |
| 51 | + ln -s $GXX ${BUILD_PREFIX}/bin/g++ |
| 52 | +fi; |
| 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 |
| 58 | +export PYTHON_INSTALL_DIR=`python -c "import os;print(os.path.relpath(os.environ['SP_DIR'],os.environ['PREFIX']))"` |
| 59 | +echo "Using PYTHON_INSTALL_DIR: $PYTHON_INSTALL_DIR" |
| 60 | + |
| 61 | +if [[ $target_platform =~ emscripten.* ]]; then |
| 62 | + export CONDA_BUILD_CROSS_COMPILATION="1" |
| 63 | + PYTHON_EXECUTABLE=$BUILD_PREFIX/bin/python$PY_VER |
| 64 | + echo "set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS TRUE)"> $SRC_DIR/__vinca_shared_lib_patch.cmake |
| 65 | + echo "set(CMAKE_STRIP FALSE) # used by default in pybind11 on .so modules">> $SRC_DIR/__vinca_shared_lib_patch.cmake |
| 66 | + 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 |
| 67 | + |
| 68 | + # if [ "${PKG_NAME}" == "ros-humble-examples-rclcpp-minimal-publisher" ] || [ "${PKG_NAME}" == "ros-humble-examples-rclcpp-minimal-subscriber" ] || [ "${PKG_NAME}" == "ros-humble-rclcpp-components" ]; then |
| 69 | + # 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 |
| 70 | + # 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 |
| 71 | + # 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 |
| 72 | + # else |
| 73 | + 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 |
| 74 | + 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 |
| 75 | + 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 |
| 76 | + # fi |
| 77 | + |
| 78 | + export BUILD_TYPE="Debug" |
| 79 | + export EXTRA_CMAKE_ARGS=" \ |
| 80 | + -DPYTHON_SOABI="cpython-${ROS_PYTHON_VERSION//./}-wasm32-emscripten" \ |
| 81 | + -DRMW_IMPLEMENTATION=rmw_wasm_cpp \ |
| 82 | + -DCMAKE_FIND_ROOT_PATH=$PREFIX \ |
| 83 | + -DCMAKE_POSITION_INDEPENDENT_CODE=TRUE \ |
| 84 | + -DCMAKE_PROJECT_INCLUDE=$SRC_DIR/__vinca_shared_lib_patch.cmake \ |
| 85 | + " |
| 86 | + |
| 87 | + unset -f cmake |
| 88 | + export CMAKE_GEN="emcmake cmake" |
| 89 | + export CMAKE_BLD="cmake" |
| 90 | + |
| 91 | + export STATIC_ROSIDL_TYPESUPPORT_C=rosidl_typesupport_introspection_c |
| 92 | + export STATIC_ROSIDL_TYPESUPPORT_CPP=rosidl_typesupport_introspection_cpp |
| 93 | +else |
| 94 | + export BUILD_TYPE="Release" |
| 95 | + export CMAKE_GEN="cmake" |
| 96 | + export CMAKE_BLD="cmake" |
| 97 | +fi; |
| 98 | + |
| 99 | +if [ "${PKG_NAME}" == "ros-humble-rmw-wasm-cpp" ]; then |
| 100 | + WORK_DIR=$SRC_DIR/$PKG_NAME/src/work/rmw_wasm_cpp |
| 101 | +elif [ "${PKG_NAME}" == "ros-humble-wasm-cpp" ]; then |
| 102 | + WORK_DIR=$SRC_DIR/$PKG_NAME/src/work/wasm_cpp |
| 103 | +elif [ "${PKG_NAME}" == "dynmsg" ]; then |
| 104 | + WORK_DIR=$SRC_DIR/$PKG_NAME/src/work/dynmsg |
| 105 | +else |
| 106 | + WORK_DIR=$SRC_DIR/$PKG_NAME/src/work/ |
| 107 | +fi; |
| 108 | + |
| 109 | +$CMAKE_GEN \ |
| 110 | + -G "Ninja" \ |
| 111 | + -DCMAKE_BUILD_TYPE=$BUILD_TYPE \ |
| 112 | + -DCMAKE_INSTALL_PREFIX=$PREFIX \ |
| 113 | + -DCMAKE_PREFIX_PATH=$PREFIX \ |
| 114 | + -DAMENT_PREFIX_PATH=$PREFIX \ |
| 115 | + -DCMAKE_INSTALL_LIBDIR=lib \ |
| 116 | + -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \ |
| 117 | + -DPython_EXECUTABLE=$PYTHON_EXECUTABLE \ |
| 118 | + -DPython3_EXECUTABLE=$PYTHON_EXECUTABLE \ |
| 119 | + -DPython3_FIND_STRATEGY=LOCATION \ |
| 120 | + -DPKG_CONFIG_EXECUTABLE=$PKG_CONFIG_EXECUTABLE \ |
| 121 | + -DPYTHON_INSTALL_DIR=$PYTHON_INSTALL_DIR \ |
| 122 | + -DSETUPTOOLS_DEB_LAYOUT=OFF \ |
| 123 | + -DCATKIN_SKIP_TESTING=$SKIP_TESTING \ |
| 124 | + -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=True \ |
| 125 | + -DBUILD_SHARED_LIBS=ON \ |
| 126 | + -DBUILD_TESTING=OFF \ |
| 127 | + -DCMAKE_IGNORE_PREFIX_PATH="/opt/homebrew;/usr/local/homebrew" \ |
| 128 | + -DCMAKE_OSX_DEPLOYMENT_TARGET=$OSX_DEPLOYMENT_TARGET \ |
| 129 | + --compile-no-warning-as-error \ |
| 130 | + $EXTRA_CMAKE_ARGS \ |
| 131 | + \ |
| 132 | + $WORK_DIR |
| 133 | + |
| 134 | +$CMAKE_BLD --build . --config $BUILD_TYPE --target install |
0 commit comments