2023-11-07 20:12:03 -06:00
|
|
|
# Sources cut down to just what we need for AAC-LC.
|
|
|
|
set(FAAD2_SOURCE_DIR "faad2/libfaad")
|
2023-11-04 16:56:13 -05:00
|
|
|
add_library(faad2 STATIC EXCLUDE_FROM_ALL
|
|
|
|
"${FAAD2_SOURCE_DIR}/bits.c"
|
|
|
|
"${FAAD2_SOURCE_DIR}/cfft.c"
|
|
|
|
"${FAAD2_SOURCE_DIR}/common.c"
|
|
|
|
"${FAAD2_SOURCE_DIR}/decoder.c"
|
|
|
|
"${FAAD2_SOURCE_DIR}/drc.c"
|
|
|
|
"${FAAD2_SOURCE_DIR}/error.c"
|
|
|
|
"${FAAD2_SOURCE_DIR}/filtbank.c"
|
|
|
|
"${FAAD2_SOURCE_DIR}/huffman.c"
|
|
|
|
"${FAAD2_SOURCE_DIR}/is.c"
|
|
|
|
"${FAAD2_SOURCE_DIR}/mdct.c"
|
|
|
|
"${FAAD2_SOURCE_DIR}/mp4.c"
|
|
|
|
"${FAAD2_SOURCE_DIR}/ms.c"
|
|
|
|
"${FAAD2_SOURCE_DIR}/output.c"
|
|
|
|
"${FAAD2_SOURCE_DIR}/pns.c"
|
|
|
|
"${FAAD2_SOURCE_DIR}/pulse.c"
|
|
|
|
"${FAAD2_SOURCE_DIR}/specrec.c"
|
|
|
|
"${FAAD2_SOURCE_DIR}/syntax.c"
|
|
|
|
"${FAAD2_SOURCE_DIR}/tns.c"
|
|
|
|
)
|
|
|
|
target_include_directories(faad2 PUBLIC faad2/include PRIVATE "${FAAD2_SOURCE_DIR}")
|
|
|
|
|
|
|
|
# Configure compile definitions.
|
|
|
|
|
2023-11-07 20:12:03 -06:00
|
|
|
# Read version from properties file for configuring constant.
|
|
|
|
file(READ faad2/properties.json FAAD_PROPERTIES_JSON)
|
|
|
|
string(JSON FAAD_VERSION GET ${FAAD_PROPERTIES_JSON} PACKAGE_VERSION)
|
2023-11-04 16:56:13 -05:00
|
|
|
message(STATUS "Building faad2 version ${FAAD_VERSION}")
|
|
|
|
|
|
|
|
# Check for functions and headers.
|
|
|
|
include(CheckFunctionExists)
|
|
|
|
include(CheckIncludeFiles)
|
|
|
|
check_function_exists(getpwuid HAVE_GETPWUID)
|
|
|
|
check_function_exists(lrintf HAVE_LRINTF)
|
|
|
|
check_function_exists(memcpy HAVE_MEMCPY)
|
|
|
|
check_function_exists(strchr HAVE_STRCHR)
|
|
|
|
check_function_exists(strsep HAVE_STRSEP)
|
|
|
|
check_include_files(dlfcn.h HAVE_DLFCN_H)
|
|
|
|
check_include_files(errno.h HAVE_ERRNO_H)
|
|
|
|
check_include_files(float.h HAVE_FLOAT_H)
|
|
|
|
check_include_files(inttypes.h HAVE_INTTYPES_H)
|
|
|
|
check_include_files(IOKit/IOKitLib.h HAVE_IOKIT_IOKITLIB_H)
|
|
|
|
check_include_files(limits.h HAVE_LIMITS_H)
|
|
|
|
check_include_files(mathf.h HAVE_MATHF_H)
|
|
|
|
check_include_files(stdint.h HAVE_STDINT_H)
|
|
|
|
check_include_files(stdio.h HAVE_STDIO_H)
|
|
|
|
check_include_files(stdlib.h HAVE_STDLIB_H)
|
|
|
|
check_include_files(strings.h HAVE_STRINGS_H)
|
|
|
|
check_include_files(string.h HAVE_STRING_H)
|
|
|
|
check_include_files(sysfs/libsysfs.h HAVE_SYSFS_LIBSYSFS_H)
|
|
|
|
check_include_files(sys/stat.h HAVE_SYS_STAT_H)
|
|
|
|
check_include_files(sys/time.h HAVE_SYS_TIME_H)
|
|
|
|
check_include_files(sys/types.h HAVE_SYS_TYPES_H)
|
|
|
|
check_include_files(unistd.h HAVE_UNISTD_H)
|
|
|
|
|
|
|
|
# faad2 uses a relative include for its config.h which breaks under CMake.
|
|
|
|
# We can use target_compile_definitions to pass on the configuration instead.
|
|
|
|
target_compile_definitions(faad2 PRIVATE
|
|
|
|
-DFAAD_VERSION=${FAAD_VERSION}
|
|
|
|
-DPACKAGE_VERSION=\"${FAAD_VERSION}\"
|
|
|
|
-DSTDC_HEADERS
|
|
|
|
-DHAVE_GETPWUID=${HAVE_GETPWUID}
|
|
|
|
-DHAVE_LRINTF=${HAVE_LRINTF}
|
|
|
|
-DHAVE_MEMCPY=${HAVE_MEMCPY}
|
|
|
|
-DHAVE_STRCHR=${HAVE_STRCHR}
|
|
|
|
-DHAVE_STRSEP=${HAVE_STRSEP}
|
|
|
|
-DHAVE_DLFCN_H=${HAVE_DLFCN_H}
|
|
|
|
-DHAVE_ERRNO_H=${HAVE_ERRNO_H}
|
|
|
|
-DHAVE_FLOAT_H=${HAVE_FLOAT_H}
|
|
|
|
-DHAVE_INTTYPES_H=${HAVE_INTTYPES_H}
|
|
|
|
-DHAVE_IOKIT_IOKITLIB_H=${HAVE_IOKIT_IOKITLIB_H}
|
|
|
|
-DHAVE_LIMITS_H=${HAVE_LIMITS_H}
|
|
|
|
-DHAVE_MATHF_H=${HAVE_MATHF_H}
|
|
|
|
-DHAVE_STDINT_H=${HAVE_STDINT_H}
|
|
|
|
-DHAVE_STDIO_H=${HAVE_STDIO_H}
|
|
|
|
-DHAVE_STDLIB_H=${HAVE_STDLIB_H}
|
|
|
|
-DHAVE_STRINGS_H=${HAVE_STRINGS_H}
|
|
|
|
-DHAVE_STRING_H=${HAVE_STRING_H}
|
|
|
|
-DHAVE_SYSFS_LIBSYSFS_H=${HAVE_SYSFS_LIBSYSFS_H}
|
|
|
|
-DHAVE_SYS_STAT_H=${HAVE_SYS_STAT_H}
|
|
|
|
-DHAVE_SYS_TIME_H=${HAVE_SYS_TIME_H}
|
|
|
|
-DHAVE_SYS_TYPES_H=${HAVE_SYS_TYPES_H}
|
|
|
|
-DHAVE_UNISTD_H=${HAVE_UNISTD_H}
|
|
|
|
# Only compile for AAC-LC decoding.
|
2023-11-07 20:12:03 -06:00
|
|
|
-DLC_ONLY_DECODER -DDISABLE_SBR
|
2023-11-04 16:56:13 -05:00
|
|
|
)
|