This commit is contained in:
Czarek Nakamoto
2024-03-26 19:34:04 +01:00
parent 6abd77290c
commit b2ce0ed438
3 changed files with 123 additions and 99 deletions

View File

@@ -11,14 +11,19 @@ labels:
when:
- event: tag
matrix:
repo:
- monero
- wownero
steps:
- name: patch monero and cache depends
- name: patch ${repo} and cache depends
image: git.mrcyjanek.net/mrcyjanek/debian:buster
commands:
- cd monero && git submodule update --init --force && cd ..
- ./apply_patches.sh
- cd monero/contrib/depends
- for i in sources built; do cp "/root/.cache/$i" . -r || true; done
- cd ${repo} && git submodule update --init --force && cd ..
- ./apply_patches.sh ${repo}
- cd ${repo}/contrib/depends
- for i in sources built; do cp "/root/.cache/${repo}/$i" . -r || true; done
- make download
volumes:
- /opt/cache/monero_c/dotcache:/root/.cache
@@ -26,55 +31,56 @@ steps:
image: git.mrcyjanek.net/mrcyjanek/debian:buster
commands:
- apt update
- apt install -y gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 gperf libtinfo5
- ./build_single.sh x86_64-w64-mingw32 -j$(nproc)
- apt install -y ccache gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 gperf libtinfo5
- ./build_single.sh ${repo} x86_64-w64-mingw32 -j$(nproc)
- name: i686-w64-mingw32
image: git.mrcyjanek.net/mrcyjanek/debian:buster
commands:
- apt update
- apt install -y gcc-mingw-w64-i686 g++-mingw-w64-i686 gperf libtinfo5
- ./build_single.sh i686-w64-mingw32 -j$(nproc)
- apt install -y ccache gcc-mingw-w64-i686 g++-mingw-w64-i686 gperf libtinfo5
- ./build_single.sh ${repo} i686-w64-mingw32 -j$(nproc)
- name: x86_64-linux-gnu
image: git.mrcyjanek.net/mrcyjanek/debian:buster
commands:
- apt update
- apt install -y gcc g++ gperf
- ./build_single.sh x86_64-linux-gnu -j$(nproc)
- apt install -y ccache gcc g++ gperf
- ./build_single.sh ${repo} x86_64-linux-gnu -j$(nproc)
- name: i686-linux-gnu
image: git.mrcyjanek.net/mrcyjanek/debian:buster
commands:
- apt update
- apt install -y gcc-i686-linux-gnu g++-i686-linux-gnu gperf
- ./build_single.sh i686-linux-gnu -j$(nproc)
- apt install -y ccache gcc-i686-linux-gnu g++-i686-linux-gnu gperf
- ./build_single.sh ${repo} i686-linux-gnu -j$(nproc)
- name: aarch64-linux-gnu
image: git.mrcyjanek.net/mrcyjanek/debian:buster
commands:
- apt update
- apt install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu gperf
- ./build_single.sh aarch64-linux-gnu -j$(nproc)
- apt install -y ccache gcc-aarch64-linux-gnu g++-aarch64-linux-gnu gperf
- ./build_single.sh ${repo} aarch64-linux-gnu -j$(nproc)
- name: x86_64-linux-android
image: git.mrcyjanek.net/mrcyjanek/debian:buster
commands:
- apt update
- apt install -y libtinfo5 gperf
- ./build_single.sh x86_64-linux-android -j$(nproc)
- apt install -y ccache libtinfo5 gperf
- ./build_single.sh ${repo} x86_64-linux-android -j$(nproc)
- name: aarch64-linux-android
image: git.mrcyjanek.net/mrcyjanek/debian:buster
commands:
- apt update
- apt install -y libtinfo5 gperf
- ./build_single.sh aarch64-linux-android -j$(nproc)
- apt install -y ccache libtinfo5 gperf
- ./build_single.sh ${repo} aarch64-linux-android -j$(nproc)
- name: arm-linux-androideabi
image: git.mrcyjanek.net/mrcyjanek/debian:buster
commands:
- apt update
- apt install -y libtinfo5 gperf
- ./build_single.sh arm-linux-androideabi -j$(nproc)
- apt install -y ccache libtinfo5 gperf
- ./build_single.sh ${repo} arm-linux-androideabi -j$(nproc)
- name: cache depends
image: git.mrcyjanek.net/mrcyjanek/debian:buster
commands:
- cd monero/contrib/depends
- for i in sources built; do cp "$i" "/root/.cache/" -r || true; done
- cd ${repo}/contrib/depends
- mkdir -p /root/.cache/${repo} || true
- for i in sources built; do cp "$i" "/root/.cache/${repo}" -r || true; done
volumes:
- /opt/cache/monero_c/dotcache:/root/.cache
- name: upload artifact

