Skip to content

Commit ab4d54e

Browse files
authored
Add FAAD CLI to CMake/Bazel (#142)
Drive-by: remove automake/msvc build files
1 parent dc33466 commit ab4d54e

21 files changed

+90
-1754
lines changed

.github/workflows/build.yaml

+25-38
Original file line numberDiff line numberDiff line change
@@ -33,43 +33,6 @@ on:
3333
branches: [ master ]
3434

3535
jobs:
36-
BuildWithAutomake:
37-
runs-on: ubuntu-latest
38-
39-
strategy:
40-
fail-fast: false
41-
matrix:
42-
include:
43-
- name: clang
44-
cc: clang
45-
cxx: clang++
46-
cflags: -Wall -fcolor-diagnostics -fansi-escape-codes
47-
- name: gcc
48-
cc: gcc
49-
cxx: g++
50-
cflags: -Wall -fdiagnostics-color=always
51-
52-
env:
53-
CC: ${{ matrix.cc || 'cc' }}
54-
CXX: ${{ matrix.cxx || 'cxx' }}
55-
CFLAGS: ${{ matrix.cflags || '-Wall' }}
56-
CXXFLAGS: ${{ matrix.cflags || '-Wall' }}
57-
58-
steps:
59-
- name: Checkout the source
60-
uses: actions/checkout@v2
61-
with:
62-
submodules: false
63-
fetch-depth: 1
64-
- name: Configure and build
65-
run: |
66-
./bootstrap
67-
mkdir -p $RUNNER_TEMP/usrlocal
68-
./configure --prefix=$RUNNER_TEMP/usrlocal
69-
make clean -j `nproc`
70-
make -j `nproc`
71-
make install-strip -j `nproc`
72-
7336
BuildWithBazel:
7437
runs-on: ubuntu-latest
7538

@@ -91,6 +54,28 @@ jobs:
9154

9255
strategy:
9356
fail-fast: false
57+
matrix:
58+
include:
59+
- name: Clang Shared
60+
cc: clang
61+
cxx: clang++
62+
cflags: -Wall -fcolor-diagnostics -fansi-escape-codes
63+
shared: 'true'
64+
- name: Clang Static
65+
cc: clang
66+
cxx: clang++
67+
cflags: -Wall -fcolor-diagnostics -fansi-escape-codes
68+
- name: GCC Static
69+
cc: gcc
70+
cxx: g++
71+
cflags: -Wall -fdiagnostics-color=always
72+
73+
env:
74+
CC: ${{ matrix.cc || 'cc' }}
75+
CXX: ${{ matrix.cxx || 'cxx' }}
76+
CFLAGS: ${{ matrix.cflags || '-Wall' }}
77+
CXXFLAGS: ${{ matrix.cflags || '-Wall' }}
78+
SHARED: ${{matrix.shared || 'false'}}
9479

9580
steps:
9681
- name: Checkout the source
@@ -100,6 +85,8 @@ jobs:
10085
fetch-depth: 1
10186
- name: Configure and build
10287
run: |
103-
cmake -B build . -DCMAKE_INSTALL_PREFIX=$RUNNER_TEMP/usrlocal
88+
cmake -B build . \
89+
-DCMAKE_INSTALL_PREFIX=$RUNNER_TEMP/usrlocal \
90+
-DBUILD_SHARED_LIBS=${SHARED}
10491
cmake --build build -j `nproc`
10592
cmake --install build

.gitignore

-42
Original file line numberDiff line numberDiff line change
@@ -1,43 +1 @@
1-
*.o
2-
*.so
3-
*.a
4-
*.ncb
5-
*.plg
6-
*.aps
7-
*.opt
8-
*.aac
9-
*.wav
10-
*.lo
11-
*.in
12-
Makefile
13-
*.libs
14-
*.deps
15-
*.la
16-
*.log
17-
project/msvc/.vs/
18-
project/msvc/bin/
19-
project/msvc/intermediate/
20-
*.user
21-
*~
22-
*.bak
23-
/libfaad/faad2.pc
241
bazel-*
25-
26-
# Automake garbage created by bootstrap
27-
aclocal.m4
28-
autom4te.cache
29-
compile
30-
config.guess
31-
config.h
32-
config.sub
33-
config.status
34-
configure
35-
depcomp
36-
faad2.spec
37-
include/faad.h
38-
INSTALL
39-
install-sh
40-
libtool
41-
ltmain.sh
42-
missing
43-
stamp-h1

BUILD.bazel

+32-6
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,14 @@ load("@rules_fuzzing//fuzzing:cc_defs.bzl", "cc_fuzz_test")
22

33
# Unless building for embedded systems all headers / functions should exist.
44
FAAD_DEFINES = [
5+
"APPLY_DRC",
6+
"HAVE_GETOPT_H=1",
57
"HAVE_INTTYPES_H=1",
8+
"HAVE_MEMCPY=1",
69
"HAVE_STRINGS_H=1",
710
"HAVE_SYS_STAT_H=1",
811
"HAVE_SYS_TYPES_H=1",
9-
"HAVE_MEMCPY=1",
1012
"STDC_HEADERS=1",
11-
"APPLY_DRC",
1213
]
1314

1415
FAAD_SOURCES = glob([
@@ -21,10 +22,25 @@ FAAD_FLAGS = [
2122
"-pedantic",
2223
]
2324

24-
DRM_AFFIX = ["", "_drm"]
25-
DRM_DEFINES = [[], ["DRM_SUPPORT"]]
26-
FIXED_AFFIX = ["", "_fixed"]
27-
FIXED_DEFINES = [[], ["FIXED_POINT"]]
25+
DRM_AFFIX = [
26+
"",
27+
"_drm",
28+
]
29+
30+
DRM_DEFINES = [
31+
[],
32+
["DRM_SUPPORT"],
33+
]
34+
35+
FIXED_AFFIX = [
36+
"",
37+
"_fixed",
38+
]
39+
40+
FIXED_DEFINES = [
41+
[],
42+
["FIXED_POINT"],
43+
]
2844

2945
[cc_library(
3046
name = "faad" + DRM_AFFIX[drm] + FIXED_AFFIX[fixed],
@@ -50,3 +66,13 @@ cc_fuzz_test(
5066
local_defines = DRM_DEFINES[drm],
5167
deps = [":faad" + DRM_AFFIX[drm] + FIXED_AFFIX[fixed]],
5268
) for drm in range(2) for fixed in range(2)]
69+
70+
CLI_SOURCES = glob(["frontend/**/*.c", "frontend/**/*.h"], exclude = ["frontend/**/getopt.*"])
71+
72+
[cc_binary(
73+
name = "faad_cli" + DRM_AFFIX[drm] + FIXED_AFFIX[fixed],
74+
srcs = CLI_SOURCES,
75+
includes = ["frontend"],
76+
local_defines = FAAD_DEFINES + DRM_DEFINES[drm] + FIXED_DEFINES[fixed],
77+
deps = [":faad"],
78+
) for drm in range(2) for fixed in range(2)]

CMakeLists.txt

+22-17
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ if(NOT DEFINED FAAD_BUNDLED_MODE)
2121
endif()
2222
mark_as_advanced(FAAD_BUNDLED_MODE)
2323

24+
find_library(MATH_LIBRARY m)
25+
2426
include(GNUInstallDirs)
2527

2628
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
@@ -41,19 +43,12 @@ file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/include/faad.h ${FAAD_H_SRC})
4143

4244
# Read sources list
4345

44-
function(transform_sources_list INPUT_FILE OUTPUT_FILE)
45-
file(READ ${INPUT_FILE} TEXT)
46-
string(REGEX REPLACE "\\\\\n" "~continuation~" TEXT ${TEXT})
47-
string(REGEX REPLACE "([a-zA-Z_][a-zA-Z0-9_]*)[\t ]*=[\t ]*([^\n]*)" "SET(\\1 \\2)" TEXT ${TEXT})
48-
string(REPLACE "~continuation~" "\n" TEXT ${TEXT})
49-
file(WRITE ${OUTPUT_FILE} ${TEXT})
50-
endfunction()
51-
52-
transform_sources_list("libfaad/sources.lst" "${CMAKE_CURRENT_BINARY_DIR}/sources.lst.cmake")
53-
include("${CMAKE_CURRENT_BINARY_DIR}/sources.lst.cmake")
54-
list(TRANSFORM LIBFAAD_SOURCES PREPEND "libfaad/")
46+
file(GLOB_RECURSE LIBFAAD_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} libfaad/*.c libfaad/*.h)
5547
mark_as_advanced(LIBFAAD_SOURCES)
5648

49+
file(GLOB_RECURSE FAAD_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} frontend/*.c frontend/*.h)
50+
list(FILTER FAAD_SOURCES EXCLUDE REGEX ".*getopt\\.[ch]$")
51+
5752
# Build
5853

5954
# Lets stick to predefined config, until more flexibility is actually requested.
@@ -79,8 +74,11 @@ endif() # GCC
7974
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/include/neaacdec.h
8075
DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/include)
8176

82-
foreach(LIB in faad faad_drm faad_fixed faad_drm_fixed)
77+
foreach(LIB faad faad_drm faad_fixed faad_drm_fixed)
8378
add_library(${LIB} ${LIBFAAD_SOURCES})
79+
if(MATH_LIBRARY)
80+
target_link_libraries(${LIB} PUBLIC ${MATH_LIBRARY})
81+
endif()
8482
target_include_directories(${LIB} PUBLIC
8583
${CMAKE_CURRENT_BINARY_DIR}/include
8684
)
@@ -95,14 +93,14 @@ foreach(LIB in faad faad_drm faad_fixed faad_drm_fixed)
9593
)
9694
endforeach()
9795

98-
foreach(LIB in faad_drm faad_drm_fixed)
99-
target_compile_definitions(faad_drm PRIVATE
96+
foreach(LIB faad_drm faad_drm_fixed)
97+
target_compile_definitions(${LIB} PRIVATE
10098
DRM_SUPPORT
10199
)
102100
endforeach()
103101

104-
foreach(LIB in faad_fixed faad_drm_fixed)
105-
target_compile_definitions(faad_drm PRIVATE
102+
foreach(LIB faad_fixed faad_drm_fixed)
103+
target_compile_definitions(${LIB} PRIVATE
106104
FIXED_POINT
107105
)
108106
endforeach()
@@ -172,14 +170,21 @@ endfunction()
172170

173171
transform_pc_file("libfaad/faad2.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/faad2.pc" "${FAAD_VERSION}")
174172

173+
# CLI
174+
175+
add_executable(faad_cli ${FAAD_SOURCES})
176+
target_link_libraries(faad_cli faad)
177+
target_compile_definitions(faad_cli PRIVATE ${FAAD_DEFINES})
178+
set_target_properties(faad_cli PROPERTIES OUTPUT_NAME faad)
179+
175180
# Installation
176181

177182
if(NOT FAAD_BUNDLED_MODE)
178183
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/faad2.pc"
179184
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
180185

181186
install(
182-
TARGETS faad faad_drm
187+
TARGETS faad faad_cli faad_drm
183188
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
184189
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
185190
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"

Makefile.am

-8
This file was deleted.

bootstrap

-25
This file was deleted.

0 commit comments

Comments
 (0)