Skip to content

Commit 3c07530

Browse files
author
Clement Champetier
committed
CMake: generate bindings only if possible
* Generate python binding if PYTHONLIBS_FOUND. * Generate java binding if JAVA_FOUND AND JNI_FOUND. * So theses packages are not required to build AvTranscoder.
1 parent 287c5f1 commit 3c07530

File tree

1 file changed

+54
-46
lines changed

1 file changed

+54
-46
lines changed

src/CMakeLists.txt

Lines changed: 54 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -58,54 +58,62 @@ if(SWIG_FOUND)
5858

5959
### PYTHON BINDING
6060
find_package(PythonLibs)
61-
include_directories(${PYTHON_INCLUDE_PATH})
62-
63-
# Swig flags
64-
set(CMAKE_SWIG_FLAGS -c++ -fcompact)
65-
66-
# Create 'avtranscoder-py' shared lib
67-
swig_add_module(avtranscoder-py python ${AVTRANSCODER_BINDING_FILE})
68-
set_target_properties(${SWIG_MODULE_avtranscoder-py_REAL_NAME} PROPERTIES SOVERSION ${AVTRANSCODER_VERSION_MAJOR})
69-
set_target_properties(${SWIG_MODULE_avtranscoder-py_REAL_NAME} PROPERTIES VERSION ${AVTRANSCODER_VERSION})
70-
swig_link_libraries(avtranscoder-py avtranscoder-shared ${PYTHON_LIBRARIES})
71-
72-
# Install python interface
73-
file(GLOB AVTRANSCODER_PYTHON_BINDING_FILE "${CMAKE_SWIG_OUTDIR}/*.py")
74-
install(
75-
FILES ${AVTRANSCODER_PYTHON_BINDING_FILE}
76-
RENAME "avtranscoder.py"
77-
DESTINATION "lib/python2.7/site-packages/avtranscoder/"
78-
)
61+
if(PYTHONLIBS_FOUND)
62+
include_directories(${PYTHON_INCLUDE_PATH})
63+
64+
# Swig flags
65+
set(CMAKE_SWIG_FLAGS -c++ -fcompact)
66+
67+
# Create 'avtranscoder-py' shared lib
68+
swig_add_module(avtranscoder-py python ${AVTRANSCODER_BINDING_FILE})
69+
set_target_properties(${SWIG_MODULE_avtranscoder-py_REAL_NAME} PROPERTIES SOVERSION ${AVTRANSCODER_VERSION_MAJOR})
70+
set_target_properties(${SWIG_MODULE_avtranscoder-py_REAL_NAME} PROPERTIES VERSION ${AVTRANSCODER_VERSION})
71+
swig_link_libraries(avtranscoder-py avtranscoder-shared ${PYTHON_LIBRARIES})
72+
73+
# Install python interface
74+
file(GLOB AVTRANSCODER_PYTHON_BINDING_FILE "${CMAKE_SWIG_OUTDIR}/*.py")
75+
install(
76+
FILES ${AVTRANSCODER_PYTHON_BINDING_FILE}
77+
RENAME "avtranscoder.py"
78+
DESTINATION "lib/python2.7/site-packages/avtranscoder/"
79+
)
80+
else()
81+
message("PYTHON not found, will not build python binding.")
82+
endif()
7983

