Skip to content

Commit 5e5d310

Browse files
committed
Merge pull request #107 from cchampet/build_addCMakeArguments
CMake: add arguments to specify the build you want
2 parents d96eb98 + 4ed7685 commit 5e5d310

File tree

4 files changed

+131
-68
lines changed

4 files changed

+131
-68
lines changed

CMakeLists.txt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,9 @@ endif()
3030

3131

3232
add_subdirectory(src)
33-
add_subdirectory(app)
33+
34+
if(DISABLE_APPS)
35+
message("Apps disabled, will not build applications.")
36+
else()
37+
add_subdirectory(app)
38+
endif()

INSTALL.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# Compilation
2+
3+
AvTranscoder uses CMake as build system.
4+
5+
#### To build
6+
```
7+
mkdir build && cd build
8+
cmake ..
9+
make
10+
make install
11+
```
12+
13+
#### To indicate a specific ffmpeg/libav folder
14+
```
15+
cmake .. -DFFMPEG_INCLUDE_DIR=/path/to/include/ -DFFMPEG_LIBRARY_DIR=/path/to/lib/
16+
```
17+
18+
#### To not build apps
19+
```
20+
cmake .. -DDISABLE_APPS=True
21+
```
22+
23+
#### To not build bindings
24+
```
25+
cmake .. -DDISABLE_BINDINGS=True
26+
```
27+
```
28+
cmake .. -DDISABLE_PYTHON_BINDING=True
29+
```
30+
```
31+
cmake .. -DDISABLE_JAVA_BINDING=True
32+
```
33+
34+
#### Other useful flags
35+
###### To install at a specific location
36+
```
37+
cmake .. -DCMAKE_INSTALL_PREFIX=/path/to/install
38+
```
39+
###### To build Release/Debug version
40+
```
41+
cmake .. -DCMAKE_BUILD_TYPE=Release/Debug
42+
```

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ Based on Libav/FFmpeg libraries to support various video and audio formats, avTr
1313
#### License
1414
See [**COPYING.md**](COPYING.md)
1515

16+
#### Compilation
17+
See [**INSTALL.md**](INSTALL.md)
18+
1619
#### How to use
1720
Check out applications contained in the project to see examples of how to use the library in C++, Java or Python.
1821

src/CMakeLists.txt

Lines changed: 80 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,12 @@ install(
6161
PATTERN "*.prf"
6262
)
6363

64-
### SWIG
64+
### Bindings with SWIG
65+
if(DISABLE_BINDINGS)
66+
message("Bindings disabled, will not build bindings.")
67+
return()
68+
endif()
69+
6570
find_package(SWIG)
6671
if(SWIG_FOUND)
6772
# Load Modules/UseSWIG.cmake
@@ -73,76 +78,84 @@ if(SWIG_FOUND)
7378
set_source_files_properties(${AVTRANSCODER_BINDING_FILE} PROPERTIES CPLUSPLUS ON)
7479

