224 lines · 6.4 KB · Text
RawDownload
# Available CMake versions:#  - Ubuntu 20.04 LTS    : 3.16.3#  - Solaris 11.4 SRU 15 : 3.15cmake_minimum_required(VERSION 3.15) project(LIBFAAD2 LANGUAGES C) # If FAAD is being bundled in another project, we don't want to# install anything. However, we want to let people override this, so# we'll use the FAAD_BUNDLED_MODE variable to let them do that; just# set it to OFF in your project before you add_subdirectory(faad2).get_directory_property(FAAD_PARENT_DIRECTORY PARENT_DIRECTORY)if(NOT DEFINED FAAD_BUNDLED_MODE)  # Bundled mode hasn't been set one way or the other, set the default  # depending on whether or not we are the top-level project.  if(FAAD_PARENT_DIRECTORY)    set(FAAD_BUNDLED_MODE ON)  else()    set(FAAD_BUNDLED_MODE OFF)  endif()endif()mark_as_advanced(FAAD_BUNDLED_MODE) find_library(MATH_LIBRARY m) include(GNUInstallDirs) if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")  set(CMAKE_MACOS_RPATH TRUE)  set(CMAKE_INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib")endif() # Extract version information set(CAPTURE_PACKAGE_VERSION "[ \\t]*\"PACKAGE_VERSION\"[ \\t]*:[ \\t]\"(.*)\"")file(STRINGS "properties.json" _faad_version_line REGEX "${CAPTURE_PACKAGE_VERSION}")message("${_faad_version_line}")string(REGEX REPLACE "${CAPTURE_PACKAGE_VERSION}" "\\1" FAAD_VERSION "${_faad_version_line}") message(STATUS "FAAD PACKAGE_VERSION: ${FAAD_VERSION}")mark_as_advanced(FAAD_VERSION) file(READ include/faad.h.in FAAD_H_SRC)string(REGEX REPLACE "@VERSION@" "${FAAD_VERSION}" FAAD_H_SRC ${FAAD_H_SRC})file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/include/faad.h ${FAAD_H_SRC}) # Read sources list file(GLOB_RECURSE LIBFAAD_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} libfaad/*.c libfaad/*.h)mark_as_advanced(LIBFAAD_SOURCES) file(GLOB_RECURSE FAAD_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} frontend/*.c frontend/*.h)if (NOT MSVC)  list(FILTER FAAD_SOURCES EXCLUDE REGEX ".*getopt\\.[ch]$")endif() # Build # Lets stick to predefined config, until more flexibility is actually requested.set(FAAD_DEFINES  APPLY_DRC  HAVE_INTTYPES_H=1  HAVE_MEMCPY=1  HAVE_STRING_H=1  HAVE_STRINGS_H=1  HAVE_SYS_STAT_H=1  HAVE_SYS_TYPES_H=1  STDC_HEADERS=1  PACKAGE_VERSION=\"${FAAD_VERSION}\") set(FAAD_FLAGS  -Wall)if(MSVC)  list(APPEND FAAD_FLAGS    /wd4702 # unreachable code; there is a false-positive report    /wd4820 # implicit padding in structs    /wd5045 # Spectre nonsense  )else()  list(APPEND FAAD_FLAGS    -pedantic  )endif() if(CMAKE_C_COMPILER_ID MATCHES "GNU")  list(APPEND FAAD_FLAGS -ffloat-store)endif()  # GCC file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/include/neaacdec.h     DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/include) foreach(LIB faad faad_drm faad_fixed faad_drm_fixed)  add_library(${LIB} ${LIBFAAD_SOURCES})  if(MATH_LIBRARY)    target_link_libraries(${LIB} PUBLIC ${MATH_LIBRARY})  endif()  target_include_directories(${LIB} PUBLIC    ${CMAKE_CURRENT_BINARY_DIR}/include  )  target_include_directories(${LIB} PRIVATE    libfaad  )  target_compile_definitions(${LIB} PRIVATE    ${FAAD_DEFINES}  )  target_compile_options(${LIB} PRIVATE    ${FAAD_FLAGS}  )endforeach() foreach(LIB faad_drm faad_drm_fixed)target_compile_definitions(${LIB} PRIVATE  DRM_SUPPORT)endforeach() foreach(LIB faad_fixed faad_drm_fixed)target_compile_definitions(${LIB} PRIVATE  FIXED_POINT)endforeach() # Generate a pkg-config files function(generate_pkg_config_path outvar path)  string(LENGTH "${path}" path_length)   set(path_args ${ARGV})  list(REMOVE_AT path_args 0 1)  list(LENGTH path_args path_args_remaining)   set("${outvar}" "${path}")   while(path_args_remaining GREATER 1)    list(GET path_args 0 name)    list(GET path_args 1 value)     get_filename_component(value_full "${value}" ABSOLUTE)    string(LENGTH "${value}" value_length)     if(path_length EQUAL value_length AND path STREQUAL value)      set("${outvar}" "\${${name}}")      break()    elseif(path_length GREATER value_length)      # We might be in a subdirectory of the value, but we have to be      # careful about a prefix matching but not being a subdirectory      # (for example, /usr/lib64 is not a subdirectory of /usr/lib).      # We'll do this by making sure the next character is a directory      # separator.      string(SUBSTRING "${path}" ${value_length} 1 sep)      if(sep STREQUAL "/")        string(SUBSTRING "${path}" 0 ${value_length} s)        if(s STREQUAL value)          string(SUBSTRING "${path}" "${value_length}" -1 suffix)          set("${outvar}" "\${${name}}${suffix}")          break()        endif()      endif()    endif()     list(REMOVE_AT path_args 0 1)    list(LENGTH path_args path_args_remaining)  endwhile()   set("${outvar}" "${${outvar}}" PARENT_SCOPE)endfunction(generate_pkg_config_path) function(transform_pc_file INPUT_FILE OUTPUT_FILE VERSION)  file(READ ${INPUT_FILE} TEXT)   set(PREFIX "${CMAKE_INSTALL_PREFIX}")  string(REGEX REPLACE "@prefix@" "${PREFIX}" TEXT ${TEXT})  string(REGEX REPLACE "@exec_prefix@" "\${prefix}" TEXT ${TEXT})   generate_pkg_config_path(LIBDIR "${CMAKE_INSTALL_FULL_LIBDIR}" exec_prefix "${PREFIX}")  string(REGEX REPLACE "@libdir@" "${LIBDIR}" TEXT ${TEXT})   generate_pkg_config_path(INCLUDEDIR "${CMAKE_INSTALL_FULL_INCLUDEDIR}" prefix "${PREFIX}")  string(REGEX REPLACE "@includedir@" "${INCLUDEDIR}" TEXT ${TEXT})   string(REGEX REPLACE "@VERSION@" "${VERSION}" TEXT ${TEXT})   file(WRITE ${OUTPUT_FILE} ${TEXT})endfunction() transform_pc_file("libfaad/faad2.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/faad2.pc" "${FAAD_VERSION}") # CLI add_executable(faad_cli ${FAAD_SOURCES})target_link_libraries(faad_cli faad)target_compile_definitions(faad_cli PRIVATE ${FAAD_DEFINES})target_compile_options(faad_cli PRIVATE ${FAAD_FLAGS}) if (MSVC)  target_include_directories(faad_cli PRIVATE    frontend  )else()  set_target_properties(faad_cli PROPERTIES OUTPUT_NAME faad)endif() # Installation if(NOT FAAD_BUNDLED_MODE AND NOT MSVC)  install(FILES "${CMAKE_CURRENT_BINARY_DIR}/faad2.pc"    DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")   install(    TARGETS faad faad_cli faad_drm    ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"    LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"    RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"  )   # exclude faad.h.in  install(    FILES ${CMAKE_CURRENT_BINARY_DIR}/include/faad.h    FILES ${CMAKE_CURRENT_BINARY_DIR}/include/neaacdec.h    DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"  )endif()  # FAAD_BUNDLED_MODE

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t