8084
### JAVA BINDING
81-
find_package(Java REQUIRED)
82-
find_package(JNI REQUIRED)
83-
include(UseJava)
84-
include_directories(${JAVA_INCLUDE_PATH})
85-
include_directories(${JNI_INCLUDE_DIRS})
86-
87-
# Swig flags
88-
set(CMAKE_SWIG_FLAGS -c++ -fcompact -package org.AvTranscoder)
89-
90-
# Create 'avtranscoder-java' shared lib
91-
swig_add_module(avtranscoder-java java ${AVTRANSCODER_BINDING_FILE})
92-
set_target_properties(${SWIG_MODULE_avtranscoder-java_REAL_NAME} PROPERTIES SOVERSION ${AVTRANSCODER_VERSION_MAJOR})
93-
set_target_properties(${SWIG_MODULE_avtranscoder-java_REAL_NAME} PROPERTIES VERSION ${AVTRANSCODER_VERSION})
94-
swig_link_libraries(avtranscoder-java avtranscoder-shared)
95-
96-
# Post build of java binding : compile java files (generate class files) and create jar
97-
set(AVTRANSCODER_JAVA_OUTPUT_PATH "${PROJECT_BINARY_DIR}/src/AvTranscoder")
98-
set(AVTRANSCODER_JAR_PATH "${PROJECT_BINARY_DIR}/src")
99-
set(AVTRANSCODER_JAR_NAME "avtranscoder.jar")
100-
ADD_CUSTOM_COMMAND(
101-
TARGET avtranscoder-java
102-
POST_BUILD
103-
COMMAND ${Java_JAVAC_EXECUTABLE} ${AVTRANSCODER_JAVA_CLASS_OUTPUT_PATH} "${AVTRANSCODER_JAVA_OUTPUT_PATH}/*.java"
104-
COMMAND ${Java_JAR_EXECUTABLE} cvf ${AVTRANSCODER_JAR_NAME} "${AVTRANSCODER_JAVA_OUTPUT_PATH}/*.class"
105-
)
106-
107-
# Install jar file
108-
install(FILES ${AVTRANSCODER_JAR_PATH}/${AVTRANSCODER_JAR_NAME} DESTINATION "share/java/")
85+
find_package(Java)
86+
find_package(JNI)
87+
if(JAVA_FOUND AND JNI_FOUND)
88+
include(UseJava)
89+
include_directories(${JAVA_INCLUDE_PATH})
90+
include_directories(${JNI_INCLUDE_DIRS})
91+
92+
# Swig flags
93+
set(CMAKE_SWIG_FLAGS -c++ -fcompact -package org.AvTranscoder)
94+
95+
# Create 'avtranscoder-java' shared lib
96+
swig_add_module(avtranscoder-java java ${AVTRANSCODER_BINDING_FILE})
97+
set_target_properties(${SWIG_MODULE_avtranscoder-java_REAL_NAME} PROPERTIES SOVERSION ${AVTRANSCODER_VERSION_MAJOR})
98+
set_target_properties(${SWIG_MODULE_avtranscoder-java_REAL_NAME} PROPERTIES VERSION ${AVTRANSCODER_VERSION})
99+
swig_link_libraries(avtranscoder-java avtranscoder-shared)
100+
101+
# Post build of java binding : compile java files (generate class files) and create jar
102+
set(AVTRANSCODER_JAVA_OUTPUT_PATH "${PROJECT_BINARY_DIR}/src/AvTranscoder")
103+
set(AVTRANSCODER_JAR_PATH "${PROJECT_BINARY_DIR}/src")
104+
set(AVTRANSCODER_JAR_NAME "avtranscoder.jar")
105+
ADD_CUSTOM_COMMAND(
106+
TARGET avtranscoder-java
107+
POST_BUILD
108+
COMMAND ${Java_JAVAC_EXECUTABLE} ${AVTRANSCODER_JAVA_CLASS_OUTPUT_PATH} "${AVTRANSCODER_JAVA_OUTPUT_PATH}/*.java"
109+
COMMAND ${Java_JAR_EXECUTABLE} cvf ${AVTRANSCODER_JAR_NAME} "${AVTRANSCODER_JAVA_OUTPUT_PATH}/*.class"
110+
)
111+
112+
# Install jar file
113+
install(FILES ${AVTRANSCODER_JAR_PATH}/${AVTRANSCODER_JAR_NAME} DESTINATION "share/java/")
114+
else()
115+
message("JAVA not found, will not build java binding.")
116+
endif()
109117

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

0 commit comments

Comments
 (0)