summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.woodpecker/linux.yaml22
-rw-r--r--README.md2
-rwxr-xr-xbuild_single.sh47
-rw-r--r--libbridge/CMakeLists.txt44
-rw-r--r--patches/0004-fix-build.patch2
5 files changed, 91 insertions, 26 deletions
diff --git a/.woodpecker/linux.yaml b/.woodpecker/linux.yaml
index 38675d5..6adf2e7 100644
--- a/.woodpecker/linux.yaml
+++ b/.woodpecker/linux.yaml
@@ -18,7 +18,22 @@ steps:
- 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
- make download
+ volumes:
+ - /opt/cache/monero_c/dotcache:/root/.cache
+ - name: x86_64-w64-mingw32
+ 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)
+ - 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)
- name: x86_64-linux-gnu
image: git.mrcyjanek.net/mrcyjanek/debian:buster
commands:
@@ -55,6 +70,13 @@ steps:
- apt update
- apt install -y libtinfo5 gperf
- ./build_single.sh 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
+ volumes:
+ - /opt/cache/monero_c/dotcache:/root/.cache
- name: upload artifact
image: git.mrcyjanek.net/mrcyjanek/debian:bookworm
commands:
diff --git a/README.md b/README.md
index d4c34bc..aa90603 100644
--- a/README.md
+++ b/README.md
@@ -8,4 +8,4 @@
To contribute you can visit git.mrcyjanek.net/mrcyjanek/monero_c and open a PR, alternatively use any other code mirror or send patches directly.
-**IMPORTANT** I don't have time to write better README, please check `build_single.sh` for build instructions, in general it comes down to \ No newline at end of file
+**IMPORTANT** I don't have time to write better README, please check `build_single.sh` for build instructions, in general it comes down to running the script. \ No newline at end of file
diff --git a/build_single.sh b/build_single.sh
index 0ad4dbb..71a0ff7 100755
--- a/build_single.sh
+++ b/build_single.sh
@@ -21,36 +21,36 @@ CC=""
CXX=""
case "$HOST_ABI" in
"x86_64-linux-gnu")
- export CC="x86_64-linux-gnu-gcc"
- export CXX="x86_64-linux-gnu-g++"
+ export CC="${HOST_ABI}-gcc"
+ export CXX="${HOST_ABI}-g++"
;;
"i686-linux-gnu")
- export CC="i686-linux-gnu-gcc"
- export CXX="i686-linux-gnu-g++"
+ export CC="${HOST_ABI}-gcc"
+ export CXX="${HOST_ABI}-g++"
;;
"aarch64-linux-gnu")
- export CC="aarch64-linux-gnu-gcc"
- export CXX="aarch64-linux-gnu-g++"
+ export CC="${HOST_ABI}-gcc"
+ export CXX="${HOST_ABI}-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++
+ export PATH="$WDIR/monero/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/i686-linux-android/native/bin/:$PATH"
- export CC=i686-linux-android-clang
- export CXX=i686-linux-android-clang++
+ export PATH="$WDIR/monero/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/aarch64-linux-android/native/bin/:$PATH"
- export CC=aarch64-linux-android-clang
- export CXX=aarch64-linux-android-clang++
+ export PATH="$WDIR/monero/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/arm-linux-androideabi/native/bin/:$PATH"
- export CC=arm-linux-androideabi-clang
- export CXX=arm-linux-androideabi-clang++
+ export PATH="$WDIR/monero/contrib/depends/${HOST_ABI}/native/bin/:$PATH"
+ export CC=${HOST_ABI}-clang
+ export CXX=${HOST_ABI}-clang++
;;
"i686-w64-mingw32")
update-alternatives --set i686-w64-mingw32-gcc /usr/bin/i686-w64-mingw32-gcc-posix
@@ -85,7 +85,7 @@ fi
pushd monero/contrib/depends
- make HOST="$HOST_ABI" "$NPROC"
+ CC=gcc CXX=g++ make HOST="$HOST_ABI" "$NPROC"
popd
rm -rf monero/build/${HOST_ABI} 2>/dev/null || true
@@ -140,6 +140,11 @@ popd
mkdir release 2>/dev/null || true
pushd release
- xz -e ../libbridge/build/${HOST_ABI}/libwallet2_api_c.so
- mv ../libbridge/build/${HOST_ABI}/libwallet2_api_c.so.xz ${HOST_ABI}_libwallet2_api_c.so.xz
+ APPENDIX=so
+ if [[ "${HOST_ABI}" == "x86_64-w64-mingw32" || "${HOST_ABI}" == "i686-w64-mingw32" ]];
+ then
+ APPENDIX=dll
+ 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
popd \ No newline at end of file
diff --git a/libbridge/CMakeLists.txt b/libbridge/CMakeLists.txt
index 30a454b..a227c49 100644
--- a/libbridge/CMakeLists.txt
+++ b/libbridge/CMakeLists.txt
@@ -37,9 +37,10 @@ set_target_properties(ssl PROPERTIES IMPORTED_LOCATION
############
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(CMAKE_LINKER ${HOST_ABI}-ld)
set(BOOST_WTF "-mt-s")
set(BOOST_WTF_PART "")
-elseif(${HOST_ABI} STREQUAL "x86_64-w64-mingw32")
+elseif(${HOST_ABI} STREQUAL "x86_64-w64-mingw32" OR ${HOST_ABI} STREQUAL "i686-w64-mingw32")
set(BOOST_WTF "-mt-s")
set(BOOST_WTF_PART "_win32")
else()
@@ -48,15 +49,30 @@ else()
endif()
if(${HOST_ABI} STREQUAL "x86_64-w64-mingw32")
- set(CMAKE_SYSTEM_NAME "Windows")
+ set(CMAKE_SYSTEM_NAME Windows)
set(CMAKE_LINKER "x86_64-w64-mingw32-ld")
- set(TARGET "x86_64-w64-mingw32")
+ set(TARGET "x86_64-w64-mingw32")
+elseif(${HOST_ABI} STREQUAL "i686-w64-mingw32")
+ set(CMAKE_SYSTEM_NAME Windows)
+ set(CMAKE_LINKER "i686-w64-mingw32-ld")
+ set(TARGET "i686-w64-mingw32")
endif()
+
add_library(boost_chrono STATIC IMPORTED)
set_target_properties(boost_chrono PROPERTIES IMPORTED_LOCATION
${EXTERNAL_LIBS_DIR}/lib/libboost_chrono${BOOST_WTF}.a)
+# win extra
+add_library(boost_locale STATIC IMPORTED)
+set_target_properties(boost_locale PROPERTIES IMPORTED_LOCATION
+ ${EXTERNAL_LIBS_DIR}/lib/libboost_locale${BOOST_WTF}.a)
+
+# win extra
+add_library(iconv STATIC IMPORTED)
+set_target_properties(iconv PROPERTIES IMPORTED_LOCATION
+ ${EXTERNAL_LIBS_DIR}/lib/libiconv.a)
+
add_library(boost_date_time STATIC IMPORTED)
set_target_properties(boost_date_time PROPERTIES IMPORTED_LOCATION
${EXTERNAL_LIBS_DIR}/lib/libboost_date_time${BOOST_WTF}.a)
@@ -101,6 +117,13 @@ add_library(polyseed-wrapper STATIC IMPORTED)
set_target_properties(polyseed-wrapper PROPERTIES IMPORTED_LOCATION
${MONERO_DIR}/build/${HOST_ABI}/src/polyseed/libpolyseed_wrapper.a)
+if(${HOST_ABI} STREQUAL "x86_64-w64-mingw32" OR ${HOST_ABI} STREQUAL "i686-w64-mingw32")
+ set(EXTRA_LIBS_POLYSEED polyseed-win)
+ add_library(polyseed-win STATIC IMPORTED)
+ set_target_properties(polyseed-win PROPERTIES IMPORTED_LOCATION
+ ${MONERO_DIR}/build/${HOST_ABI}/external/polyseed/libpolyseed.dll.a)
+endif()
+
#############
# Utf8proc
#############
@@ -218,6 +241,10 @@ add_library(cryptonote_format_utils_basic STATIC IMPORTED)
set_target_properties(cryptonote_format_utils_basic PROPERTIES IMPORTED_LOCATION
${MONERO_DIR}/build/${HOST_ABI}/src/cryptonote_basic/libcryptonote_format_utils_basic.a)
+add_library(hidapi STATIC IMPORTED)
+set_target_properties(hidapi PROPERTIES IMPORTED_LOCATION
+ ${EXTERNAL_LIBS_DIR}/lib/libhidapi.a)
+
#############
# System
#############
@@ -236,6 +263,13 @@ endif()
# target_compile_options(wallet2_api_c PRIVATE -static-libstdc++)
+if(${HOST_ABI} STREQUAL "x86_64-w64-mingw32" OR ${HOST_ABI} STREQUAL "i686-w64-mingw32")
+ set_target_properties(wallet2_api_c PROPERTIES SUFFIX ".dll")
+
+ set(EXTRA_LIBS_WINDOWS wsock32 ws2_32 iconv iphlpapi crypt32 hidapi)
+endif()
+
+
target_link_libraries( wallet2_api_c
wallet_api
@@ -266,6 +300,7 @@ target_link_libraries( wallet2_api_c
${EXTRA_LIBS}
boost_chrono
+ boost_locale
boost_date_time
boost_filesystem
boost_program_options
@@ -277,10 +312,13 @@ target_link_libraries( wallet2_api_c
polyseed
polyseed-wrapper
+ ${EXTRA_LIBS_POLYSEED}
utf8proc
ssl
crypto
sodium
+
+ ${EXTRA_LIBS_WINDOWS}
)
diff --git a/patches/0004-fix-build.patch b/patches/0004-fix-build.patch
index 1a0daf6..e3d3566 100644
--- a/patches/0004-fix-build.patch
+++ b/patches/0004-fix-build.patch
@@ -80,7 +80,7 @@ index 000000000..47a532907
+endef
+
+define $(package)_config_cmds
-+ cmake -DCMAKE_INSTALL_PREFIX=$(host_prefix) -DCMAKE_C_COMPILER=${CC} .
++ cmake -DCMAKE_INSTALL_PREFIX=$(host_prefix) -DCMAKE_C_COMPILER=$($(package)_cc) .
+endef
+
+define $(package)_build_cmds