7580
### PYTHON BINDING
76-
find_package(PythonLibs)
77-
if(PYTHONLIBS_FOUND)
78-
include_directories(${PYTHON_INCLUDE_PATH})
79-
80-
# Swig flags
81-
set(CMAKE_SWIG_FLAGS -c++ -fcompact)
82-
83-
# Create '_avtranscoder' shared lib (python)
84-
swig_add_module(avtranscoder-py python ${AVTRANSCODER_BINDING_FILE})
85-
# For Python binding, need to compile the wrapper into a lib called "_<module_name>.so"
86-
set_target_properties(${SWIG_MODULE_avtranscoder-py_REAL_NAME} PROPERTIES OUTPUT_NAME _avtranscoder)
87-
if(NOT APPLE AND NOT WIN32)
88-
set_target_properties(${SWIG_MODULE_avtranscoder-py_REAL_NAME} PROPERTIES SOVERSION ${AVTRANSCODER_VERSION_MAJOR})
89-
set_target_properties(${SWIG_MODULE_avtranscoder-py_REAL_NAME} PROPERTIES VERSION ${AVTRANSCODER_VERSION})
90-
endif()
91-
swig_link_libraries(avtranscoder-py avtranscoder-shared ${PYTHON_LIBRARIES})
92-
93-
# Install python interface
94-
set(AVTRANSCODER_PYTHON_BINDING_FILE "${CMAKE_SWIG_OUTDIR}/avtranscoder.py")
95-
set(AVTRANSCODER_PYTHON_MODULE_OUTPUT_DIR "lib/python${PYTHONLIBS_VERSION_STRING}/site-packages/pyAvTranscoder/")
96-
install(
97-
FILES ${AVTRANSCODER_PYTHON_BINDING_FILE} ${AVTRANSCODER_PYTHON_INIT_FILE}
98-
DESTINATION ${AVTRANSCODER_PYTHON_MODULE_OUTPUT_DIR}
99-
)
100-
# Install __init__.py
101-
install(CODE "file(WRITE ${CMAKE_INSTALL_PREFIX}/${AVTRANSCODER_PYTHON_MODULE_OUTPUT_DIR}/__init__.py)")
81+
if(DISABLE_PYTHON_BINDING)
82+
message("PYTHON binding disabled, will not build python binding.")
10283
else()
103-
message("PYTHON not found, will not build python binding.")
104-
endif()
84+
find_package(PythonLibs)
85+
if(PYTHONLIBS_FOUND)
86+
include_directories(${PYTHON_INCLUDE_PATH})
87+
88+
# Swig flags
89+
set(CMAKE_SWIG_FLAGS -c++ -fcompact)
90+
91+
# Create '_avtranscoder' shared lib (python)
92+
swig_add_module(avtranscoder-py python ${AVTRANSCODER_BINDING_FILE})
93+
# For Python binding, need to compile the wrapper into a lib called "_<module_name>.so"
94+
set_target_properties(${SWIG_MODULE_avtranscoder-py_REAL_NAME} PROPERTIES OUTPUT_NAME _avtranscoder)
95+
if(NOT APPLE AND NOT WIN32)
96+
set_target_properties(${SWIG_MODULE_avtranscoder-py_REAL_NAME} PROPERTIES SOVERSION ${AVTRANSCODER_VERSION_MAJOR})
97+
set_target_properties(${SWIG_MODULE_avtranscoder-py_REAL_NAME} PROPERTIES VERSION ${AVTRANSCODER_VERSION})
98+
endif()
99+
swig_link_libraries(avtranscoder-py avtranscoder-shared ${PYTHON_LIBRARIES})
100+
101+
# Install python interface
102+
set(AVTRANSCODER_PYTHON_BINDING_FILE "${CMAKE_SWIG_OUTDIR}/avtranscoder.py")
103+
set(AVTRANSCODER_PYTHON_MODULE_OUTPUT_DIR "lib/python${PYTHONLIBS_VERSION_STRING}/site-packages/pyAvTranscoder/")
104+
install(
105+
FILES ${AVTRANSCODER_PYTHON_BINDING_FILE} ${AVTRANSCODER_PYTHON_INIT_FILE}
106+
DESTINATION ${AVTRANSCODER_PYTHON_MODULE_OUTPUT_DIR}
107+
)
108+
# Install __init__.py
109+
install(CODE "file(WRITE ${CMAKE_INSTALL_PREFIX}/${AVTRANSCODER_PYTHON_MODULE_OUTPUT_DIR}/__init__.py)")
110+
else()
111+
message("PYTHON not found, will not build python binding.")
112+
endif()
113+
endif()
105114

