123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- set(SWIG_EXECUTABLE ${CMAKE_BINARY_DIR}/bin/swig${CMAKE_EXECUTABLE_SUFFIX})
- set(SWIG_SOURCE_FILE_EXTENSIONS .swg)
- function(add_swig_jni_library TgtName)
- set(opts "")
- set(oneval_args GEN_JAVA_FILES_LIST)
- set(multival_args SOURCES)
- cmake_parse_arguments(SWIG_JNI_LIB
- "${opts}"
- "${oneval_args}"
- "${multival_args}"
- ${ARGN}
- )
- set_property(SOURCE
- ${SWIG_JNI_LIB_SOURCES}
- PROPERTY
- CPLUSPLUS On
- )
- file(RELATIVE_PATH PathInProject ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
- string(REPLACE "/" "." JVMPackageName ${PathInProject})
- string(REPLACE "-" "_" JVMPackageName ${JVMPackageName})
- string(PREPEND JVMPackageName "ru.yandex.")
- string(REPLACE "." "/" OutDir ${JVMPackageName})
- string(CONCAT OutDirAbs ${CMAKE_CURRENT_BINARY_DIR} "/java/" ${OutDir})
- swig_add_library(${TgtName}
- TYPE SHARED
- LANGUAGE java
- OUTPUT_DIR ${OutDirAbs}
- OUTFILE_DIR ${CMAKE_CURRENT_BINARY_DIR}/cpp
- SOURCES
- ${SWIG_JNI_LIB_SOURCES}
- )
- if(APPLE)
- # for some legacy reason swig_add_library uses '.jnilib' suffix which has been replaced with '.dylib' since JDK7
- set_target_properties(${TgtName} PROPERTIES SUFFIX ".dylib")
- endif()
- set_property(TARGET ${TgtName} PROPERTY SWIG_COMPILE_OPTIONS -package ${JVMPackageName})
- add_custom_command(TARGET
- ${TgtName}
- POST_BUILD COMMAND
- ${CMAKE_COMMAND} -DJAVA_SRC_DIR=${OutDirAbs} -DJAVA_LST=${CMAKE_CURRENT_BINARY_DIR}/swig_gen_java.lst -P ${CMAKE_SOURCE_DIR}/build/scripts/gather_swig_java.cmake
- BYPRODUCTS ${SWIG_JNI_LIB_GEN_JAVA_FILES_LIST}
- )
- endfunction()
|