summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCzarek Nakamoto <cyjan@mrcyjanek.net>2024-03-10 02:22:11 +0100
committerCzarek Nakamoto <cyjan@mrcyjanek.net>2024-03-10 22:13:01 +0100
commitf64511ca468acf946625c55ae18ddd699aa2a3ab (patch)
tree4905caffa3e98c63b7941595d0c84b05e1ccd7e0
parent0f26c8022c79577d524c428664d0c499cb2b2ad1 (diff)
use new build system
-rw-r--r--.woodpecker/linux.yaml121
-rwxr-xr-xbuild_single.sh87
-rw-r--r--libbridge/CMakeLists.txt35
3 files changed, 151 insertions, 92 deletions
diff --git a/.woodpecker/linux.yaml b/.woodpecker/linux.yaml
index f874610..b171fe9 100644
--- a/.woodpecker/linux.yaml
+++ b/.woodpecker/linux.yaml
@@ -3,90 +3,59 @@ clone:
image: woodpeckerci/plugin-git
settings:
partial: false
-matrix:
- include:
- # - image: git.mrcyjanek.net/mrcyjanek/debian:bookworm
- # platform: linux/amd64
- # make_steps: depends_host monero_linux_amd64 moneroc_linux_host64
- # prepare_cmd: echo ok
- # prepare_cmd_depends: echo ok
- # triplet: x86_64-linux-gnu
- # cc: clang
- # cxx: clang++
- # host:
- # boost_toolset: clang
- - image: git.mrcyjanek.net/mrcyjanek/debian:bookworm
- platform: linux/aarch64
- make_steps: depends_host monero_linux_arm64 moneroc_linux_host64
- prepare_cmd: echo ok
- prepare_cmd_depends: echo ok
- triplet: aarch64-linux-gnu
- cc: clang
- cxx: clang++
- host:
- boost_toolset: clang
- - image: alpine:3.19.1
- platform: linux/amd64
- make_steps: alpine_fix_libexecinfo depends_host monero_linux_amd64 moneroc_linux_host64
- prepare_cmd: echo ok
- prepare_cmd_depends: apk add make git curl g++ linux-headers perl libtool autoconf automake pkgconfig cmake bash bison abuild
- triplet: x86_64-alpine-linux-musl
- cc: gcc
- cxx: g++
- host:
- boost_toolset: gcc
- # - image: alpine:3.19.1
- # platform: linux/aarch64
- # make_steps: alpine_fix_libexecinfo depends_host monero_linux_arm64 moneroc_linux_host64
- # prepare_cmd: echo ok
- # prepare_cmd_depends: apk add make git curl g++ linux-headers perl libtool autoconf automake pkgconfig cmake bash bison abuild
- # triplet: aarch64-alpine-linux-musl
- # cc: gcc
- # cxx: g++
- - image: git.mrcyjanek.net/mrcyjanek/sailfishos:4.5.0.18_aarch64
- platform: linux/aarch64
- make_steps: depends_host monero_linux_arm64 moneroc_linux_host64
- prepare_cmd: zypper in -y git clang libxkbcommon-devel wayland-protocols-devel wayland-client wayland-egl-devel make glibc-static byacc
- prepare_cmd_depends: make host_tool_perl
- triplet: aarch64-linux-sailfishos
- cc: clang
- cxx: clang++
- host:
- boost_toolset: clang
- - image: git.mrcyjanek.net/mrcyjanek/osxcross:14_bookworm
- platform: linux/amd64
- make_steps: depends_host monero_linux_arm64 moneroc_linux_host64
- prepare_cmd: echo ok
- prepare_cmd_depends: echo ok
- triplet: x86_64-apple-darwin23
- cc: x86_64-apple-darwin23-clang
- cxx: x86_64-apple-darwin23-clang++
- host: x86_64-apple-darwin23
- boost_toolset: clang
- openssl_target: darwin64-x86_64
+
labels:
- platform: ${platform}
+ platform: linux/amd64
steps:
- - name: clone repositories
+ - name: clone monero and cache depends
image: git.mrcyjanek.net/mrcyjanek/debian:bookworm
commands:
- - git fetch
+ - git clone https://git.mrcyjanek.net/mrcyjanek/monero --recursive --depth=1 --branch=release-v0.18.3.2-legacy
+ - cd monero/contrib/depends
- make download
- - name: build depends
- image: ${image}
+ - name: x86_64-linux-gnu
+ image: git.mrcyjanek.net/mrcyjanek/debian:bookworm
+ commands:
+ - apt update
+ - apt install -y gcc g++ gperf
+ - ./build_single.sh x86_64-linux-gnu -j$(nproc)
+ - name: i686-linux-gnu
+ image: git.mrcyjanek.net/mrcyjanek/debian:bookworm
+ commands:
+ - apt update
+ - apt install -y gcc-i686-linux-gnu g++-i686-linux-gnu gperf
+ - ./build_single.sh i686-linux-gnu -j$(nproc)
+ - name: aarch64-linux-gnu
+ image: git.mrcyjanek.net/mrcyjanek/debian:bookworm
+ commands:
+ - apt update
+ - apt install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu gperf
+ - ./build_single.sh aarch64-linux-gnu -j$(nproc)
+ - name: x86_64-linux-android
+ image: git.mrcyjanek.net/mrcyjanek/debian:bookworm
+ commands:
+ - apt update
+ - apt install -y python-is-python3 libtinfo5 gperf
+ - ./build_single.sh x86_64-linux-android -j$(nproc)
+ - name: i686-linux-android
+ image: git.mrcyjanek.net/mrcyjanek/debian:bookworm
commands:
- - ${prepare_cmd}
- - ${prepare_cmd_depends}
- - CC=${cc} CXX=${cxx} HOST=${host} BOOST_TOOLSET=${boost_toolset} OPENSSL_TARGET=${openssl_target} make ${make_steps}
- - name: info
+ - apt update
+ - apt install -y python-is-python3 libtinfo5 gperf
+ - ./build_single.sh i686-linux-android -j$(nproc)
+ # - name: aarch64-linux-android
+ # image: git.mrcyjanek.net/mrcyjanek/debian:bookworm
+ # commands:
+ # - apt update
+ # - apt install -y python-is-python3 libtinfo5 gperf
+ # - ./build_single.sh aarch64-linux-android -j$(nproc)
+ - name: arm-linux-androideabi
image: git.mrcyjanek.net/mrcyjanek/debian:bookworm
commands:
- - ls -lah libbridge/build/libwallet2_api_c.so
- - file libbridge/build/libwallet2_api_c.so
- - md5sum libbridge/build/libwallet2_api_c.so
- - sha256sum libbridge/build/libwallet2_api_c.so
- - sha512sum libbridge/build/libwallet2_api_c.so
+ - apt update
+ - apt install -y python-is-python3 libtinfo5 gperf
+ - ./build_single.sh arm-linux-androideabi -j$(nproc)
- name: upload artifact
image: git.mrcyjanek.net/mrcyjanek/debian:bookworm
commands:
@@ -96,5 +65,5 @@ steps:
- chmod 700 ~/.ssh
- chmod 600 ~/.ssh/id_rsa
- xz -e libbridge/build/libwallet2_api_c.so
- - rsync --mkpath -e "ssh -o StrictHostKeyChecking=no" -raz libbridge/build/libwallet2_api_c.so.xz $${SSH_HOST}:"$${SSH_BASE_PATH}/$(git describe --tags)/$${triplet}_libwallet2_api_c.so.xz"
+ - rsync --mkpath -e "ssh -o StrictHostKeyChecking=no" -raz release/* $${SSH_HOST}:"$${SSH_BASE_PATH}/$(git describe --tags)/"
secrets: [ ssh_privkey, ssh_host, ssh_base_path ] \ No newline at end of file
diff --git a/build_single.sh b/build_single.sh
index 653b07d..0ad4dbb 100755
--- a/build_single.sh
+++ b/build_single.sh
@@ -15,13 +15,14 @@ then
echo "Usage: $0 $(gcc -dumpmachine) -j$(nproc)"
exit 1
fi
-
+cd $(dirname $0)
+WDIR=$PWD
CC=""
CXX=""
case "$HOST_ABI" in
"x86_64-linux-gnu")
export CC="x86_64-linux-gnu-gcc"
- export CC="x86_64-linux-gnu-g++"
+ export CXX="x86_64-linux-gnu-g++"
;;
"i686-linux-gnu")
export CC="i686-linux-gnu-gcc"
@@ -31,6 +32,43 @@ case "$HOST_ABI" in
export CC="aarch64-linux-gnu-gcc"
export CXX="aarch64-linux-gnu-g++"
;;
+ "x86_64-linux-android")
+ export PATH="$WDIR/monero/contrib/depends/x86_64-linux-android/native/bin/:$PATH"
+ export CC=x86_64-linux-android-clang
+ export CXX=x86_64-linux-android-clang++
+ ;;
+ "i686-linux-android")
+ export PATH="$WDIR/monero/contrib/depends/i686-linux-android/native/bin/:$PATH"
+ export CC=i686-linux-android-clang
+ export CXX=i686-linux-android-clang++
+ ;;
+ "aarch64-linux-android")
+ export PATH="$WDIR/monero/contrib/depends/aarch64-linux-android/native/bin/:$PATH"
+ export CC=aarch64-linux-android-clang
+ export CXX=aarch64-linux-android-clang++
+ ;;
+ "arm-linux-androideabi")
+ export PATH="$WDIR/monero/contrib/depends/arm-linux-androideabi/native/bin/:$PATH"
+ export CC=arm-linux-androideabi-clang
+ export CXX=arm-linux-androideabi-clang++
+ ;;
+ "i686-w64-mingw32")
+ update-alternatives --set i686-w64-mingw32-gcc /usr/bin/i686-w64-mingw32-gcc-posix
+ update-alternatives --set i686-w64-mingw32-g++ /usr/bin/i686-w64-mingw32-g++-posix
+ export CC=i686-w64-mingw32-gcc-posix
+ export CXX=i686-w64-mingw32-g++-posix
+ ;;
+ "x86_64-w64-mingw32")
+ update-alternatives --set x86_64-w64-mingw32-gcc /usr/bin/x86_64-w64-mingw32-gcc-posix
+ update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix
+ export CC=x86_64-w64-mingw32-gcc-posix
+ export CXX=x86_64-w64-mingw32-g++-posix
+ ;;
+ "x86_64-apple-darwin11")
+ export PATH="$WDIR/contrib/depends/x86_64-apple-darwin11/native/bin:$PATH"
+ export CC="clang -stdlib=libc++ -target x86_64-apple-darwin11 -mmacosx-version-min=10.7 --sysroot /build/monero/contrib/depends/x86_64-apple-darwin11/native/SDK/ -mlinker-version=609 -B/build/monero/contrib/depends/x86_64-apple-darwin11/native/bin/x86_64-apple-darwin11-"
+ export CXX="clang++ -stdlib=libc++ -target x86_64-apple-darwin11 -mmacosx-version-min=10.7 --sysroot /build/monero/contrib/depends/x86_64-apple-darwin11/native/SDK/ -mlinker-version=609 -B/build/monero/contrib/depends/x86_64-apple-darwin11/native/bin/x86_64-apple-darwin11-"
+ ;;
esac
if [[ "x$CC" == "x" ]];
@@ -45,7 +83,7 @@ then
exit 1
fi
-cd $(dirname $0)
+
pushd monero/contrib/depends
make HOST="$HOST_ABI" "$NPROC"
popd
@@ -53,16 +91,51 @@ popd
rm -rf monero/build/${HOST_ABI} 2>/dev/null || true
mkdir -p monero/build/${HOST_ABI}
pushd monero/build/${HOST_ABI}
- env CC=${CC} CXX=${CXX} cmake -DCMAKE_TOOLCHAIN_FILE=$PWD/../../contrib/depends/${HOST_ABI}/share/toolchain.cmake ../..
- env CC=${CC} CXX=${CXX} make wallet_api $NPROC
+ case "$HOST_ABI" in
+ "x86_64-linux-gnu")
+ env CC="${CC}" CXX="${CXX}" cmake -DCMAKE_TOOLCHAIN_FILE=$PWD/../../contrib/depends/${HOST_ABI}/share/toolchain.cmake -D USE_DEVICE_TREZOR=OFF -D BUILD_GUI_DEPS=1 -D BUILD_TESTS=OFF -D ARCH="x86-64" -D STATIC=ON -D BUILD_64="ON" -D CMAKE_BUILD_TYPE=release -D ANDROID=false -D BUILD_TAG="linux-x64" -D CMAKE_SYSTEM_NAME="Linux" ../..
+ ;;
+ "i686-linux-gnu")
+ env CC="${CC}" CXX="${CXX}" cmake -DCMAKE_TOOLCHAIN_FILE=$PWD/../../contrib/depends/${HOST_ABI}/share/toolchain.cmake -D USE_DEVICE_TREZOR=OFF -D BUILD_GUI_DEPS=1 -D BUILD_TESTS=OFF -D ARCH="i686" -D STATIC=ON -D BUILD_64="OFF" -D CMAKE_BUILD_TYPE=release -D ANDROID=false -D BUILD_TAG="linux-x86" -D CMAKE_SYSTEM_NAME="Linux" ../..
+ ;;
+ "aarch64-linux-gnu")
+ env CC="${CC}" CXX="${CXX}" cmake -DCMAKE_TOOLCHAIN_FILE=$PWD/../../contrib/depends/${HOST_ABI}/share/toolchain.cmake -D USE_DEVICE_TREZOR=OFF -D BUILD_GUI_DEPS=1 -D BUILD_TESTS=OFF -D ARCH="armv8-a" -D STATIC=ON -D BUILD_64="ON" -D CMAKE_BUILD_TYPE=release -D ANDROID=false -D BUILD_TAG="linux-armv8" -D CMAKE_SYSTEM_NAME="Linux" ../..
+ ;;
+ "x86_64-linux-android")
+ env CC="${CC}" CXX="${CXX}" cmake -DCMAKE_TOOLCHAIN_FILE=$PWD/../../contrib/depends/${HOST_ABI}/share/toolchain.cmake -D USE_DEVICE_TREZOR=OFF -D BUILD_GUI_DEPS=1 -D BUILD_TESTS=OFF -D ARCH="x86-64" -D STATIC=ON -D BUILD_64="ON" -D CMAKE_BUILD_TYPE=release -D ANDROID=true -D BUILD_TAG="android-x86_64" -D CMAKE_SYSTEM_NAME="Android" -D CMAKE_ANDROID_ARCH_ABI="x86_64" ../..
+ ;;
+ "i686-linux-android")
+ env CC="${CC}" CXX="${CXX}" cmake -DCMAKE_TOOLCHAIN_FILE=$PWD/../../contrib/depends/${HOST_ABI}/share/toolchain.cmake -D USE_DEVICE_TREZOR=OFF -D BUILD_GUI_DEPS=1 -D BUILD_TESTS=OFF -D ARCH="x86" -D STATIC=ON -D BUILD_64="OFF" -D CMAKE_BUILD_TYPE=release -D ANDROID=true -D BUILD_TAG="android-x86" -D CMAKE_SYSTEM_NAME="Android" -D CMAKE_ANDROID_ARCH_ABI="x86" ../..
+ ;;
+ "aarch64-linux-android")
+ env CC="${CC}" CXX="${CXX}" cmake -DCMAKE_TOOLCHAIN_FILE=$PWD/../../contrib/depends/${HOST_ABI}/share/toolchain.cmake -D USE_DEVICE_TREZOR=OFF -D BUILD_GUI_DEPS=1 -D BUILD_TESTS=OFF -D ARCH="armv8-a" -D STATIC=ON -D BUILD_64="ON" -D CMAKE_BUILD_TYPE=release -D ANDROID=true -D BUILD_TAG="android-armv8" -D CMAKE_SYSTEM_NAME="Android" -D CMAKE_ANDROID_ARCH_ABI="arm64-v8a" ../..
+ ;;
+ "arm-linux-androideabi")
+ env CC="${CC}" CXX="${CXX}" cmake -DCMAKE_TOOLCHAIN_FILE=$PWD/../../contrib/depends/${HOST_ABI}/share/toolchain.cmake -D USE_DEVICE_TREZOR=OFF -D BUILD_GUI_DEPS=1 -D BUILD_TESTS=OFF -D ARCH="armv7-a" -D STATIC=ON -D BUILD_64="OFF" -D CMAKE_BUILD_TYPE=release -D ANDROID=true -D BUILD_TAG="android-armv7" -D CMAKE_SYSTEM_NAME="Android" -D CMAKE_ANDROID_ARCH_ABI="armeabi-v7a" ../..
+ ;;
+ "x86_64-w64-mingw32")
+ env CC="${CC}" CXX="${CXX}" cmake -DCMAKE_TOOLCHAIN_FILE=$PWD/../../contrib/depends/${HOST_ABI}/share/toolchain.cmake -D USE_DEVICE_TREZOR=OFF -D BUILD_GUI_DEPS=1 -D BUILD_TESTS=OFF -D STATIC=ON -D ARCH="x86-64" -D BUILD_64=ON -D CMAKE_BUILD_TYPE=Release -D BUILD_TAG="win-x64" ../..
+ ;;
+ "i686-w64-mingw32")
+ env CC="${CC}" CXX="${CXX}" cmake -DCMAKE_TOOLCHAIN_FILE=$PWD/../../contrib/depends/${HOST_ABI}/share/toolchain.cmake -D USE_DEVICE_TREZOR=OFF -D BUILD_GUI_DEPS=1 -D BUILD_TESTS=OFF -D STATIC=ON -D ARCH="i686" -D BUILD_64=OFF -D CMAKE_BUILD_TYPE=Release -D BUILD_TAG="win-x32" ../..
+ ;;
+ "x86_64-apple-darwin11")
+ env CC="${CC}" CXX="${CXX}" cmake -DCMAKE_TOOLCHAIN_FILE=$PWD/../../contrib/depends/${HOST_ABI}/share/toolchain.cmake -D USE_DEVICE_TREZOR=OFF -D BUILD_GUI_DEPS=1 -D BUILD_TESTS=OFF -D STATIC=ON -D ARCH="x86-64" -D BUILD_64=ON -D CMAKE_BUILD_TYPE=Release -D BUILD_TAG="mac-x64" ../..
+ ;;
+ *)
+ echo "we don't know how to compile monero for '$HOST_ABI'"
+ exit 1
+ ;;
+ esac
+ CC=gcc CXX=g++ make wallet_api $NPROC
popd
pushd libbridge
rm -rf build/${HOST_ABI} || true
mkdir -p build/${HOST_ABI} -p
cd build/${HOST_ABI}
- env CC=${CC} CXX=${CXX} cmake -DHOST_ABI=${HOST_ABI} ../..
- env CC=${CC} CXX=${CXX} make $NPROC
+ env CC="${CC}" CXX="${CXX}" cmake -DHOST_ABI=${HOST_ABI} ../..
+ env CC="${CC}" CXX="${CXX}" make $NPROC
popd
mkdir release 2>/dev/null || true
diff --git a/libbridge/CMakeLists.txt b/libbridge/CMakeLists.txt
index e340bef..30a454b 100644
--- a/libbridge/CMakeLists.txt
+++ b/libbridge/CMakeLists.txt
@@ -36,41 +36,58 @@ set_target_properties(ssl PROPERTIES IMPORTED_LOCATION
# Boost
############
+if(${HOST_ABI} STREQUAL "x86_64-linux-android" OR ${HOST_ABI} STREQUAL "aarch64-linux-android" OR ${HOST_ABI} STREQUAL "arm-linux-androideabi" OR ${HOST_ABI} STREQUAL "i686-linux-android")
+ set(BOOST_WTF "-mt-s")
+ set(BOOST_WTF_PART "")
+elseif(${HOST_ABI} STREQUAL "x86_64-w64-mingw32")
+ set(BOOST_WTF "-mt-s")
+ set(BOOST_WTF_PART "_win32")
+else()
+ set(BOOST_WTF "-mt")
+ set(BOOST_WTF_PART "")
+endif()
+
+if(${HOST_ABI} STREQUAL "x86_64-w64-mingw32")
+ set(CMAKE_SYSTEM_NAME "Windows")
+ set(CMAKE_LINKER "x86_64-w64-mingw32-ld")
+ set(TARGET "x86_64-w64-mingw32")
+endif()
+
add_library(boost_chrono STATIC IMPORTED)
set_target_properties(boost_chrono PROPERTIES IMPORTED_LOCATION
- ${EXTERNAL_LIBS_DIR}/lib/libboost_chrono-mt-d.a)
+ ${EXTERNAL_LIBS_DIR}/lib/libboost_chrono${BOOST_WTF}.a)
add_library(boost_date_time STATIC IMPORTED)
set_target_properties(boost_date_time PROPERTIES IMPORTED_LOCATION
- ${EXTERNAL_LIBS_DIR}/lib/libboost_date_time-mt.a)
+ ${EXTERNAL_LIBS_DIR}/lib/libboost_date_time${BOOST_WTF}.a)
add_library(boost_filesystem STATIC IMPORTED)
set_target_properties(boost_filesystem PROPERTIES IMPORTED_LOCATION
- ${EXTERNAL_LIBS_DIR}/lib/libboost_filesystem-mt.a)
+ ${EXTERNAL_LIBS_DIR}/lib/libboost_filesystem${BOOST_WTF}.a)
add_library(boost_program_options STATIC IMPORTED)
set_target_properties(boost_program_options PROPERTIES IMPORTED_LOCATION
- ${EXTERNAL_LIBS_DIR}/lib/libboost_program_options-mt.a)
+ ${EXTERNAL_LIBS_DIR}/lib/libboost_program_options${BOOST_WTF}.a)
add_library(boost_regex STATIC IMPORTED)
set_target_properties(boost_regex PROPERTIES IMPORTED_LOCATION
- ${EXTERNAL_LIBS_DIR}/lib/libboost_regex-mt.a)
+ ${EXTERNAL_LIBS_DIR}/lib/libboost_regex${BOOST_WTF}.a)
add_library(boost_serialization STATIC IMPORTED)
set_target_properties(boost_serialization PROPERTIES IMPORTED_LOCATION
- ${EXTERNAL_LIBS_DIR}/lib/libboost_serialization-mt.a)
+ ${EXTERNAL_LIBS_DIR}/lib/libboost_serialization${BOOST_WTF}.a)
add_library(boost_system STATIC IMPORTED)
set_target_properties(boost_system PROPERTIES IMPORTED_LOCATION
- ${EXTERNAL_LIBS_DIR}/lib/libboost_system-mt.a)
+ ${EXTERNAL_LIBS_DIR}/lib/libboost_system${BOOST_WTF}.a)
add_library(boost_thread STATIC IMPORTED)
set_target_properties(boost_thread PROPERTIES IMPORTED_LOCATION
- ${EXTERNAL_LIBS_DIR}/lib/libboost_thread-mt.a)
+ ${EXTERNAL_LIBS_DIR}/lib/libboost_thread${BOOST_WTF_PART}${BOOST_WTF}.a)
add_library(boost_wserialization STATIC IMPORTED)
set_target_properties(boost_wserialization PROPERTIES IMPORTED_LOCATION
- ${EXTERNAL_LIBS_DIR}/lib/libboost_wserialization-mt.a)
+ ${EXTERNAL_LIBS_DIR}/lib/libboost_wserialization${BOOST_WTF}.a)
#############
# Polyseed