106115
### JAVA BINDING
107-
find_package(Java)
108-
find_package(JNI)
109-
if(JAVA_FOUND AND JNI_FOUND)
110-
include(UseJava)
111-
include_directories(${JAVA_INCLUDE_PATH})
112-
include_directories(${JNI_INCLUDE_DIRS})
113-
114-
# Swig flags
115-
set(CMAKE_SWIG_FLAGS -c++ -fcompact -package org.avtranscoder)
116-
117-
# Create 'avtranscoder-java' shared lib
118-
swig_add_module(avtranscoder-java java ${AVTRANSCODER_BINDING_FILE})
119-
if(WIN32)
120-
set_target_properties(avtranscoder-java PROPERTIES OUTPUT_NAME "avtranscoder-java-${AVTRANSCODER_VERSION}")
121-
endif()
122-
if(NOT APPLE AND NOT WIN32)
123-
set_target_properties(${SWIG_MODULE_avtranscoder-java_REAL_NAME} PROPERTIES SOVERSION ${AVTRANSCODER_VERSION_MAJOR})
124-
set_target_properties(${SWIG_MODULE_avtranscoder-java_REAL_NAME} PROPERTIES VERSION ${AVTRANSCODER_VERSION})
125-
endif()
126-
swig_link_libraries(avtranscoder-java avtranscoder-shared)
127-
128-
# Post build of java binding : compile java files (generate class files) and create jar
129-
set(AVTRANSCODER_JAVA_OUTPUT_PATH "${PROJECT_BINARY_DIR}/src/AvTranscoder")
130-
set(AVTRANSCODER_JAVA_CLASS_OUTPUT_PATH "${AVTRANSCODER_JAVA_OUTPUT_PATH}/target")
131-
set(AVTRANSCODER_JAR_PATH "${PROJECT_BINARY_DIR}/src")
132-
set(AVTRANSCODER_JAR_NAME "avtranscoder-${AVTRANSCODER_VERSION}.jar")
133-
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${AVTRANSCODER_JAVA_CLASS_OUTPUT_PATH})
116+
if(DISABLE_JAVA_BINDING)
117+
message("JAVA binding disabled, will not build java binding.")
118+
else()
119+
find_package(Java)
120+
find_package(JNI)
121+
if(JAVA_FOUND AND JNI_FOUND)
122+
include(UseJava)
123+
include_directories(${JAVA_INCLUDE_PATH})
124+
include_directories(${JNI_INCLUDE_DIRS})
125+
126+
# Swig flags
127+
set(CMAKE_SWIG_FLAGS -c++ -fcompact -package org.avtranscoder)
128+
129+
# Create 'avtranscoder-java' shared lib
130+
swig_add_module(avtranscoder-java java ${AVTRANSCODER_BINDING_FILE})
131+
if(WIN32)
132+
set_target_properties(avtranscoder-java PROPERTIES OUTPUT_NAME "avtranscoder-java-${AVTRANSCODER_VERSION}")
133+
endif()
134+
if(NOT APPLE AND NOT WIN32)
135+
set_target_properties(${SWIG_MODULE_avtranscoder-java_REAL_NAME} PROPERTIES SOVERSION ${AVTRANSCODER_VERSION_MAJOR})
136+
set_target_properties(${SWIG_MODULE_avtranscoder-java_REAL_NAME} PROPERTIES VERSION ${AVTRANSCODER_VERSION})
137+
endif()
138+
swig_link_libraries(avtranscoder-java avtranscoder-shared)
139+
140+
# Post build of java binding : compile java files (generate class files) and create jar
141+
set(AVTRANSCODER_JAVA_OUTPUT_PATH "${PROJECT_BINARY_DIR}/src/AvTranscoder")
142+
set(AVTRANSCODER_JAVA_CLASS_OUTPUT_PATH "${AVTRANSCODER_JAVA_OUTPUT_PATH}/target")
143+
set(AVTRANSCODER_JAR_PATH "${PROJECT_BINARY_DIR}/src")
144+
set(AVTRANSCODER_JAR_NAME "avtranscoder-${AVTRANSCODER_VERSION}.jar")
145+
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${AVTRANSCODER_JAVA_CLASS_OUTPUT_PATH})
134146

135-
ADD_CUSTOM_COMMAND(
136-
TARGET avtranscoder-java
137-
POST_BUILD
138-
COMMAND ${Java_JAVAC_EXECUTABLE} "-d" ${AVTRANSCODER_JAVA_CLASS_OUTPUT_PATH} "\"${AVTRANSCODER_JAVA_OUTPUT_PATH}\"/*.java"
139-
COMMAND ${Java_JAR_EXECUTABLE} cf ${AVTRANSCODER_JAR_NAME} "-C" ${AVTRANSCODER_JAVA_CLASS_OUTPUT_PATH} "."
140-
)
141-
142-
# Install jar file
143-
install(FILES ${AVTRANSCODER_JAR_PATH}/${AVTRANSCODER_JAR_NAME} DESTINATION "share/java/")
144-
else()
145-
message("JAVA not found, will not build java binding.")
147+
ADD_CUSTOM_COMMAND(
148+
TARGET avtranscoder-java
149+
POST_BUILD
150+
COMMAND ${Java_JAVAC_EXECUTABLE} "-d" ${AVTRANSCODER_JAVA_CLASS_OUTPUT_PATH} "\"${AVTRANSCODER_JAVA_OUTPUT_PATH}\"/*.java"
151+
COMMAND ${Java_JAR_EXECUTABLE} cf ${AVTRANSCODER_JAR_NAME} "-C" ${AVTRANSCODER_JAVA_CLASS_OUTPUT_PATH} "."
152+
)
153+
154+
# Install jar file
155+
install(FILES ${AVTRANSCODER_JAR_PATH}/${AVTRANSCODER_JAR_NAME} DESTINATION "share/java/")
156+
else()
157+
message("JAVA not found, will not build java binding.")
158+
endif()
146159
endif()
147160

148161
else(SWIG_FOUND)

0 commit comments

Comments
 (0)