From c7a7d812e0aa6237a21ee4a7cc4a07e093660263 Mon Sep 17 00:00:00 2001 From: Shisomo Date: Thu, 28 Dec 2023 11:28:30 +0800 Subject: [PATCH] java swig interface complate --- Makefile | 5 ++++ swig/java/CMakeLists.txt | 55 ++++++++++++++++++++++++++++++++++++++++ swig/java/java.i | 3 +++ 3 files changed, 63 insertions(+) create mode 100644 swig/java/CMakeLists.txt create mode 100644 swig/java/java.i diff --git a/Makefile b/Makefile index 8a5f309..ec31508 100644 --- a/Makefile +++ b/Makefile @@ -11,3 +11,8 @@ test_python: build PYTHONPATH=build/python python3 tests/test_python.py rbuild: clean build run + +test_java: build + javac -cp build/xcomm/java/xspcomm/ -d build/xcomm/java/xspcomm/ build/xcomm/java/xspcomm/*.java + javac -cp build/xcomm/java/xspcomm/ -d build/xcomm/java/xspcomm/ xcomm/tests/test_java.java + java -Djava.library.path=build/xcomm/java/xspcomm/ -cp build/xcomm/java/xspcomm/ test_java \ No newline at end of file diff --git a/swig/java/CMakeLists.txt b/swig/java/CMakeLists.txt new file mode 100644 index 0000000..a60f2a8 --- /dev/null +++ b/swig/java/CMakeLists.txt @@ -0,0 +1,55 @@ +# Include jni +find_package(JNI REQUIRED) +include_directories(${JNI_INCLUDE_DIRS}) + +# Include headers +include_directories(../../include ../../xcomm/include) +set(SWIG_OUTFILE_DIR ${CMAKE_CURRENT_BINARY_DIR}/_javaswig) + +# Add swig module +set_property(SOURCE java.i PROPERTY CPLUSPLUS ON) + +swig_add_library(xovip LANGUAGE java SOURCES +java.i +../../src/comm/axi4_async.cpp +../../src/comm/axi4.cpp +../../src/comm/mem.cpp +) + +# set buld output directory +set(OVIP_LIB_DIR ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/../java/ovip) +set_target_properties(xovip PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${SWIG_OUTFILE_DIR}) + +add_library(xspcomm_so SHARED IMPORTED) +set_target_properties(xspcomm_so PROPERTIES + IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/../../xcomm/lib/libxspcomm.so +) +add_dependencies(xovip xspcomm_so) +target_link_libraries(xovip xspcomm_so) + +# copy file +add_custom_command( + OUTPUT ${OVIP_LIB_DIR}/xovip.java + COMMAND ${CMAKE_COMMAND} -E copy + ${SWIG_OUTFILE_DIR}/libxovip.so + ${OVIP_LIB_DIR}/libxovip.so.${PROJECT_VERSION} + COMMAND ${CMAKE_COMMAND} -E copy + ${CMAKE_CURRENT_BINARY_DIR}/*.java + ${OVIP_LIB_DIR}/ + DEPENDS xovip +) + +add_custom_command( + OUTPUT ovip_so_lnk + COMMAND ${CMAKE_COMMAND} -E create_symlink + "libxovip.so.${PROJECT_VERSION}" + "libxovip.so" + WORKING_DIRECTORY ${OVIP_LIB_DIR} + DEPENDS ${OVIP_LIB_DIR}/xovip.java +) +add_custom_target( + _DummyTarget_create_ovip_link ALL + DEPENDS ovip_so_lnk +) +# Install +install(DIRECTORY ${OVIP_LIB_DIR} DESTINATION share/mcv/java USE_SOURCE_PERMISSIONS) diff --git a/swig/java/java.i b/swig/java/java.i new file mode 100644 index 0000000..d1a49fe --- /dev/null +++ b/swig/java/java.i @@ -0,0 +1,3 @@ +%module(directors="1") xovip + +%include ../openvip/xovip.i -- Gitee