2025-01-04 09:02:44 +01:00
|
|
|
cmake_minimum_required(VERSION 3.5)
|
2023-12-26 21:43:14 +01:00
|
|
|
project(wallet2_api_c)
|
2024-12-04 10:22:48 -05:00
|
|
|
message(STATUS ABI_INFO = ${HOST_ABI})
|
2023-12-26 21:43:14 +01:00
|
|
|
|
2025-02-04 18:22:07 +01:00
|
|
|
set(MD_LIBRARY "")
|
|
|
|
|
|
2025-01-04 09:02:44 +01:00
|
|
|
set(CMAKE_CXX_STANDARD 11)
|
|
|
|
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
|
|
|
|
# set(CMAKE_INTERPROCEDURAL_OPTIMIZATION FALSE)
|
|
|
|
|
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-lto")
|
2023-12-26 21:43:14 +01:00
|
|
|
|
2024-03-17 12:58:49 +01:00
|
|
|
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")
|
2024-12-04 10:22:48 -05:00
|
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -lssp")
|
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lssp")
|
2024-03-17 12:58:49 +01:00
|
|
|
elseif(${HOST_ABI} STREQUAL "i686-w64-mingw32")
|
|
|
|
|
set(CMAKE_SYSTEM_NAME Windows)
|
|
|
|
|
set(CMAKE_LINKER "i686-w64-mingw32-ld")
|
|
|
|
|
set(TARGET "i686-w64-mingw32")
|
2024-12-04 10:22:48 -05:00
|
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -lssp")
|
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lssp")
|
|
|
|
|
elseif(${HOST_ABI} STREQUAL "host-apple-ios" OR
|
|
|
|
|
${HOST_ABI} STREQUAL "aarch64-apple-ios")
|
2024-04-02 17:09:22 +02:00
|
|
|
set(CMAKE_SYSTEM_NAME iOS)
|
2024-12-04 10:22:48 -05:00
|
|
|
elseif(${HOST_ABI} STREQUAL "host-apple-darwin" OR
|
|
|
|
|
${HOST_ABI} STREQUAL "x86_64-host-apple-darwin" OR
|
|
|
|
|
${HOST_ABI} STREQUAL "aarch64-host-apple-darwin")
|
|
|
|
|
set(CMAKE_SYSTEM_NAME Darwin)
|
2024-03-17 12:58:49 +01:00
|
|
|
endif()
|
|
|
|
|
|
2024-05-15 19:19:09 +02:00
|
|
|
if (${HOST_ABI} STREQUAL "host-apple-darwin" OR
|
|
|
|
|
${HOST_ABI} STREQUAL "x86_64-host-apple-darwin" OR
|
|
|
|
|
${HOST_ABI} STREQUAL "aarch64-host-apple-darwin")
|
2024-05-15 18:21:22 +02:00
|
|
|
EXECUTE_PROCESS( COMMAND uname -m COMMAND tr -d '\n' OUTPUT_VARIABLE ARCHITECTURE )
|
|
|
|
|
if (NOT ${ARCHITECTURE} STREQUAL arm64)
|
|
|
|
|
set(CMAKE_OSX_ARCHITECTURES x86_64)
|
|
|
|
|
endif()
|
|
|
|
|
endif()
|
|
|
|
|
|
2025-02-13 09:24:17 +01:00
|
|
|
if(${HOST_ABI} STREQUAL "x86_64-linux-android" OR
|
2024-06-29 06:40:59 +00:00
|
|
|
${HOST_ABI} STREQUAL "i686-linux-android" OR
|
|
|
|
|
${HOST_ABI} STREQUAL "aarch64-linux-android" OR
|
|
|
|
|
${HOST_ABI} STREQUAL "armv7a-linux-androideabi")
|
|
|
|
|
add_link_options(-stdlib=libc++ -static-libstdc++)
|
2024-10-16 17:34:19 +02:00
|
|
|
set(EXTRA_LIBS_ANDROID log)
|
2024-06-29 06:40:59 +00:00
|
|
|
endif()
|
2024-05-15 18:21:22 +02:00
|
|
|
|
2023-12-26 21:43:14 +01:00
|
|
|
add_library( wallet2_api_c
|
|
|
|
|
SHARED
|
2024-01-01 14:01:31 +01:00
|
|
|
src/main/cpp/helpers.cpp
|
2023-12-26 21:43:14 +01:00
|
|
|
src/main/cpp/wallet2_api_c.cpp )
|
|
|
|
|
|
2025-03-12 13:09:23 +01:00
|
|
|
if(${HOST_ABI} STREQUAL "x86_64-linux-android" OR
|
|
|
|
|
${HOST_ABI} STREQUAL "i686-linux-android" OR
|
|
|
|
|
${HOST_ABI} STREQUAL "aarch64-linux-android" OR
|
|
|
|
|
${HOST_ABI} STREQUAL "armv7a-linux-androideabi")
|
|
|
|
|
set_target_properties(wallet2_api_c PROPERTIES LINK_FLAGS "-Wl,-z,noexecstack")
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
if(${HOST_ABI} STREQUAL "x86_64-linux-gnu" OR
|
|
|
|
|
${HOST_ABI} STREQUAL "i686-linux-gnu" OR
|
|
|
|
|
${HOST_ABI} STREQUAL "aarch64-linux-gnu" OR
|
|
|
|
|
${HOST_ABI} STREQUAL "armv7a-linux-gnu")
|
|
|
|
|
set_target_properties(wallet2_api_c PROPERTIES LINK_FLAGS "-Wl,-z,noexecstack")
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
|
2024-04-01 06:54:50 +02:00
|
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden")
|
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden")
|
|
|
|
|
|
2023-12-26 21:43:14 +01:00
|
|
|
|
|
|
|
|
|
2024-12-04 10:22:48 -05:00
|
|
|
set(MONERO_DIR ${CMAKE_SOURCE_DIR}/../${MONERO_FLAVOR})
|
|
|
|
|
set(EXTERNAL_LIBS_DIR ${CMAKE_SOURCE_DIR}/../contrib/depends/${HOST_ABI})
|
2024-05-15 17:28:12 +02:00
|
|
|
|
2024-03-28 02:08:12 +01:00
|
|
|
if (${HOST_ABI} STREQUAL "x86_64-apple-darwin11" OR ${HOST_ABI} STREQUAL "aarch64-apple-darwin11")
|
|
|
|
|
set(EXTRA_LIBS_APPLE "-framework IOKit" "-framework CoreFoundation" "-framework Cocoa" hidapi)
|
|
|
|
|
# set_target_properties(wallet2_api_c PROPERTIES LINK_FLAGS "-Wl,-F/Library/Frameworks")
|
2024-05-15 19:19:09 +02:00
|
|
|
elseif(${HOST_ABI} STREQUAL "host-apple-darwin" OR
|
|
|
|
|
${HOST_ABI} STREQUAL "x86_64-host-apple-darwin" OR
|
|
|
|
|
${HOST_ABI} STREQUAL "aarch64-host-apple-darwin")
|
2024-12-04 10:22:48 -05:00
|
|
|
set(EXTRA_LIBS_APPLE "-framework IOKit" "-framework CoreFoundation" "-framework Cocoa" apple_nghttp2)
|
2025-02-04 18:22:07 +01:00
|
|
|
elseif(${HOST_ABI} STREQUAL "host-apple-ios" OR ${HOST_ABI} STREQUAL "aarch64-apple-ios" OR ${HOST_ABI} STREQUAL "arm64-apple-ios" OR ${HOST_ABI} STREQUAL "arm64-apple-iossimulator" OR ${HOST_ABI} STREQUAL "x86_64-apple-iossimulator")
|
2024-04-02 19:14:01 +02:00
|
|
|
set(EXTRA_LIBS_APPLE "-framework IOKit" "-framework CoreFoundation" iconv )
|
2024-03-28 02:08:12 +01:00
|
|
|
endif()
|
|
|
|
|
|
2024-03-15 22:13:28 +01:00
|
|
|
if(${HOST_ABI} STREQUAL "x86_64-w64-mingw32" OR ${HOST_ABI} STREQUAL "i686-w64-mingw32")
|
2024-05-23 09:33:14 +02:00
|
|
|
target_link_options(wallet2_api_c PRIVATE -static-libgcc -static-libstdc++)
|
2024-03-15 22:13:28 +01:00
|
|
|
endif()
|
|
|
|
|
|
2025-02-04 18:22:07 +01:00
|
|
|
if(${HOST_ABI} STREQUAL "x86_64-apple-darwin11" OR ${HOST_ABI} STREQUAL "aarch64-apple-darwin11" OR ${HOST_ABI} STREQUAL "host-apple-darwin" OR ${HOST_ABI} STREQUAL "x86_64-host-apple-darwin" OR ${HOST_ABI} STREQUAL "aarch64-host-apple-darwin" OR ${HOST_ABI} STREQUAL "host-apple-ios" OR ${HOST_ABI} STREQUAL "aarch64-apple-ios" OR ${HOST_ABI} STREQUAL "arm64-apple-iossimulator" OR ${HOST_ABI} STREQUAL "x86_64-apple-iossimulator")
|
2024-03-28 02:08:12 +01:00
|
|
|
set_target_properties(wallet2_api_c PROPERTIES SUFFIX ".dylib")
|
|
|
|
|
|
|
|
|
|
set_target_properties(wallet2_api_c PROPERTIES NO_SONAME 1)
|
|
|
|
|
endif()
|
|
|
|
|
|
2025-01-04 09:02:44 +01:00
|
|
|
if (${MONERO_FLAVOR} STREQUAL "monero")
|
|
|
|
|
target_compile_definitions(wallet2_api_c PRIVATE FLAVOR_MONERO)
|
|
|
|
|
set(BCUR_ENABLED bc-ur)
|
|
|
|
|
elseif(${MONERO_FLAVOR} STREQUAL "wownero")
|
|
|
|
|
target_compile_definitions(wallet2_api_c PRIVATE FLAVOR_WOWNERO)
|
|
|
|
|
elseif(${MONERO_FLAVOR} STREQUAL "zano")
|
|
|
|
|
target_compile_definitions(wallet2_api_c PRIVATE FLAVOR_ZANO)
|
|
|
|
|
endif()
|
|
|
|
|
|
2025-02-04 18:22:07 +01:00
|
|
|
if(NOT ${HOST_ABI} STREQUAL "x86_64-apple-darwin11" AND NOT ${HOST_ABI} STREQUAL "aarch64-apple-darwin11" AND NOT ${HOST_ABI} STREQUAL "aarch64-apple-darwin" AND NOT ${HOST_ABI} STREQUAL "x86_64-apple-darwin" AND NOT ${HOST_ABI} STREQUAL "host-apple-darwin" AND NOT ${HOST_ABI} STREQUAL "x86_64-host-apple-darwin" AND NOT ${HOST_ABI} STREQUAL "aarch64-host-apple-darwin" AND NOT ${HOST_ABI} STREQUAL "host-apple-ios" AND NOT ${HOST_ABI} STREQUAL "aarch64-apple-ios" AND NOT ${HOST_ABI} STREQUAL "aarch64-apple-iossimulator" AND NOT ${HOST_ABI} STREQUAL "x86_64-apple-iossimulator")
|
2024-04-01 06:54:50 +02:00
|
|
|
set_target_properties(wallet2_api_c PROPERTIES LINK_FLAGS "-Wl,--exclude-libs,ALL")
|
|
|
|
|
endif()
|
2024-04-01 08:51:37 +02:00
|
|
|
|
2025-01-04 09:02:44 +01:00
|
|
|
if (${MONERO_FLAVOR} STREQUAL "zano")
|
|
|
|
|
include_directories(
|
|
|
|
|
${CMAKE_SOURCE_DIR}/build/${HOST_ABI}/zano_build/contrib/zlib
|
|
|
|
|
)
|
|
|
|
|
endif()
|
2024-12-04 10:22:48 -05:00
|
|
|
|
2025-01-04 09:02:44 +01:00
|
|
|
add_subdirectory("${CMAKE_SOURCE_DIR}/../${MONERO_FLAVOR}" ${CMAKE_BINARY_DIR}/${MONERO_FLAVOR}_build EXCLUDE_FROM_ALL)
|
2025-02-04 18:22:07 +01:00
|
|
|
if(${HOST_ABI} STREQUAL "x86_64-apple-darwin11" OR ${HOST_ABI} STREQUAL "aarch64-apple-darwin11" OR ${HOST_ABI} STREQUAL "x86_64-apple-darwin" OR ${HOST_ABI} STREQUAL "aarch64-apple-darwin" OR ${HOST_ABI} STREQUAL "host-apple-darwin" OR ${HOST_ABI} STREQUAL "x86_64-host-apple-darwin" OR ${HOST_ABI} STREQUAL "aarch64-host-apple-darwin" OR ${HOST_ABI} STREQUAL "host-apple-ios" OR ${HOST_ABI} STREQUAL "aarch64-apple-ios" OR ${HOST_ABI} STREQUAL "aarch64-apple-iossimulator" OR ${HOST_ABI} STREQUAL "x86_64-apple-iossimulator")
|
2024-04-01 14:00:33 +02:00
|
|
|
if (${MONERO_FLAVOR} STREQUAL "monero")
|
|
|
|
|
set(EXPORTED_SYMBOLS_FILE ${CMAKE_CURRENT_SOURCE_DIR}/monero_libwallet2_api_c.exp)
|
|
|
|
|
elseif(${MONERO_FLAVOR} STREQUAL "wownero")
|
|
|
|
|
set(EXPORTED_SYMBOLS_FILE ${CMAKE_CURRENT_SOURCE_DIR}/wownero_libwallet2_api_c.exp)
|
2025-01-04 09:02:44 +01:00
|
|
|
elseif(${MONERO_FLAVOR} STREQUAL "zano")
|
|
|
|
|
set(EXPORTED_SYMBOLS_FILE ${CMAKE_CURRENT_SOURCE_DIR}/zano_libwallet2_api_c.exp)
|
2024-04-01 14:00:33 +02:00
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -exported_symbols_list ${EXPORTED_SYMBOLS_FILE}")
|
|
|
|
|
set_target_properties(${TARGET} PROPERTIES LINK_DEPENDS ${EXPORTED_SYMBOLS_FILE})
|
|
|
|
|
endif()
|
|
|
|
|
|
2025-01-04 09:02:44 +01:00
|
|
|
if (${MONERO_FLAVOR} STREQUAL "monero")
|
|
|
|
|
set(WALLET_TARGETS wallet_api ${wallet_api_LIB_DEPENDS}) # wallet_api_LIB_DEPENDS
|
|
|
|
|
elseif(${MONERO_FLAVOR} STREQUAL "wownero")
|
|
|
|
|
set(WALLET_TARGETS wallet_api ${wallet_api_LIB_DEPENDS}) # wallet_api_LIB_DEPENDS
|
|
|
|
|
elseif(${MONERO_FLAVOR} STREQUAL "zano")
|
|
|
|
|
find_package(Boost 1.71 REQUIRED COMPONENTS system filesystem thread timer date_time chrono regex serialization atomic program_options)
|
|
|
|
|
find_package(OpenSSL REQUIRED)
|
|
|
|
|
set(WALLET_TARGETS
|
|
|
|
|
wallet
|
|
|
|
|
general
|
|
|
|
|
tor-connect
|
|
|
|
|
crypto
|
|
|
|
|
currency_core
|
|
|
|
|
common
|
|
|
|
|
zlibstatic
|
|
|
|
|
|
|
|
|
|
${Boost_LIBRARIES}
|
|
|
|
|
${OpenSSL_LIBRARIES})
|
|
|
|
|
endif()
|
|
|
|
|
|
2024-12-04 10:22:48 -05:00
|
|
|
if(${MONERO_FLAVOR} STREQUAL "wownero")
|
|
|
|
|
add_subdirectory(wownero-seed EXCLUDE_FROM_ALL)
|
|
|
|
|
set(EXTRA_LIBS_WOWNEROSEED wownero-seed)
|
|
|
|
|
endif()
|
2023-12-26 21:43:14 +01:00
|
|
|
|
2024-12-04 10:22:48 -05:00
|
|
|
#get_cmake_property(_variableNames VARIABLES)
|
|
|
|
|
#list (SORT _variableNames)
|
|
|
|
|
#foreach (_variableName ${_variableNames})
|
|
|
|
|
# message(STATUS "${_variableName}=${${_variableName}}")
|
|
|
|
|
#endforeach()
|
2025-01-04 09:02:44 +01:00
|
|
|
#message(SEND_ERROR "${Boost_LIBRARIES}")
|
|
|
|
|
#message(SEND_ERROR "${WALLET_TARGETS}
|
|
|
|
|
# ${EXTRA_LIBS_WOWNEROSEED}
|
|
|
|
|
# ${EXTRA_LIBS_ANDROID}")
|
2023-12-26 21:43:14 +01:00
|
|
|
|
2024-12-04 10:22:48 -05:00
|
|
|
target_link_libraries( wallet2_api_c
|
2023-12-26 21:43:14 +01:00
|
|
|
|
2025-01-04 09:02:44 +01:00
|
|
|
${WALLET_TARGETS}
|
2024-04-25 10:07:36 +02:00
|
|
|
${EXTRA_LIBS_WOWNEROSEED}
|
2024-06-28 12:45:10 +00:00
|
|
|
${EXTRA_LIBS_ANDROID}
|
2025-01-04 09:02:44 +01:00
|
|
|
)
|