View File

@@ -1,18 +1,37 @@
#!/bin/bash
set -e
HOST_ABI="$1"
if [[ "x$HOST_ABI" == "x" ]];
repo=$1
if [[ "x$repo" == "x" ]];
then
echo "Usage: $0 $(gcc -dumpmachine) -j$(nproc)"
echo "Usage: $0 monero/wownero"
exit 1
fi
NPROC="$2"
if [[ "x$repo" != "xwownero" && "x$repo" != "xmonero" ]];
then
echo "Usage: $0 monero/wownero"
echo "Invalid target given, only monero and wownero are supported targets"
fi
if [[ ! -d "$repo" ]]
then
echo "no '$repo' directory found. clone with --recursive or run:"
echo "$ git submodule init && git submodule update --force";
exit 1
fi
HOST_ABI="$2"
if [[ "x$HOST_ABI" == "x" ]];
then
echo "Usage: $0 monero/wownero $(gcc -dumpmachine) -j$(nproc)"
exit 1
fi
NPROC="$3"
if [[ "x$NPROC" == "x" ]];
then
echo "Usage: $0 $(gcc -dumpmachine) -j$(nproc)"
echo "Usage: $0 monero/wownero $(gcc -dumpmachine) -j$(nproc)"
exit 1
fi
cd $(dirname $0)
@@ -33,22 +52,22 @@ case "$HOST_ABI" in
export CXX="${HOST_ABI}-g++"
;;
"x86_64-linux-android")
export PATH="$WDIR/monero/contrib/depends/${HOST_ABI}/native/bin/:$PATH"
export PATH="$WDIR/$repo/contrib/depends/${HOST_ABI}/native/bin/:$PATH"
export CC=${HOST_ABI}-clang
export CXX=${HOST_ABI}-clang++
;;
"i686-linux-android")
export PATH="$WDIR/monero/contrib/depends/${HOST_ABI}/native/bin/:$PATH"
export PATH="$WDIR/$repo/contrib/depends/${HOST_ABI}/native/bin/:$PATH"
export CC=${HOST_ABI}-clang
export CXX=${HOST_ABI}-clang++
;;
"aarch64-linux-android")
export PATH="$WDIR/monero/contrib/depends/${HOST_ABI}/native/bin/:$PATH"
export PATH="$WDIR/$repo/contrib/depends/${HOST_ABI}/native/bin/:$PATH"
export CC=${HOST_ABI}-clang
export CXX=${HOST_ABI}-clang++
;;
"arm-linux-androideabi")
export PATH="$WDIR/monero/contrib/depends/${HOST_ABI}/native/bin/:$PATH"
export PATH="$WDIR/$repo/contrib/depends/${HOST_ABI}/native/bin/:$PATH"
export CC=${HOST_ABI}-clang
export CXX=${HOST_ABI}-clang++
;;
@@ -65,9 +84,9 @@ case "$HOST_ABI" in
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-"
export PATH="$WDIR/$repo/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/$repo/contrib/depends/x86_64-apple-darwin11/native/SDK/ -mlinker-version=609 -B/build/$repo/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/$repo/contrib/depends/x86_64-apple-darwin11/native/SDK/ -mlinker-version=609 -B/build/$repo/contrib/depends/x86_64-apple-darwin11/native/bin/x86_64-apple-darwin11-"
;;
esac
@@ -84,15 +103,15 @@ then
fi
pushd monero/contrib/depends
pushd $repo/contrib/depends
CC=gcc CXX=g++ make HOST="$HOST_ABI" "$NPROC"
popd
buildType=Release
rm -rf monero/build/${HOST_ABI} 2>/dev/null || true
mkdir -p monero/build/${HOST_ABI}
pushd monero/build/${HOST_ABI}
rm -rf $repo/build/${HOST_ABI} 2>/dev/null || true
mkdir -p $repo/build/${HOST_ABI}
pushd $repo/build/${HOST_ABI}
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=$buildType -D ANDROID=false -D BUILD_TAG="linux-x64" -D CMAKE_SYSTEM_NAME="Linux" ../..
@@ -132,61 +151,54 @@ pushd monero/build/${HOST_ABI}
CC=gcc CXX=g++ make wallet_api $NPROC
popd
for buildType in Release Debug
do
pushd libbridge
rm -rf build/${HOST_ABI} || true
mkdir -p build/${HOST_ABI} -p
cd build/${HOST_ABI}
env CC="${CC}" CXX="${CXX}" cmake -DCMAKE_BUILD_TYPE=$buildType -DHOST_ABI=${HOST_ABI} ../..
CC="${CC}" CXX="${CXX}" make $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 -DMONERO_FLAVOR=$repo -DCMAKE_BUILD_TYPE=Debug -DHOST_ABI=${HOST_ABI} ../..
CC="${CC}" CXX="${CXX}" make $NPROC
popd
mkdir release 2>/dev/null || true
pushd release
APPENDIX=""
if [[ "x$buildType" == "xDebug" ]];
then
DEBUG=".DEBUG"
fi
if [[ "${HOST_ABI}" == "x86_64-w64-mingw32" || "${HOST_ABI}" == "i686-w64-mingw32" ]];
then
APPENDIX="${APPENDIX}dll"
cp ../monero/build/${HOST_ABI}/external/polyseed/libpolyseed.${APPENDIX} ${HOST_ABI}_libpolyseed${DEBUG}.${APPENDIX}
rm ${HOST_ABI}_libpolyseed${DEBUG}.${APPENDIX}.xz || true
xz -e ${HOST_ABI}_libpolyseed${DEBUG}.${APPENDIX}
else
APPENDIX="${APPENDIX}so"
fi
xz -e ../libbridge/build/${HOST_ABI}/libwallet2_api_c.${APPENDIX}
mv ../libbridge/build/${HOST_ABI}/libwallet2_api_c.${APPENDIX}.xz ${HOST_ABI}_libwallet2_api_c${DEBUG}.${APPENDIX}.xz
# Extra libraries
if [[ "$HOST_ABI" == "x86_64-w64-mingw32" || "$HOST_ABI" == "i686-w64-mingw32" ]];
then
cp /usr/${HOST_ABI}/lib/libwinpthread-1.dll ${HOST_ABI}_libwinpthread-1.dll
rm ${HOST_ABI}_libwinpthread-1.dll.xz || true
xz -e ${HOST_ABI}_libwinpthread-1.dll
####
cp /usr/lib/gcc/${HOST_ABI}/8.3-posix/libstdc++-6.dll ${HOST_ABI}_libstdc++-6.dll
rm ${HOST_ABI}_libstdc++-6.dll.xz || true
xz -e ${HOST_ABI}_libstdc++-6.dll
####
cp /usr/lib/gcc/${HOST_ABI}/8.3-posix/libssp-0.dll ${HOST_ABI}_libssp-0.dll
rm ${HOST_ABI}_libssp-0.dll.xz || true
xz -e ${HOST_ABI}_libssp-0.dll
fi
if [[ "$HOST_ABI" == "x86_64-w64-mingw32" ]];
then
cp /usr/lib/gcc/${HOST_ABI}/8.3-posix/libgcc_s_seh-1.dll ${HOST_ABI}_libgcc_s_seh-1.dll
rm ${HOST_ABI}_libgcc_s_seh-1.dll.xz || true
xz -e ${HOST_ABI}_libgcc_s_seh-1.dll
fi
if [[ "$HOST_ABI" == "i686-w64-mingw32" ]];
then
cp /usr/lib/gcc/${HOST_ABI}/8.3-posix/libgcc_s_sjlj-1.dll ${HOST_ABI}_libgcc_s_sjlj-1.dll
rm ${HOST_ABI}_libgcc_s_sjlj-1.dll.xz || true
xz -e ${HOST_ABI}_libgcc_s_sjlj-1.dll
fi
popd
done
mkdir -p release/$repo 2>/dev/null || true
pushd release/$repo
APPENDIX=""
if [[ "${HOST_ABI}" == "x86_64-w64-mingw32" || "${HOST_ABI}" == "i686-w64-mingw32" ]];
then
APPENDIX="${APPENDIX}dll"
cp ../../$repo/build/${HOST_ABI}/external/polyseed/libpolyseed.${APPENDIX} ${HOST_ABI}_libpolyseed.${APPENDIX}
rm ${HOST_ABI}_libpolyseed.${APPENDIX}.xz || true
xz -e ${HOST_ABI}_libpolyseed.${APPENDIX}
else
APPENDIX="${APPENDIX}so"
fi
xz -e ../../libbridge/build/${HOST_ABI}/libwallet2_api_c.${APPENDIX}
mv ../../libbridge/build/${HOST_ABI}/libwallet2_api_c.${APPENDIX}.xz ${HOST_ABI}_libwallet2_api_c.${APPENDIX}.xz
# Extra libraries
if [[ "$HOST_ABI" == "x86_64-w64-mingw32" || "$HOST_ABI" == "i686-w64-mingw32" ]];
then
cp /usr/${HOST_ABI}/lib/libwinpthread-1.dll ${HOST_ABI}_libwinpthread-1.dll
rm ${HOST_ABI}_libwinpthread-1.dll.xz || true
xz -e ${HOST_ABI}_libwinpthread-1.dll
####
cp /usr/lib/gcc/${HOST_ABI}/8.3-posix/libstdc++-6.dll ${HOST_ABI}_libstdc++-6.dll
rm ${HOST_ABI}_libstdc++-6.dll.xz || true
xz -e ${HOST_ABI}_libstdc++-6.dll
####
cp /usr/lib/gcc/${HOST_ABI}/8.3-posix/libssp-0.dll ${HOST_ABI}_libssp-0.dll
rm ${HOST_ABI}_libssp-0.dll.xz || true
xz -e ${HOST_ABI}_libssp-0.dll
fi
if [[ "$HOST_ABI" == "x86_64-w64-mingw32" ]];
then
cp /usr/lib/gcc/${HOST_ABI}/8.3-posix/libgcc_s_seh-1.dll ${HOST_ABI}_libgcc_s_seh-1.dll
rm ${HOST_ABI}_libgcc_s_seh-1.dll.xz || true
xz -e ${HOST_ABI}_libgcc_s_seh-1.dll
fi
if [[ "$HOST_ABI" == "i686-w64-mingw32" ]];
then
cp /usr/lib/gcc/${HOST_ABI}/8.3-posix/libgcc_s_sjlj-1.dll ${HOST_ABI}_libgcc_s_sjlj-1.dll
rm ${HOST_ABI}_libgcc_s_sjlj-1.dll.xz || true
xz -e ${HOST_ABI}_libgcc_s_sjlj-1.dll
fi
popd

