# See the License for the specific language governing permissions and
# limitations under the License.
-include (UseJava)
-
find_path(VNET_INCLUDE_DIR NAMES vnet/api_errno.h)
find_library(VPPINFRA_DIR NAMES vppinfra REQUIRED)
find_library(VLIBMEMORYCLIENT_DIR NAMES vlibmemoryclient REQUIRED)
include_directories(${VNET_INCLUDE_DIR}
${VNET_INCLUDE_DIR}/vpp_plugins
- ${JNI_INCLUDE_DIRS}
+ ${Java_INCLUDE_DIRS}
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_BINARY_DIR/../vpp/plugins})
add_compile_options(-Wall)
############# Common package ##################
add_library(jvpp_common SHARED jvpp-common/jvpp_common.c)
-set_target_properties(jvpp_common PROPERTIES SOVERSION ${PROJECT_VERSION})
+set_target_properties(jvpp_common PROPERTIES SOVERSION ${JAPI_LIB_VERSION})
target_link_libraries(jvpp_common ${VPPINFRA_DIR})
install(TARGETS jvpp_common DESTINATION lib COMPONENT libjvpp_common)
install(FILES jvpp-common/jvpp_common.h DESTINATION include/japi/)
add_custom_target (jvpp-registry-classes)
add_custom_command (TARGET jvpp-registry-classes
PRE_BUILD
+ COMMAND mkdir -p jvpp-registry/target
COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/jvpp-registry
COMMAND ${Java_JAVAC_EXECUTABLE}
- ARGS -d ${CMAKE_CURRENT_BINARY_DIR}/jvpp-registry -h jvpp-registry ${files}
+ ARGS -d ${CMAKE_CURRENT_SOURCE_DIR}/jvpp-registry/target -h jvpp-registry ${files}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
target_link_libraries(jvpp_registry ${JVPP_LIBS})
include_directories(jvpp-registry)
add_dependencies(jvpp_registry jvpp_common jvpp-registry-classes)
-add_jar(jvpp-registry ${files} VERSION ${PROJECT_VERSION})
-install_jar(jvpp-registry DESTINATION share/java/)
+
+add_custom_target (jvpp-registry)
+add_dependencies(jvpp-registry jvpp_registry)
+add_custom_command(TARGET jvpp-registry
+ PRE_BUILD
+ COMMAND cp ${CMAKE_BINARY_DIR}/lib/libjvpp_registry.so jvpp-registry/target
+ COMMAND ${Java_JAR_EXECUTABLE} ARGS cf
+ ${CMAKE_CURRENT_BINARY_DIR}/jvpp-registry-${JAPI_LIB_VERSION}.jar
+ -C jvpp-registry/target .
+ COMMAND rm ARGS -rf jvpp-registry/target
+ jvpp-registry/io_fd_vpp_jvpp_*.h
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ COMMENT "JAR_GEN registry"
+)
+install(
+ FILES ${CMAKE_CURRENT_BINARY_DIR}/jvpp-registry-${JAPI_LIB_VERSION}.jar
+ DESTINATION share/java
+)
############## Functions #########################
function(japigen name)
ARGS --plugin_name ${name} --root_dir jvpp-${name} -i ${ARGN}
COMMAND find jvpp-${name} -name \*.java > jvpp-${name}/jvpp-${name}.files
COMMAND ${Java_JAVAC_EXECUTABLE}
- ARGS -cp ${CMAKE_CURRENT_BINARY_DIR}/jvpp-registry-${PROJECT_VERSION}.jar -d
- ${CMAKE_CURRENT_BINARY_DIR}/jvpp-${name} -h jvpp-${name}
+ ARGS -cp ${CMAKE_CURRENT_BINARY_DIR}/jvpp-registry-${JAPI_LIB_VERSION}.jar -d
+ ${CMAKE_CURRENT_SOURCE_DIR}/jvpp-${name}/target -h jvpp-${name}
@jvpp-${name}/jvpp-${name}.files
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "JAVA_API_GEN ${name}"
POST_BUILD
COMMAND cp ${CMAKE_BINARY_DIR}/lib/libjvpp_${name}.so jvpp-${name}/target
COMMAND ${Java_JAR_EXECUTABLE} ARGS cf
- ${CMAKE_CURRENT_BINARY_DIR}/jvpp-${name}-${PROJECT_VERSION}.jar
- @jvpp-${name}/jvpp-${name}.files
+ ${CMAKE_CURRENT_BINARY_DIR}/jvpp-${name}-${JAPI_LIB_VERSION}.jar
+ -C jvpp-${name}/target .
COMMAND rm ARGS -rf jvpp-${name}/target jvpp-${name}/jvpp-${name}.files
jvpp-${name}/jvpp_${name}_gen.h jvpp-${name}/io_fd_vpp_jvpp_*.h
jvpp-registry/io_fd_vpp_jvpp_*.h
COMMENT "JAR_GEN ${name}"
)
install(
- FILES ${CMAKE_CURRENT_BINARY_DIR}/jvpp-${name}-${PROJECT_VERSION}.jar
+ FILES ${CMAKE_CURRENT_BINARY_DIR}/jvpp-${name}-${JAPI_LIB_VERSION}.jar
DESTINATION share/java
)
endfunction()