|
| 1 | +# Load project cmake |
| 2 | +set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake) |
| 3 | + |
| 4 | +# Get useful variables |
| 5 | +set(AVTRANSCODER_APP_PATH "${PROJECT_SOURCE_DIR}/app" PARENT_SCOPE) |
| 6 | +set(AVTRANSCODER_SRC_PATH "${PROJECT_SOURCE_DIR}/src" PARENT_SCOPE) |
| 7 | +file(GLOB_RECURSE AVTRANSCODER_SRC_FILES "AvTranscoder/*.cpp" "AvTranscoder/*.hpp") |
| 8 | + |
| 9 | +# Get FFMPEG from parameters |
| 10 | +set(FFMPEG_INCLUDE_DIR "/path/to/ffmpeg/include/" CACHE STRING "") |
| 11 | +set(FFMPEG_LIBRARY_DIR "/path/to/ffmpeg/lib/" CACHE STRING "") |
| 12 | +file(GLOB_RECURSE FFMPEG_LIBS "${FFMPEG_LIBRARY_DIR}/*.so") |
| 13 | + |
| 14 | +# Include AvTranscoder and FFmpeg |
| 15 | +include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${FFMPEG_INCLUDE_DIR}) |
| 16 | + |
| 17 | +# Create 'avtranscoder' static lib |
| 18 | +add_library(avtranscoder-static STATIC ${AVTRANSCODER_SRC_FILES}) |
| 19 | +set_target_properties(avtranscoder-static PROPERTIES LINKER_LANGUAGE CXX) |
| 20 | +set_target_properties(avtranscoder-static PROPERTIES OUTPUT_NAME avtranscoder) |
| 21 | +target_link_libraries(avtranscoder-static ${FFMPEG_LIBS}) |
| 22 | + |
| 23 | +# Create 'avtranscoder' shared lib |
| 24 | +add_library(avtranscoder-shared SHARED ${AVTRANSCODER_SRC_FILES}) |
| 25 | +set_target_properties(avtranscoder-shared PROPERTIES LINKER_LANGUAGE CXX) |
| 26 | +set_target_properties(avtranscoder-shared PROPERTIES OUTPUT_NAME avtranscoder) |
| 27 | +set_target_properties(avtranscoder-shared PROPERTIES SOVERSION ${AVTRANSCODER_VERSION}) |
| 28 | +target_link_libraries(avtranscoder-shared ${FFMPEG_LIBS}) |
| 29 | + |
| 30 | +### Install AvTranscoder libs and include |
| 31 | +install( |
| 32 | + DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/AvTranscoder" |
| 33 | + DESTINATION "include/" |
| 34 | + FILES_MATCHING |
| 35 | + PATTERN "*.hpp" |
| 36 | + PATTERN "*.i" |
| 37 | + PATTERN "Profiles" EXCLUDE |
| 38 | +) |
| 39 | +set(LIBRARY_OUTPUT_PATH "${PROJECT_BINARY_DIR}/lib") |
| 40 | +set(AVTRANSCODER_LIBRARY_OUTPUT_PATH "${LIBRARY_OUTPUT_PATH}") |
| 41 | +file(GLOB_RECURSE AVTRANSCODER_OUTPUT_LIBRARIES "${AVTRANSCODER_LIBRARY_OUTPUT_PATH}/*") |
| 42 | +install(FILES ${AVTRANSCODER_OUTPUT_LIBRARIES} DESTINATION "lib/") |
| 43 | + |
| 44 | +### SWIG |
| 45 | +find_package(SWIG) |
| 46 | +if(SWIG_FOUND) |
| 47 | + # Load Modules/UseSWIG.cmake |
| 48 | + include(${SWIG_USE_FILE}) |
| 49 | + |
| 50 | + # Configure Swig |
| 51 | + set(CMAKE_SWIG_OUTDIR "${CMAKE_CURRENT_BINARY_DIR}/AvTranscoder") |
| 52 | + set(AVTRANSCODER_BINDING_FILE "AvTranscoder/avTranscoder.i") |
| 53 | + set_source_files_properties(${AVTRANSCODER_BINDING_FILE} PROPERTIES CPLUSPLUS ON) |
| 54 | + |
| 55 | + ### PYTHON BINDING |
| 56 | + find_package(PythonLibs) |
| 57 | + include_directories(${PYTHON_INCLUDE_PATH}) |
| 58 | + |
| 59 | + # Swig flags |
| 60 | + set(CMAKE_SWIG_FLAGS -c++ -fcompact) |
| 61 | + |
| 62 | + # Create 'avtranscoder-py' shared lib |
| 63 | + swig_add_module(avtranscoder-py python ${AVTRANSCODER_BINDING_FILE}) |
| 64 | + swig_link_libraries(avtranscoder-py avtranscoder-shared ${PYTHON_LIBRARIES}) |
| 65 | + |
| 66 | + # Install python interface |
| 67 | + file(GLOB AVTRANSCODER_PYTHON_BINDING_FILE "${CMAKE_SWIG_OUTDIR}/*.py") |
| 68 | + install(FILES ${AVTRANSCODER_PYTHON_BINDING_FILE} DESTINATION "lib/python2.7/site-packages/AvTranscoder/") |
| 69 | + |
| 70 | + ### JAVA BINDING |
| 71 | + set(ENV{JAVA_HOME} "/usr/java/jdk1.6.0_43") # fix find java SDK |
| 72 | + find_package(Java REQUIRED) |
| 73 | + find_package(JNI REQUIRED) |
| 74 | + include(UseJava) |
| 75 | + include_directories(${JAVA_INCLUDE_PATH}) |
| 76 | + include_directories(${JNI_INCLUDE_DIRS}) |
| 77 | + |
| 78 | + # Swig flags |
| 79 | + set(CMAKE_SWIG_FLAGS -c++ -fcompact -package org.AvTranscoder) |
| 80 | + |
| 81 | + # Create 'avtranscoder-java' shared lib |
| 82 | + swig_add_module(avtranscoder-java java ${AVTRANSCODER_BINDING_FILE}) |
| 83 | + swig_link_libraries(avtranscoder-java avtranscoder-shared) |
| 84 | + |
| 85 | + # Need to generate java files before class files and jar |
| 86 | + set(AVTRANSCODER_JAVA_OUTPUT_PATH "${PROJECT_BINARY_DIR}/src/AvTranscoder") |
| 87 | + if(EXISTS "${AVTRANSCODER_JAVA_OUTPUT_PATH}/Transcoder.java") |
| 88 | + file(GLOB AVTRANSCODER_JAVA_BINDING_FILES "${AVTRANSCODER_JAVA_OUTPUT_PATH}/*.java") |
| 89 | + add_jar(avtranscoder-jar ${AVTRANSCODER_JAVA_BINDING_FILES}) |
| 90 | + |
| 91 | + # Install jar |
| 92 | + install_jar(avtranscoder-jar "share/java/") |
| 93 | + endif() |
| 94 | + |
| 95 | +else(SWIG_FOUND) |
| 96 | + message("SWIG not found, will not build python and java bindings.") |
| 97 | + |
| 98 | +endif(SWIG_FOUND) |
0 commit comments