View File

@@ -21,7 +21,7 @@ add_library( wallet2_api_c
src/main/cpp/helpers.cpp
src/main/cpp/wallet2_api_c.cpp )
set(MONERO_DIR ${CMAKE_SOURCE_DIR}/../monero)
set(MONERO_DIR ${CMAKE_SOURCE_DIR}/../${MONERO_FLAVOR})
set(EXTERNAL_LIBS_DIR ${MONERO_DIR}/contrib/depends/${HOST_ABI})
############
@@ -226,9 +226,15 @@ add_library(hardforks STATIC IMPORTED)
set_target_properties(hardforks PROPERTIES IMPORTED_LOCATION
${MONERO_DIR}/build/${HOST_ABI}/src/hardforks/libhardforks.a)
if (${MONERO_FLAVOR} STREQUAL "monero")
set(RANDOMX_FLAVOR "randomx")
elseif(${MONERO_FLAVOR} STREQUAL "wownero")
set(RANDOMX_FLAVOR "randomwow")
endif()
add_library(randomx STATIC IMPORTED)
set_target_properties(randomx PROPERTIES IMPORTED_LOCATION
${MONERO_DIR}/build/${HOST_ABI}/external/randomx/librandomx.a)
${MONERO_DIR}/build/${HOST_ABI}/external/${RANDOMX_FLAVOR}/librandomx.a)
add_library(rpc_base STATIC IMPORTED)
set_target_properties(rpc_base PROPERTIES IMPORTED_LOCATION