Skip to content

Commit f05a77a

Browse files
author
Clement Champetier
committed
CMake: fix java binding
* Do not need to reconfigure the make file to be able to generate class files and jar file. * The solution was to add a custom command as a post build of the java binding which generate java files.
1 parent c52bde3 commit f05a77a

File tree

1 file changed

+17
-9
lines changed

1 file changed

+17
-9
lines changed

src/CMakeLists.txt

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,11 @@ if(SWIG_FOUND)
6969
install(FILES ${AVTRANSCODER_PYTHON_BINDING_FILE} DESTINATION "lib/python2.7/site-packages/AvTranscoder/")
7070

7171
### JAVA BINDING
72-
set(ENV{JAVA_HOME} "/usr/java/jdk1.6.0_43") # fix find java SDK
72+
set(JAVADIST "/usr/java/jdk1.6.0_43" )
73+
set(JAVAC "${JAVADIST}/bin/javac")
74+
set(JAR "${JAVADIST}/bin/jar")
75+
76+
set(ENV{JAVA_HOME} ${JAVADIST}) # fix find java SDK
7377
find_package(Java REQUIRED)
7478
find_package(JNI REQUIRED)
7579
include(UseJava)
@@ -83,15 +87,19 @@ if(SWIG_FOUND)
8387
swig_add_module(avtranscoder-java java ${AVTRANSCODER_BINDING_FILE})
8488
swig_link_libraries(avtranscoder-java avtranscoder-shared)
8589

86-
# Need to generate java files before class files and jar
90+
# Post build of java binding : compile java files (generate class files) and create jar
8791
set(AVTRANSCODER_JAVA_OUTPUT_PATH "${PROJECT_BINARY_DIR}/src/AvTranscoder")
88-
if(EXISTS "${AVTRANSCODER_JAVA_OUTPUT_PATH}/Transcoder.java")
89-
file(GLOB AVTRANSCODER_JAVA_BINDING_FILES "${AVTRANSCODER_JAVA_OUTPUT_PATH}/*.java")
90-
add_jar(avtranscoder-jar ${AVTRANSCODER_JAVA_BINDING_FILES})
91-
92-
# Install jar
93-
install_jar(avtranscoder-jar "share/java/")
94-
endif()
92+
set(AVTRANSCODER_JAR_PATH "${PROJECT_BINARY_DIR}/src")
93+
set(AVTRANSCODER_JAR_NAME "avtranscoder-jar.jar")
94+
ADD_CUSTOM_COMMAND(
95+
TARGET avtranscoder-java
96+
POST_BUILD
97+
COMMAND ${JAVAC} ${AVTRANSCODER_JAVA_CLASS_OUTPUT_PATH} "${AVTRANSCODER_JAVA_OUTPUT_PATH}/*.java"
98+
COMMAND ${JAR} cvf ${AVTRANSCODER_JAR_NAME} "${AVTRANSCODER_JAVA_OUTPUT_PATH}/*.class"
99+
)
100+
101+
# Install jar file
102+
install(FILES ${AVTRANSCODER_JAR_PATH}/${AVTRANSCODER_JAR_NAME} DESTINATION "share/java/")
95103

96104
else(SWIG_FOUND)
97105
message("SWIG not found, will not build python and java bindings.")

0 commit comments

Comments
 (0)