diff --git a/.clang-format b/.clang-format deleted file mode 100644 index 46c86d74..00000000 --- a/.clang-format +++ /dev/null @@ -1,115 +0,0 @@ ---- -Language: Cpp -# BasedOnStyle: LLVM -AccessModifierOffset: -2 -AlignAfterOpenBracket: Align -AlignConsecutiveAssignments: true -AlignConsecutiveDeclarations: true -AlignEscapedNewlines: Right -AlignOperands: true -AlignTrailingComments: true -AllowAllParametersOfDeclarationOnNextLine: false -AllowShortBlocksOnASingleLine: true -AllowShortCaseLabelsOnASingleLine: true -AllowShortFunctionsOnASingleLine: Inline -AllowShortIfStatementsOnASingleLine: false -AllowShortLoopsOnASingleLine: false -AlwaysBreakAfterDefinitionReturnType: None -AlwaysBreakAfterReturnType: None -AlwaysBreakBeforeMultilineStrings: false -AlwaysBreakTemplateDeclarations: false -BinPackArguments: true -BinPackParameters: true -BraceWrapping: - AfterClass: true - AfterControlStatement: true - AfterEnum: true - AfterFunction: true - AfterNamespace: true - AfterObjCDeclaration: false - AfterStruct: true - AfterUnion: true - AfterExternBlock: true - BeforeCatch: true - BeforeElse: true - IndentBraces: false - SplitEmptyFunction: false - SplitEmptyRecord: false - SplitEmptyNamespace: false -BreakBeforeBinaryOperators: NonAssignment -BreakBeforeBraces: Allman -BreakBeforeInheritanceComma: false -BreakBeforeTernaryOperators: true -BreakConstructorInitializersBeforeComma: true -BreakConstructorInitializers: BeforeComma -BreakAfterJavaFieldAnnotations: false -BreakStringLiterals: true -ColumnLimit: 120 -CommentPragmas: '^ IWYU pragma:' -CompactNamespaces: false -ConstructorInitializerAllOnOneLineOrOnePerLine: true -ConstructorInitializerIndentWidth: 2 -ContinuationIndentWidth: 2 -Cpp11BracedListStyle: false -DerivePointerAlignment: false -DisableFormat: false -ExperimentalAutoDetectBinPacking: false -FixNamespaceComments: true -ForEachMacros: - - foreach - - Q_FOREACH - - BOOST_FOREACH -IncludeBlocks: Preserve -IncludeCategories: - - Regex: '^"(llvm|llvm-c|clang|clang-c)/' - Priority: 2 - - Regex: '^(<|"(gtest|gmock|isl|json)/)' - Priority: 3 - - Regex: '.*' - Priority: 1 -IncludeIsMainRegex: '(Test)?$' -IndentCaseLabels: false -IndentPPDirectives: None -IndentWidth: 2 -IndentWrappedFunctionNames: true -JavaScriptQuotes: Leave -JavaScriptWrapImports: true -KeepEmptyLinesAtTheStartOfBlocks: false -MacroBlockBegin: '' -MacroBlockEnd: '' -MaxEmptyLinesToKeep: 1 -NamespaceIndentation: All -ObjCBinPackProtocolList: Auto -ObjCBlockIndentWidth: 2 -ObjCSpaceAfterProperty: false -ObjCSpaceBeforeProtocolList: true -PenaltyBreakAssignment: 2 -PenaltyBreakBeforeFirstCallParameter: 19 -PenaltyBreakComment: 300 -PenaltyBreakFirstLessLess: 120 -PenaltyBreakString: 1000 -PenaltyExcessCharacter: 1000000 -PenaltyReturnTypeOnItsOwnLine: 60 -PointerAlignment: Right -ReflowComments: true -SortIncludes: false -SortUsingDeclarations: true -SpaceAfterCStyleCast: true -SpaceAfterTemplateKeyword: false -SpaceBeforeAssignmentOperators: true -SpaceBeforeCtorInitializerColon: true -SpaceBeforeInheritanceColon: true -SpaceBeforeParens: ControlStatements -SpaceBeforeRangeBasedForLoopColon: false -SpaceInEmptyParentheses: false -SpacesBeforeTrailingComments: 3 -SpacesInAngles: false -SpacesInContainerLiterals: true -SpacesInCStyleCastParentheses: false -SpacesInParentheses: false -SpacesInSquareBrackets: false -Standard: Cpp11 -TabWidth: 8 -UseTab: Never -... - diff --git a/.cproject b/.cproject deleted file mode 100644 index b21a4020..00000000 --- a/.cproject +++ /dev/null @@ -1,568 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 40b01602..00000000 --- a/.editorconfig +++ /dev/null @@ -1,10 +0,0 @@ -# EditorConfig: http://EditorConfig.org - -# top-most EditorConfig file -root = true - -# Matches multiple files with brace expansion notation -# Set default indent style and size -[*.{c,cpp,cxx,h,hpp,py}] -indent_style = space -indent_size = 2 diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index d0cbfddf..00000000 --- a/.gitattributes +++ /dev/null @@ -1,9 +0,0 @@ -# Set the default behavior, in case people don't have core.autocrlf set. -* text=auto - -# Explicitly declare text files you want to always be normalized and converted -# to native line endings on checkout. -*.c text -*.cpp text -*.h text - diff --git a/.gitignore b/.gitignore index 8de22b3b..5cb9637c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,17 +1,2 @@ -dec.yuv -rec.yuv -str.bin -/build/ -/bin/ -/lib/ -core -deploy -*.sdf -*.suo -.vs/ -.vscode/ -*.blg -*.bbl -*.pyc -/out/ -/doc/_minted-software-manual/ +/bin +/lib diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml deleted file mode 100644 index 48c3d920..00000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1,59 +0,0 @@ -stages: - - build - -.build_template: - stage: build - script: - - make realclean - - make all - only: - refs: - - master - - merge_requests - variables: - - $CI_PROJECT_URL == 'https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM' - - $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == 'master' - -.build_template_linux: - extends: .build_template - script: - - make realclean - - make all - - make realclean - - make linuxbuild enable-tracing=true - -build_macos: - extends: .build_template - tags: - - macos - -build_ubuntu1604: - extends: .build_template_linux - tags: - - ubuntu1604 - -build_ubuntu1804: - extends: .build_template_linux - tags: - - ubuntu1804 - -build_ubuntu1804-gcc8: - extends: .build_template_linux - script: - - make realclean - - make all toolset=gcc-8 - - make realclean - - make linuxbuild enable-tracing=true toolset=gcc-8 - tags: - - ubuntu1804-gcc8 - -build_vc191x: - extends: .build_template - tags: - - vc191x - -build_vc192x: - extends: .build_template - tags: - - vc192x - diff --git a/.project b/.project deleted file mode 100644 index b724d0ef..00000000 --- a/.project +++ /dev/null @@ -1,84 +0,0 @@ - - - NextSoftware - - - - - - org.python.pydev.PyDevBuilder - - - - - org.eclipse.cdt.managedbuilder.core.genmakebuilder - clean,full,incremental, - - - ?name? - - - - org.eclipse.cdt.make.core.append_environment - true - - - org.eclipse.cdt.make.core.autoBuildTarget - all - - - org.eclipse.cdt.make.core.buildArguments - variant=debug link=static -j - - - org.eclipse.cdt.make.core.buildCommand - bjam.py - - - org.eclipse.cdt.make.core.cleanBuildTarget - install --clean-all - - - org.eclipse.cdt.make.core.contents - org.eclipse.cdt.make.core.activeConfigSettings - - - org.eclipse.cdt.make.core.enableAutoBuild - false - - - org.eclipse.cdt.make.core.enableCleanBuild - true - - - org.eclipse.cdt.make.core.enableFullBuild - true - - - org.eclipse.cdt.make.core.fullBuildTarget - -q install - - - org.eclipse.cdt.make.core.stopOnError - true - - - org.eclipse.cdt.make.core.useDefaultBuildCmd - false - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder - - - - - - org.eclipse.cdt.core.ccnature - org.eclipse.cdt.managedbuilder.core.ScannerConfigNature - org.eclipse.cdt.managedbuilder.core.managedBuildNature - org.eclipse.cdt.core.cnature - org.python.pydev.pythonNature - - diff --git a/.pydevproject b/.pydevproject deleted file mode 100644 index 40e9f40a..00000000 --- a/.pydevproject +++ /dev/null @@ -1,5 +0,0 @@ - - -Default -python 2.7 - diff --git a/CMakeLists.txt b/CMakeLists.txt index 4f779baa..002e1cb8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,159 +1,112 @@ -# minimum required cmake version -cmake_minimum_required( VERSION 3.5 FATAL_ERROR ) - -# project name -if( EXTENSION_360_VIDEO ) - project( NextSoftware360 ) -else() - project( NextSoftware ) -endif() - -# use ccache -find_program( CCACHE_FOUND ccache ) -if( CCACHE_FOUND ) - message( STATUS "ccache found. using it." ) - set_property( GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache ) - set_property( GLOBAL PROPERTY RULE_LAUNCH_LINK ccache ) -endif() - -# set default CMAKE_BUILD_TYPE to Release if not set -if( NOT CMAKE_BUILD_TYPE ) - set( CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel." FORCE ) -endif() - +cmake_minimum_required(VERSION 3.11) + +project(vtmdecoder) + +include(FetchContent) +set(FETCHCONTENT_QUIET FALSE) + +# Latest VTM +# UPDATE_DISCONNECTED disables updating, i.e. to get a new version +# of VTM you will have to delete your build/ folder. +# This is necessary because, when a git tag is not provided, the +# git update mechanism always triggers an `update` even if the files +# have not changed. This in turn causes the patch command to be +# executed, which causes an error as the file is no longer as +# expected. +FetchContent_Declare( + VTM + GIT_REPOSITORY https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM + GIT_PROGRESS TRUE + UPDATE_DISCONNECTED TRUE + PATCH_COMMAND git apply ${CMAKE_CURRENT_SOURCE_DIR}/vtm-cmake.patch +) +FetchContent_MakeAvailable(VTM) + +# executable +set( LIB_NAME vtmdecoder ) + +# get source files +file( GLOB SRC_FILES "src/*.cpp" ) + +# get include files +file( GLOB INC_FILES "src/*.h" ) + +# get additional libs for gcc on Ubuntu systems if( CMAKE_SYSTEM_NAME STREQUAL "Linux" ) if( CMAKE_CXX_COMPILER_ID STREQUAL "GNU" ) - set( USE_ADDRESS_SANITIZER OFF CACHE BOOL "Compiles with -sanitize=address and links to libasan" ) + if( USE_ADDRESS_SANITIZER ) + set( ADDITIONAL_LIBS asan ) + endif() endif() endif() -set( EXTENSION_360_VIDEO OFF CACHE BOOL "If EXTENSION_360_VIDEO is on, 360Lib will be added" ) -set( EXTENSION_HDRTOOLS OFF CACHE BOOL "If EXTENSION_HDRTOOLS is on, HDRLib will be added" ) -set( SET_ENABLE_TRACING OFF CACHE BOOL "Set ENABLE_TRACING as a compiler flag" ) -set( ENABLE_TRACING OFF CACHE BOOL "If SET_ENABLE_TRACING is on, it will be set to this value" ) - -if( CMAKE_COMPILER_IS_GNUCC ) - set( BUILD_STATIC OFF CACHE BOOL "Build static executables" ) +# NATVIS files for Visual Studio +if( MSVC ) + file( GLOB NATVIS_FILES "../../VisualStudio/*.natvis" ) + # extend the stack size on windows to 2MB + set( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:0x200000" ) endif() -# set c++11 -set( CMAKE_CXX_STANDARD 11 ) -set( CMAKE_CXX_STANDARD_REQUIRED ON ) - -# compile everything position independent (even static libraries) -set( CMAKE_POSITION_INDEPENDENT_CODE TRUE ) - -# set verbose compile options -#set( CMAKE_VERBOSE_MAKEFILE ON ) - -# use folders in IDEs for projects (e.g. lib sample app test) -set_property( GLOBAL PROPERTY USE_FOLDERS ON ) - -# Include a utility module providing functions, macros, and settings -include( ${CMAKE_SOURCE_DIR}/cmake/CMakeBuild/cmake/modules/BBuildEnv.cmake ) +# add executable +add_library( ${LIB_NAME} SHARED ${SRC_FILES} ${INC_FILES} ${NATVIS_FILES} ) +include_directories(${CMAKE_CURRENT_BINARY_DIR}) -# Enable multithreading -bb_multithreading() +target_compile_features( ${LIB_NAME} PUBLIC cxx_std_14 ) -find_package(OpenMP) - -if( OpenMP_FOUND ) - set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}" ) - set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}" ) - set( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}" ) - - set( SET_ENABLE_SPLIT_PARALLELISM OFF CACHE BOOL "Set ENABLE_SPLIT_PARALLELISM as a compiler flag" ) - set( ENABLE_SPLIT_PARALLELISM OFF CACHE BOOL "If SET_ENABLE_SPLIT_PARALLELISM is on, it will be set to this value" ) - set( SET_ENABLE_WPP_PARALLELISM OFF CACHE BOOL "Set ENABLE_WPP_PARALLELISM as a compiler flag" ) - set( ENABLE_WPP_PARALLELISM OFF CACHE BOOL "If SET_ENABLE_WPP_PARALLELISM is on, it will be set to this value" ) +if( SET_ENABLE_TRACING ) + if( ENABLE_TRACING ) + target_compile_definitions( ${LIB_NAME} PUBLIC ENABLE_TRACING=1 ) + else() + target_compile_definitions( ${LIB_NAME} PUBLIC ENABLE_TRACING=0 ) + endif() endif() -# Enable warnings for some generators and toolsets. -# bb_enable_warnings( gcc warnings-as-errors -Wno-sign-compare ) -# bb_enable_warnings( gcc -Wno-unused-variable ) -# bb_enable_warnings( gcc-4.8 warnings-as-errors -Wno-unused-variable ) -# for gcc 8.2: -bb_enable_warnings( gcc warnings-as-errors -Wno-sign-compare -Wno-class-memaccess) - -if( XCODE ) - bb_enable_warnings( clang warnings-as-errors - -Wno-deprecated-declarations - -Wno-unknown-attributes - -Wno-deprecated-register - -Wno-pessimizing-move - -Wno-absolute-value - -Wno-unused-const-variable ) +if( OpenMP_FOUND ) + if( SET_ENABLE_SPLIT_PARALLELISM ) + if( ENABLE_SPLIT_PARALLELISM ) + target_compile_definitions( ${LIB_NAME} PUBLIC ENABLE_SPLIT_PARALLELISM=1 ) + else() + target_compile_definitions( ${LIB_NAME} PUBLIC ENABLE_SPLIT_PARALLELISM=0 ) + endif() + endif() + if( SET_ENABLE_WPP_PARALLELISM ) + if( ENABLE_WPP_PARALLELISM ) + target_compile_definitions( ${LIB_NAME} PUBLIC ENABLE_WPP_PARALLELISM=1 ) + else() + target_compile_definitions( ${LIB_NAME} PUBLIC ENABLE_WPP_PARALLELISM=0 ) + endif() + endif() else() - bb_enable_warnings( clang warnings-as-errors - -Wno-unknown-attributes - -Wno-deprecated-register - -Wno-pessimizing-move - -Wno-absolute-value - -Wno-unused-const-variable ) + target_compile_definitions( ${LIB_NAME} PUBLIC ENABLE_SPLIT_PARALLELISM=0 ) + target_compile_definitions( ${LIB_NAME} PUBLIC ENABLE_WPP_PARALLELISM=0 ) endif() -#bb_enable_warnings( clang warnings-as-errors ) -# enable warnings -bb_enable_warnings( msvc warnings-as-errors "/wd4996" ) - -# enable sse4.1 build for all source files for gcc and clang -if( UNIX OR MINGW ) - add_compile_options( "-msse4.1" ) +if( CMAKE_COMPILER_IS_GNUCC AND BUILD_STATIC ) + set( ADDITIONAL_LIBS ${ADDITIONAL_LIBS} -static -static-libgcc -static-libstdc++ ) + target_compile_definitions( ${LIB_NAME} PUBLIC ENABLE_WPP_STATIC_LINK=1 ) endif() -# enable parallel build for Visual Studio -if( MSVC ) - add_compile_options( "/MP" ) - add_compile_options( "/EHsc" ) -endif() - -# set address sanitizer compiler arguments -if( CMAKE_CXX_COMPILER_ID STREQUAL "GNU" ) - if( CMAKE_SYSTEM_NAME STREQUAL "Linux" ) - if( USE_ADDRESS_SANITIZER ) - # add compile options - add_compile_options( "-fsanitize=address" ) - add_link_options( "-fsanitize=address" ) - endif() - endif() - - if( CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0 ) - add_compile_options( "-fabi-version=6" ) - endif() -endif() +target_link_libraries( ${LIB_NAME} CommonLib DecoderLib Utilities ${ADDITIONAL_LIBS} ) -# modify .lldbinit for lldb custom data formatters +# lldb custom data formatters if( XCODE ) - set( LLDB_INSTALL_ROOT "$ENV{HOME}/.lldb.d" ) - set( LLDBINIT_FILE "$ENV{HOME}/.lldbinit" ) - set( ENABLE_LLDBINIT_UPDATE ON ) - # add custom target to install LLDB files. - add_subdirectory( "lldb" ) + add_dependencies( ${LIB_NAME} Install${PROJECT_NAME}LldbFiles ) endif() -# add needed subdirectories -add_subdirectory( "source/Lib/CommonLib" ) -add_subdirectory( "source/Lib/CommonAnalyserLib" ) -if( EXTENSION_360_VIDEO ) - add_subdirectory( "source/Lib/Lib360" ) - add_subdirectory( "source/Lib/AppEncHelper360" ) -endif() -if ( EXTENSION_HDRTOOLS ) - add_subdirectory( "source/Lib/HDRLib") -endif() -add_subdirectory( "source/Lib/DecoderAnalyserLib" ) -add_subdirectory( "source/Lib/DecoderLib" ) -add_subdirectory( "source/Lib/EncoderLib" ) -add_subdirectory( "source/Lib/Utilities" ) - -add_subdirectory( "source/App/DecoderAnalyserApp" ) -add_subdirectory( "source/App/DecoderApp" ) -add_subdirectory( "source/App/DecoderLib" ) -add_subdirectory( "source/App/EncoderApp" ) -add_subdirectory( "source/App/SEIRemovalApp" ) -add_subdirectory( "source/App/Parcat" ) -add_subdirectory( "source/App/StreamMergeApp" ) -add_subdirectory( "source/App/BitstreamExtractorApp" ) -if( EXTENSION_360_VIDEO ) - add_subdirectory( "source/App/utils/360ConvertApp" ) +if( CMAKE_SYSTEM_NAME STREQUAL "Linux" ) + add_custom_command( TARGET ${LIB_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy + $<$:${CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG}/libvtmdecoder.so> + $<$:${CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE}/libvtmdecoder.so> + $<$:${CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELWITHDEBINFO}/libvtmdecoder.so> + $<$:${CMAKE_ARCHIVE_OUTPUT_DIRECTORY_MINSIZEREL}/libvtmdecoder.so> + $<$:${CMAKE_SOURCE_DIR}/bin/libvtmdecoder.so> + $<$:${CMAKE_SOURCE_DIR}/bin/libvtmdecoder.so> + $<$:${CMAKE_SOURCE_DIR}/bin/libvtmdecoder.so> + $<$:${CMAKE_SOURCE_DIR}/bin/libvtmdecoder.so> ) endif() + +# example: place header files in different folders +source_group( "Natvis Files" FILES ${NATVIS_FILES} ) + +# set the folder where to place the projects +set_target_properties( ${LIB_NAME} PROPERTIES FOLDER app LINKER_LANGUAGE CXX ) diff --git a/COPYING b/COPYING deleted file mode 100644 index a328b7da..00000000 --- a/COPYING +++ /dev/null @@ -1,31 +0,0 @@ -The copyright in this software is being made available under the BSD -License, included below. This software may be subject to other third party -and contributor rights, including patent rights, and no such rights are -granted under this license.   - -Copyright (c) 2010-2020, ITU/ISO/IEC -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of the ITU/ISO/IEC nor the names of its contributors may - be used to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -THE POSSIBILITY OF SUCH DAMAGE. diff --git a/Makefile b/Makefile deleted file mode 100644 index c4891582..00000000 --- a/Makefile +++ /dev/null @@ -1,180 +0,0 @@ -BUILD_SCRIPT := $(CURDIR)/cmake/CMakeBuild/bin/cmake.py - -# Define here a list of generic targets to be built separately using a suffix to select the variant and link option. -# Examples: must be replaced by a make target defined below. -# -# How to build a single target: -# make -a => build variant=debug,release,relwithdebinfo -# make -r => build variant=release -# make -d => build variant=debug -# make -p => build variant=relwithdebinfo -# -# How to clean and build a single target: -# make -ca => clean + build variant=debug,release,relwithdebinfo -# make -cr => clean + build variant=release -# make -cd => clean + build variant=debug -# make -cp => clean + build variant=relwithdebinfo -# - -TARGETS := CommonLib DecoderAnalyserApp DecoderAnalyserLib DecoderApp DecoderLib -TARGETS += EncoderApp EncoderLib Utilities SEIRemovalApp StreamMergeApp - -ifeq ($(OS),Windows_NT) - ifneq ($(MSYSTEM),) - # MSYS runtime environment - UNAME_S := $(shell uname -s) - PYTHON_LAUNCHER := python3 - BUILD_CMD := $(PYTHON_LAUNCHER) $(BUILD_SCRIPT) - else - UNAME_S := Windows - PY := $(wildcard c:/windows/py.*) - ifeq ($(PY),) - PYTHON_LAUNCHER := python - else - PYTHON_LAUNCHER := $(notdir $(PY)) - endif - # If a plain cmake.py is used, the exit codes won't arrive in make; i.e. build failures are reported as success by make. - BUILD_CMD := $(PYTHON_LAUNCHER) $(BUILD_SCRIPT) - ifeq ($(toolset),gcc) - g := mgwmake - endif - endif -else - UNAME_S := $(shell uname -s) - BUILD_CMD := $(BUILD_SCRIPT) - ifeq ($(UNAME_S),Linux) - # for Jenkins: run trace build only on Linux - LINUXBUILD := TRUE - endif - ifeq ($(UNAME_S),Darwin) - # MAC - endif -endif - -ifeq ($(j),) -BUILD_JOBS += -j -else -BUILD_JOBS += -j$(j) -endif - -ifneq ($(g),) -CONFIG_OPTIONS += -g $(g) -endif - -ifneq ($(toolset),) - # aarch64 and mingw are two shortcuts to simplify toolset specification. - ifeq ($(toolset),mingw) - CONFIG_OPTIONS += toolset=x86_64-w64-mingw32-gcc-posix - else - CONFIG_OPTIONS += toolset=$(toolset) - endif -endif - -ifneq ($(address-model),) -CONFIG_OPTIONS += address-model=$(address-model) -endif - -ifneq ($(address-sanitizer),) -CMAKE_OPTIONS += -DUSE_ADDRESS_SANITIZER=ON -endif - -ifneq ($(verbose),) -CMAKE_OPTIONS += -DCMAKE_VERBOSE_MAKEFILE=ON -endif - -ifneq ($(enable-tracing),) -CONFIG_OPTIONS += -DSET_ENABLE_TRACING=ON -DENABLE_TRACING=$(enable-tracing) -endif - -ifneq ($(parallel-split),) -CONFIG_OPTIONS += -DSET_ENABLE_SPLIT_PARALLELISM=ON -DENABLE_SPLIT_PARALLELISM=$(parallel-split) -endif - -ifneq ($(parallel-wpp),) -CONFIG_OPTIONS += -DSET_ENABLE_WPP_PARALLELISM=ON -DENABLE_WPP_PARALLELISM=$(parallel-wpp) -endif - -ifneq ($(static),) -CONFIG_OPTIONS += -DBUILD_STATIC=$(static) -endif - -BUILD_OPTIONS := $(CONFIG_OPTIONS) -b - -debug: - $(BUILD_CMD) $(BUILD_JOBS) $(BUILD_OPTIONS) $(CMAKE_OPTIONS) variant=debug - -all: - $(BUILD_CMD) $(BUILD_JOBS) $(BUILD_OPTIONS) $(CMAKE_OPTIONS) variant=debug,release,relwithdebinfo - -release: - $(BUILD_CMD) $(BUILD_JOBS) $(BUILD_OPTIONS) $(CMAKE_OPTIONS) variant=release - -relwithdebinfo: - $(BUILD_CMD) $(BUILD_JOBS) $(BUILD_OPTIONS) $(CMAKE_OPTIONS) variant=relwithdebinfo - -clean: - # clean is equal to realclean to ensure that CMake options are reset - $(RM) -rf bin build lib -# $(BUILD_CMD) $(BUILD_OPTIONS) $(CMAKE_OPTIONS) variant=debug,release,relwithdebinfo --target clean - -clean-r: - $(BUILD_CMD) $(BUILD_OPTIONS) $(CMAKE_OPTIONS) variant=release --target clean - -clean-d: - $(BUILD_CMD) $(BUILD_OPTIONS) $(CMAKE_OPTIONS) variant=debug --target clean - -clean-p: - $(BUILD_CMD) $(BUILD_OPTIONS) $(CMAKE_OPTIONS) variant=relwithdebinfo --target clean - -configure: - $(BUILD_CMD) $(CONFIG_OPTIONS) $(CMAKE_OPTIONS) variant=debug,release,relwithdebinfo - -linuxbuild: -ifeq ($(LINUXBUILD),TRUE) - # option for automated jenkins build - $(BUILD_CMD) $(BUILD_JOBS) $(BUILD_OPTIONS) $(CMAKE_OPTIONS) variant=debug -endif - -# -# project specific targets -# - -# build the list of release, debug targets given the generic targets -TARGETS_ALL := $(foreach t,$(TARGETS),$(t)-a) -TARGETS_RELEASE := $(foreach t,$(TARGETS),$(t)-r) -TARGETS_DEBUG := $(foreach t,$(TARGETS),$(t)-d) -TARGETS_RELWITHDEBINFO := $(foreach t,$(TARGETS),$(t)-p) - -TARGETS_ALL_CLEAN_FIRST := $(foreach t,$(TARGETS),$(t)-ca) -TARGETS_RELEASE_CLEAN_FIRST := $(foreach t,$(TARGETS),$(t)-cr) -TARGETS_DEBUG_CLEAN_FIRST := $(foreach t,$(TARGETS),$(t)-cd) -TARGETS_RELWITHDEBINFO_CLEAN_FIRST := $(foreach t,$(TARGETS),$(t)-cp) - -$(TARGETS_ALL): - $(BUILD_CMD) $(BUILD_JOBS) $(BUILD_OPTIONS) $(CMAKE_OPTIONS) variant=debug,release,relwithdebinfo --target $(patsubst %-a,%,$@) - -$(TARGETS_ALL_CLEAN_FIRST): - $(BUILD_CMD) $(BUILD_JOBS) $(BUILD_OPTIONS) $(CMAKE_OPTIONS) variant=debug,release,relwithdebinfo --clean-first --target $(patsubst %-ca,%,$@) - -$(TARGETS_RELEASE): - $(BUILD_CMD) $(BUILD_JOBS) $(BUILD_OPTIONS) $(CMAKE_OPTIONS) variant=release --target $(patsubst %-r,%,$@) - -$(TARGETS_RELEASE_CLEAN_FIRST): - $(BUILD_CMD) $(BUILD_JOBS) $(BUILD_OPTIONS) $(CMAKE_OPTIONS) variant=release --clean-first --target $(patsubst %-cr,%,$@) - -$(TARGETS_DEBUG): - $(BUILD_CMD) $(BUILD_JOBS) $(BUILD_OPTIONS) $(CMAKE_OPTIONS) variant=debug --target $(patsubst %-d,%,$@) - -$(TARGETS_DEBUG_CLEAN_FIRST): - $(BUILD_CMD) $(BUILD_JOBS) $(BUILD_OPTIONS) $(CMAKE_OPTIONS) variant=debug --target $(patsubst %-cd,%,$@) --clean-first - -$(TARGETS_RELWITHDEBINFO): - $(BUILD_CMD) $(BUILD_JOBS) $(BUILD_OPTIONS) $(CMAKE_OPTIONS) variant=relwithdebinfo --target $(patsubst %-p,%,$@) - -$(TARGETS_RELWITHDEBINFO_CLEAN_FIRST): - $(BUILD_CMD) $(BUILD_JOBS) $(BUILD_OPTIONS) $(CMAKE_OPTIONS) variant=relwithdebinfo --target $(patsubst %-cp,%,$@) --clean-first - -realclean: - $(RM) -rf bin build lib - -.NOTPARALLEL: diff --git a/README.md b/README.md deleted file mode 100644 index d2853b79..00000000 --- a/README.md +++ /dev/null @@ -1,134 +0,0 @@ -VTM reference software for VVC -============================== - -This software package is the reference software for Versatile Video Coding (VVC). The reference software includes both encoder and decoder functionality. - -Reference software is useful in aiding users of a video coding standard to establish and test conformance and interoperability, and to educate users and demonstrate the capabilities of the standard. For these purposes, this software is provided as an aid for the study and implementation of Versatile Video Coding. - -The software has been jointly developed by the ITU-T Video Coding Experts Group (VCEG, Question 6 of ITU-T Study Group 16) and the ISO/IEC Moving Picture Experts Group (MPEG, Working Group 11 of Subcommittee 29 of ISO/IEC Joint Technical Committee 1). - -A software manual, which contains usage instructions, can be found in the "doc" subdirectory of this software package. - -Build instructions -================== - -The CMake tool is used to create platform-specific build files. - -Although CMake may be able to generate 32-bit binaries, **it is generally suggested to build 64-bit binaries**. 32-bit binaries are not able to access more than 2GB of RAM, which will not be sufficient for coding larger image formats. Building in 32-bit environments is not tested and will not be supported. - - -Build instructions for plain CMake (suggested) ----------------------------------------------- - -**Note:** A working CMake installation is required for building the software. - -CMake generates configuration files for the compiler environment/development environment on each platform. -The following is a list of examples for Windows (MS Visual Studio), macOS (Xcode) and Linux (make). - -Open a command prompt on your system and change into the root directory of this project. - -Create a build directory in the root directory: -```bash -mkdir build -``` - -Use one of the following CMake commands, based on your platform. Feel free to change the commands to satisfy -your needs. - -**Windows Visual Studio 2015/17/19 64 Bit:** - -Use the proper generator string for generating Visual Studio files, e.g. for VS 2015: - -```bash -cd build -cmake .. -G "Visual Studio 14 2015 Win64" -``` - -Then open the generated solution file in MS Visual Studio. - -For VS 2017 use "Visual Studio 15 2017 Win64", for VS 2019 use "Visual Studio 16 2019". - -Visual Studio 2019 also allows you to open the CMake directory directly. Choose "File->Open->CMake" for this option. - -**macOS Xcode:** - -For generating an Xcode workspace type: -```bash -cd build -cmake .. -G "Xcode" -``` -Then open the generated work space in Xcode. - -For generating Makefiles with optional non-default compilers, use the following commands: - -```bash -cd build -cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=gcc-9 -DCMAKE_CXX_COMPILER=g++-9 -``` -In this example the brew installed GCC 9 is used for a release build. - -**Linux** - -For generating Linux Release Makefile: -```bash -cd build -cmake .. -DCMAKE_BUILD_TYPE=Release -``` -For generating Linux Debug Makefile: -```bash -cd build -cmake .. -DCMAKE_BUILD_TYPE=Debug -``` - -Then type -```bash -make -j -``` - -For more details, refer to the CMake documentation: https://cmake.org/cmake/help/latest/ - -Build instructions for make ---------------------------- - -**Note:** The build instructions in this section require the make tool and Python to be installed, which are -part of usual Linux and macOS environments. See below for installation instruction for Python and GnuWin32 -on Windows. - -Open a command prompt on your system and change into the root directory of this project. - -To use the default system compiler simply call: -```bash -make all -``` - - -**MSYS2 and MinGW (Windows)** - -**Note:** Build files for MSYS MinGW were added on request. The build platform is not regularily tested and can't be supported. - -Open an MSYS MinGW 64-Bit terminal and change into the root directory of this project. - -Call: -```bash -make all toolset=gcc -``` - -The following tools need to be installed for MSYS2 and MinGW: - -Download CMake: http://www.cmake.org/ and install it. - -Python and GnuWin32 are not mandatory, but they simplify the build process for the user. - -python: https://www.python.org/downloads/release/python-371/ - -gnuwin32: https://sourceforge.net/projects/getgnuwin32/files/getgnuwin32/0.6.30/GetGnuWin32-0.6.3.exe/download - -To use MinGW, install MSYS2: http://repo.msys2.org/distrib/msys2-x86_64-latest.exe - -Installation instructions: https://www.msys2.org/ - -Install the needed toolchains: -```bash -pacman -S --needed base-devel mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain git subversion mingw-w64-i686-cmake mingw-w64-x86_64-cmake -``` - diff --git a/cfg/444/yuv444.cfg b/cfg/444/yuv444.cfg deleted file mode 100644 index ca0f331f..00000000 --- a/cfg/444/yuv444.cfg +++ /dev/null @@ -1 +0,0 @@ -BDPCM: 1 diff --git a/cfg/CacheCfg/cache_1d.cfg b/cfg/CacheCfg/cache_1d.cfg deleted file mode 100644 index cb3a6dcb..00000000 --- a/cfg/CacheCfg/cache_1d.cfg +++ /dev/null @@ -1,6 +0,0 @@ -CacheEnable : 1 -CacheLineSize : 256 -NumCacheLine : 64 -NumWay : 4 -CacheAddrMode : 0 -FrameReport : diff --git a/cfg/CacheCfg/cache_2d.cfg b/cfg/CacheCfg/cache_2d.cfg deleted file mode 100644 index f1a8f8db..00000000 --- a/cfg/CacheCfg/cache_2d.cfg +++ /dev/null @@ -1,8 +0,0 @@ -CacheEnable : 1 -CacheLineSize : 256 -NumCacheLine : 64 -NumWay : 4 -CacheAddrMode : 1 -BlkWidth : 16 -BlkHeight : 16 -FrameReport : 0 diff --git a/cfg/encoder_intra_vtm.cfg b/cfg/encoder_intra_vtm.cfg deleted file mode 100644 index 85b43f95..00000000 --- a/cfg/encoder_intra_vtm.cfg +++ /dev/null @@ -1,117 +0,0 @@ -#======== File I/O ===================== -BitstreamFile : str.bin -ReconFile : rec.yuv - -#======== Profile ================ -Profile : auto - -#======== Unit definition ================ -MaxCUWidth : 64 # Maximum coding unit width in pixel -MaxCUHeight : 64 # Maximum coding unit height in pixel - -#======== Coding Structure ============= -IntraPeriod : 1 # Period of I-Frame ( -1 = only first) -DecodingRefreshType : 1 # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI -GOPSize : 1 # GOP Size (number of B slice = GOPSize-1) -# Type POC QPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active #ref_pics reference pictures - -#=========== Motion Search ============= -FastSearch : 1 # 0:Full search 1:TZ search -SearchRange : 64 # (0: Search range is a Full frame) -HadamardME : 1 # Use of hadamard measure for fractional ME -FEN : 1 # Fast encoder decision -FDM : 1 # Fast Decision for Merge RD cost - -#======== Quantization ============= -QP : 32 # Quantization parameter(0-51) -MaxDeltaQP : 0 # CU-based multi-QP optimization -MaxCuDQPSubdiv : 0 # Maximum subdiv for CU luma Qp adjustment -DeltaQpRD : 0 # Slice-based multi-QP optimization -RDOQ : 1 # RDOQ -RDOQTS : 1 # RDOQ for transform skip - -#=========== Deblock Filter ============ -LoopFilterOffsetInPPS : 1 # Dbl params: 0=varying params in SliceHeader, param = base_param + GOP_offset_param; 1 (default) =constant params in PPS, param = base_param) -LoopFilterDisable : 0 # Disable deblocking filter (0=Filter, 1=No Filter) -LoopFilterBetaOffset_div2 : 0 # base_param: -12 ~ 12 -LoopFilterTcOffset_div2 : 0 # base_param: -12 ~ 12 -LoopFilterCbBetaOffset_div2 : 0 # base_param: -12 ~ 12 -LoopFilterCbTcOffset_div2 : 0 # base_param: -12 ~ 12 -LoopFilterCrBetaOffset_div2 : 0 # base_param: -12 ~ 12 -LoopFilterCrTcOffset_div2 : 0 # base_param: -12 ~ 12 -DeblockingFilterMetric : 0 # blockiness metric (automatically configures deblocking parameters in bitstream). Applies slice-level loop filter offsets (LoopFilterOffsetInPPS and LoopFilterDisable must be 0) - -#=========== Misc. ============ -InternalBitDepth : 10 # codec operating bit-depth - -#=========== Coding Tools ================= -SAO : 1 # Sample adaptive offset (0: OFF, 1: ON) -TransformSkip : 1 # Transform skipping (0: OFF, 1: ON) -TransformSkipFast : 1 # Fast Transform skipping (0: OFF, 1: ON) -TransformSkipLog2MaxSize : 5 -SAOLcuBoundary : 0 # SAOLcuBoundary using non-deblocked pixels (0: OFF, 1: ON) - -#============ VTM settings ====================== -SEIDecodedPictureHash : 0 -CbQpOffset : 0 -CrQpOffset : 0 -SameCQPTablesForAllChroma : 1 -QpInValCb : 17 27 32 44 -QpOutValCb : 17 29 34 41 -TemporalSubsampleRatio : 8 - -ReWriteParamSets : 1 -#============ NEXT ==================== - -# General -CTUSize : 128 -LCTUFast : 1 - -DualITree : 1 # separate partitioning of luma and chroma channels for I-slices -MinQTLumaISlice : 8 -MinQTChromaISliceInChromaSamples: 4 # minimum QT size in chroma samples for chroma separate tree -MinQTNonISlice : 8 -MaxMTTHierarchyDepth : 3 -MaxMTTHierarchyDepthISliceL : 3 -MaxMTTHierarchyDepthISliceC : 3 - -MTS : 1 -MTSIntraMaxCand : 4 -MTSInterMaxCand : 4 -SBT : 1 -LFNST : 1 -ISP : 1 -Affine : 1 -SubPuMvp : 1 -MaxNumMergeCand : 6 -LMChroma : 1 # use CCLM only -DepQuant : 1 -IMV : 1 -ALF : 1 -IBC : 0 # turned off in CTC -AllowDisFracMMVD : 1 -AffineAmvr : 0 -LMCSEnable : 1 # LMCS: 0: disable, 1:enable -LMCSSignalType : 0 # Input signal type: 0:SDR, 1:HDR-PQ, 2:HDR-HLG -LMCSUpdateCtrl : 1 # LMCS model update control: 0:RA, 1:AI, 2:LDB/LDP -LMCSOffset : 2 # chroma residual scaling offset -MRL : 1 -MIP : 1 -JointCbCr : 1 # joint coding of chroma residuals (if available): 0: disable, 1: enable -ChromaTS : 1 - -# Fast tools -PBIntraFast : 1 -ISPFast : 1 -FastMrg : 1 -AMaxBT : 1 -FastMIP : 1 -FastLFNST : 1 - -# Encoder optimization tools -AffineAmvrEncOpt : 0 - -### DO NOT ADD ANYTHING BELOW THIS LINE ### -### DO NOT DELETE THE EMPTY LINE BELOW ### - - diff --git a/cfg/encoder_lowdelay_P_vtm.cfg b/cfg/encoder_lowdelay_P_vtm.cfg deleted file mode 100644 index f98be307..00000000 --- a/cfg/encoder_lowdelay_P_vtm.cfg +++ /dev/null @@ -1,143 +0,0 @@ -#======== File I/O ===================== -BitstreamFile : str.bin -ReconFile : rec.yuv - -#======== Profile ================ -Profile : auto - -#======== Unit definition ================ -MaxCUWidth : 64 # Maximum coding unit width in pixel -MaxCUHeight : 64 # Maximum coding unit height in pixel - -#======== Coding Structure ============= -IntraPeriod : -1 # Period of I-Frame ( -1 = only first) -DecodingRefreshType : 0 # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI -GOPSize : 8 # GOP Size (number of B slice = GOPSize-1) - -IntraQPOffset : -1 -LambdaFromQpEnable : 1 # see JCTVC-X0038 for suitable parameters for IntraQPOffset, QPoffset, QPOffsetModelOff, QPOffsetModelScale when enabled -# Type POC QPoffset QPOffsetModelOff QPOffsetModelScale CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 CbTcOffsetDiv2 CbBetaOffsetDiv2 CrTcOffsetDiv2 CrBetaOffsetDiv2 temporal_id #ref_pics_active_L0 #ref_pics_L0 reference_pictures_L0 #ref_pics_active_L1 #ref_pics_L1 reference_pictures_L1 -Frame1: P 1 5 -6.5 0.2590 0 0 1.0 0 0 0 0 0 0 0 4 4 1 9 17 25 0 0 -Frame2: P 2 4 -6.5 0.2590 0 0 1.0 0 0 0 0 0 0 0 4 4 1 2 10 18 0 0 -Frame3: P 3 5 -6.5 0.2590 0 0 1.0 0 0 0 0 0 0 0 4 4 1 3 11 19 0 0 -Frame4: P 4 4 -6.5 0.2590 0 0 1.0 0 0 0 0 0 0 0 4 4 1 4 12 20 0 0 -Frame5: P 5 5 -6.5 0.2590 0 0 1.0 0 0 0 0 0 0 0 4 4 1 5 13 21 0 0 -Frame6: P 6 4 -6.5 0.2590 0 0 1.0 0 0 0 0 0 0 0 4 4 1 6 14 22 0 0 -Frame7: P 7 5 -6.5 0.2590 0 0 1.0 0 0 0 0 0 0 0 4 4 1 7 15 23 0 0 -Frame8: P 8 1 0.0 0.0 0 0 1.0 0 0 0 0 0 0 0 4 4 1 8 16 24 0 0 - -#=========== Motion Search ============= -FastSearch : 1 # 0:Full search 1:TZ search -SearchRange : 64 # (0: Search range is a Full frame) -BipredSearchRange : 4 # Search range for bi-prediction refinement -HadamardME : 1 # Use of hadamard measure for fractional ME -FEN : 1 # Fast encoder decision -FDM : 1 # Fast Decision for Merge RD cost - -#======== Quantization ============= -QP : 32 # Quantization parameter(0-51) -MaxDeltaQP : 0 # CU-based multi-QP optimization -MaxCuDQPSubdiv : 0 # Maximum subdiv for CU luma Qp adjustment -DeltaQpRD : 0 # Slice-based multi-QP optimization -RDOQ : 1 # RDOQ -RDOQTS : 1 # RDOQ for transform skip - -#=========== Deblock Filter ============ -LoopFilterOffsetInPPS : 1 # Dbl params: 0=varying params in SliceHeader, param = base_param + GOP_offset_param; 1 (default) =constant params in PPS, param = base_param) -LoopFilterDisable : 0 # Disable deblocking filter (0=Filter, 1=No Filter) -LoopFilterBetaOffset_div2 : 0 # base_param: -12 ~ 12 -LoopFilterTcOffset_div2 : 0 # base_param: -12 ~ 12 -LoopFilterCbBetaOffset_div2 : 0 # base_param: -12 ~ 12 -LoopFilterCbTcOffset_div2 : 0 # base_param: -12 ~ 12 -LoopFilterCrBetaOffset_div2 : 0 # base_param: -12 ~ 12 -LoopFilterCrTcOffset_div2 : 0 # base_param: -12 ~ 12 -DeblockingFilterMetric : 0 # blockiness metric (automatically configures deblocking parameters in bitstream). Applies slice-level loop filter offsets (LoopFilterOffsetInPPS and LoopFilterDisable must be 0) - -#=========== Misc. ============ -InternalBitDepth : 10 # codec operating bit-depth - -#=========== Coding Tools ================= -SAO : 1 # Sample adaptive offset (0: OFF, 1: ON) -TransformSkip : 1 # Transform skipping (0: OFF, 1: ON) -TransformSkipFast : 1 # Fast Transform skipping (0: OFF, 1: ON) -TransformSkipLog2MaxSize : 5 -SAOLcuBoundary : 0 # SAOLcuBoundary using non-deblocked pixels (0: OFF, 1: ON) - -#=========== TemporalFilter ================= -TemporalFilter : 0 # Enable/disable GOP Based Temporal Filter -TemporalFilterFutureReference : 0 # Enable/disable reading future frames -TemporalFilterStrengthFrame4 : 0.4 # Enable filter at every 4th frame with strength - -#============ Rate Control ====================== -RateControl : 0 # Rate control: enable rate control -TargetBitrate : 1000000 # Rate control: target bitrate, in bps -KeepHierarchicalBit : 2 # Rate control: 0: equal bit allocation; 1: fixed ratio bit allocation; 2: adaptive ratio bit allocation -LCULevelRateControl : 1 # Rate control: 1: LCU level RC; 0: picture level RC -RCLCUSeparateModel : 1 # Rate control: use LCU level separate R-lambda model -InitialQP : 0 # Rate control: initial QP -RCForceIntraQP : 0 # Rate control: force intra QP to be equal to initial QP - -#============ VTM settings ====================== -SEIDecodedPictureHash : 0 -CbQpOffset : 0 -CrQpOffset : 0 -SameCQPTablesForAllChroma : 1 -QpInValCb : 17 22 34 42 -QpOutValCb : 17 23 35 39 -ReWriteParamSets : 1 -#============ NEXT ==================== - -# General -CTUSize : 128 -LCTUFast : 1 - -DualITree : 1 # separate partitioning of luma and chroma channels for I-slices -MinQTLumaISlice : 8 -MinQTChromaISliceInChromaSamples: 4 # minimum QT size in chroma samples for chroma separate tree -MinQTNonISlice : 8 -MaxMTTHierarchyDepth : 3 -MaxMTTHierarchyDepthISliceL : 3 -MaxMTTHierarchyDepthISliceC : 3 - -MTS : 1 -MTSIntraMaxCand : 3 -MTSInterMaxCand : 4 -SBT : 1 -ISP : 1 -Affine : 1 -SubPuMvp : 1 -MaxNumMergeCand : 6 -LMChroma : 1 # use CCLM only -DepQuant : 1 -IMV : 1 -ALF : 1 -CIIP : 1 -IBC : 0 # turned off in CTC -AllowDisFracMMVD : 1 -AffineAmvr : 0 -LMCSEnable : 1 # LMCS: 0: disable, 1:enable -LMCSSignalType : 0 # Input signal type: 0:SDR, 1:HDR-PQ, 2:HDR-HLG -LMCSUpdateCtrl : 2 # LMCS model update control: 0:RA, 1:AI, 2:LDB/LDP -LMCSOffset : 1 # chroma residual scaling offset -MRL : 1 -MIP : 0 -JointCbCr : 1 # joint coding of chroma residuals (if available): 0: disable, 1: enable -PROF : 1 -ChromaTS : 1 - -# Fast tools -PBIntraFast : 1 -ISPFast : 0 -FastMrg : 1 -AMaxBT : 1 -FastMIP : 0 -FastLocalDualTreeMode : 2 - -# Encoder optimization tools -AffineAmvrEncOpt : 0 -MmvdDisNum : 6 -### DO NOT ADD ANYTHING BELOW THIS LINE ### -### DO NOT DELETE THE EMPTY LINE BELOW ### - - - diff --git a/cfg/encoder_lowdelay_vtm.cfg b/cfg/encoder_lowdelay_vtm.cfg deleted file mode 100644 index e4e74010..00000000 --- a/cfg/encoder_lowdelay_vtm.cfg +++ /dev/null @@ -1,147 +0,0 @@ -#======== File I/O ===================== -BitstreamFile : str.bin -ReconFile : rec.yuv - -#======== Profile ================ -Profile : auto - -#======== Unit definition ================ -MaxCUWidth : 64 # Maximum coding unit width in pixel -MaxCUHeight : 64 # Maximum coding unit height in pixel - -#======== Coding Structure ============= -IntraPeriod : -1 # Period of I-Frame ( -1 = only first) -DecodingRefreshType : 0 # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI -GOPSize : 8 # GOP Size (number of B slice = GOPSize-1) - -IntraQPOffset : -1 -LambdaFromQpEnable : 1 # see JCTVC-X0038 for suitable parameters for IntraQPOffset, QPoffset, QPOffsetModelOff, QPOffsetModelScale when enabled -# Type POC QPoffset QPOffsetModelOff QPOffsetModelScale CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 CbTcOffsetDiv2 CbBetaOffsetDiv2 CrTcOffsetDiv2 CrBetaOffsetDiv2 temporal_id #ref_pics_active_L0 #ref_pics_L0 reference_pictures_L0 #ref_pics_active_L1 #ref_pics_L1 reference_pictures_L1 -Frame1: B 1 5 -6.5 0.2590 0 0 1.0 0 0 0 0 0 0 0 4 4 1 9 17 25 4 4 1 9 17 25 -Frame2: B 2 4 -6.5 0.2590 0 0 1.0 0 0 0 0 0 0 0 4 4 1 2 10 18 4 4 1 2 10 18 -Frame3: B 3 5 -6.5 0.2590 0 0 1.0 0 0 0 0 0 0 0 4 4 1 3 11 19 4 4 1 3 11 19 -Frame4: B 4 4 -6.5 0.2590 0 0 1.0 0 0 0 0 0 0 0 4 4 1 4 12 20 4 4 1 4 12 20 -Frame5: B 5 5 -6.5 0.2590 0 0 1.0 0 0 0 0 0 0 0 4 4 1 5 13 21 4 4 1 5 13 21 -Frame6: B 6 4 -6.5 0.2590 0 0 1.0 0 0 0 0 0 0 0 4 4 1 6 14 22 4 4 1 6 14 22 -Frame7: B 7 5 -6.5 0.2590 0 0 1.0 0 0 0 0 0 0 0 4 4 1 7 15 23 4 4 1 7 15 23 -Frame8: B 8 1 0.0 0.0 0 0 1.0 0 0 0 0 0 0 0 4 4 1 8 16 24 4 4 1 8 16 24 - -#=========== Motion Search ============= -FastSearch : 1 # 0:Full search 1:TZ search -SearchRange : 64 # (0: Search range is a Full frame) -BipredSearchRange : 4 # Search range for bi-prediction refinement -HadamardME : 1 # Use of hadamard measure for fractional ME -FEN : 1 # Fast encoder decision -FDM : 1 # Fast Decision for Merge RD cost - -#======== Quantization ============= -QP : 32 # Quantization parameter(0-51) -MaxDeltaQP : 0 # CU-based multi-QP optimization -MaxCuDQPSubdiv : 0 # Maximum subdiv for CU luma Qp adjustment -DeltaQpRD : 0 # Slice-based multi-QP optimization -RDOQ : 1 # RDOQ -RDOQTS : 1 # RDOQ for transform skip - -#=========== Deblock Filter ============ -LoopFilterOffsetInPPS : 1 # Dbl params: 0=varying params in SliceHeader, param = base_param + GOP_offset_param; 1 (default) =constant params in PPS, param = base_param) -LoopFilterDisable : 0 # Disable deblocking filter (0=Filter, 1=No Filter) -LoopFilterBetaOffset_div2 : 0 # base_param: -12 ~ 12 -LoopFilterTcOffset_div2 : 0 # base_param: -12 ~ 12 -LoopFilterCbBetaOffset_div2 : 0 # base_param: -12 ~ 12 -LoopFilterCbTcOffset_div2 : 0 # base_param: -12 ~ 12 -LoopFilterCrBetaOffset_div2 : 0 # base_param: -12 ~ 12 -LoopFilterCrTcOffset_div2 : 0 # base_param: -12 ~ 12 -DeblockingFilterMetric : 0 # blockiness metric (automatically configures deblocking parameters in bitstream). Applies slice-level loop filter offsets (LoopFilterOffsetInPPS and LoopFilterDisable must be 0) - -#=========== Misc. ============ -InternalBitDepth : 10 # codec operating bit-depth - -#=========== Coding Tools ================= -SAO : 1 # Sample adaptive offset (0: OFF, 1: ON) -TransformSkip : 1 # Transform skipping (0: OFF, 1: ON) -TransformSkipFast : 1 # Fast Transform skipping (0: OFF, 1: ON) -TransformSkipLog2MaxSize : 5 -SAOLcuBoundary : 0 # SAOLcuBoundary using non-deblocked pixels (0: OFF, 1: ON) - -#=========== TemporalFilter ================= -TemporalFilter : 0 # Enable/disable GOP Based Temporal Filter -TemporalFilterFutureReference : 0 # Enable/disable reading future frames -TemporalFilterStrengthFrame4 : 0.4 # Enable filter at every 4th frame with strength - -#============ Rate Control ====================== -RateControl : 0 # Rate control: enable rate control -TargetBitrate : 1000000 # Rate control: target bitrate, in bps -KeepHierarchicalBit : 2 # Rate control: 0: equal bit allocation; 1: fixed ratio bit allocation; 2: adaptive ratio bit allocation -LCULevelRateControl : 1 # Rate control: 1: LCU level RC; 0: picture level RC -RCLCUSeparateModel : 1 # Rate control: use LCU level separate R-lambda model -InitialQP : 0 # Rate control: initial QP -RCForceIntraQP : 0 # Rate control: force intra QP to be equal to initial QP - -#============ VTM settings ====================== -SEIDecodedPictureHash : 0 -CbQpOffset : 0 -CrQpOffset : 0 -SameCQPTablesForAllChroma : 1 -QpInValCb : 17 22 34 42 -QpOutValCb : 17 23 35 39 -ReWriteParamSets : 1 -#============ NEXT ==================== - -# General -CTUSize : 128 -LCTUFast : 1 - -DualITree : 1 # separate partitioning of luma and chroma channels for I-slices -MinQTLumaISlice : 8 -MinQTChromaISliceInChromaSamples: 4 # minimum QT size in chroma samples for chroma separate tree -MinQTNonISlice : 8 -MaxMTTHierarchyDepth : 3 -MaxMTTHierarchyDepthISliceL : 3 -MaxMTTHierarchyDepthISliceC : 3 - -MTS : 1 -MTSIntraMaxCand : 3 -MTSInterMaxCand : 4 -SBT : 1 -ISP : 1 -MMVD : 1 -Affine : 1 -SubPuMvp : 1 -MaxNumMergeCand : 6 -LMChroma : 1 # use CCLM only -DepQuant : 1 -IMV : 1 -ALF : 1 -BCW : 1 -BcwFast : 1 -CIIP : 1 -Geo : 1 -IBC : 0 # turned off in CTC -AllowDisFracMMVD : 1 -AffineAmvr : 0 -LMCSEnable : 1 # LMCS: 0: disable, 1:enable -LMCSSignalType : 0 # Input signal type: 0:SDR, 1:HDR-PQ, 2:HDR-HLG -LMCSUpdateCtrl : 2 # LMCS model update control: 0:RA, 1:AI, 2:LDB/LDP -LMCSOffset : 1 # chroma residual scaling offset -MRL : 1 -MIP : 0 -JointCbCr : 1 # joint coding of chroma residuals (if available): 0: disable, 1: enable -PROF : 1 -ChromaTS : 1 - -# Fast tools -PBIntraFast : 1 -ISPFast : 0 -FastMrg : 1 -AMaxBT : 1 -FastMIP : 0 -FastLocalDualTreeMode : 2 - -# Encoder optimization tools -AffineAmvrEncOpt : 0 -MmvdDisNum : 6 -### DO NOT ADD ANYTHING BELOW THIS LINE ### -### DO NOT DELETE THE EMPTY LINE BELOW ### - - - diff --git a/cfg/encoder_randomaccess_vtm.cfg b/cfg/encoder_randomaccess_vtm.cfg deleted file mode 100644 index 7e4ff3a5..00000000 --- a/cfg/encoder_randomaccess_vtm.cfg +++ /dev/null @@ -1,163 +0,0 @@ -#======== File I/O ===================== -BitstreamFile : str.bin -ReconFile : rec.yuv - -#======== Profile ================ -Profile : auto - -#======== Unit definition ================ -MaxCUWidth : 64 # Maximum coding unit width in pixel -MaxCUHeight : 64 # Maximum coding unit height in pixel - -#======== Coding Structure ============= -IntraPeriod : 32 # Period of I-Frame ( -1 = only first) -DecodingRefreshType : 1 # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI -GOPSize : 16 # GOP Size (number of B slice = GOPSize-1) - -IntraQPOffset : -3 -LambdaFromQpEnable : 1 # see JCTVC-X0038 for suitable parameters for IntraQPOffset, QPoffset, QPOffsetModelOff, QPOffsetModelScale when enabled -# Type POC QPoffset QPOffsetModelOff QPOffsetModelScale CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 CbTcOffsetDiv2 CbBetaOffsetDiv2 CrTcOffsetDiv2 CrBetaOffsetDiv2 temporal_id #ref_pics_active_L0 #ref_pics_L0 reference_pictures_L0 #ref_pics_active_L1 #ref_pics_L1 reference_pictures_L1 -Frame1: B 16 1 0.0 0.0 0 0 1.0 0 0 0 0 0 0 0 2 3 16 32 24 2 2 16 32 -Frame2: B 8 1 -4.8848 0.2061 0 0 1.0 0 0 0 0 0 0 1 2 2 8 16 2 2 -8 8 -Frame3: B 4 4 -5.7476 0.2286 0 0 1.0 0 0 0 0 0 0 2 2 2 4 12 2 2 -4 -12 -Frame4: B 2 5 -5.90 0.2333 0 0 1.0 0 0 0 0 0 0 3 2 2 2 10 2 3 -2 -6 -14 -Frame5: B 1 6 -7.1444 0.3 0 0 1.0 0 0 0 0 0 0 4 2 2 1 -1 2 4 -1 -3 -7 -15 -Frame6: B 3 6 -7.1444 0.3 0 0 1.0 0 0 0 0 0 0 4 2 2 1 3 2 3 -1 -5 -13 -Frame7: B 6 5 -5.90 0.2333 0 0 1.0 0 0 0 0 0 0 3 2 2 2 6 2 2 -2 -10 -Frame8: B 5 6 -7.1444 0.3 0 0 1.0 0 0 0 0 0 0 4 2 2 1 5 2 3 -1 -3 -11 -Frame9: B 7 6 -7.1444 0.3 0 0 1.0 0 0 0 0 0 0 4 2 3 1 3 7 2 2 -1 -9 -Frame10: B 12 4 -5.7476 0.2286 0 0 1.0 0 0 0 0 0 0 2 2 2 4 12 2 2 -4 4 -Frame11: B 10 5 -5.90 0.2333 0 0 1.0 0 0 0 0 0 0 3 2 2 2 10 2 2 -2 -6 -Frame12: B 9 6 -7.1444 0.3 0 0 1.0 0 0 0 0 0 0 4 2 2 1 9 2 3 -1 -3 -7 -Frame13: B 11 6 -7.1444 0.3 0 0 1.0 0 0 0 0 0 0 4 2 3 1 3 11 2 2 -1 -5 -Frame14: B 14 5 -5.90 0.2333 0 0 1.0 0 0 0 0 0 0 3 2 3 2 6 14 2 2 -2 2 -Frame15: B 13 6 -7.1444 0.3 0 0 1.0 0 0 0 0 0 0 4 2 3 1 5 13 2 2 -1 -3 -Frame16: B 15 6 -7.1444 0.3 0 0 1.0 0 0 0 0 0 0 4 2 4 1 3 7 15 2 2 -1 1 - -#=========== Motion Search ============= -FastSearch : 1 # 0:Full search 1:TZ search -SearchRange : 384 # (0: Search range is a Full frame) -ASR : 1 # Adaptive motion search range -MinSearchWindow : 96 # Minimum motion search window size for the adaptive window ME -BipredSearchRange : 4 # Search range for bi-prediction refinement -HadamardME : 1 # Use of hadamard measure for fractional ME -FEN : 1 # Fast encoder decision -FDM : 1 # Fast Decision for Merge RD cost - -#======== Quantization ============= -QP : 32 # Quantization parameter(0-51) -MaxDeltaQP : 0 # CU-based multi-QP optimization -MaxCuDQPSubdiv : 0 # Maximum subdiv for CU luma Qp adjustment -DeltaQpRD : 0 # Slice-based multi-QP optimization -RDOQ : 1 # RDOQ -RDOQTS : 1 # RDOQ for transform skip - -#=========== Deblock Filter ============ -LoopFilterOffsetInPPS : 1 # Dbl params: 0=varying params in SliceHeader, param = base_param + GOP_offset_param; 1 (default) =constant params in PPS, param = base_param) -LoopFilterDisable : 0 # Disable deblocking filter (0=Filter, 1=No Filter) -LoopFilterBetaOffset_div2 : 0 # base_param: -12 ~ 12 -LoopFilterTcOffset_div2 : 0 # base_param: -12 ~ 12 -LoopFilterCbBetaOffset_div2 : 0 # base_param: -12 ~ 12 -LoopFilterCbTcOffset_div2 : 0 # base_param: -12 ~ 12 -LoopFilterCrBetaOffset_div2 : 0 # base_param: -12 ~ 12 -LoopFilterCrTcOffset_div2 : 0 # base_param: -12 ~ 12 -DeblockingFilterMetric : 0 # blockiness metric (automatically configures deblocking parameters in bitstream). Applies slice-level loop filter offsets (LoopFilterOffsetInPPS and LoopFilterDisable must be 0) - -#=========== Misc. ============ -InternalBitDepth : 10 # codec operating bit-depth - -#=========== Coding Tools ================= -SAO : 1 # Sample adaptive offset (0: OFF, 1: ON) -TransformSkip : 1 # Transform skipping (0: OFF, 1: ON) -TransformSkipFast : 1 # Fast Transform skipping (0: OFF, 1: ON) -TransformSkipLog2MaxSize : 5 -SAOLcuBoundary : 0 # SAOLcuBoundary using non-deblocked pixels (0: OFF, 1: ON) - -#=========== TemporalFilter ================= -TemporalFilter : 0 # Enable/disable GOP Based Temporal Filter -TemporalFilterFutureReference : 1 # Enable/disable reading future frames -TemporalFilterStrengthFrame8 : 0.95 # Enable filter at every 8th frame with given strength -TemporalFilterStrengthFrame16 : 1.5 # Enable filter at every 16th frame with given strength, longer intervals has higher priority - -#============ Rate Control ====================== -RateControl : 0 # Rate control: enable rate control -TargetBitrate : 1000000 # Rate control: target bitrate, in bps -KeepHierarchicalBit : 2 # Rate control: 0: equal bit allocation; 1: fixed ratio bit allocation; 2: adaptive ratio bit allocation -LCULevelRateControl : 1 # Rate control: 1: LCU level RC; 0: picture level RC -RCLCUSeparateModel : 1 # Rate control: use LCU level separate R-lambda model -InitialQP : 0 # Rate control: initial QP -RCForceIntraQP : 0 # Rate control: force intra QP to be equal to initial QP - -#============ VTM settings ====================== -SEIDecodedPictureHash : 0 -CbQpOffset : 0 -CrQpOffset : 0 -SameCQPTablesForAllChroma : 1 -QpInValCb : 17 22 34 42 -QpOutValCb : 17 23 35 39 -ReWriteParamSets : 1 -#============ NEXT ==================== - -# General -CTUSize : 128 -LCTUFast : 1 - -DualITree : 1 # separate partitioning of luma and chroma channels for I-slices -MinQTLumaISlice : 8 -MinQTChromaISliceInChromaSamples: 4 # minimum QT size in chroma samples for chroma separate tree -MinQTNonISlice : 8 -MaxMTTHierarchyDepth : 3 -MaxMTTHierarchyDepthISliceL : 3 -MaxMTTHierarchyDepthISliceC : 3 - -MTS : 1 -MTSIntraMaxCand : 4 -MTSInterMaxCand : 4 -SBT : 1 -LFNST : 1 -ISP : 1 -MMVD : 1 -Affine : 1 -SubPuMvp : 1 -MaxNumMergeCand : 6 -LMChroma : 1 # use CCLM only -DepQuant : 1 -IMV : 1 -ALF : 1 -BCW : 1 -BcwFast : 1 -BIO : 1 -CIIP : 1 -Geo : 1 -IBC : 0 # turned off in CTC -AllowDisFracMMVD : 1 -AffineAmvr : 1 -LMCSEnable : 1 # LMCS: 0: disable, 1:enable -LMCSSignalType : 0 # Input signal type: 0:SDR, 1:HDR-PQ, 2:HDR-HLG -LMCSUpdateCtrl : 0 # LMCS model update control: 0:RA, 1:AI, 2:LDB/LDP -LMCSOffset : 6 # chroma residual scaling offset -MRL : 1 -MIP : 1 -DMVR : 1 -SMVD : 1 -JointCbCr : 1 # joint coding of chroma residuals (if available): 0: disable, 1: enable -PROF : 1 - -# Fast tools -PBIntraFast : 1 -ISPFast : 0 -FastMrg : 1 -AMaxBT : 1 -FastMIP : 0 -FastLFNST : 0 -FastLocalDualTreeMode : 1 -ChromaTS : 1 - -# Encoder optimization tools -AffineAmvrEncOpt : 1 -MmvdDisNum : 6 -### DO NOT ADD ANYTHING BELOW THIS LINE ### -### DO NOT DELETE THE EMPTY LINE BELOW ### - - - diff --git a/cfg/field/VTM_encoder_lowdelay_field_GOP16.cfg b/cfg/field/VTM_encoder_lowdelay_field_GOP16.cfg deleted file mode 100644 index b72c9067..00000000 --- a/cfg/field/VTM_encoder_lowdelay_field_GOP16.cfg +++ /dev/null @@ -1,23 +0,0 @@ -FieldCoding : 1 # (0: Frame based coding, 1: Field based coding) -TopFieldFirst : 1 # Field parity order (1: Top field first, 0: Bottom field first) -ConformanceMode : 1 -SEIFrameFieldInfo : 1 -GOPSize : 16 # GOP Size (number of B slice = GOPSize-1) - -# Type POC QPoffset QPOffsetModelOff QPOffsetModelScale CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 CbTcOffsetDiv2 CbBetaOffsetDiv2 CrTcOffsetDiv2 CrBetaOffsetDiv2 temporal_id #ref_pics_active_L0 #ref_pics_L0 reference_pictures_L0 #ref_pics_active_L1 #ref_pics_L1 reference_pictures_L1 -Frame1: B 2 5 -6.5 0.2590 0 0 1.0 0 0 0 0 0 0 0 8 8 1 2 9 10 17 18 25 26 8 8 1 2 9 10 17 18 25 26 -Frame2: B 3 5 -6.5 0.2590 0 0 1.0 0 0 0 0 0 0 0 8 9 1 2 3 10 11 18 19 26 27 8 9 1 2 3 10 11 18 19 26 27 -Frame3: B 4 4 -6.5 0.2590 0 0 1.0 0 0 0 0 0 0 0 8 8 1 2 3 4 11 12 19 20 8 8 1 2 3 4 11 12 19 20 -Frame4: B 5 4 -6.5 0.2590 0 0 1.0 0 0 0 0 0 0 0 8 9 1 2 3 4 5 12 13 20 21 8 9 1 2 3 4 5 12 13 20 21 -Frame5: B 6 5 -6.5 0.2590 0 0 1.0 0 0 0 0 0 0 0 8 8 1 2 5 6 13 14 21 22 8 8 1 2 5 6 13 14 21 22 -Frame6: B 7 5 -6.5 0.2590 0 0 1.0 0 0 0 0 0 0 0 8 9 1 2 3 6 7 14 15 22 23 8 9 1 2 3 6 7 14 15 22 23 -Frame7: B 8 4 -6.5 0.2590 0 0 1.0 0 0 0 0 0 0 0 8 8 1 2 7 8 15 16 23 24 8 8 1 2 7 8 15 16 23 24 -Frame8: B 9 4 -6.5 0.2590 0 0 1.0 0 0 0 0 0 0 0 8 9 1 2 3 8 9 16 17 24 25 8 9 1 2 3 8 9 16 17 24 25 -Frame9: B 10 5 -6.5 0.2590 0 0 1.0 0 0 0 0 0 0 0 8 8 1 2 9 10 17 18 25 26 8 8 1 2 9 10 17 18 25 26 -Frame10: B 11 5 -6.5 0.2590 0 0 1.0 0 0 0 0 0 0 0 8 9 1 2 3 10 11 18 19 26 27 8 9 1 2 3 10 11 18 19 26 27 -Frame11: B 12 4 -6.5 0.2590 0 0 1.0 0 0 0 0 0 0 0 8 8 1 2 3 4 11 12 19 20 8 8 1 2 3 4 11 12 19 20 -Frame12: B 13 4 -6.5 0.2590 0 0 1.0 0 0 0 0 0 0 0 8 9 1 2 3 4 5 12 13 20 21 8 9 1 2 3 4 5 12 13 20 21 -Frame13: B 14 5 -6.5 0.2590 0 0 1.0 0 0 0 0 0 0 0 8 8 1 2 5 6 13 14 21 22 8 8 1 2 5 6 13 14 21 22 -Frame14: B 15 5 -6.5 0.2590 0 0 1.0 0 0 0 0 0 0 0 8 9 1 2 3 6 7 14 15 22 23 8 9 1 2 3 6 7 14 15 22 23 -Frame15: B 16 1 0.0 0.0 0 0 1.0 0 0 0 0 0 0 0 8 8 1 2 7 8 15 16 23 24 8 8 1 2 7 8 15 16 23 24 -Frame16: B 17 1 0.0 0.0 0 0 1.0 0 0 0 0 0 0 0 8 9 1 2 3 8 9 16 17 24 25 8 9 1 2 3 8 9 16 17 24 25 diff --git a/cfg/field/VTM_encoder_lowdelay_field_GOP8.cfg b/cfg/field/VTM_encoder_lowdelay_field_GOP8.cfg deleted file mode 100644 index 9f439891..00000000 --- a/cfg/field/VTM_encoder_lowdelay_field_GOP8.cfg +++ /dev/null @@ -1,15 +0,0 @@ -FieldCoding : 1 # (0: Frame based coding, 1: Field based coding) -TopFieldFirst : 1 # Field parity order (1: Top field first, 0: Bottom field first) -ConformanceMode : 1 -SEIFrameFieldInfo : 1 -GOPSize : 8 # GOP Size (number of B slice = GOPSize-1) - -# Type POC QPoffset QPOffsetModelOff QPOffsetModelScale CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 CbTcOffsetDiv2 CbBetaOffsetDiv2 CrTcOffsetDiv2 CrBetaOffsetDiv2 temporal_id #ref_pics_active_L0 #ref_pics_L0 reference_pictures_L0 #ref_pics_active_L1 #ref_pics_L1 reference_pictures_L1 -Frame1: B 2 5 -6.5 0.2590 0 0 1.0 0 0 0 0 0 0 0 5 5 1 2 9 10 17 5 5 1 2 9 10 17 -Frame2: B 3 5 -6.5 0.2590 0 0 1.0 0 0 0 0 0 0 0 6 6 1 2 3 10 11 18 6 6 1 2 3 10 11 18 -Frame3: B 4 4 -6.5 0.2590 0 0 1.0 0 0 0 0 0 0 0 7 7 1 2 3 4 11 12 19 7 7 1 2 3 4 11 12 19 -Frame4: B 5 4 -6.5 0.2590 0 0 1.0 0 0 0 0 0 0 0 8 8 1 2 3 4 5 12 13 20 8 8 1 2 3 4 5 12 13 20 -Frame5: B 6 5 -6.5 0.2590 0 0 1.0 0 0 0 0 0 0 0 7 7 1 2 5 6 13 14 21 7 7 1 2 5 6 13 14 21 -Frame6: B 7 5 -6.5 0.2590 0 0 1.0 0 0 0 0 0 0 0 8 8 1 2 3 6 7 14 15 22 8 8 1 2 3 6 7 14 15 22 -Frame7: B 8 1 0.0 0.0 0 0 1.0 0 0 0 0 0 0 0 7 7 1 2 7 8 15 16 23 7 7 1 2 7 8 15 16 23 -Frame8: B 9 1 0.0 0.0 0 0 1.0 0 0 0 0 0 0 0 8 8 1 2 3 8 9 16 17 24 8 8 1 2 3 8 9 16 17 24 diff --git a/cfg/field/VTM_encoder_randomaccess_field_GOP16.cfg b/cfg/field/VTM_encoder_randomaccess_field_GOP16.cfg deleted file mode 100644 index 638988b6..00000000 --- a/cfg/field/VTM_encoder_randomaccess_field_GOP16.cfg +++ /dev/null @@ -1,24 +0,0 @@ -FieldCoding : 1 # (0: Frame based coding, 1: Field based coding) -TopFieldFirst : 1 # Field parity order (1: Top field first, 0: Bottom field first) -ConformanceMode : 1 -SEIFrameFieldInfo : 1 -IntraPeriod : 32 # Period of I-Frame ( -1 = only first) -GOPSize : 16 # GOP Size (number of B slice = GOPSize-1) - -# Type POC QPoffset QPOffsetModelOff QPOffsetModelScale CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 CbTcOffsetDiv2 CbBetaOffsetDiv2 CrTcOffsetDiv2 CrBetaOffsetDiv2 temporal_id #ref_pics_active_L0 #ref_pics_L0 reference_pictures_L0 #ref_pics_active_L1 #ref_pics_L1 reference_pictures_L1 -Frame1: B 17 1 0.0 0.0 0 0 0.442 0 0 0 0 0 0 0 4 4 16 17 20 21 4 4 16 17 20 21 -Frame2: B 16 1 0.0 0.0 0 0 0.442 0 0 0 0 0 0 0 3 3 15 16 -1 3 3 -1 15 16 -Frame3: B 8 2 0.0 0.0 0 0 0.3536 0 0 0 0 0 0 1 2 4 7 8 -8 -9 2 4 -8 -9 7 8 -Frame4: B 9 2 0.0 0.0 0 0 0.3536 0 0 0 0 0 0 1 2 5 1 8 9 -7 -8 2 5 -7 -8 1 8 9 -Frame5: B 4 3 0.0 0.0 0 0 0.3536 0 0 0 0 0 0 2 2 4 3 4 -4 -5 2 4 -4 -5 -12 -13 -Frame6: B 5 3 0.0 0.0 0 0 0.3536 0 0 0 0 0 0 2 2 5 1 4 5 -3 -4 2 4 -3 -4 -11 -12 -Frame7: B 2 4 0.0 0.0 0 0 0.68 0 0 0 0 0 0 3 2 4 1 2 -2 -3 2 6 -2 -3 -6 -7 -14 -15 -Frame8: B 3 4 0.0 0.0 0 0 0.68 0 0 0 0 0 0 3 2 4 1 2 -1 -2 2 6 -1 -2 -5 -6 -13 -14 -Frame9: B 6 4 0.0 0.0 0 0 0.68 0 0 0 0 0 0 3 2 4 1 2 -2 -3 2 4 -2 -3 -10 -11 -Frame10: B 7 4 0.0 0.0 0 0 0.68 0 0 0 0 0 0 3 2 5 1 2 3 -1 -2 2 4 -1 -2 -9 -10 -Frame11: B 12 3 0.0 0.0 0 0 0.3536 0 0 0 0 0 0 2 2 4 3 4 -4 -5 2 4 -4 -5 3 4 -Frame12: B 13 3 0.0 0.0 0 0 0.3536 0 0 0 0 0 0 2 2 5 1 4 5 -3 -4 2 5 -3 -4 1 4 5 -Frame13: B 10 4 0.0 0.0 0 0 0.68 0 0 0 0 0 0 3 2 4 1 2 -2 -3 2 4 -2 -3 -6 -7 -Frame14: B 11 4 0.0 0.0 0 0 0.68 0 0 0 0 0 0 3 2 5 1 2 3 -1 -2 2 4 -1 -2 -5 -6 -Frame15: B 14 4 0.0 0.0 0 0 0.68 0 0 0 0 0 0 3 2 5 1 2 5 -2 -3 2 4 -2 -3 1 2 -Frame16: B 15 4 0.0 0.0 0 0 0.68 0 0 0 0 0 0 3 2 4 1 2 3 6 2 4 -1 -2 1 2 diff --git a/cfg/field/VTM_encoder_randomaccess_field_GOP32.cfg b/cfg/field/VTM_encoder_randomaccess_field_GOP32.cfg deleted file mode 100644 index 2d759ab9..00000000 --- a/cfg/field/VTM_encoder_randomaccess_field_GOP32.cfg +++ /dev/null @@ -1,40 +0,0 @@ -FieldCoding : 1 # (0: Frame based coding, 1: Field based coding) -TopFieldFirst : 1 # Field parity order (1: Top field first, 0: Bottom field first) -ConformanceMode : 1 -SEIFrameFieldInfo : 1 -IntraPeriod : 64 # Period of I-Frame ( -1 = only first) -GOPSize : 32 # GOP Size (number of B slice = GOPSize-1) - -# Type POC QPoffset QPOffsetModelOff QPOffsetModelScale CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 CbTcOffsetDiv2 CbBetaOffsetDiv2 CrTcOffsetDiv2 CrBetaOffsetDiv2 temporal_id #ref_pics_active_L0 #ref_pics_L0 reference_pictures_L0 #ref_pics_active_L1 #ref_pics_L1 reference_pictures_L1 -Frame1: B 33 1 0.0 0.0 0 0 1.0 0 0 0 0 0 0 0 4 4 32 33 48 49 4 4 32 33 48 49 -Frame2: B 32 1 0.0 0.0 0 0 1.0 0 0 0 0 0 0 0 4 5 31 32 47 48 -1 4 5 -1 31 32 47 48 -Frame3: B 16 1 -4.8848 0.2061 0 0 1.0 0 0 0 0 0 0 1 4 4 15 16 31 32 4 4 -16 -17 15 16 -Frame4: B 17 1 -4.8848 0.2061 0 0 1.0 0 0 0 0 0 0 1 4 5 1 16 17 32 33 4 4 -15 -16 16 17 -Frame5: B 8 4 -5.7476 0.2286 0 0 1.0 0 0 0 0 0 0 2 4 4 7 8 23 24 4 4 -8 -9 -24 -25 -Frame6: B 9 4 -5.7476 0.2286 0 0 1.0 0 0 0 0 0 0 2 4 5 1 8 9 24 25 4 4 -7 -8 -23 -24 -Frame7: B 4 5 -5.90 0.2333 0 0 1.0 0 0 0 0 0 0 3 4 4 3 4 19 20 4 6 -4 -5 -12 -13 -28 -29 -Frame8: B 5 5 -5.90 0.2333 0 0 1.0 0 0 0 0 0 0 3 4 5 1 4 5 20 21 4 6 -3 -4 -11 -12 -27 -28 -Frame9: B 2 6 -7.1444 0.3 0 0 1.0 0 0 0 0 0 0 4 4 4 1 2 -2 -3 4 8 -2 -3 -6 -7 -14 -15 -30 -31 -Frame10: B 3 6 -7.1444 0.3 0 0 1.0 0 0 0 0 0 0 4 4 5 1 2 3 -1 -2 4 8 -1 -2 -5 -6 -13 -14 -29 -30 -Frame11: B 6 6 -7.1444 0.3 0 0 1.0 0 0 0 0 0 0 4 4 4 1 2 5 6 4 6 -2 -3 -10 -11 -26 -27 -Frame12: B 7 6 -7.1444 0.3 0 0 1.0 0 0 0 0 0 0 4 4 5 1 2 3 6 7 4 6 -1 -2 -9 -10 -25 -26 -Frame13: B 12 5 -5.90 0.2333 0 0 1.0 0 0 0 0 0 0 3 4 4 3 4 11 12 4 4 -4 -5 -20 -21 -Frame14: B 13 5 -5.90 0.2333 0 0 1.0 0 0 0 0 0 0 3 4 5 1 4 5 12 13 4 4 -3 -4 -19 -20 -Frame15: B 10 6 -7.1444 0.3 0 0 1.0 0 0 0 0 0 0 4 4 4 1 2 9 10 4 6 -2 -3 -6 -7 -22 -23 -Frame16: B 11 6 -7.1444 0.3 0 0 1.0 0 0 0 0 0 0 4 4 5 1 2 3 10 11 4 6 -1 -2 -5 -6 -21 -22 -Frame17: B 14 6 -7.1444 0.3 0 0 1.0 0 0 0 0 0 0 4 4 6 1 2 5 6 13 14 4 4 -2 -3 -18 -19 -Frame18: B 15 6 -7.1444 0.3 0 0 1.0 0 0 0 0 0 0 4 4 7 1 2 3 6 7 14 15 4 4 -1 -2 -17 -18 -Frame19: B 24 4 -5.7476 0.2286 0 0 1.0 0 0 0 0 0 0 2 4 4 7 8 23 24 4 4 -8 -9 7 8 -Frame20: B 25 4 -5.7476 0.2286 0 0 1.0 0 0 0 0 0 0 2 4 5 1 8 9 24 25 4 4 -7 -8 8 9 -Frame21: B 20 5 -5.90 0.2333 0 0 1.0 0 0 0 0 0 0 3 4 4 3 4 19 20 4 4 -4 -5 -12 -13 -Frame22: B 21 5 -5.90 0.2333 0 0 1.0 0 0 0 0 0 0 3 4 5 1 4 5 20 21 4 4 -3 -4 -11 -12 -Frame23: B 18 6 -7.1444 0.3 0 0 1.0 0 0 0 0 0 0 4 4 4 1 2 17 18 4 6 -2 -3 -6 -7 -14 -15 -Frame24: B 19 6 -7.1444 0.3 0 0 1.0 0 0 0 0 0 0 4 4 5 1 2 3 18 19 4 6 -1 -2 -5 -6 -13 -14 -Frame25: B 22 6 -7.1444 0.3 0 0 1.0 0 0 0 0 0 0 4 4 6 1 2 5 6 21 22 4 4 -2 -3 -10 -11 -Frame26: B 23 6 -7.1444 0.3 0 0 1.0 0 0 0 0 0 0 4 4 7 1 2 3 6 7 22 23 4 4 -1 -2 -9 -10 -Frame27: B 28 5 -5.90 0.2333 0 0 1.0 0 0 0 0 0 0 3 4 6 3 4 11 12 27 28 4 4 -4 -5 3 4 -Frame28: B 29 5 -5.90 0.2333 0 0 1.0 0 0 0 0 0 0 3 4 7 1 4 5 12 13 28 29 4 4 -3 -4 4 5 -Frame29: B 26 6 -7.1444 0.3 0 0 1.0 0 0 0 0 0 0 4 4 6 1 2 9 10 25 26 4 4 -2 -3 -6 -7 -Frame30: B 27 6 -7.1444 0.3 0 0 1.0 0 0 0 0 0 0 4 4 7 1 2 3 10 11 26 27 4 4 -1 -2 -5 -6 -Frame31: B 30 6 -7.1444 0.3 0 0 1.0 0 0 0 0 0 0 4 4 8 1 2 5 6 13 14 29 30 4 4 -2 -3 1 2 -Frame32: B 31 6 -7.1444 0.3 0 0 1.0 0 0 0 0 0 0 4 4 9 1 2 3 6 7 14 15 30 31 4 4 -1 -2 2 3 diff --git a/cfg/lossless/lossless.cfg b/cfg/lossless/lossless.cfg deleted file mode 100644 index 793b2bed..00000000 --- a/cfg/lossless/lossless.cfg +++ /dev/null @@ -1,24 +0,0 @@ -CostMode : lossless -BDPCM : 1 -ChromaTS : 1 -BDPCM : 1 -DepQuant : 0 -RDOQ : 0 -RDOQTS : 0 -SBT : 0 -LMCSEnable : 0 -ISP : 0 -MTS : 0 -LFNST : 0 -JointCbCr : 0 -LoopFilterDisable : 1 -SAO : 0 -ALF : 0 -CCALF : 0 -DMVR : 0 -BIO : 0 -PROF : 0 -Log2MaxTbSize : 5 -InternalBitDepth : 0 -TSRCdisableLL : 1 - diff --git a/cfg/lossless/lossless444.cfg b/cfg/lossless/lossless444.cfg deleted file mode 100644 index 618a7dc9..00000000 --- a/cfg/lossless/lossless444.cfg +++ /dev/null @@ -1,5 +0,0 @@ -IBC : 1 -HashME : 1 -PLT : 1 - - diff --git a/cfg/lossless/losslessRGB.cfg b/cfg/lossless/losslessRGB.cfg deleted file mode 100644 index b265d5a4..00000000 --- a/cfg/lossless/losslessRGB.cfg +++ /dev/null @@ -1,6 +0,0 @@ -IBC : 1 -HashME : 1 -PLT : 1 -ColorTransform : 1 - - diff --git a/cfg/lossless/lossless_mixed.cfg b/cfg/lossless/lossless_mixed.cfg deleted file mode 100644 index 5fbdd0be..00000000 --- a/cfg/lossless/lossless_mixed.cfg +++ /dev/null @@ -1,47 +0,0 @@ -CostMode : lossless -BDPCM : 1 -ChromaTS : 1 -BDPCM : 1 -DepQuant : 0 -RDOQ : 1 -RDOQTS : 1 -SBT : 0 -LMCSEnable : 0 -ISP : 0 -MTS : 0 -LFNST : 0 -JointCbCr : 0 -LoopFilterDisable : 0 -SAO : 1 -ALF : 1 -CCALF : 0 -DMVR : 0 -BIO : 0 -PROF : 0 -Log2MaxTbSize : 5 -InternalBitDepth : 0 -TSRCdisableLL : 1 - -# Configuration to achieve mixed-lossy lossless coding -QP : 55 # Quantization parameter for lossy slices -CbQpOffset : 0 -CrQpOffset : 0 -SliceLevelDblk : 1 -SliceLevelAlf : 1 -SliceLevelSao : 1 -SignHideFlag : 0 -MixedLossyLossless : 1 -SliceLosslessArray : 1 2 # slices with index 1 and 2 are lossless coded - -#============ Tiles / Slices ================ -EnablePicPartitioning : 1 # Enable picture partitioning (0: single tile, single slice, 1: multiple tiles/slices can be used) - -TileColumnWidthArray : 3 3 3 3 3 3 # Tile column widths in units of CTUs. Last column width will be repeated uniformly to cover any remaining picture width -TileRowHeightArray : 3 3 3 3 # Tile row heights in units of CTUs. Last row height will be repeated uniformly to cover any remaining picture height -RasterScanSlices : 0 # Raster-scan or rectangular slices (0: rectangular, 1: raster-scan) -RectSliceFixedWidth : 1 # Fixed rectangular slice width in units of tiles (0: disable this feature and use RectSlicePositions instead) -RectSliceFixedHeight : 1 # Fixed rectangular slice height in units of tiles (0: disable this feature and use RectSlicePositions instead) -DisableLoopFilterAcrossTiles : 1 # Loop filtering (DBLK/SAO/ALF) applied across tile boundaries or not (0: filter across tile boundaries 1: do not filter across tile boundaries) -DisableLoopFilterAcrossSlices : 1 # Loop filtering (DBLK/SAO/ALF) applied across slice boundaries or not (0: filter across slice boundaries 1: do not filter across slice boundaries) - - diff --git a/cfg/multi-layer/two_layers.cfg b/cfg/multi-layer/two_layers.cfg deleted file mode 100644 index 5b18a5f3..00000000 --- a/cfg/multi-layer/two_layers.cfg +++ /dev/null @@ -1,25 +0,0 @@ -#======== Layers =============== -MaxLayers : 2 -MaxSublayers : 7 -AllLayersSameNumSublayersFlag : 0 -AllIndependentLayersFlag : 0 -#======== OLSs =============== -EachLayerIsAnOlsFlag : 0 -OlsModeIdc : 2 -NumOutputLayerSets : 2 -OlsOutputLayer1 : 1 0 -NumPTLsInVPS : 2 -#======== Layer-0 =============== -LayerId0 : 0 -#======== Layer-1 =============== -LayerId1 : 1 -NumRefLayers1 : 1 -RefLayerIdx1 : 0 -#======== OLS-0 =============== -OlsPTLIdx0 : 0 -#======== OLS-1 =============== -LevelPTL1 : 6.2 -OlsPTLIdx1 : 1 - - - diff --git a/cfg/multi-layer/two_layers_ELonlyILP.cfg b/cfg/multi-layer/two_layers_ELonlyILP.cfg deleted file mode 100644 index 3bca5204..00000000 --- a/cfg/multi-layer/two_layers_ELonlyILP.cfg +++ /dev/null @@ -1,29 +0,0 @@ -#======== Layers =============== -MaxLayers : 2 -MaxSublayers : 1 -AllLayersSameNumSublayersFlag : 0 -AllIndependentLayersFlag : 0 -AllowablePredDirection : 1 1 1 1 1 # equal to 0 specifies the picture in the i-th temporal layer is allowed to use both inter-layer and intra-layer preditions - # equal to 1 specifies the picture in the i-th temporal layer is allowed to use inter-layer predition only - # equal to 2 specifies the picture in the i-th temporal layer is allowed to use intra-layer predition only - -#======== OLSs =============== -EachLayerIsAnOlsFlag : 0 -OlsModeIdc : 2 -NumOutputLayerSets : 2 -OlsOutputLayer1 : 1 0 -NumPTLsInVPS : 2 -#======== Layer-0 =============== -LayerId0 : 0 -#======== Layer-1 =============== -LayerId1 : 1 -NumRefLayers1 : 1 -RefLayerIdx1 : 0 -#======== OLS-0 =============== -OlsPTLIdx0 : 0 -#======== OLS-1 =============== -LevelPTL1 : 6.2 -OlsPTLIdx1 : 1 - - - diff --git a/cfg/multi-layer/two_layers_max_tid_ref_pic.cfg b/cfg/multi-layer/two_layers_max_tid_ref_pic.cfg deleted file mode 100644 index 99fb9a26..00000000 --- a/cfg/multi-layer/two_layers_max_tid_ref_pic.cfg +++ /dev/null @@ -1,30 +0,0 @@ -# example config file for MaxTidILRefPicsPlus1 -# combines with random-access GOP config file - -#======== Layers =============== -MaxLayers : 2 -MaxSublayers : 7 # allow up to 7 temporal layers -AllLayersSameNumSublayersFlag : 0 -AllIndependentLayersFlag : 0 - -MaxTidILRefPicsPlus1 : 3 # don't use pictures with temoporal_id > 2 for inter-layer reference -#======== OLSs =============== -EachLayerIsAnOlsFlag : 0 -OlsModeIdc : 2 -NumOutputLayerSets : 2 -OlsOutputLayer1 : 1 # only one output layer in OLS #1 -NumPTLsInVPS : 2 -#======== Layer-0 =============== -LayerId0 : 0 -#======== Layer-1 =============== -LayerId1 : 1 -NumRefLayers1 : 1 -RefLayerIdx1 : 0 -#======== OLS-0 =============== -OlsPTLIdx0 : 0 -#======== OLS-1 =============== -LevelPTL1 : 6.2 -OlsPTLIdx1 : 1 - - - diff --git a/cfg/partitioning/BasketballDrillText_subpicture_4_slice_2_hor_subpic.cfg b/cfg/partitioning/BasketballDrillText_subpicture_4_slice_2_hor_subpic.cfg deleted file mode 100644 index e72abb01..00000000 --- a/cfg/partitioning/BasketballDrillText_subpicture_4_slice_2_hor_subpic.cfg +++ /dev/null @@ -1,48 +0,0 @@ -#======== File I/O =============== -InputFile : BasketballDrillText_832x480_50.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 50 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 832 # Input frame width -SourceHeight : 480 # Input frame height -FramesToBeEncoded : 500 # Number of frames to be coded - -Level : 3.1 - -#============ Subpictures ================== -# example cfg file, assuming an 832x480 input sequence with CTU size = 128x128, and split to 4 rectangular slices, each slice include one tile. -# example 2 subpictures in a 832x480 picture: -#---------- -#| | | -#| | | -#|----|---|--> horizontally divided into 2 subpicture, each subpicture contains two slices -#| | | -#| | | -#---------- - -SubPicInfoPresentFlag : 1 # subpicture information present flag(0: OFF, 1: ON) -NumSubPics : 2 # number of subpictures in a picture -SubPicCtuTopLeftX : 0 0 # specifies horizontal position of top left CTU of i-th subpicture in unit of CtbSizeY -SubPicCtuTopLeftY : 0 2 # specifies vertical position of top left CTU of i-th subpicture in unit of CtbSizeY -SubPicWidth : 7 7 # specifies the width of the i-th subpicture in units of CtbSizeY -SubPicHeight : 2 2 # specifies the height of the i-th subpicture in units of CtbSizeY -SubPicTreatedAsPicFlag : 1 1 # equal to 1 specifies that the i-th subpicture of each coded picture in the CLVS is treated as a picture in the decoding process excluding in-loop filtering operations -LoopFilterAcrossSubpicEnabledFlag : 0 0 # equal to 1 specifies that in-loop filtering operations may be performed across the boundaries of the i-th subpicture in each coded picture in the CLVS -SubPicIdMappingExplicitlySignalledFlag : 0 # equal to 1 specifies that the subpicture ID mapping is explicitly signalled, either in the SPS or in the PPSs -SubPicIdMappingInSpsFlag : 0 # specifies that subpicture ID mapping is signalled in the SPS(0: OFF, 1: ON) -SubPicIdLen : 0 # the number of bits used to represent the syntax element sps_subpic_id[ i ] -SubPicId : 0 # subpicture ID of the i-th subpicture - - -#============ Tiles / Slices ================ -EnablePicPartitioning : 1 # Enable picture partitioning (0: single tile, single slice, 1: multiple tiles/slices can be used) - -# 24 tiles and 6 rectangular slices -TileColumnWidthArray : 4 # Tile column widths in units of CTUs. Last column width will be repeated uniformly to cover any remaining picture width -TileRowHeightArray : 2 # Tile row heights in units of CTUs. Last row height will be repeated uniformly to cover any remaining picture height -RasterScanSlices : 0 # Raster-scan or rectangular slices (0: rectangular, 1: raster-scan) -RectSliceFixedWidth : 1 # Fixed rectangular slice width in units of tiles (0: disable this feature and use RectSlicePositions instead) -RectSliceFixedHeight : 1 # Fixed rectangular slice height in units of tiles (0: disable this feature and use RectSlicePositions instead) -DisableLoopFilterAcrossTiles : 1 # Loop filtering (DBLK/SAO/ALF) applied across tile boundaries or not (0: filter across tile boundaries 1: do not filter across tile boundaries) -DisableLoopFilterAcrossSlices : 1 # Loop filtering (DBLK/SAO/ALF) applied across slice boundaries or not (0: filter across slice boundaries 1: do not filter across slice boundaries) diff --git a/cfg/partitioning/entropy_coding_synchronization.cfg b/cfg/partitioning/entropy_coding_synchronization.cfg deleted file mode 100644 index e7e8c547..00000000 --- a/cfg/partitioning/entropy_coding_synchronization.cfg +++ /dev/null @@ -1 +0,0 @@ -WaveFrontSynchro : 1 # Enable entropy coding synchronization, a.k.a. wavefront parallel processing (WPP) (0: entropy coding sync disabled; 1 entropy coding sync enabled) diff --git a/cfg/partitioning/raster_slice.cfg b/cfg/partitioning/raster_slice.cfg deleted file mode 100644 index 11f9f2a5..00000000 --- a/cfg/partitioning/raster_slice.cfg +++ /dev/null @@ -1,13 +0,0 @@ -# example configuration file for raster scan slices -# to be used in combination with a CTC and sequence configuration file -# contains 12 tiles and 3 raster-scan slices - -#============ Tiles / Slices ================ -EnablePicPartitioning : 1 # Enable picture partitioning (0: single tile, single slice, 1: multiple tiles/slices can be used) - -TileColumnWidthArray : 6 6 6 # Tile column widths in units of CTUs. Last column width will be repeated uniformly to cover any remaining picture width -TileRowHeightArray : 3 3 3 3 # Tile row heights in units of CTUs. Last row height will be repeated uniformly to cover any remaining picture height -RasterScanSlices : 1 # Raster-scan or rectangular slices (0: rectangular, 1: raster-scan) -RasterSliceSizes : 2 5 5 # Raster-scan slice sizes in units of tiles. Last slice size will be repeated uniformly to cover any remaining tiles in the picture -DisableLoopFilterAcrossTiles : 0 # Loop filtering (DBLK/SAO/ALF) applied across tile boundaries or not (0: filter across tile boundaries 1: do not filter across tile boundaries) -DisableLoopFilterAcrossSlices : 0 # Loop filtering (DBLK/SAO/ALF) applied across slice boundaries or not (0: filter across slice boundaries 1: do not filter across slice boundaries) diff --git a/cfg/partitioning/raster_slice_1_slice_per_tile.cfg b/cfg/partitioning/raster_slice_1_slice_per_tile.cfg deleted file mode 100644 index d582ec99..00000000 --- a/cfg/partitioning/raster_slice_1_slice_per_tile.cfg +++ /dev/null @@ -1,11 +0,0 @@ -# example configuration file for raster scan slices with a single slice per tile -# to be used in combination with a CTC and sequence configuration file - -#============ Tiles / Slices ================ -EnablePicPartitioning : 1 # Enable picture partitioning (0: single tile, single slice, 1: multiple tiles/slices can be used) -TileColumnWidthArray : 1 2 3 4 # Tile column widths in units of CTUs. Last column width will be repeated uniformly to cover any remaining picture width -TileRowHeightArray : 1 2 3 4 # Tile row heights in units of CTUs. Last row height will be repeated uniformly to cover any remaining picture height -RasterScanSlices : 1 # Raster-scan or rectangular slices (0: rectangular, 1: raster-scan) -RasterSliceSizes : 1 # Raster-scan slice sizes in units of tiles. Last slice size will be repeated uniformly to cover any remaining tiles in the picture -DisableLoopFilterAcrossTiles : 0 # Loop filtering (DBLK/SAO/ALF) applied across tile boundaries or not (0: filter across tile boundaries 1: do not filter across tile boundaries) -DisableLoopFilterAcrossSlices : 0 # Loop filtering (DBLK/SAO/ALF) applied across slice boundaries or not (0: filter across slice boundaries 1: do not filter across slice boundaries) diff --git a/cfg/partitioning/rect_slice_classB.cfg b/cfg/partitioning/rect_slice_classB.cfg deleted file mode 100644 index 4bbc8184..00000000 --- a/cfg/partitioning/rect_slice_classB.cfg +++ /dev/null @@ -1,13 +0,0 @@ -# example configuration file for rectangular slices -# to be used in combination with a CTC and sequence configuration file -# contains 4 tiles and 4 rectangular slices - -#============ Tiles / Slices ================ -EnablePicPartitioning : 1 # Enable picture partitioning (0: single tile, single slice, 1: multiple tiles/slices can be used) - -TileColumnWidthArray : 7 8 # Tile column widths in units of CTUs. Last column width will be repeated uniformly to cover any remaining picture width -TileRowHeightArray : 4 5 # Tile row heights in units of CTUs. Last row height will be repeated uniformly to cover any remaining picture height -RasterScanSlices : 0 # Raster-scan or rectangular slices (0: rectangular, 1: raster-scan) -RectSlicePositions : 0 126 7 29 37 59 67 134 # Rectangular slice positions. List containing pairs of top-left CTU RS address followed by bottom-right CTU RS address -DisableLoopFilterAcrossTiles : 0 # Loop filtering (DBLK/SAO/ALF) applied across tile boundaries or not (0: filter across tile boundaries 1: do not filter across tile boundaries) -DisableLoopFilterAcrossSlices : 0 # Loop filtering (DBLK/SAO/ALF) applied across slice boundaries or not (0: filter across slice boundaries 1: do not filter across slice boundaries) diff --git a/cfg/partitioning/rect_slice_fixed_size.cfg b/cfg/partitioning/rect_slice_fixed_size.cfg deleted file mode 100644 index 9f00a45d..00000000 --- a/cfg/partitioning/rect_slice_fixed_size.cfg +++ /dev/null @@ -1,14 +0,0 @@ -# example configuration file for rectangular slices -# to be used in combination with a CTC and sequence configuration file -# contains 24 tiles and 6 rectangular slices - -#============ Tiles / Slices ================ -EnablePicPartitioning : 1 # Enable picture partitioning (0: single tile, single slice, 1: multiple tiles/slices can be used) - -TileColumnWidthArray : 3 3 3 3 3 3 # Tile column widths in units of CTUs. Last column width will be repeated uniformly to cover any remaining picture width -TileRowHeightArray : 3 3 3 3 # Tile row heights in units of CTUs. Last row height will be repeated uniformly to cover any remaining picture height -RasterScanSlices : 0 # Raster-scan or rectangular slices (0: rectangular, 1: raster-scan) -RectSliceFixedWidth : 2 # Fixed rectangular slice width in units of tiles (0: disable this feature and use RectSlicePositions instead) -RectSliceFixedHeight : 2 # Fixed rectangular slice height in units of tiles (0: disable this feature and use RectSlicePositions instead) -DisableLoopFilterAcrossTiles : 0 # Loop filtering (DBLK/SAO/ALF) applied across tile boundaries or not (0: filter across tile boundaries 1: do not filter across tile boundaries) -DisableLoopFilterAcrossSlices : 0 # Loop filtering (DBLK/SAO/ALF) applied across slice boundaries or not (0: filter across slice boundaries 1: do not filter across slice boundaries) diff --git a/cfg/partitioning/rpr_no_subpic_single_slice_per_subpic.cfg b/cfg/partitioning/rpr_no_subpic_single_slice_per_subpic.cfg deleted file mode 100644 index f4b07d88..00000000 --- a/cfg/partitioning/rpr_no_subpic_single_slice_per_subpic.cfg +++ /dev/null @@ -1,20 +0,0 @@ -# example config file for a corner test case: -# set single_slice_per_subpic_flag equal to 1, while subpicture_info_present_flag is equal to 0 -# requires special handling, when RPR is enabled (which is allowed because subpicture_info_present_flag is equal to 0) and tiles are present -# -# example command line: -# ./EncoderApp -c ../cfg/encoder_randomaccess_vtm.cfg -c ../cfg/per-sequence/RaceHorses.cfg -q 42 -f 5 --SEIDecodedPictureHash=1 -c ../cfg/partitioning/rpr_no_subpic_single_slice_per_subpic.cfg - - -ScalingRatioHor : 2.0 # enable horizontal scaling -ScalingRatioVer : 2.0 # enable vertical scaling -UpscaledOutput : 1 # upscale output - -EnablePicPartitioning : 1 # enable signalling of picture partitioning -SingleSlicePerSubpic : 1 # single_slice_per_subpic_flag equal to 1 -RasterScanSlices : 0 # rectangular slices - -TileColumnWidthArray : 2 # two tiles horizontally -TileRowHeightArray : 2 # two tiles vertically - -Level : 6 # level increase required for small tiles (because of subsampling) diff --git a/cfg/partitioning/subpicture_3_slice_2_tile.cfg b/cfg/partitioning/subpicture_3_slice_2_tile.cfg deleted file mode 100644 index bd0453de..00000000 --- a/cfg/partitioning/subpicture_3_slice_2_tile.cfg +++ /dev/null @@ -1,38 +0,0 @@ -# example cfg file, assuming an 832x480 input sequence with CTU size = 128x128, and split to 2 tiles, with two tile columns and one tile row. -# example 2 tiles, 3 subpictures in a 832x480 picture: -#---------- -#| | | -#| | | -#| |---| -#| | | -#| | | -#---------- -# | -# v -# vertically divided into 2 tile, the second tile include two subpicture/slices - -SubPicInfoPresentFlag : 1 # subpicture information present flag(0: OFF, 1: ON) -NumSubPics : 3 # number of subpictures in a picture -SubPicCtuTopLeftX : 0 4 4 # specifies horizontal position of top left CTU of i-th subpicture in unit of CtbSizeY -SubPicCtuTopLeftY : 0 0 2 # specifies vertical position of top left CTU of i-th subpicture in unit of CtbSizeY -SubPicWidth : 4 3 3 # specifies the width of the i-th subpicture in units of CtbSizeY -SubPicHeight : 4 2 2 # specifies the height of the i-th subpicture in units of CtbSizeY -SubPicTreatedAsPicFlag : 1 1 1 # equal to 1 specifies that the i-th subpicture of each coded picture in the CLVS is treated as a picture in the decoding process excluding in-loop filtering operations -LoopFilterAcrossSubpicEnabledFlag : 0 0 1 # equal to 1 specifies that in-loop filtering operations may be performed across the boundaries of the i-th subpicture in each coded picture in the CLVS -SubPicIdMappingExplicitlySignalledFlag : 0 # equal to 1 specifies that the subpicture ID mapping is explicitly signalled, either in the SPS or in the PPSs -SubPicIdMappingInSpsFlag : 0 # specifies that subpicture ID mapping is signalled in the SPS(0: OFF, 1: ON) -SubPicIdLen : 0 # the number of bits used to represent the syntax element sps_subpic_id[ i ] -SubPicId : 0 # subpicture ID of the i-th subpicture - - -#============ Tiles / Slices ================ -EnablePicPartitioning : 1 # Enable picture partitioning (0: single tile, single slice, 1: multiple tiles/slices can be used) - -TileColumnWidthArray : 4 # Tile column widths in units of CTUs. Last column width will be repeated uniformly to cover any remaining picture width -TileRowHeightArray : 4 # Tile row heights in units of CTUs. Last row height will be repeated uniformly to cover any remaining picture height -RasterScanSlices : 0 # Raster-scan or rectangular slices (0: rectangular, 1: raster-scan) -RectSliceFixedWidth : 0 # Fixed rectangular slice width in units of tiles (0: disable this feature and use RectSlicePositions instead) -RectSliceFixedHeight : 0 # Fixed rectangular slice height in units of tiles (0: disable this feature and use RectSlicePositions instead) -RectSlicePositions : 0 24 4 13 18 27 -DisableLoopFilterAcrossTiles : 0 # Loop filtering (DBLK/SAO/ALF) applied across tile boundaries or not (0: filter across tile boundaries 1: do not filter across tile boundaries) -DisableLoopFilterAcrossSlices : 0 # Loop filtering (DBLK/SAO/ALF) applied across slice boundaries or not (0: filter across slice boundaries 1: do not filter across slice boundaries) diff --git a/cfg/partitioning/subpicture_3_slice_2_tile_1_slice_per_subpic.cfg b/cfg/partitioning/subpicture_3_slice_2_tile_1_slice_per_subpic.cfg deleted file mode 100644 index 4c405d69..00000000 --- a/cfg/partitioning/subpicture_3_slice_2_tile_1_slice_per_subpic.cfg +++ /dev/null @@ -1,39 +0,0 @@ -# example cfg file, assuming an 832x480 input sequence with CTU size = 128x128, and split to 2 tiles, with two tile columns and one tile row. -# example 2 tiles, 3 subpictures (and each subpicture is a slice) in a 832x480 picture: -#---------- -#| | | -#| | | -#| |---| -#| | | -#| | | -#---------- -# | -# v -# vertically divided into 2 tile, the second tile include two subpicture/slices - -SubPicInfoPresentFlag : 1 # subpicture information present flag(0: OFF, 1: ON) -NumSubPics : 3 # number of subpictures in a picture -SubPicCtuTopLeftX : 0 4 4 # specifies horizontal position of top left CTU of i-th subpicture in unit of CtbSizeY -SubPicCtuTopLeftY : 0 0 2 # specifies vertical position of top left CTU of i-th subpicture in unit of CtbSizeY -SubPicWidth : 4 3 3 # specifies the width of the i-th subpicture in units of CtbSizeY -SubPicHeight : 4 2 2 # specifies the height of the i-th subpicture in units of CtbSizeY -SubPicTreatedAsPicFlag : 1 1 1 # equal to 1 specifies that the i-th subpicture of each coded picture in the CLVS is treated as a picture in the decoding process excluding in-loop filtering operations -LoopFilterAcrossSubpicEnabledFlag : 0 0 0 # equal to 1 specifies that in-loop filtering operations may be performed across the boundaries of the i-th subpicture in each coded picture in the CLVS -SubPicIdMappingExplicitlySignalledFlag : 0 # equal to 1 specifies that the subpicture ID mapping is explicitly signalled, either in the SPS or in the PPSs -SubPicIdMappingInSpsFlag : 0 # specifies that subpicture ID mapping is signalled in the SPS(0: OFF, 1: ON) -SubPicIdLen : 0 # the number of bits used to represent the syntax element sps_subpic_id[ i ] -SubPicId : 0 # subpicture ID of the i-th subpicture - - -#============ Tiles / Slices ================ -EnablePicPartitioning : 1 # Enable picture partitioning (0: single tile, single slice, 1: multiple tiles/slices can be used) -SingleSlicePerSubpic : 1 - -TileColumnWidthArray : 4 # Tile column widths in units of CTUs. Last column width will be repeated uniformly to cover any remaining picture width -TileRowHeightArray : 4 # Tile row heights in units of CTUs. Last row height will be repeated uniformly to cover any remaining picture height -RasterScanSlices : 0 # Raster-scan or rectangular slices (0: rectangular, 1: raster-scan) -RectSliceFixedWidth : 0 # Fixed rectangular slice width in units of tiles (0: disable this feature and use RectSlicePositions instead) -RectSliceFixedHeight : 0 # Fixed rectangular slice height in units of tiles (0: disable this feature and use RectSlicePositions instead) -RectSlicePositions : 0 24 4 13 18 27 -DisableLoopFilterAcrossTiles : 0 # Loop filtering (DBLK/SAO/ALF) applied across tile boundaries or not (0: filter across tile boundaries 1: do not filter across tile boundaries) -DisableLoopFilterAcrossSlices : 0 # Loop filtering (DBLK/SAO/ALF) applied across slice boundaries or not (0: filter across slice boundaries 1: do not filter across slice boundaries) diff --git a/cfg/partitioning/subpicture_4_slice_2_hor_subpic.cfg b/cfg/partitioning/subpicture_4_slice_2_hor_subpic.cfg deleted file mode 100644 index 52afa221..00000000 --- a/cfg/partitioning/subpicture_4_slice_2_hor_subpic.cfg +++ /dev/null @@ -1,35 +0,0 @@ -# example cfg file, assuming an 832x480 input sequence with CTU size = 128x128, and split to 4 rectangular slices, each slice include one tile. -# example 2 subpictures in a 832x480 picture: -#---------- -#| | | -#| | | -#|----|---|--> horizontally divided into 2 subpicture, each subpicture contains two slices -#| | | -#| | | -#---------- - -SubPicInfoPresentFlag : 1 # subpicture information present flag(0: OFF, 1: ON) -NumSubPics : 2 # number of subpictures in a picture -SubPicCtuTopLeftX : 0 0 # specifies horizontal position of top left CTU of i-th subpicture in unit of CtbSizeY -SubPicCtuTopLeftY : 0 2 # specifies vertical position of top left CTU of i-th subpicture in unit of CtbSizeY -SubPicWidth : 7 7 # specifies the width of the i-th subpicture in units of CtbSizeY -SubPicHeight : 2 2 # specifies the height of the i-th subpicture in units of CtbSizeY -SubPicTreatedAsPicFlag : 1 1 # equal to 1 specifies that the i-th subpicture of each coded picture in the CLVS is treated as a picture in the decoding process excluding in-loop filtering operations -LoopFilterAcrossSubpicEnabledFlag : 0 0 # equal to 1 specifies that in-loop filtering operations may be performed across the boundaries of the i-th subpicture in each coded picture in the CLVS -SubPicIdMappingExplicitlySignalledFlag : 0 # equal to 1 specifies that the subpicture ID mapping is explicitly signalled, either in the SPS or in the PPSs -SubPicIdMappingInSpsFlag : 0 # specifies that subpicture ID mapping is signalled in the SPS(0: OFF, 1: ON) -SubPicIdLen : 0 # the number of bits used to represent the syntax element sps_subpic_id[ i ] -SubPicId : 0 # subpicture ID of the i-th subpicture - - -#============ Tiles / Slices ================ -EnablePicPartitioning : 1 # Enable picture partitioning (0: single tile, single slice, 1: multiple tiles/slices can be used) - -# 24 tiles and 6 rectangular slices -TileColumnWidthArray : 4 # Tile column widths in units of CTUs. Last column width will be repeated uniformly to cover any remaining picture width -TileRowHeightArray : 2 # Tile row heights in units of CTUs. Last row height will be repeated uniformly to cover any remaining picture height -RasterScanSlices : 0 # Raster-scan or rectangular slices (0: rectangular, 1: raster-scan) -RectSliceFixedWidth : 1 # Fixed rectangular slice width in units of tiles (0: disable this feature and use RectSlicePositions instead) -RectSliceFixedHeight : 1 # Fixed rectangular slice height in units of tiles (0: disable this feature and use RectSlicePositions instead) -DisableLoopFilterAcrossTiles : 1 # Loop filtering (DBLK/SAO/ALF) applied across tile boundaries or not (0: filter across tile boundaries 1: do not filter across tile boundaries) -DisableLoopFilterAcrossSlices : 1 # Loop filtering (DBLK/SAO/ALF) applied across slice boundaries or not (0: filter across slice boundaries 1: do not filter across slice boundaries) diff --git a/cfg/partitioning/subpicture_4_slice_2_tiles_4_subpic.cfg b/cfg/partitioning/subpicture_4_slice_2_tiles_4_subpic.cfg deleted file mode 100644 index 6f70f813..00000000 --- a/cfg/partitioning/subpicture_4_slice_2_tiles_4_subpic.cfg +++ /dev/null @@ -1,38 +0,0 @@ -# example cfg file, assuming an 832x480 input sequence with CTU size = 128x128, and split to 2 tiles, with two tile columns and one tile row. -# example 2 tiles, 4 subpictures (and each subpicture is a slice) in a 832x480 picture: -#---------- -#| | | -#| | | -#|----|---| -#| | | -#| | | -#---------- -# | -# v -# vertically divided into 2 tile, each tile includes two subpictures/slices - -SubPicInfoPresentFlag : 1 # subpicture information present flag(0: OFF, 1: ON) -NumSubPics : 4 # number of subpictures in a picture -SubPicCtuTopLeftX : 0 0 4 4 # specifies horizontal position of top left CTU of i-th subpicture in unit of CtbSizeY -SubPicCtuTopLeftY : 0 2 0 2 # specifies vertical position of top left CTU of i-th subpicture in unit of CtbSizeY -SubPicWidth : 4 4 3 3 # specifies the width of the i-th subpicture in units of CtbSizeY -SubPicHeight : 2 2 2 2 # specifies the height of the i-th subpicture in units of CtbSizeY -SubPicTreatedAsPicFlag : 1 1 1 1 # equal to 1 specifies that the i-th subpicture of each coded picture in the CLVS is treated as a picture in the decoding process excluding in-loop filtering operations -LoopFilterAcrossSubpicEnabledFlag : 0 0 0 0 # equal to 1 specifies that in-loop filtering operations may be performed across the boundaries of the i-th subpicture in each coded picture in the CLVS -SubPicIdMappingExplicitlySignalledFlag : 0 # equal to 1 specifies that the subpicture ID mapping is explicitly signalled, either in the SPS or in the PPSs -SubPicIdMappingInSpsFlag : 0 # specifies that subpicture ID mapping is signalled in the SPS(0: OFF, 1: ON) -SubPicIdLen : 0 # the number of bits used to represent the syntax element sps_subpic_id[ i ] -SubPicId : 0 # subpicture ID of the i-th subpicture - - -#============ Tiles / Slices ================ -EnablePicPartitioning : 1 # Enable picture partitioning (0: single tile, single slice, 1: multiple tiles/slices can be used) - -TileColumnWidthArray : 4 # Tile column widths in units of CTUs. Last column width will be repeated uniformly to cover any remaining picture width -TileRowHeightArray : 4 # Tile row heights in units of CTUs. Last row height will be repeated uniformly to cover any remaining picture height -RasterScanSlices : 0 # Raster-scan or rectangular slices (0: rectangular, 1: raster-scan) -RectSliceFixedWidth : 0 # Fixed rectangular slice width in units of tiles (0: disable this feature and use RectSlicePositions instead) -RectSliceFixedHeight : 0 # Fixed rectangular slice height in units of tiles (0: disable this feature and use RectSlicePositions instead) -RectSlicePositions : 0 10 14 24 4 13 18 27 -DisableLoopFilterAcrossTiles : 1 # Loop filtering (DBLK/SAO/ALF) applied across tile boundaries or not (0: filter across tile boundaries 1: do not filter across tile boundaries) -DisableLoopFilterAcrossSlices : 1 # Loop filtering (DBLK/SAO/ALF) applied across slice boundaries or not (0: filter across slice boundaries 1: do not filter across slice boundaries) diff --git a/cfg/partitioning/subpicture_4_slice_2_ver_subpic.cfg b/cfg/partitioning/subpicture_4_slice_2_ver_subpic.cfg deleted file mode 100644 index 7545c02d..00000000 --- a/cfg/partitioning/subpicture_4_slice_2_ver_subpic.cfg +++ /dev/null @@ -1,39 +0,0 @@ -# example cfg file, assuming an 832x480 input sequence with CTU size = 128x128, and split to 4 rectangular slices, each slice include one tile. -# example 2 subpictures in a 832x480 picture: -#---------- -#| | | -#| | | -#|----|---| -#| | | -#| | | -#---------- -# | -# v -# vertically divided into 2 subpicture, each subpicture contains two slices - -SubPicInfoPresentFlag : 1 # subpicture information present flag(0: OFF, 1: ON) -NumSubPics : 2 # number of subpictures in a picture -SubPicCtuTopLeftX : 0 4 # specifies horizontal position of top left CTU of i-th subpicture in unit of CtbSizeY -SubPicCtuTopLeftY : 0 0 # specifies vertical position of top left CTU of i-th subpicture in unit of CtbSizeY -SubPicWidth : 4 3 # specifies the width of the i-th subpicture in units of CtbSizeY -SubPicHeight : 4 4 # specifies the height of the i-th subpicture in units of CtbSizeY -SubPicTreatedAsPicFlag : 1 1 # equal to 1 specifies that the i-th subpicture of each coded picture in the CLVS is treated as a picture in the decoding process excluding in-loop filtering operations -LoopFilterAcrossSubpicEnabledFlag : 0 0 # equal to 1 specifies that in-loop filtering operations may be performed across the boundaries of the i-th subpicture in each coded picture in the CLVS -SubPicIdMappingExplicitlySignalledFlag : 0 # equal to 1 specifies that the subpicture ID mapping is explicitly signalled, either in the SPS or in the PPSs -SubPicIdMappingInSpsFlag : 0 # specifies that subpicture ID mapping is signalled in the SPS(0: OFF, 1: ON) -SubPicIdLen : 0 # the number of bits used to represent the syntax element sps_subpic_id[ i ] -SubPicId : 0 # subpicture ID of the i-th subpicture - - -#============ Tiles / Slices ================ -EnablePicPartitioning : 1 # Enable picture partitioning (0: single tile, single slice, 1: multiple tiles/slices can be used) - -# 24 tiles and 6 rectangular slices -TileColumnWidthArray : 4 # Tile column widths in units of CTUs. Last column width will be repeated uniformly to cover any remaining picture width -TileRowHeightArray : 2 # Tile row heights in units of CTUs. Last row height will be repeated uniformly to cover any remaining picture height -RasterScanSlices : 0 # Raster-scan or rectangular slices (0: rectangular, 1: raster-scan) -RectSliceFixedWidth : 0 # Fixed rectangular slice width in units of tiles (0: disable this feature and use RectSlicePositions instead) -RectSliceFixedHeight : 0 # Fixed rectangular slice height in units of tiles (0: disable this feature and use RectSlicePositions instead) -RectSlicePositions : 0 10 14 24 4 13 18 27 -DisableLoopFilterAcrossTiles : 0 # Loop filtering (DBLK/SAO/ALF) applied across tile boundaries or not (0: filter across tile boundaries 1: do not filter across tile boundaries) -DisableLoopFilterAcrossSlices : 0 # Loop filtering (DBLK/SAO/ALF) applied across slice boundaries or not (0: filter across slice boundaries 1: do not filter across slice boundaries) diff --git a/cfg/partitioning/subpicture_8_slice_12_tile_2_subpic.cfg b/cfg/partitioning/subpicture_8_slice_12_tile_2_subpic.cfg deleted file mode 100644 index 8cf2372e..00000000 --- a/cfg/partitioning/subpicture_8_slice_12_tile_2_subpic.cfg +++ /dev/null @@ -1,25 +0,0 @@ -# example cfg file, assuming an 1920x1080 input sequence with CTU size = 128x128, and split to 8 rectangular slices, 12 tiles and 2 subpictures - -SubPicInfoPresentFlag : 1 # subpicture information present flag(0: OFF, 1: ON) -NumSubPics : 2 # number of subpictures in a picture -SubPicCtuTopLeftX : 0 11 # specifies horizontal position of top left CTU of i-th subpicture in unit of CtbSizeY -SubPicCtuTopLeftY : 0 0 # specifies vertical position of top left CTU of i-th subpicture in unit of CtbSizeY -SubPicWidth : 11 4 # specifies the width of the i-th subpicture in units of CtbSizeY -SubPicHeight : 9 9 # specifies the height of the i-th subpicture in units of CtbSizeY -SubPicTreatedAsPicFlag : 1 1 # equal to 1 specifies that the i-th subpicture of each coded picture in the CLVS is treated as a picture in the decoding process excluding in-loop filtering operations -LoopFilterAcrossSubpicEnabledFlag : 0 0 # equal to 1 specifies that in-loop filtering operations may be performed across the boundaries of the i-th subpicture in each coded picture in the CLVS -SubPicIdMappingExplicitlySignalledFlag : 0 # equal to 1 specifies that the subpicture ID mapping is explicitly signalled, either in the SPS or in the PPSs - - -#============ Tiles / Slices ================ -EnablePicPartitioning : 1 # Enable picture partitioning (0: single tile, single slice, 1: multiple tiles/slices can be used) - -# 24 tiles and 6 rectangular slices -TileColumnWidthArray : 3 4 # Tile column widths in units of CTUs. Last column width will be repeated uniformly to cover any remaining picture width -TileRowHeightArray : 3 # Tile row heights in units of CTUs. Last row height will be repeated uniformly to cover any remaining picture height -RasterScanSlices : 0 # Raster-scan or rectangular slices (0: rectangular, 1: raster-scan) -RectSliceFixedWidth : 0 # Fixed rectangular slice width in units of tiles (0: disable this feature and use RectSlicePositions instead) -RectSliceFixedHeight : 0 # Fixed rectangular slice height in units of tiles (0: disable this feature and use RectSlicePositions instead) -RectSlicePositions : 0 17 30 32 45 62 75 77 3 85 90 130 11 89 101 134 # Rectangular slices positions - list containing pairs of top-left CTU index and bottom-right CTU index -DisableLoopFilterAcrossTiles : 1 # Loop filtering (DBLK/SAO/ALF) applied across tile boundaries or not (0: filter across tile boundaries 1: do not filter across tile boundaries) -DisableLoopFilterAcrossSlices : 1 # Loop filtering (DBLK/SAO/ALF) applied across slice boundaries or not (0: filter across slice boundaries 1: do not filter across slice boundaries) diff --git a/cfg/per-class/classF.cfg b/cfg/per-class/classF.cfg deleted file mode 100644 index 8acfe689..00000000 --- a/cfg/per-class/classF.cfg +++ /dev/null @@ -1,3 +0,0 @@ -IBC : 1 -HashME : 1 -BDPCM: 1 \ No newline at end of file diff --git a/cfg/per-class/classH1.cfg b/cfg/per-class/classH1.cfg deleted file mode 100644 index a6b09ffa..00000000 --- a/cfg/per-class/classH1.cfg +++ /dev/null @@ -1,27 +0,0 @@ -# ======== Luma adaptive QP ========== -LumaLevelToDeltaQPMode : 0 # Change luma delta QP based on average luma -isSDR : 0 # 1: SDR in PQ container, 0: HDR - -# ======= LMCS ======================= -LMCSEnable : 1 # turned on in HDR CTC -LMCSSignalType : 1 # Input signal type: 0:SDR, 1:HDR-PQ, 2:HDR-HLG -LMCSOffset : 1 # chroma residual scaling offset - -#======== Chroma QP scale ============ -WCGPPSEnable : 0 # enable WCG Chroma scale - -CbQpOffset : 0 -CrQpOffset : 0 - -SameCQPTablesForAllChroma : 0 -QpInValCb : 13 20 36 38 43 54 -QpOutValCb : 13 21 29 29 32 37 -QpInValCr : 13 20 37 41 44 54 -QpOutValCr : 13 21 27 29 32 37 -QpInValCbCr : 12 21 41 43 54 -QpOutValCbCr : 12 22 30 32 37 - -VerCollocatedChroma : 1 - -#======== HDR Metrics ============ -CalculateHdrMetrics : 1 # Calculate HDR metrics for Class H1 (PQ) content diff --git a/cfg/per-class/classH2.cfg b/cfg/per-class/classH2.cfg deleted file mode 100644 index 1792d27b..00000000 --- a/cfg/per-class/classH2.cfg +++ /dev/null @@ -1,16 +0,0 @@ -# ======== Luma adaptive QP ======== -LumaLevelToDeltaQPMode : 0 # Change luma delta QP based on average luma - -# ======= LMCS ======================= -LMCSEnable : 1 # turned on in HLG CTC -LMCSSignalType : 2 # Input signal type: 0:SDR, 1:HDR-PQ, 2:HDR-HLG -LMCSOffset : 0 # chroma residual scaling offset - -#======== Chroma QP scale ============ -WCGPPSEnable : 0 # enable WCG Chroma scale - -CbQpOffset : 0 -CrQpOffset : 0 -SameCQPTablesForAllChroma : 1 -QpInValCb : 9 23 33 42 -QpOutValCb : 9 24 33 37 diff --git a/cfg/per-class/classSCC.cfg b/cfg/per-class/classSCC.cfg deleted file mode 100644 index 7b36da7a..00000000 --- a/cfg/per-class/classSCC.cfg +++ /dev/null @@ -1,5 +0,0 @@ -IBC : 1 -HashME : 1 -BDPCM: 1 -PLT: 1 -DualITree: 0 \ No newline at end of file diff --git a/cfg/per-class/formatRGB.cfg b/cfg/per-class/formatRGB.cfg deleted file mode 100644 index a761a1d3..00000000 --- a/cfg/per-class/formatRGB.cfg +++ /dev/null @@ -1,3 +0,0 @@ -ColorTransform : 1 -Log2MaxTbSize : 5 -DualITree: 0 \ No newline at end of file diff --git a/cfg/per-sequence-HDR/H1_BalloonFestival.cfg b/cfg/per-sequence-HDR/H1_BalloonFestival.cfg deleted file mode 100644 index ad5aa266..00000000 --- a/cfg/per-sequence-HDR/H1_BalloonFestival.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : H05_BalloonFestival_1920x1080p_25_10b_pq_709_ct2020_420.yuv -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 24 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 240 # Number of frames to be coded - -Level : 4.1 diff --git a/cfg/per-sequence-HDR/H1_Cosmos1_TreeTrunk.cfg b/cfg/per-sequence-HDR/H1_Cosmos1_TreeTrunk.cfg deleted file mode 100644 index 47162c8d..00000000 --- a/cfg/per-sequence-HDR/H1_Cosmos1_TreeTrunk.cfg +++ /dev/null @@ -1,15 +0,0 @@ -#======== File I/O =============== -InputFile : H08_Cosmos1_1920x856_BT2100_PQ_24fps_420.yuv -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 24 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 856 # Input frame height -FramesToBeEncoded : 240 # Number of frames to be coded - -Level : 4.1 - -#======== Chroma QP scale ============= -WCGPPSCbQpScale : 1.04 # Scale factor depending on capture and representation color space -WCGPPSCrQpScale : 1.39 # Scale factor depending on capture and representation color space diff --git a/cfg/per-sequence-HDR/H1_EBU_Hurdles.cfg b/cfg/per-sequence-HDR/H1_EBU_Hurdles.cfg deleted file mode 100644 index 0f0b8e4f..00000000 --- a/cfg/per-sequence-HDR/H1_EBU_Hurdles.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : H06_Hurdles_1920x1080p_50_10b_pq_709_ct2020_420_rev1.yuv -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 50 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 500 # Number of frames to be coded - -Level : 4.1 diff --git a/cfg/per-sequence-HDR/H1_EBU_Starting.cfg b/cfg/per-sequence-HDR/H1_EBU_Starting.cfg deleted file mode 100644 index 701df4b7..00000000 --- a/cfg/per-sequence-HDR/H1_EBU_Starting.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : H07_Starting_1920x1080p_50_10b_pq_709_ct2020_420_rev1.yuv -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 50 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 500 # Number of frames to be coded - -Level : 4.1 diff --git a/cfg/per-sequence-HDR/H1_Market.cfg b/cfg/per-sequence-HDR/H1_Market.cfg deleted file mode 100644 index c4675e6f..00000000 --- a/cfg/per-sequence-HDR/H1_Market.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : H02_Market3_1920x1080p_50_10b_pq_709_ct2020_420_rev1.yuv -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 50 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 400 # Number of frames to be coded - -Level : 4.1 diff --git a/cfg/per-sequence-HDR/H1_ShowGirl.cfg b/cfg/per-sequence-HDR/H1_ShowGirl.cfg deleted file mode 100644 index cdda6c4c..00000000 --- a/cfg/per-sequence-HDR/H1_ShowGirl.cfg +++ /dev/null @@ -1,21 +0,0 @@ -#======== File I/O =============== -InputFile : H04_ShowGirl2TeaserClip4000_1920x1080p_24_12_P3_ct2020_rev1.yuv -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 25 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 339 # Number of frames to be coded - -Level : 4.1 - -#======== Chroma QP scale ============= -WCGPPSCbQpScale : 1.04 # Scale factor depending on capture and representation color space -WCGPPSCrQpScale : 1.39 # Scale factor depending on capture and representation color space - -#======== HDR Metrics ============ -CropOffsetLeft : 10 -CropOffsetTop : 10 -CropOffsetRight : -10 -CropOffsetBottom : -10 diff --git a/cfg/per-sequence-HDR/H1_SunRise.cfg b/cfg/per-sequence-HDR/H1_SunRise.cfg deleted file mode 100644 index 7f6bb5b2..00000000 --- a/cfg/per-sequence-HDR/H1_SunRise.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : H03_SunRise_1920x1080p_25_10b_pq_709_ct2020_420.yuv -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 25 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 200 # Number of frames to be coded - -Level : 4.1 diff --git a/cfg/per-sequence-HDR/H2_DayStreet.cfg b/cfg/per-sequence-HDR/H2_DayStreet.cfg deleted file mode 100644 index 99e77a0f..00000000 --- a/cfg/per-sequence-HDR/H2_DayStreet.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : DayStreet_3840x2160_60p_10bit_420_hlg.yuv -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 3840 # Input frame width -SourceHeight : 2160 # Input frame height -FramesToBeEncoded : 300 # Number of frames to be coded - -Level : 5.1 diff --git a/cfg/per-sequence-HDR/H2_FlyingBirds2.cfg b/cfg/per-sequence-HDR/H2_FlyingBirds2.cfg deleted file mode 100644 index 18f8fb07..00000000 --- a/cfg/per-sequence-HDR/H2_FlyingBirds2.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : FlyingBirds2_3840x2160p_60_10b_HLG_420.yuv -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 3840 # Input frame width -SourceHeight : 2160 # Input frame height -FramesToBeEncoded : 300 # Number of frames to be coded - -Level : 5.1 diff --git a/cfg/per-sequence-HDR/H2_PeopleInShoppingCenter.cfg b/cfg/per-sequence-HDR/H2_PeopleInShoppingCenter.cfg deleted file mode 100644 index 9412ad68..00000000 --- a/cfg/per-sequence-HDR/H2_PeopleInShoppingCenter.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : PeopleInShoppingCenter_3840x2160_60p_10bit_420_hlg.yuv -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 3840 # Input frame width -SourceHeight : 2160 # Input frame height -FramesToBeEncoded : 300 # Number of frames to be coded - -Level : 5.1 diff --git a/cfg/per-sequence-HDR/H2_SunsetBeach2.cfg b/cfg/per-sequence-HDR/H2_SunsetBeach2.cfg deleted file mode 100644 index c673c0e9..00000000 --- a/cfg/per-sequence-HDR/H2_SunsetBeach2.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : SunsetBeach2_3840x2160p_60_10b_HLG_420.yuv -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 3840 # Input frame width -SourceHeight : 2160 # Input frame height -FramesToBeEncoded : 300 # Number of frames to be coded - -Level : 5.1 diff --git a/cfg/per-sequence-non-420/ArenaOfValor_444.cfg b/cfg/per-sequence-non-420/ArenaOfValor_444.cfg deleted file mode 100644 index f79645f5..00000000 --- a/cfg/per-sequence-non-420/ArenaOfValor_444.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : ArenaOfValor_1920x1080_60_8bit_444.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 600 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/ArenaOfValor_RGB.cfg b/cfg/per-sequence-non-420/ArenaOfValor_RGB.cfg deleted file mode 100644 index 37c09dd1..00000000 --- a/cfg/per-sequence-non-420/ArenaOfValor_RGB.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : ArenaOfValor_1920x1080_60_8bit_444.rgb -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 600 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/BasketballScreen_444.cfg b/cfg/per-sequence-non-420/BasketballScreen_444.cfg deleted file mode 100644 index 73ee9d2d..00000000 --- a/cfg/per-sequence-non-420/BasketballScreen_444.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : Basketball_Screen_2560x1440_60p_8b444.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 322 # Number of frames to be skipped in input -SourceWidth : 2560 # Input frame width -SourceHeight : 1440 # Input frame height -FramesToBeEncoded : 300 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/BasketballScreen_RGB.cfg b/cfg/per-sequence-non-420/BasketballScreen_RGB.cfg deleted file mode 100644 index 0ccafc24..00000000 --- a/cfg/per-sequence-non-420/BasketballScreen_RGB.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : Basketball_Screen_2560x1440_60p_8b444.rgb -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 322 # Number of frames to be skipped in input -SourceWidth : 2560 # Input frame width -SourceHeight : 1440 # Input frame height -FramesToBeEncoded : 300 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/BirdsInCage_444_10bit.cfg b/cfg/per-sequence-non-420/BirdsInCage_444_10bit.cfg deleted file mode 100644 index 202b6bfc..00000000 --- a/cfg/per-sequence-non-420/BirdsInCage_444_10bit.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : BirdsInCage_1920x1080_60_10bit_444.yuv -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 300 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/ChineseEditing_444.cfg b/cfg/per-sequence-non-420/ChineseEditing_444.cfg deleted file mode 100644 index 784de7eb..00000000 --- a/cfg/per-sequence-non-420/ChineseEditing_444.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : ChineseEditing_1920x1080_60_8bit.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 600 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/ChineseEditing_RGB.cfg b/cfg/per-sequence-non-420/ChineseEditing_RGB.cfg deleted file mode 100644 index 03708f4e..00000000 --- a/cfg/per-sequence-non-420/ChineseEditing_RGB.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : ChineseEditing_1920x1080_60_8bit.rgb -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 600 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/Console_444.cfg b/cfg/per-sequence-non-420/Console_444.cfg deleted file mode 100644 index 0198c97f..00000000 --- a/cfg/per-sequence-non-420/Console_444.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : sc_console_1920x1080_60_8bit_444.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 600 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/Console_RGB.cfg b/cfg/per-sequence-non-420/Console_RGB.cfg deleted file mode 100644 index 0e385b80..00000000 --- a/cfg/per-sequence-non-420/Console_RGB.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : sc_console_1920x1080_60_8bit_rgb.rgb -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 600 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/CrowdRun_444_10bit.cfg b/cfg/per-sequence-non-420/CrowdRun_444_10bit.cfg deleted file mode 100644 index 745bc6d0..00000000 --- a/cfg/per-sequence-non-420/CrowdRun_444_10bit.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : CrowdRun_1920x1080_50_10bit_444.yuv -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 50 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 250 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/Desktop_444.cfg b/cfg/per-sequence-non-420/Desktop_444.cfg deleted file mode 100644 index 9ae33cd7..00000000 --- a/cfg/per-sequence-non-420/Desktop_444.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : sc_desktop_1920x1080_60_8bit_444.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 600 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/Desktop_RGB.cfg b/cfg/per-sequence-non-420/Desktop_RGB.cfg deleted file mode 100644 index 729eeb49..00000000 --- a/cfg/per-sequence-non-420/Desktop_RGB.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : sc_desktop_1920x1080_60_8bit_rgb.rgb -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 600 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/DucksAndLegs_RGB_10bit.cfg b/cfg/per-sequence-non-420/DucksAndLegs_RGB_10bit.cfg deleted file mode 100644 index 64e2f8c3..00000000 --- a/cfg/per-sequence-non-420/DucksAndLegs_RGB_10bit.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : DucksAndLegs_1920x1080_30_10bit_444.rgb -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 30 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 150 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/EBUGraphics_422_10bit.cfg b/cfg/per-sequence-non-420/EBUGraphics_422_10bit.cfg deleted file mode 100644 index 786177dc..00000000 --- a/cfg/per-sequence-non-420/EBUGraphics_422_10bit.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : EBUGraphics_1920x1080_50_10bit_422.yuv -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 422 # Ratio of luminance to chrominance samples -FrameRate : 50 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 250 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/EBUHorse_422_10bit.cfg b/cfg/per-sequence-non-420/EBUHorse_422_10bit.cfg deleted file mode 100644 index db0063aa..00000000 --- a/cfg/per-sequence-non-420/EBUHorse_422_10bit.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : EBUHorse_1920x1080_50_10bit_422.yuv -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 422 # Ratio of luminance to chrominance samples -FrameRate : 50 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 250 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/EBUKidsSoccer_422_10bit.cfg b/cfg/per-sequence-non-420/EBUKidsSoccer_422_10bit.cfg deleted file mode 100644 index b3a60ce2..00000000 --- a/cfg/per-sequence-non-420/EBUKidsSoccer_422_10bit.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : EBUKidsSoccer_1920x1080_50_10bit_422.yuv -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 422 # Ratio of luminance to chrominance samples -FrameRate : 50 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 250 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/EBULupoCandlelight_444_10bit.cfg b/cfg/per-sequence-non-420/EBULupoCandlelight_444_10bit.cfg deleted file mode 100644 index 0d1c6cd8..00000000 --- a/cfg/per-sequence-non-420/EBULupoCandlelight_444_10bit.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : EBULupoCandlelight_1920x1080_50_10bit_444.yuv -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 50 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 250 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/EBULupoCandlelight_RGB_10bit.cfg b/cfg/per-sequence-non-420/EBULupoCandlelight_RGB_10bit.cfg deleted file mode 100644 index 5110dcbd..00000000 --- a/cfg/per-sequence-non-420/EBULupoCandlelight_RGB_10bit.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : EBULupoCandlelight_1920x1080_50_10bit_444.rgb -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 50 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 250 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/EBURainFruits_444_10bit.cfg b/cfg/per-sequence-non-420/EBURainFruits_444_10bit.cfg deleted file mode 100644 index 97a413c2..00000000 --- a/cfg/per-sequence-non-420/EBURainFruits_444_10bit.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : EBURainFruits_1920x1080_50_10bit_444.yuv -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 50 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 250 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/EBURainFruits_RGB_10bit.cfg b/cfg/per-sequence-non-420/EBURainFruits_RGB_10bit.cfg deleted file mode 100644 index 74c53777..00000000 --- a/cfg/per-sequence-non-420/EBURainFruits_RGB_10bit.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : EBURainFruits_1920x1080_50_10bit_444.rgb -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 50 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 250 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/EBUWaterRocksClose_422_10bit.cfg b/cfg/per-sequence-non-420/EBUWaterRocksClose_422_10bit.cfg deleted file mode 100644 index dde4ead8..00000000 --- a/cfg/per-sequence-non-420/EBUWaterRocksClose_422_10bit.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : EBUWaterRocksClose_1920x1080_50_10bit_422.yuv -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 422 # Ratio of luminance to chrominance samples -FrameRate : 50 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 250 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/FlyingGraphics_444.cfg b/cfg/per-sequence-non-420/FlyingGraphics_444.cfg deleted file mode 100644 index a0f08e54..00000000 --- a/cfg/per-sequence-non-420/FlyingGraphics_444.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : sc_flyingGraphics_1920x1080_60_8bit_444.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 300 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/FlyingGraphics_RGB.cfg b/cfg/per-sequence-non-420/FlyingGraphics_RGB.cfg deleted file mode 100644 index 019ba1ff..00000000 --- a/cfg/per-sequence-non-420/FlyingGraphics_RGB.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : sc_flyingGraphics_1920x1080_60_8bit_rgb.rgb -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 300 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/GlassHalf_444_10bit.cfg b/cfg/per-sequence-non-420/GlassHalf_444_10bit.cfg deleted file mode 100644 index 4ccc6de6..00000000 --- a/cfg/per-sequence-non-420/GlassHalf_444_10bit.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : GlassHalf_3840x2160_24p_10b_444.yuv -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 24 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 3840 # Input frame width -SourceHeight : 2160 # Input frame height -FramesToBeEncoded : 240 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/GlassHalf_RGB.cfg b/cfg/per-sequence-non-420/GlassHalf_RGB.cfg deleted file mode 100644 index d6be4636..00000000 --- a/cfg/per-sequence-non-420/GlassHalf_RGB.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : GlassHalf_3840x2160_24p_8b_444.rgb -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 24 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 3840 # Input frame width -SourceHeight : 2160 # Input frame height -FramesToBeEncoded : 240 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/Kimono_422_10bit.cfg b/cfg/per-sequence-non-420/Kimono_422_10bit.cfg deleted file mode 100644 index 077869ae..00000000 --- a/cfg/per-sequence-non-420/Kimono_422_10bit.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : Kimono1_1920x1080_24_10bit_422.yuv -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 422 # Ratio of luminance to chrominance samples -FrameRate : 24 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 240 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/Kimono_444_10bit.cfg b/cfg/per-sequence-non-420/Kimono_444_10bit.cfg deleted file mode 100644 index 15806f57..00000000 --- a/cfg/per-sequence-non-420/Kimono_444_10bit.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : Kimono1_1920x1080_24_10bit_444.yuv -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 24 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 240 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/Kimono_RGB_10bit.cfg b/cfg/per-sequence-non-420/Kimono_RGB_10bit.cfg deleted file mode 100644 index 457d0d95..00000000 --- a/cfg/per-sequence-non-420/Kimono_RGB_10bit.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : Kimono1_1920x1080_24_10bit_444.rgb -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 24 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 240 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/Map_444.cfg b/cfg/per-sequence-non-420/Map_444.cfg deleted file mode 100644 index d7dc675c..00000000 --- a/cfg/per-sequence-non-420/Map_444.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : sc_map_1280x720_60_8bit_444.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1280 # Input frame width -SourceHeight : 720 # Input frame height -FramesToBeEncoded : 600 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/Map_RGB.cfg b/cfg/per-sequence-non-420/Map_RGB.cfg deleted file mode 100644 index 8c73e7e4..00000000 --- a/cfg/per-sequence-non-420/Map_RGB.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : sc_map_1280x720_60_8bit.rgb -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1280 # Input frame width -SourceHeight : 720 # Input frame height -FramesToBeEncoded : 600 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/MissionControl2_444.cfg b/cfg/per-sequence-non-420/MissionControl2_444.cfg deleted file mode 100644 index b6fd2c0a..00000000 --- a/cfg/per-sequence-non-420/MissionControl2_444.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : MissionControlClip2_2560x1440_60p_8b444.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 120 # Number of frames to be skipped in input -SourceWidth : 2560 # Input frame width -SourceHeight : 1440 # Input frame height -FramesToBeEncoded : 300 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/MissionControl2_RGB.cfg b/cfg/per-sequence-non-420/MissionControl2_RGB.cfg deleted file mode 100644 index befb9b93..00000000 --- a/cfg/per-sequence-non-420/MissionControl2_RGB.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : MissionControlClip2_2560x1440_60p_8b444.rgb -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 120 # Number of frames to be skipped in input -SourceWidth : 2560 # Input frame width -SourceHeight : 1440 # Input frame height -FramesToBeEncoded : 300 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/MissionControl3_444.cfg b/cfg/per-sequence-non-420/MissionControl3_444.cfg deleted file mode 100644 index 6ca9b5ed..00000000 --- a/cfg/per-sequence-non-420/MissionControl3_444.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : MissionControlClip3_1920x1080_60p_8b444.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 600 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/MissionControl3_RGB.cfg b/cfg/per-sequence-non-420/MissionControl3_RGB.cfg deleted file mode 100644 index 7de67c89..00000000 --- a/cfg/per-sequence-non-420/MissionControl3_RGB.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : MissionControlClip3_1920x1080_60p_8b444.rgb -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 600 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/OldTownCross_RGB_10bit.cfg b/cfg/per-sequence-non-420/OldTownCross_RGB_10bit.cfg deleted file mode 100644 index f82061e0..00000000 --- a/cfg/per-sequence-non-420/OldTownCross_RGB_10bit.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : OldTownCross_1920x1080_50_10bit_444.rgb -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 50 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 250 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/ParkScene_RGB_10bit.cfg b/cfg/per-sequence-non-420/ParkScene_RGB_10bit.cfg deleted file mode 100644 index 623689da..00000000 --- a/cfg/per-sequence-non-420/ParkScene_RGB_10bit.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : ParkScene_1920x1080_24_10bit_444.rgb -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 24 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 240 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/Programming_444.cfg b/cfg/per-sequence-non-420/Programming_444.cfg deleted file mode 100644 index c00aa7e0..00000000 --- a/cfg/per-sequence-non-420/Programming_444.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : sc_programming_1280x720_60_8bit_444.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1280 # Input frame width -SourceHeight : 720 # Input frame height -FramesToBeEncoded : 600 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/Programming_RGB.cfg b/cfg/per-sequence-non-420/Programming_RGB.cfg deleted file mode 100644 index 779cc074..00000000 --- a/cfg/per-sequence-non-420/Programming_RGB.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : sc_programming_1280x720_60_8bit.rgb -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1280 # Input frame width -SourceHeight : 720 # Input frame height -FramesToBeEncoded : 600 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/Robot_444.cfg b/cfg/per-sequence-non-420/Robot_444.cfg deleted file mode 100644 index e8495c94..00000000 --- a/cfg/per-sequence-non-420/Robot_444.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : sc_robot_1280x720_30_8bit_300_444.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 30 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1280 # Input frame width -SourceHeight : 720 # Input frame height -FramesToBeEncoded : 300 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/Robot_RGB.cfg b/cfg/per-sequence-non-420/Robot_RGB.cfg deleted file mode 100644 index 6fc4be98..00000000 --- a/cfg/per-sequence-non-420/Robot_RGB.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : sc_robot_1280x720_30_8bit_300.rgb -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 30 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1280 # Input frame width -SourceHeight : 720 # Input frame height -FramesToBeEncoded : 300 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/Seeking_422_10bit.cfg b/cfg/per-sequence-non-420/Seeking_422_10bit.cfg deleted file mode 100644 index df0b7aab..00000000 --- a/cfg/per-sequence-non-420/Seeking_422_10bit.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : Seeking_1920x1080_50_10bit_422.yuv -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 422 # Ratio of luminance to chrominance samples -FrameRate : 50 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 250 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/SlideShow_444.cfg b/cfg/per-sequence-non-420/SlideShow_444.cfg deleted file mode 100644 index 3136873d..00000000 --- a/cfg/per-sequence-non-420/SlideShow_444.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : sc_SlideShow_1280x720_20_8bit_500_444.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 20 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1280 # Input frame width -SourceHeight : 720 # Input frame height -FramesToBeEncoded : 500 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/SlideShow_RGB.cfg b/cfg/per-sequence-non-420/SlideShow_RGB.cfg deleted file mode 100644 index a767b832..00000000 --- a/cfg/per-sequence-non-420/SlideShow_RGB.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : sc_SlideShow_1280x720_20_8bit_500.rgb -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 20 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1280 # Input frame width -SourceHeight : 720 # Input frame height -FramesToBeEncoded : 500 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/Traffic_422_10bit.cfg b/cfg/per-sequence-non-420/Traffic_422_10bit.cfg deleted file mode 100644 index 9b7a104b..00000000 --- a/cfg/per-sequence-non-420/Traffic_422_10bit.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : Traffic_2560x1600_30_10bit_422_crop.yuv -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 422 # Ratio of luminance to chrominance samples -FrameRate : 30 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 2560 # Input frame width -SourceHeight : 1600 # Input frame height -FramesToBeEncoded : 150 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/Traffic_444_10bit.cfg b/cfg/per-sequence-non-420/Traffic_444_10bit.cfg deleted file mode 100644 index 50b5afc5..00000000 --- a/cfg/per-sequence-non-420/Traffic_444_10bit.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : Traffic_2560x1600_30_10bit_444_crop.yuv -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 30 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 2560 # Input frame width -SourceHeight : 1600 # Input frame height -FramesToBeEncoded : 150 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/Traffic_RGB_12bit.cfg b/cfg/per-sequence-non-420/Traffic_RGB_12bit.cfg deleted file mode 100644 index cc121686..00000000 --- a/cfg/per-sequence-non-420/Traffic_RGB_12bit.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : Traffic_2560x1600_30_12bit_444.rgb -InputBitDepth : 12 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 30 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 2560 # Input frame width -SourceHeight : 1600 # Input frame height -FramesToBeEncoded : 150 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/VenueVu_444_10bit.cfg b/cfg/per-sequence-non-420/VenueVu_444_10bit.cfg deleted file mode 100644 index 694b4124..00000000 --- a/cfg/per-sequence-non-420/VenueVu_444_10bit.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : VenueVu_1920x1080_30_10bit_444.yuv -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 30 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 150 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/VenueVu_RGB.cfg b/cfg/per-sequence-non-420/VenueVu_RGB.cfg deleted file mode 100644 index 03aa07e2..00000000 --- a/cfg/per-sequence-non-420/VenueVu_RGB.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : VenueVu_1920x1080_30_8bit_444.rgb -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 30 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 150 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/WebBrowsing_444.cfg b/cfg/per-sequence-non-420/WebBrowsing_444.cfg deleted file mode 100644 index c92c7229..00000000 --- a/cfg/per-sequence-non-420/WebBrowsing_444.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : sc_web_browsing_1280x720_30_8bit_300_444_r1.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 30 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1280 # Input frame width -SourceHeight : 720 # Input frame height -FramesToBeEncoded : 300 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence-non-420/WebBrowsing_RGB.cfg b/cfg/per-sequence-non-420/WebBrowsing_RGB.cfg deleted file mode 100644 index 513bef1a..00000000 --- a/cfg/per-sequence-non-420/WebBrowsing_RGB.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : sc_web_browsing_1280x720_30_8bit_300_rgb.rgb -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 30 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1280 # Input frame width -SourceHeight : 720 # Input frame height -FramesToBeEncoded : 300 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence/ArenaOfValor.cfg b/cfg/per-sequence/ArenaOfValor.cfg deleted file mode 100644 index e888567f..00000000 --- a/cfg/per-sequence/ArenaOfValor.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : ArenaOfValor_1920x1080_60_8bit_420.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 600 # Number of frames to be coded - -Level : 4.1 diff --git a/cfg/per-sequence/BQMall.cfg b/cfg/per-sequence/BQMall.cfg deleted file mode 100644 index 03317919..00000000 --- a/cfg/per-sequence/BQMall.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : BQMall_832x480_60.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 832 # Input frame width -SourceHeight : 480 # Input frame height -FramesToBeEncoded : 600 # Number of frames to be coded - -Level : 3.1 diff --git a/cfg/per-sequence/BQSquare.cfg b/cfg/per-sequence/BQSquare.cfg deleted file mode 100644 index eebd2d4e..00000000 --- a/cfg/per-sequence/BQSquare.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : BQSquare_416x240_60.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 416 # Input frame width -SourceHeight : 240 # Input frame height -FramesToBeEncoded : 600 # Number of frames to be coded - -Level : 2.1 diff --git a/cfg/per-sequence/BQTerrace.cfg b/cfg/per-sequence/BQTerrace.cfg deleted file mode 100644 index b5d4c76d..00000000 --- a/cfg/per-sequence/BQTerrace.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : BQTerrace_1920x1080_60.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 600 # Number of frames to be coded - -Level : 4.1 diff --git a/cfg/per-sequence/BasketballDrill.cfg b/cfg/per-sequence/BasketballDrill.cfg deleted file mode 100644 index 6bfce02e..00000000 --- a/cfg/per-sequence/BasketballDrill.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : BasketballDrill_832x480_50.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 50 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 832 # Input frame width -SourceHeight : 480 # Input frame height -FramesToBeEncoded : 500 # Number of frames to be coded - -Level : 3.1 diff --git a/cfg/per-sequence/BasketballDrillText.cfg b/cfg/per-sequence/BasketballDrillText.cfg deleted file mode 100644 index 04e614ff..00000000 --- a/cfg/per-sequence/BasketballDrillText.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : BasketballDrillText_832x480_50.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 50 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 832 # Input frame width -SourceHeight : 480 # Input frame height -FramesToBeEncoded : 500 # Number of frames to be coded - -Level : 3.1 diff --git a/cfg/per-sequence/BasketballDrive.cfg b/cfg/per-sequence/BasketballDrive.cfg deleted file mode 100644 index ec2eb763..00000000 --- a/cfg/per-sequence/BasketballDrive.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : BasketballDrive_1920x1080_50.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 50 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 500 # Number of frames to be coded - -Level : 4.1 diff --git a/cfg/per-sequence/BasketballPass.cfg b/cfg/per-sequence/BasketballPass.cfg deleted file mode 100644 index c6b756c9..00000000 --- a/cfg/per-sequence/BasketballPass.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : BasketballPass_416x240_50.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 50 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 416 # Input frame width -SourceHeight : 240 # Input frame height -FramesToBeEncoded : 500 # Number of frames to be coded - -Level : 2.1 diff --git a/cfg/per-sequence/BlowingBubbles.cfg b/cfg/per-sequence/BlowingBubbles.cfg deleted file mode 100644 index 61a08aa4..00000000 --- a/cfg/per-sequence/BlowingBubbles.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : BlowingBubbles_416x240_50.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 50 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 416 # Input frame width -SourceHeight : 240 # Input frame height -FramesToBeEncoded : 500 # Number of frames to be coded - -Level : 2.1 diff --git a/cfg/per-sequence/Bubbles_RGB_16bit.cfg b/cfg/per-sequence/Bubbles_RGB_16bit.cfg deleted file mode 100644 index 5ffec879..00000000 --- a/cfg/per-sequence/Bubbles_RGB_16bit.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : Bubbles_4096x2160_24_16bit_444.rgb -InputBitDepth : 16 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 24 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 4096 # Input frame width -SourceHeight : 2160 # Input frame height -FramesToBeEncoded : 120 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence/CADWaveform_444.cfg b/cfg/per-sequence/CADWaveform_444.cfg deleted file mode 100644 index 420fd233..00000000 --- a/cfg/per-sequence/CADWaveform_444.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : sc_cad_waveform_1920x1080_20_8bit_200_444_r1.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 20 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 200 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence/CADWaveform_GBR.cfg b/cfg/per-sequence/CADWaveform_GBR.cfg deleted file mode 100644 index 164f2db5..00000000 --- a/cfg/per-sequence/CADWaveform_GBR.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : sc_cad_waveform_1920x1080_20_8bit_200_gbr.gbr -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 20 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 200 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence/CADWaveform_RGB.cfg b/cfg/per-sequence/CADWaveform_RGB.cfg deleted file mode 100644 index 3ce9a5fc..00000000 --- a/cfg/per-sequence/CADWaveform_RGB.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : sc_cad_waveform_1920x1080_20_8bit_200_rgb.rgb -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 20 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 200 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence/Cactus.cfg b/cfg/per-sequence/Cactus.cfg deleted file mode 100644 index 4cd053fa..00000000 --- a/cfg/per-sequence/Cactus.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : Cactus_1920x1080_50.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 50 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 500 # Number of frames to be coded - -Level : 4.1 diff --git a/cfg/per-sequence/Campfire.cfg b/cfg/per-sequence/Campfire.cfg deleted file mode 100644 index 8402f0e2..00000000 --- a/cfg/per-sequence/Campfire.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : Campfire_3840x2160_30fps_10bit_420_bt709_videoRange.yuv -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 30 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 3840 # Input frame width -SourceHeight : 2160 # Input frame height -FramesToBeEncoded : 300 # Number of frames to be coded - -Level : 5.1 diff --git a/cfg/per-sequence/Cardiac_400_12bit.cfg b/cfg/per-sequence/Cardiac_400_12bit.cfg deleted file mode 100644 index 6e835ee5..00000000 --- a/cfg/per-sequence/Cardiac_400_12bit.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : CT_Cardiac_512x512_12bit_400.yuv -InputBitDepth : 12 # Input bitdepth -InputChromaFormat : 400 # Ratio of luminance to chrominance samples -FrameRate : 50 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 512 # Input frame width -SourceHeight : 512 # Input frame height -FramesToBeEncoded : 281 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence/CatRobot.cfg b/cfg/per-sequence/CatRobot.cfg deleted file mode 100644 index 09bd1bcb..00000000 --- a/cfg/per-sequence/CatRobot.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : CatRobot_3840x2160_60fps_10bit_420_jvet.yuv -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 3840 # Input frame width -SourceHeight : 2160 # Input frame height -FramesToBeEncoded : 300 # Number of frames to be coded - -Level : 5.1 diff --git a/cfg/per-sequence/ChinaSpeed.cfg b/cfg/per-sequence/ChinaSpeed.cfg deleted file mode 100644 index 03d3572c..00000000 --- a/cfg/per-sequence/ChinaSpeed.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : ChinaSpeed_1024x768_30.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 30 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1024 # Input frame width -SourceHeight : 768 # Input frame height -FramesToBeEncoded : 500 # Number of frames to be coded - -Level : 3.1 diff --git a/cfg/per-sequence/CrowdRun_RGB_16bit.cfg b/cfg/per-sequence/CrowdRun_RGB_16bit.cfg deleted file mode 100644 index 93488ad2..00000000 --- a/cfg/per-sequence/CrowdRun_RGB_16bit.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : CrowdRun_1920x1080_50_16bit_444.rgb -InputBitDepth : 16 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 50 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 500 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence/DaylightRoad2.cfg b/cfg/per-sequence/DaylightRoad2.cfg deleted file mode 100644 index 5ba3af52..00000000 --- a/cfg/per-sequence/DaylightRoad2.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : DaylightRoad2_3840x2160_60fps_10bit_420.yuv -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 3840 # Input frame width -SourceHeight : 2160 # Input frame height -FramesToBeEncoded : 300 # Number of frames to be coded - -Level : 5.1 diff --git a/cfg/per-sequence/Doc_444.cfg b/cfg/per-sequence/Doc_444.cfg deleted file mode 100644 index 895b2fde..00000000 --- a/cfg/per-sequence/Doc_444.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : sc_doc_1280x720_10_8bit_500_444.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 10 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1280 # Input frame width -SourceHeight : 720 # Input frame height -FramesToBeEncoded : 500 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence/Doc_RGB.cfg b/cfg/per-sequence/Doc_RGB.cfg deleted file mode 100644 index 85dcc8a2..00000000 --- a/cfg/per-sequence/Doc_RGB.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : sc_doc_1280x720_10_8bit_500.rgb -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 10 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1280 # Input frame width -SourceHeight : 720 # Input frame height -FramesToBeEncoded : 500 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence/DucksTakeOff_RGB_16bit.cfg b/cfg/per-sequence/DucksTakeOff_RGB_16bit.cfg deleted file mode 100644 index effaa2d4..00000000 --- a/cfg/per-sequence/DucksTakeOff_RGB_16bit.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : DucksTakeOff_1920x1080_50_16bit_444.rgb -InputBitDepth : 16 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 50 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 500 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence/EBURainFruits_RGB_10bit+2MSB.cfg b/cfg/per-sequence/EBURainFruits_RGB_10bit+2MSB.cfg deleted file mode 100644 index 75c7788b..00000000 --- a/cfg/per-sequence/EBURainFruits_RGB_10bit+2MSB.cfg +++ /dev/null @@ -1,15 +0,0 @@ -#======== File I/O =============== -InputFile : EBURainFruits_1920x1080_50_10bit_444.rgb -InputBitDepth : 10 # Input bitdepth -MSBExtendedBitDepth : 12 # bit depth after addition of MSBs -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 50 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 500 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence/EBURainFruits_RGB_10bit+4MSB.cfg b/cfg/per-sequence/EBURainFruits_RGB_10bit+4MSB.cfg deleted file mode 100644 index 09fba8b1..00000000 --- a/cfg/per-sequence/EBURainFruits_RGB_10bit+4MSB.cfg +++ /dev/null @@ -1,15 +0,0 @@ -#======== File I/O =============== -InputFile : EBURainFruits_1920x1080_50_10bit_444.rgb -InputBitDepth : 10 # Input bitdepth -MSBExtendedBitDepth : 14 # bit depth after addition of MSBs -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 50 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 500 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence/EBURainFruits_RGB_10bit+6MSB.cfg b/cfg/per-sequence/EBURainFruits_RGB_10bit+6MSB.cfg deleted file mode 100644 index 0b012d20..00000000 --- a/cfg/per-sequence/EBURainFruits_RGB_10bit+6MSB.cfg +++ /dev/null @@ -1,15 +0,0 @@ -#======== File I/O =============== -InputFile : EBURainFruits_1920x1080_50_10bit_444.rgb -InputBitDepth : 10 # Input bitdepth -MSBExtendedBitDepth : 16 # bit depth after addition of MSBs -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 50 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 500 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence/FoodMarket4.cfg b/cfg/per-sequence/FoodMarket4.cfg deleted file mode 100644 index fe92d0d2..00000000 --- a/cfg/per-sequence/FoodMarket4.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : FoodMarket4_3840x2160_60fps_10bit_420.yuv -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 3840 # Input frame width -SourceHeight : 2160 # Input frame height -FramesToBeEncoded : 300 # Number of frames to be coded - -Level : 5.1 diff --git a/cfg/per-sequence/FourPeople.cfg b/cfg/per-sequence/FourPeople.cfg deleted file mode 100644 index 60a66f9a..00000000 --- a/cfg/per-sequence/FourPeople.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : FourPeople_1280x720_60.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1280 # Input frame width -SourceHeight : 720 # Input frame height -FramesToBeEncoded : 600 # Number of frames to be coded - -Level : 4 diff --git a/cfg/per-sequence/FruitStall_RGB_16bit.cfg b/cfg/per-sequence/FruitStall_RGB_16bit.cfg deleted file mode 100644 index af0f90d5..00000000 --- a/cfg/per-sequence/FruitStall_RGB_16bit.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : FruitStall_1920x1080_24_16bit_444.rgb -InputBitDepth : 16 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 24 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 240 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence/Head_400_16bit.cfg b/cfg/per-sequence/Head_400_16bit.cfg deleted file mode 100644 index 0a5883fd..00000000 --- a/cfg/per-sequence/Head_400_16bit.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : AX_Head_1240x960_16bit_400.yuv -InputBitDepth : 16 # Input bitdepth -InputChromaFormat : 400 # Ratio of luminance to chrominance samples -FrameRate : 50 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1240 # Input frame width -SourceHeight : 960 # Input frame height -FramesToBeEncoded : 496 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence/InToTree_RGB_16bit.cfg b/cfg/per-sequence/InToTree_RGB_16bit.cfg deleted file mode 100644 index 8bb34efb..00000000 --- a/cfg/per-sequence/InToTree_RGB_16bit.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : InToTree_1920x1080_50_16bit_444.rgb -InputBitDepth : 16 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 50 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 500 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence/Johnny.cfg b/cfg/per-sequence/Johnny.cfg deleted file mode 100644 index 781fc0bb..00000000 --- a/cfg/per-sequence/Johnny.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : Johnny_1280x720_60.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1280 # Input frame width -SourceHeight : 720 # Input frame height -FramesToBeEncoded : 600 # Number of frames to be coded - -Level : 4 diff --git a/cfg/per-sequence/Kimono.cfg b/cfg/per-sequence/Kimono.cfg deleted file mode 100644 index c326f0b2..00000000 --- a/cfg/per-sequence/Kimono.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : Kimono1_1920x1080_24.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 24 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 240 # Number of frames to be coded - -Level : 4 diff --git a/cfg/per-sequence/Kimono_RGB_10bit+2MSB.cfg b/cfg/per-sequence/Kimono_RGB_10bit+2MSB.cfg deleted file mode 100644 index 2d85144b..00000000 --- a/cfg/per-sequence/Kimono_RGB_10bit+2MSB.cfg +++ /dev/null @@ -1,15 +0,0 @@ -#======== File I/O =============== -InputFile : Kimono1_1920x1080_24_10bit_444.rgb -InputBitDepth : 10 # Input bitdepth -MSBExtendedBitDepth : 12 # bit depth after addition of MSBs -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 24 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 240 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence/Kimono_RGB_10bit+4MSB.cfg b/cfg/per-sequence/Kimono_RGB_10bit+4MSB.cfg deleted file mode 100644 index c532527b..00000000 --- a/cfg/per-sequence/Kimono_RGB_10bit+4MSB.cfg +++ /dev/null @@ -1,15 +0,0 @@ -#======== File I/O =============== -InputFile : Kimono1_1920x1080_24_10bit_444.rgb -InputBitDepth : 10 # Input bitdepth -MSBExtendedBitDepth : 14 # bit depth after addition of MSBs -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 24 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 240 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence/Kimono_RGB_10bit+6MSB.cfg b/cfg/per-sequence/Kimono_RGB_10bit+6MSB.cfg deleted file mode 100644 index 0587f892..00000000 --- a/cfg/per-sequence/Kimono_RGB_10bit+6MSB.cfg +++ /dev/null @@ -1,15 +0,0 @@ -#======== File I/O =============== -InputFile : Kimono1_1920x1080_24_10bit_444.rgb -InputBitDepth : 10 # Input bitdepth -MSBExtendedBitDepth : 16 # bit depth after addition of MSBs -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 24 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 240 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence/KristenAndSara.cfg b/cfg/per-sequence/KristenAndSara.cfg deleted file mode 100644 index 86d290b8..00000000 --- a/cfg/per-sequence/KristenAndSara.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : KristenAndSara_1280x720_60.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1280 # Input frame width -SourceHeight : 720 # Input frame height -FramesToBeEncoded : 600 # Number of frames to be coded - -Level : 4 diff --git a/cfg/per-sequence/LongRunShort_400_12bit.cfg b/cfg/per-sequence/LongRunShort_400_12bit.cfg deleted file mode 100644 index ede72269..00000000 --- a/cfg/per-sequence/LongRunShort_400_12bit.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : CT_LongrunShort_512x512_12bit_400.yuv -InputBitDepth : 12 # Input bitdepth -InputChromaFormat : 400 # Ratio of luminance to chrominance samples -FrameRate : 50 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 512 # Input frame width -SourceHeight : 512 # Input frame height -FramesToBeEncoded : 500 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence/Map_GBR.cfg b/cfg/per-sequence/Map_GBR.cfg deleted file mode 100644 index 251901b1..00000000 --- a/cfg/per-sequence/Map_GBR.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : sc_map_1280x720_60_8bit.gbr -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1280 # Input frame width -SourceHeight : 720 # Input frame height -FramesToBeEncoded : 600 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence/MarketPlace.cfg b/cfg/per-sequence/MarketPlace.cfg deleted file mode 100644 index 965a888a..00000000 --- a/cfg/per-sequence/MarketPlace.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : MarketPlace_1920x1080_60fps_10bit_420.yuv -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 600 # Number of frames to be coded - -Level : 4.1 diff --git a/cfg/per-sequence/NebutaFestival_10bit.cfg b/cfg/per-sequence/NebutaFestival_10bit.cfg deleted file mode 100644 index 3daf3359..00000000 --- a/cfg/per-sequence/NebutaFestival_10bit.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : NebutaFestival_2560x1600_60_10bit_crop.yuv -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 2560 # Input frame width -SourceHeight : 1600 # Input frame height -FramesToBeEncoded : 300 # Number of frames to be coded - -Level : 5 diff --git a/cfg/per-sequence/OldTownCross_RGB_16bit.cfg b/cfg/per-sequence/OldTownCross_RGB_16bit.cfg deleted file mode 100644 index 7a1eca48..00000000 --- a/cfg/per-sequence/OldTownCross_RGB_16bit.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : OldTownCross_1920x1080_50_16bit_444.rgb -InputBitDepth : 16 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 50 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 500 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence/PCBLayout_444.cfg b/cfg/per-sequence/PCBLayout_444.cfg deleted file mode 100644 index 18117e6c..00000000 --- a/cfg/per-sequence/PCBLayout_444.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : sc_pcb_layout_1920x1080_20_8bit_200_444_r1.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 20 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 200 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence/PCBLayout_GBR.cfg b/cfg/per-sequence/PCBLayout_GBR.cfg deleted file mode 100644 index 6e0e1238..00000000 --- a/cfg/per-sequence/PCBLayout_GBR.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : sc_pcb_layout_1920x1080_20_8bit_200_gbr.gbr -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 20 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 200 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence/PCBLayout_RGB.cfg b/cfg/per-sequence/PCBLayout_RGB.cfg deleted file mode 100644 index 51fd78b3..00000000 --- a/cfg/per-sequence/PCBLayout_RGB.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : sc_pcb_layout_1920x1080_20_8bit_200_rgb.rgb -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 20 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 200 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence/ParkJoy_RGB_16bit.cfg b/cfg/per-sequence/ParkJoy_RGB_16bit.cfg deleted file mode 100644 index e803f67a..00000000 --- a/cfg/per-sequence/ParkJoy_RGB_16bit.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : ParkJoy_1920x1080_50_16bit_444.rgb -InputBitDepth : 16 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 50 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 500 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence/ParkRunning3.cfg b/cfg/per-sequence/ParkRunning3.cfg deleted file mode 100644 index f7738532..00000000 --- a/cfg/per-sequence/ParkRunning3.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : ParkRunning3_3840x2160_50fps_10bit_420.yuv -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 50 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 3840 # Input frame width -SourceHeight : 2160 # Input frame height -FramesToBeEncoded : 300 # Number of frames to be coded - -Level : 5.1 diff --git a/cfg/per-sequence/ParkScene.cfg b/cfg/per-sequence/ParkScene.cfg deleted file mode 100644 index 63fa38f0..00000000 --- a/cfg/per-sequence/ParkScene.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : ParkScene_1920x1080_24.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 24 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 240 # Number of frames to be coded - -Level : 4 diff --git a/cfg/per-sequence/PartyScene.cfg b/cfg/per-sequence/PartyScene.cfg deleted file mode 100644 index caff0073..00000000 --- a/cfg/per-sequence/PartyScene.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : PartyScene_832x480_50.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 50 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 832 # Input frame width -SourceHeight : 480 # Input frame height -FramesToBeEncoded : 500 # Number of frames to be coded - -Level : 3.1 diff --git a/cfg/per-sequence/PeopleOnStreet.cfg b/cfg/per-sequence/PeopleOnStreet.cfg deleted file mode 100644 index 46a916e3..00000000 --- a/cfg/per-sequence/PeopleOnStreet.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : PeopleOnStreet_2560x1600_30_crop.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 30 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 2560 # Input frame width -SourceHeight : 1600 # Input frame height -FramesToBeEncoded : 150 # Number of frames to be coded - -Level : 5 diff --git a/cfg/per-sequence/Programming_GBR.cfg b/cfg/per-sequence/Programming_GBR.cfg deleted file mode 100644 index 241df8c7..00000000 --- a/cfg/per-sequence/Programming_GBR.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : sc_programming_1280x720_60_8bit.gbr -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1280 # Input frame width -SourceHeight : 720 # Input frame height -FramesToBeEncoded : 600 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence/RaceHorses.cfg b/cfg/per-sequence/RaceHorses.cfg deleted file mode 100644 index c0fa43b7..00000000 --- a/cfg/per-sequence/RaceHorses.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : RaceHorses_416x240_30.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 30 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 416 # Input frame width -SourceHeight : 240 # Input frame height -FramesToBeEncoded : 300 # Number of frames to be coded - -Level : 2 diff --git a/cfg/per-sequence/RaceHorsesC.cfg b/cfg/per-sequence/RaceHorsesC.cfg deleted file mode 100644 index cbc745e1..00000000 --- a/cfg/per-sequence/RaceHorsesC.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : RaceHorses_832x480_30.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 30 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 832 # Input frame width -SourceHeight : 480 # Input frame height -FramesToBeEncoded : 300 # Number of frames to be coded - -Level : 3 diff --git a/cfg/per-sequence/RitualDance.cfg b/cfg/per-sequence/RitualDance.cfg deleted file mode 100644 index 1226047b..00000000 --- a/cfg/per-sequence/RitualDance.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : RitualDance_1920x1080_60fps_10bit_420.yuv -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 600 # Number of frames to be coded - -Level : 4.1 diff --git a/cfg/per-sequence/SlideEditing.cfg b/cfg/per-sequence/SlideEditing.cfg deleted file mode 100644 index be4bf5ca..00000000 --- a/cfg/per-sequence/SlideEditing.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : SlideEditing_1280x720_30.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 30 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1280 # Input frame width -SourceHeight : 720 # Input frame height -FramesToBeEncoded : 300 # Number of frames to be coded - -Level : 3.1 diff --git a/cfg/per-sequence/SlideShow.cfg b/cfg/per-sequence/SlideShow.cfg deleted file mode 100644 index fdddbda7..00000000 --- a/cfg/per-sequence/SlideShow.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : SlideShow_1280x720_20.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 20 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1280 # Input frame width -SourceHeight : 720 # Input frame height -FramesToBeEncoded : 500 # Number of frames to be coded - -Level : 3.1 diff --git a/cfg/per-sequence/SocialNetworkMap_444.cfg b/cfg/per-sequence/SocialNetworkMap_444.cfg deleted file mode 100644 index 8f0916ec..00000000 --- a/cfg/per-sequence/SocialNetworkMap_444.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : sc_socialNetworkMap_1920x1080_60_8bit_444.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 600 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence/SocialNetworkMap_RGB.cfg b/cfg/per-sequence/SocialNetworkMap_RGB.cfg deleted file mode 100644 index 02dde0d0..00000000 --- a/cfg/per-sequence/SocialNetworkMap_RGB.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : sc_socialNetworkMap_1920x1080_60_8bit_rgb.rgb -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 600 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence/SteamLocomotiveTrain_10bit.cfg b/cfg/per-sequence/SteamLocomotiveTrain_10bit.cfg deleted file mode 100644 index 712ff44f..00000000 --- a/cfg/per-sequence/SteamLocomotiveTrain_10bit.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : SteamLocomotiveTrain_2560x1600_60_10bit_crop.yuv -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 2560 # Input frame width -SourceHeight : 1600 # Input frame height -FramesToBeEncoded : 300 # Number of frames to be coded - -Level : 5 diff --git a/cfg/per-sequence/Tango2.cfg b/cfg/per-sequence/Tango2.cfg deleted file mode 100644 index 3c01e154..00000000 --- a/cfg/per-sequence/Tango2.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : Tango2_3840x2160_60fps_10bit_420.yuv -InputBitDepth : 10 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 3840 # Input frame width -SourceHeight : 2160 # Input frame height -FramesToBeEncoded : 294 # Number of frames to be coded - -Level : 5.1 diff --git a/cfg/per-sequence/Traffic.cfg b/cfg/per-sequence/Traffic.cfg deleted file mode 100644 index 8c66a2a4..00000000 --- a/cfg/per-sequence/Traffic.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : Traffic_2560x1600_30_crop.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 30 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 2560 # Input frame width -SourceHeight : 1600 # Input frame height -FramesToBeEncoded : 150 # Number of frames to be coded - -Level : 5 diff --git a/cfg/per-sequence/TwistTunnel_444.cfg b/cfg/per-sequence/TwistTunnel_444.cfg deleted file mode 100644 index 0bc31b97..00000000 --- a/cfg/per-sequence/TwistTunnel_444.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : sc_cg_twist_tunnel_1280x720_30_8bit_300_444_r1.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 30 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1280 # Input frame width -SourceHeight : 720 # Input frame height -FramesToBeEncoded : 300 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence/TwistTunnel_GBR.cfg b/cfg/per-sequence/TwistTunnel_GBR.cfg deleted file mode 100644 index a52a455c..00000000 --- a/cfg/per-sequence/TwistTunnel_GBR.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : sc_cg_twist_tunnel_1280x720_30_8bit_gbr.gbr -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 30 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1280 # Input frame width -SourceHeight : 720 # Input frame height -FramesToBeEncoded : 300 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence/TwistTunnel_RGB.cfg b/cfg/per-sequence/TwistTunnel_RGB.cfg deleted file mode 100644 index 5b18f75b..00000000 --- a/cfg/per-sequence/TwistTunnel_RGB.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : sc_cg_twist_tunnel_1280x720_30_8bit_rgb.rgb -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 30 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1280 # Input frame width -SourceHeight : 720 # Input frame height -FramesToBeEncoded : 300 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence/VenueVu_GBR.cfg b/cfg/per-sequence/VenueVu_GBR.cfg deleted file mode 100644 index be2e8ba3..00000000 --- a/cfg/per-sequence/VenueVu_GBR.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : VenueVu_1920x1080_30_8bit_444_gbr.gbr -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 30 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 300 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence/VideoConferencingDocSharing_444.cfg b/cfg/per-sequence/VideoConferencingDocSharing_444.cfg deleted file mode 100644 index 8a291c9c..00000000 --- a/cfg/per-sequence/VideoConferencingDocSharing_444.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : sc_video_conferencing_doc_sharing_1280x720_30_8bit_300_444_r1.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 30 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1280 # Input frame width -SourceHeight : 720 # Input frame height -FramesToBeEncoded : 300 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence/VideoConferencingDocSharing_GBR.cfg b/cfg/per-sequence/VideoConferencingDocSharing_GBR.cfg deleted file mode 100644 index de2149fb..00000000 --- a/cfg/per-sequence/VideoConferencingDocSharing_GBR.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : sc_video_conferencing_doc_sharing_1280x720_30_8bit_300_gbr.gbr -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 30 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1280 # Input frame width -SourceHeight : 720 # Input frame height -FramesToBeEncoded : 300 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence/VideoConferencingDocSharing_RGB.cfg b/cfg/per-sequence/VideoConferencingDocSharing_RGB.cfg deleted file mode 100644 index 831bee3b..00000000 --- a/cfg/per-sequence/VideoConferencingDocSharing_RGB.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : sc_video_conferencing_doc_sharing_1280x720_30_8bit_300_rgb.rgb -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 30 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1280 # Input frame width -SourceHeight : 720 # Input frame height -FramesToBeEncoded : 300 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence/Vidyo1.cfg b/cfg/per-sequence/Vidyo1.cfg deleted file mode 100644 index 996fd813..00000000 --- a/cfg/per-sequence/Vidyo1.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : vidyo1_1280x720_60.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1280 # Input frame width -SourceHeight : 720 # Input frame height -FramesToBeEncoded : 600 # Number of frames to be coded - -Level : 4 diff --git a/cfg/per-sequence/Vidyo3.cfg b/cfg/per-sequence/Vidyo3.cfg deleted file mode 100644 index 19ffc92e..00000000 --- a/cfg/per-sequence/Vidyo3.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : vidyo3_1280x720_60.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1280 # Input frame width -SourceHeight : 720 # Input frame height -FramesToBeEncoded : 600 # Number of frames to be coded - -Level : 4 diff --git a/cfg/per-sequence/Vidyo4.cfg b/cfg/per-sequence/Vidyo4.cfg deleted file mode 100644 index b532a773..00000000 --- a/cfg/per-sequence/Vidyo4.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : vidyo4_1280x720_60.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 420 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1280 # Input frame width -SourceHeight : 720 # Input frame height -FramesToBeEncoded : 600 # Number of frames to be coded - -Level : 4 diff --git a/cfg/per-sequence/WebBrowsing_GBR.cfg b/cfg/per-sequence/WebBrowsing_GBR.cfg deleted file mode 100644 index 9e6ecc3c..00000000 --- a/cfg/per-sequence/WebBrowsing_GBR.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : sc_web_browsing_1280x720_30_8bit_300_gbr.gbr -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 30 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1280 # Input frame width -SourceHeight : 720 # Input frame height -FramesToBeEncoded : 300 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence/Web_444.cfg b/cfg/per-sequence/Web_444.cfg deleted file mode 100644 index 182472f3..00000000 --- a/cfg/per-sequence/Web_444.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : sc_Web_1280x720_10_8bit_500_444.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 10 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1280 # Input frame width -SourceHeight : 720 # Input frame height -FramesToBeEncoded : 500 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence/Web_RGB.cfg b/cfg/per-sequence/Web_RGB.cfg deleted file mode 100644 index 60706a33..00000000 --- a/cfg/per-sequence/Web_RGB.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : sc_Web_1280x720_10_8bit_500.rgb -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 10 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1280 # Input frame width -SourceHeight : 720 # Input frame height -FramesToBeEncoded : 500 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence/WordEditing_444.cfg b/cfg/per-sequence/WordEditing_444.cfg deleted file mode 100644 index cc2a2b67..00000000 --- a/cfg/per-sequence/WordEditing_444.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : sc_wordEditing_1280x720_60_8bit_444.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1280 # Input frame width -SourceHeight : 720 # Input frame height -FramesToBeEncoded : 600 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence/WordEditing_GBR.cfg b/cfg/per-sequence/WordEditing_GBR.cfg deleted file mode 100644 index e8f83a80..00000000 --- a/cfg/per-sequence/WordEditing_GBR.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : sc_wordEditing_1280x720_60_8bit.gbr -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1280 # Input frame width -SourceHeight : 720 # Input frame height -FramesToBeEncoded : 600 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence/WordEditing_RGB.cfg b/cfg/per-sequence/WordEditing_RGB.cfg deleted file mode 100644 index ef65ec0c..00000000 --- a/cfg/per-sequence/WordEditing_RGB.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : sc_wordEditing_1280x720_60_8bit.rgb -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 60 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1280 # Input frame width -SourceHeight : 720 # Input frame height -FramesToBeEncoded : 600 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/per-sequence/ppt_doc_xls_444.cfg b/cfg/per-sequence/ppt_doc_xls_444.cfg deleted file mode 100644 index c636188e..00000000 --- a/cfg/per-sequence/ppt_doc_xls_444.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : sc_ppt_doc_xls_1920x1080_20_8bit_200_444_r1.yuv -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 20 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 200 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence/ppt_doc_xls_GBR.cfg b/cfg/per-sequence/ppt_doc_xls_GBR.cfg deleted file mode 100644 index 3c7ffd82..00000000 --- a/cfg/per-sequence/ppt_doc_xls_GBR.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== File I/O =============== -InputFile : sc_ppt_doc_xls_1920x1080_20_8bit_200_gbr.gbr -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 20 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 200 # Number of frames to be coded - -Level : 6.2 diff --git a/cfg/per-sequence/ppt_doc_xls_RGB.cfg b/cfg/per-sequence/ppt_doc_xls_RGB.cfg deleted file mode 100644 index 57556c5d..00000000 --- a/cfg/per-sequence/ppt_doc_xls_RGB.cfg +++ /dev/null @@ -1,14 +0,0 @@ -#======== File I/O =============== -InputFile : sc_ppt_doc_xls_1920x1080_20_8bit_200_rgb.rgb -InputBitDepth : 8 # Input bitdepth -InputChromaFormat : 444 # Ratio of luminance to chrominance samples -FrameRate : 20 # Frame Rate per second -FrameSkip : 0 # Number of frames to be skipped in input -SourceWidth : 1920 # Input frame width -SourceHeight : 1080 # Input frame height -FramesToBeEncoded : 200 # Number of frames to be coded -InputColourSpaceConvert : RGBtoGBR # Non-normative colour space conversion to apply to input video -SNRInternalColourSpace : 1 # Evaluate SNRs in GBR order -OutputInternalColourSpace : 0 # Convert recon output back to RGB order. Use --OutputColourSpaceConvert GBRtoRGB on decoder to produce a matching output file. - -Level : 6.2 diff --git a/cfg/rpr/scale1.5x.cfg b/cfg/rpr/scale1.5x.cfg deleted file mode 100644 index f9733d0d..00000000 --- a/cfg/rpr/scale1.5x.cfg +++ /dev/null @@ -1,6 +0,0 @@ -# Reference picture resampling CE settings for scaling ratio and number of encoded frames - -ScalingRatioHor : 1.5 -ScalingRatioVer : 1.5 -FractionNumFrames : 0.5 -UpscaledOutput : 1 \ No newline at end of file diff --git a/cfg/rpr/scale2.0x.cfg b/cfg/rpr/scale2.0x.cfg deleted file mode 100644 index f0b9a6e9..00000000 --- a/cfg/rpr/scale2.0x.cfg +++ /dev/null @@ -1,6 +0,0 @@ -# Reference picture resampling CE settings for scaling ratio and number of encoded frames - -ScalingRatioHor : 2.0 -ScalingRatioVer : 2.0 -FractionNumFrames : 0.5 -UpscaledOutput : 1 diff --git a/cfg/scaling_list/sample_scaling_list.cfg b/cfg/scaling_list/sample_scaling_list.cfg deleted file mode 100644 index 1f343d57..00000000 --- a/cfg/scaling_list/sample_scaling_list.cfg +++ /dev/null @@ -1,3 +0,0 @@ -#============ Scaling List ====================== -ScalingList : 2 # Scaling list: 0: no scaling list, 2: scaling lists specified in ScalingListFile -ScalingListFile : sample_scaling_list_file.txt diff --git a/cfg/scaling_list/sample_scaling_list_file.txt b/cfg/scaling_list/sample_scaling_list_file.txt deleted file mode 100644 index c0b827a6..00000000 --- a/cfg/scaling_list/sample_scaling_list_file.txt +++ /dev/null @@ -1,304 +0,0 @@ -# ScalingListFile -# The matrices in this sample file are inherited from JCTVC-H1104. - -INTRA2X2_LUMA = - 7,19 - 19,41 - -INTRA2X2_CHROMAU = - 7,19 - 19,41 - -INTRA2X2_CHROMAV = - 7,19 - 19,41 - -INTER2X2_LUMA = - 11,30 - 30,50 - -INTER2X2_CHROMAU = - 11,30 - 30,50 - -INTER2X2_CHROMAV = - 11,30 - 30,50 - -INTRA4X4_LUMA = - 7,12,19,26 -12,16,24,40 -19,24,41,50 -26,40,50,56 - -INTRA4X4_CHROMAU = - 7,12,19,26 -12,16,24,40 -19,24,41,50 -26,40,50,56 - -INTRA4X4_CHROMAV = - 7,12,19,26 -12,16,24,40 -19,24,41,50 -26,40,50,56 - -INTER4X4_LUMA = -11,18,30,43 -18,22,40,50 -30,40,50,52 -43,50,52,55 - -INTER4X4_CHROMAU = -11,18,30,43 -18,22,40,50 -30,40,50,52 -43,50,52,55 - -INTER4X4_CHROMAV = -11,18,30,43 -18,22,40,50 -30,40,50,52 -43,50,52,55 - -INTRA8X8_LUMA = - 6, 9,13,18,25,35,36,37 - 9,10,15,21,32,35,37,41 -13,15,18,23,35,55,58,59 -18,21,23,26,65,58,64,66 -25,32,35,65,66,66,67,70 -35,35,55,58,66,68,70,73 -36,37,58,64,67,70,76,80 -37,41,59,66,70,73,80,85 - -INTRA8X8_CHROMAU = - 6, 9,13,18,25,35,36,37 - 9,10,15,21,32,35,37,41 -13,15,18,23,35,55,58,59 -18,21,23,26,65,58,64,66 -25,32,35,65,66,66,67,70 -35,35,55,58,66,68,70,73 -36,37,58,64,67,70,76,80 -37,41,59,66,70,73,80,85 - -INTRA8X8_CHROMAV = - 6, 9,13,18,25,35,36,37 - 9,10,15,21,32,35,37,41 -13,15,18,23,35,55,58,59 -18,21,23,26,65,58,64,66 -25,32,35,65,66,66,67,70 -35,35,55,58,66,68,70,73 -36,37,58,64,67,70,76,80 -37,41,59,66,70,73,80,85 - -INTER8X8_LUMA = - 9,15,20,29,36,38,42,43 -15,17,22,29,39,43,45,46 -20,22,32,34,47,48,49,50 -29,29,34,44,50,51,52,53 -36,39,47,50,51,52,55,55 -38,43,48,51,52,53,56,58 -42,45,49,52,55,56,55,60 -43,46,50,53,55,58,60,63 - -INTER8X8_CHROMAU = - 9,15,20,29,36,38,42,43 -15,17,22,29,39,43,45,46 -20,22,32,34,47,48,49,50 -29,29,34,44,50,51,52,53 -36,39,47,50,51,52,55,55 -38,43,48,51,52,53,56,58 -42,45,49,52,55,56,55,60 -43,46,50,53,55,58,60,63 - -INTER8X8_CHROMAV = - 9,15,20,29,36,38,42,43 -15,17,22,29,39,43,45,46 -20,22,32,34,47,48,49,50 -29,29,34,44,50,51,52,53 -36,39,47,50,51,52,55,55 -38,43,48,51,52,53,56,58 -42,45,49,52,55,56,55,60 -43,46,50,53,55,58,60,63 - -INTRA16X16_LUMA = - 6, 9,13,18,25,35,36,37 - 9,10,15,21,32,35,37,41 -13,15,18,23,35,55,58,59 -18,21,23,26,65,58,64,66 -25,32,35,65,66,66,67,70 -35,35,55,58,66,68,70,73 -36,37,58,64,67,70,76,80 -37,41,59,66,70,73,80,85 - -INTRA16X16_LUMA_DC = -6 - -INTRA16X16_CHROMAU = - 7, 9,13,18,25,35,36,37 - 9,10,15,21,32,35,37,41 -13,15,18,23,35,55,58,59 -18,21,23,26,65,58,64,66 -25,32,35,65,66,66,67,70 -35,35,55,58,66,68,70,73 -36,37,58,64,67,70,76,80 -37,41,59,66,70,73,80,85 - -INTRA16X16_CHROMAU_DC = -6 - -INTRA16X16_CHROMAV = - 7, 9,13,18,25,35,36,37 - 9,10,15,21,32,35,37,41 -13,15,18,23,35,55,58,59 -18,21,23,26,65,58,64,66 -25,32,35,65,66,66,67,70 -35,35,55,58,66,68,70,73 -36,37,58,64,67,70,76,80 -37,41,59,66,70,73,80,85 - -INTRA16X16_CHROMAV_DC = -6 - -INTER16X16_LUMA = -11,15,20,29,36,38,42,43 -15,17,22,29,39,43,45,46 -20,22,32,34,47,48,49,50 -29,29,34,44,50,51,52,53 -36,39,47,50,51,52,55,55 -38,43,48,51,52,53,56,58 -42,45,49,52,55,56,55,60 -43,46,50,53,55,58,60,63 - -INTER16X16_LUMA_DC = -9 - -INTER16X16_CHROMAU = -11,15,20,29,36,38,42,43 -15,17,22,29,39,43,45,46 -20,22,32,34,47,48,49,50 -29,29,34,44,50,51,52,53 -36,39,47,50,51,52,55,55 -38,43,48,51,52,53,56,58 -42,45,49,52,55,56,55,60 -43,46,50,53,55,58,60,63 - -INTER16X16_CHROMAU_DC = -9 - -INTER16X16_CHROMAV = -11,15,20,29,36,38,42,43 -15,17,22,29,39,43,45,46 -20,22,32,34,47,48,49,50 -29,29,34,44,50,51,52,53 -36,39,47,50,51,52,55,55 -38,43,48,51,52,53,56,58 -42,45,49,52,55,56,55,60 -43,46,50,53,55,58,60,63 - -INTER16X16_CHROMAV_DC = -9 - -INTRA32X32_LUMA = - 7, 9,13,18,25,35,36,37 - 9,10,15,21,32,35,37,41 -13,15,18,23,35,55,58,59 -18,21,23,26,65,58,64,66 -25,32,35,65,66,66,67,70 -35,35,55,58,66,68,70,73 -36,37,58,64,67,70,76,80 -37,41,59,66,70,73,80,85 - -INTRA32X32_LUMA_DC = -6 - -INTRA32X32_CHROMAU = - 7, 9,13,18,25,35,36,37 - 9,10,15,21,32,35,37,41 -13,15,18,23,35,55,58,59 -18,21,23,26,65,58,64,66 -25,32,35,65,66,66,67,70 -35,35,55,58,66,68,70,73 -36,37,58,64,67,70,76,80 -37,41,59,66,70,73,80,85 - -INTRA32X32_CHROMAU_DC = -6 - -INTRA32X32_CHROMAV = - 7, 9,13,18,25,35,36,37 - 9,10,15,21,32,35,37,41 -13,15,18,23,35,55,58,59 -18,21,23,26,65,58,64,66 -25,32,35,65,66,66,67,70 -35,35,55,58,66,68,70,73 -36,37,58,64,67,70,76,80 -37,41,59,66,70,73,80,85 - -INTRA32X32_CHROMAV_DC = -6 - -INTER32X32_LUMA = -11,15,20,29,36,38,42,43 -15,17,22,29,39,43,45,46 -20,22,32,34,47,48,49,50 -29,29,34,44,50,51,52,53 -36,39,47,50,51,52,55,55 -38,43,48,51,52,53,56,58 -42,45,49,52,55,56,55,60 -43,46,50,53,55,58,60,63 - -INTER32X32_LUMA_DC = -9 - -INTER32X32_CHROMAU = -11,15,20,29,36,38,42,43 -15,17,22,29,39,43,45,46 -20,22,32,34,47,48,49,50 -29,29,34,44,50,51,52,53 -36,39,47,50,51,52,55,55 -38,43,48,51,52,53,56,58 -42,45,49,52,55,56,55,60 -43,46,50,53,55,58,60,63 - -INTER32X32_CHROMAU_DC = -9 - -INTER32X32_CHROMAV = -11,15,20,29,36,38,42,43 -15,17,22,29,39,43,45,46 -20,22,32,34,47,48,49,50 -29,29,34,44,50,51,52,53 -36,39,47,50,51,52,55,55 -38,43,48,51,52,53,56,58 -42,45,49,52,55,56,55,60 -43,46,50,53,55,58,60,63 - -INTER32X32_CHROMAV_DC = -9 - -INTRA64X64_LUMA = - 7, 9,13,18,25,35,36,37 - 9,10,15,21,32,35,37,41 -13,15,18,23,35,55,58,59 -18,21,23,26,65,58,64,66 -25,32,35,65,66,66,67,70 -35,35,55,58,66,68,70,73 -36,37,58,64,67,70,76,80 -37,41,59,66,70,73,80,85 - -INTRA64X64_LUMA_DC = -6 - -INTER64X64_LUMA = -11,15,20,29,36,38,42,43 -15,17,22,29,39,43,45,46 -20,22,32,34,47,48,49,50 -29,29,34,44,50,51,52,53 -36,39,47,50,51,52,55,55 -38,43,48,51,52,53,56,58 -42,45,49,52,55,56,55,60 -43,46,50,53,55,58,60,63 - -INTER64X64_LUMA_DC = -9 diff --git a/cfg/sei_vui/alternative_transfer_characteristics.cfg b/cfg/sei_vui/alternative_transfer_characteristics.cfg deleted file mode 100644 index 8b72d975..00000000 --- a/cfg/sei_vui/alternative_transfer_characteristics.cfg +++ /dev/null @@ -1,2 +0,0 @@ -#======== Alternative transfer characteristics SEI message ===================== -SEIPreferredTransferCharacterisics : 18 diff --git a/cfg/sei_vui/ambient_viewing_environment.cfg b/cfg/sei_vui/ambient_viewing_environment.cfg deleted file mode 100644 index 9ac5c6a2..00000000 --- a/cfg/sei_vui/ambient_viewing_environment.cfg +++ /dev/null @@ -1,5 +0,0 @@ -#======== Ambient viewing environment SEI message ===================== -SEIAVEEnabled : 1 -SEIAVEAmbientIlluminance : 100000 -SEIAVEAmbientLightX : 15635 -SEIAVEAmbientLightY : 16450 diff --git a/cfg/sei_vui/content_colour_volume.cfg b/cfg/sei_vui/content_colour_volume.cfg deleted file mode 100644 index b4ea22a8..00000000 --- a/cfg/sei_vui/content_colour_volume.cfg +++ /dev/null @@ -1,17 +0,0 @@ -#======== Content Colour Volume SEI message ===================== -SEICCVEnabled : 1 -SEICCVCancelFlag : 0 -SEICCVPersistenceFlag : 1 -SEICCVPrimariesPresent : 1 -m_ccvSEIPrimariesX0 : 0.300 -m_ccvSEIPrimariesY0 : 0.600 -m_ccvSEIPrimariesX1 : 0.150 -m_ccvSEIPrimariesY1 : 0.060 -m_ccvSEIPrimariesX2 : 0.640 -m_ccvSEIPrimariesY2 : 0.330 -SEICCVMinLuminanceValuePresent : 1 -SEICCVMinLuminanceValue : 0.0 -SEICCVMaxLuminanceValuePresent : 1 -SEICCVMaxLuminanceValue : 0.1 -SEICCVAvgLuminanceValuePresent : 1 -SEICCVAvgLuminanceValue : 0.01 diff --git a/cfg/sei_vui/content_light_level.cfg b/cfg/sei_vui/content_light_level.cfg deleted file mode 100644 index 97129b5d..00000000 --- a/cfg/sei_vui/content_light_level.cfg +++ /dev/null @@ -1,4 +0,0 @@ -#======== Content Light Level SEI message ===================== -SEICLLEnabled : 1 -SEICLLMaxContentLightLevel : 4000 -SEICLLMaxPicAvgLightLevel : 0 diff --git a/cfg/sei_vui/equirectangular.cfg b/cfg/sei_vui/equirectangular.cfg deleted file mode 100644 index c448477d..00000000 --- a/cfg/sei_vui/equirectangular.cfg +++ /dev/null @@ -1,9 +0,0 @@ -#======== Equirectangular Projection SEI message ===================== -SEIErpEnabled : 1 -SEIErpCancelFlag : 0 -SEIErpPersistenceFlag : 1 -SEIErpGuardBandFlag : 1 -SEIErpGuardBandType : 0 -SEIErpLeftGuardBandWidth : 254 -SEIErpRightGuardBandWidth : 254 - diff --git a/cfg/sei_vui/film_grain_characterstics.cfg b/cfg/sei_vui/film_grain_characterstics.cfg deleted file mode 100644 index d8c9c739..00000000 --- a/cfg/sei_vui/film_grain_characterstics.cfg +++ /dev/null @@ -1,11 +0,0 @@ -#======== Film grain characteristics SEI message ===================== -SEIFGCEnabled : 1 -SEIFGCCancelFlag : 0 -SEIFGCPersistenceFlag : 1 -SEIFGCModelID : 0 # 0: frequency filtering; 1: auto-regression; 2-3 are reserved -SEIFGCSepColourDescPresentFlag : 0 # if not 0, need to specify separate colour description (not implemented in current encoder cmd line) -SEIFGCBlendingModeID : 0 # 0: additive; 1: multipliciative -SEIFGCLog2ScaleFactor : 0 -SEIFGCCompModelPresentComp0 : 0 # if not 0, need to specify model for comp 0 (not implemented in current encoder cmd line) -SEIFGCCompModelPresentComp1 : 0 # if not 0, need to specify model for comp 1 (not implemented in current encoder cmd line) -SEIFGCCompModelPresentComp2 : 0 # if not 0, need to specify model for comp 2 (not implemented in current encoder cmd line) diff --git a/cfg/sei_vui/frame_packing.cfg b/cfg/sei_vui/frame_packing.cfg deleted file mode 100644 index 0a8406dc..00000000 --- a/cfg/sei_vui/frame_packing.cfg +++ /dev/null @@ -1,6 +0,0 @@ -#======== Frame Packing SEI message ===================== -SEIFramePacking : 1 -SEIFramePackingId : 0 -SEIFramePackingType : 3 -SEIFramePackingQuincunx : 1 -SEIFramePackingInterpretation : 0 diff --git a/cfg/sei_vui/generalized_cubemap_projection.cfg b/cfg/sei_vui/generalized_cubemap_projection.cfg deleted file mode 100644 index 7ec5b858..00000000 --- a/cfg/sei_vui/generalized_cubemap_projection.cfg +++ /dev/null @@ -1,17 +0,0 @@ -#======== Generalized Cubemap Projection SEI message ===================== -SEIGcmpEnabled : 1 -SEIGcmpCancelFlag : 0 -SEIGcmpPersistenceFlag : 1 -SEIGcmpPackingType : 2 -SEIGcmpMappingFunctionType : 2 -SEIGcmpFaceIndex : 5 0 4 3 1 2 -SEIGcmpFaceRotation : 2 2 2 2 2 2 -SEIGcmpFunctionCoeffU : 0.28 0.28 0.28 0.28 0.28 0.28 -SEIGcmpFunctionUAffectedByVFlag : 0 0 0 0 0 0 -SEIGcmpFunctionCoeffV : 0.4 0.4 0.4 0.28 0.4 0.28 -SEIGcmpFunctionVAffectedByUFlag : 1 1 1 0 1 0 -SEIGcmpGuardBandFlag : 1 -SEIGcmpGuardBandType : 2 -SEIGcmpGuardBandBoundaryExteriorFlag : 1 -SEIGcmpGuardBandSamplesMinus1 : 15 - diff --git a/cfg/sei_vui/mastering_display_colour_volume.cfg b/cfg/sei_vui/mastering_display_colour_volume.cfg deleted file mode 100644 index 4566d400..00000000 --- a/cfg/sei_vui/mastering_display_colour_volume.cfg +++ /dev/null @@ -1,6 +0,0 @@ -#======== Mastering Display Colour Volume SEI message ===================== -SEIMasteringDisplayColourVolume : 1 -SEIMasteringDisplayMaxLuminance : 10000 -SEIMasteringDisplayMinLuminance : 0 -SEIMasteringDisplayPrimaries : 0 50000 0 0 50000 0 -SEIMasteringDisplayWhitePoint : 16667 16667 diff --git a/cfg/sei_vui/omni_viewport.cfg b/cfg/sei_vui/omni_viewport.cfg deleted file mode 100644 index 8a61f4db..00000000 --- a/cfg/sei_vui/omni_viewport.cfg +++ /dev/null @@ -1,12 +0,0 @@ -#======== Omni Viewport SEI message ===================== -SEIOmniViewportEnabled : 1 -SEIOmniViewportId : 0 -SEIOmniViewportCancelFlag : 0 -SEIOmniViewportPersistenceFlag : 1 -SEIOmniViewportCntMinus1 : 2 -SEIOmniViewportAzimuthCentre : -5898240 5898240 0 -SEIOmniViewportElevationCentre : -5898240 5898240 0 -SEIOmniViewportTiltCentre : -11796480 5898240 0 -SEIOmniViewportHorRange : 2949120 2949120 2949120 -SEIOmniViewportVerRange : 2949120 2949120 2949120 - diff --git a/cfg/sei_vui/parameter_sets_inclusion_indication.cfg b/cfg/sei_vui/parameter_sets_inclusion_indication.cfg deleted file mode 100644 index 7849a451..00000000 --- a/cfg/sei_vui/parameter_sets_inclusion_indication.cfg +++ /dev/null @@ -1,2 +0,0 @@ -SEIParameterSetsInclusionIndication: 1 -SEISelfContainedClvsFlag: 1 diff --git a/cfg/sei_vui/region_wise_packing.cfg b/cfg/sei_vui/region_wise_packing.cfg deleted file mode 100644 index 7f04516d..00000000 --- a/cfg/sei_vui/region_wise_packing.cfg +++ /dev/null @@ -1,27 +0,0 @@ -#======== Region-wise packing SEI message ===================== -SEIRwpEnabled : 1 -SEIRwpCancelFlag : 0 -SEIRwpPersistenceFlag : 1 -SEIRwpConstituentPictureMatchingFlag : 1 -SEIRwpNumPackedRegions : 6 -SEIRwpProjPictureWidth : 2048 -SEIRwpProjPictureHeight : 1024 -SEIRwpPackedPictureWidth : 1536 -SEIRwpPackedPictureHeight : 768 -SEIRwpTransformType : 0 1 2 3 4 5 -SEIRwpGuardBandFlag : 1 1 1 1 1 1 -SEIRwpProjRegionWidth : 512 512 512 512 512 512 -SEIRwpProjRegionHeight : 128 128 128 128 128 128 -SEIRwpProjRegionTop : 256 256 256 256 256 256 -SEIRwpProjRegionLeft : 0 256 512 768 1024 1280 -SEIRwpPackedRegionWidth : 512 512 512 384 384 384 -SEIRwpPackedRegionHeight : 128 128 128 192 192 192 -SEIRwpPackedRegionTop : 64 64 64 64 64 64 -SEIRwpPackedRegionLeft : 32 32 32 32 32 32 -SEIRwpLeftGuardBandWidth : 64 64 64 64 64 64 -SEIRwpRightGuardBandWidth : 128 128 128 128 128 128 -SEIRwpTopGuardBandHeight : 192 192 192 192 192 192 -SEIRwpBottomGuardBandHeight : 255 255 255 255 255 255 -SEIRwpGuardBandNotUsedForPredFlag : 1 1 1 1 1 1 -SEIRwpGuardBandType : 0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3 0 0 0 0 1 1 1 1 - diff --git a/cfg/sei_vui/sample_aspect_ratio.cfg b/cfg/sei_vui/sample_aspect_ratio.cfg deleted file mode 100644 index b3354747..00000000 --- a/cfg/sei_vui/sample_aspect_ratio.cfg +++ /dev/null @@ -1,6 +0,0 @@ -SEISampleAspectRatioInfo: 1 -SEISARICancelFlag: 0 -SEISARIPersistenceFlag: 1 -SEISARIAspectRatioIdc: 255 -SEISARISarWidth: 1 -SEISARISarHeight: 1 diff --git a/cfg/sei_vui/sphere_rotation.cfg b/cfg/sei_vui/sphere_rotation.cfg deleted file mode 100644 index be144e63..00000000 --- a/cfg/sei_vui/sphere_rotation.cfg +++ /dev/null @@ -1,8 +0,0 @@ -#======== Sphere Rotation SEI message ===================== -SEISphereRotationEnabled : 1 -SEISphereRotationCancelFlag : 0 -SEISphereRotationPersistenceFlag : 1 -SEISphereRotationYaw : -5898240 -SEISphereRotationPitch : -5898240 -SEISphereRotationRoll : -11796480 - diff --git a/cfg/sei_vui/subpicture_level.cfg b/cfg/sei_vui/subpicture_level.cfg deleted file mode 100644 index 5c59cbf1..00000000 --- a/cfg/sei_vui/subpicture_level.cfg +++ /dev/null @@ -1,6 +0,0 @@ -SEISubpicLevelInfoEnabled: 1 -SEISubpicLevelInfoRefLevels: 4.1 # list of levels to be included -SEISubpicLevelInfoExplicitFraction: 1 # enable sending of explicit fractions -SEISubpicLevelInfoNumSubpics: 2 # number of subpictures - needs to be aligned with NumSubpics -SEISubpicLevelInfoRefLevelFractions: 40 30 # list of fractions: iterates over subpictures and levels (subpictures first) - diff --git a/cfg/sei_vui/timing.cfg b/cfg/sei_vui/timing.cfg deleted file mode 100644 index 12125434..00000000 --- a/cfg/sei_vui/timing.cfg +++ /dev/null @@ -1,4 +0,0 @@ -SEIBufferingPeriod: 1 -SEIPictureTiming: 1 -HrdParametersPresent: 1 -RCCpbSize: 2000 diff --git a/cfg/sei_vui/vui_HD.cfg b/cfg/sei_vui/vui_HD.cfg deleted file mode 100644 index 394aa648..00000000 --- a/cfg/sei_vui/vui_HD.cfg +++ /dev/null @@ -1,19 +0,0 @@ -VuiParametersPresent: 1 // enable VUI -AspectRatioInfoPresent: 1 // enable presence of sample aspect ratio information -AspectRatioIdc: 1 // sample aspect ratio pre-defined types according to Rec. ITU-T H.273 | ISO/IEC 23091-2 -SarWidth: 1 // sample aspect ratio width, if AspectRatioIdc is equal to 255 -SarHeight: 1 // sample aspect ratio height, if AspectRatioIdc is equal to 255 -ColourDescriptionPresent: 1 // enable presence of colour description information -ColourPrimaries: 1 // the source colour primaries according to Rec. ITU-T H.273 | ISO/IEC 23091-2 -TransferCharacteristics: 1 // transfer characteristics function according to Rec. ITU-T H.273 | ISO/IEC 23091-2 -MatrixCoefficients: 1 // the formulae used in deriving luma and chroma signals acc. to Rec. ITU-T H.273 | ISO/IEC 23091-2 -VideoFullRange: 0 // scaling and offset values applied according to Rec. ITU-T H.273 | ISO/IEC 23091-2 -ProgressiveSource: 1 // indicates if content is progressive -InterlacedSource: 0 // indicates if content is interlaced -ChromaLocInfoPresent: 1 // enable presence of chroma location information -ChromaSampleLocTypeTopField: 0 // the location of chroma sample top field -ChromaSampleLocTypeBottomField: 0 // the location of chroma sample bottom field -ChromaSampleLocType: 0 // the location of chroma sample frame -OverscanInfoPresent: 1 // enable presence of overscan information -OverscanAppropriate: 0 // indicates if the cropped decoded pictures output are suitable for display using overscan - diff --git a/cfg/sei_vui/vui_UHD_PQ.cfg b/cfg/sei_vui/vui_UHD_PQ.cfg deleted file mode 100644 index ec337fe5..00000000 --- a/cfg/sei_vui/vui_UHD_PQ.cfg +++ /dev/null @@ -1,19 +0,0 @@ -VuiParametersPresent: 1 // enable VUI -AspectRatioInfoPresent: 1 // enable presence of sample aspect ratio information -AspectRatioIdc: 1 // sample aspect ratio pre-defined types according to Rec. ITU-T H.273 | ISO/IEC 23091-2 -SarWidth: 1 // sample aspect ratio width, if AspectRatioIdc is equal to 255 -SarHeight: 1 // sample aspect ratio height, if AspectRatioIdc is equal to 255 -ColourDescriptionPresent: 1 // enable presence of colour description information -ColourPrimaries: 9 // the source colour primaries according to Rec. ITU-T H.273 | ISO/IEC 23091-2 -TransferCharacteristics: 16 // transfer characteristics function according to Rec. ITU-T H.273 | ISO/IEC 23091-2 -MatrixCoefficients: 9 // the formulae used in deriving luma and chroma signals acc. to Rec. ITU-T H.273 | ISO/IEC 23091-2 -VideoFullRange: 0 // scaling and offset values applied according to Rec. ITU-T H.273 | ISO/IEC 23091-2 -ProgressiveSource: 1 // Indicates if content is progressive -InterlacedSource: 0 // Indicates if content is interlaced -ChromaLocInfoPresent: 1 // enable presence of chroma location information -ChromaSampleLocTypeTopField: 2 // the location of chroma sample top field -ChromaSampleLocTypeBottomField: 2 // the location of chroma sample bottom field -ChromaSampleLocType: 2 // the location of chroma sample frame -OverscanInfoPresent: 1 // enable presence of overscan information -OverscanAppropriate: 0 // indicates if the cropped decoded pictures output are suitable for display using overscan - diff --git a/cmake/CMakeBuild/bin/cmake.py b/cmake/CMakeBuild/bin/cmake.py deleted file mode 100755 index f9131768..00000000 --- a/cmake/CMakeBuild/bin/cmake.py +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/python -# -# cmake.py -# - -import pyhhi.build.common.util -import pyhhi.build.app.cmk - - -app = pyhhi.build.app.cmk.CMakeLauncherApp() -pyhhi.build.common.util.exec_main_default_try(app) diff --git a/cmake/CMakeBuild/bin/cmake_docutil.py b/cmake/CMakeBuild/bin/cmake_docutil.py deleted file mode 100755 index fce08866..00000000 --- a/cmake/CMakeBuild/bin/cmake_docutil.py +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/python -# -# cmake_docutil.py -# - -import pyhhi.build.app.cmkdocapp -import pyhhi.build.common.util - - -app = pyhhi.build.app.cmkdocapp.CMakeDocUtilApp() -pyhhi.build.common.util.exec_main_default_try(app) diff --git a/cmake/CMakeBuild/bin/cmakebuild_update.py b/cmake/CMakeBuild/bin/cmakebuild_update.py deleted file mode 100755 index 3e3a9119..00000000 --- a/cmake/CMakeBuild/bin/cmakebuild_update.py +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/python -# -# cmakebuild_update.py -# - -import pyhhi.build.app.cmbldup -import pyhhi.build.common.util - - -app = pyhhi.build.app.cmbldup.CMakeBuildUpdateApp() -pyhhi.build.common.util.exec_main_default_try(app) diff --git a/cmake/CMakeBuild/bin/pyhhi/__init__.py b/cmake/CMakeBuild/bin/pyhhi/__init__.py deleted file mode 100755 index e69de29b..00000000 diff --git a/cmake/CMakeBuild/bin/pyhhi/build/__init__.py b/cmake/CMakeBuild/bin/pyhhi/build/__init__.py deleted file mode 100755 index e69de29b..00000000 diff --git a/cmake/CMakeBuild/bin/pyhhi/build/app/__init__.py b/cmake/CMakeBuild/bin/pyhhi/build/app/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/cmake/CMakeBuild/bin/pyhhi/build/app/cmbldup.py b/cmake/CMakeBuild/bin/pyhhi/build/app/cmbldup.py deleted file mode 100755 index 9626e1a0..00000000 --- a/cmake/CMakeBuild/bin/pyhhi/build/app/cmbldup.py +++ /dev/null @@ -1,391 +0,0 @@ - -from __future__ import print_function - -import argparse -import logging -import os -import re -import subprocess -import sys - -import pyhhi.build.common.util as util -import pyhhi.build.common.ver as ver -import pyhhi.build.vcsutil as vcsutil - -from pyhhi.build.common.system import SystemInfo -from pyhhi.build.common.error import InvalidInputParameterError - - -class CMakeBuildUpdateAppParams(object): - - def __init__(self): - self.top_dir = None - self.update_prepare = True - self.cmakebuild_repo = 'git@vigitlab.fe.hhi.de:git/CMakeBuildCore.git' - # A CMakeBuild tag of None means latest tag. - self.cmakebuild_tag = None - - -class CMakeBuildUpdateApp(object): - - def __init__(self): - self._logger = logging.getLogger(__name__) - self._sys_info = SystemInfo() - self._prog_name = os.path.basename(sys.argv[0]) - self._prog_name_full = os.path.normpath(os.path.abspath(sys.argv[0])) - self._list_summary = True - self._summary_lines = [] - self._git_helper = vcsutil.GitHelper() - self._git_executable = self._git_helper.get_git_executable() - - # List of python modules this script depends on. - self._py_mod_list = ['pyhhi.build.app.cmbldup', - 'pyhhi.build.vcsutil', - 'pyhhi.build.common.cmbldver', - 'pyhhi.build.common.error', - 'pyhhi.build.common.system', - 'pyhhi.build.common.util', - 'pyhhi.build.common.ver'] - - self._usage = """ -%(prog)s [options] [top_dir] - -%(prog)s updates a CMakeBuild Git subtree embedded inside a Git standard workspace. -The update procedure requires a clean Git working directory. Unfinished work must be -saved somehow; e.g. use git stash .. or anything else. - -The optional positional argument allows you to update an existing Git workspace out-of-tree. -""" - - self._epilog = """ -""" - - def __call__(self, argv=None): - if argv is None: - self.main(sys.argv[1:]) - else: - self.main(argv) - - def main(self, argv): - params = self._parse_command_line(argv) - self.cmakebuild_update(params) - - def cmakebuild_update(self, params): - - initial_work_dir = os.getcwd() - # (Re)create GitHelper in case the log level has been changed. - self._git_helper = vcsutil.GitHelper() - params = self._check_params(params) - if params.top_dir is None: - params.top_dir = util.get_top_dir() - self._summary_lines = [] - if params.update_prepare: - print("{}: preparing CMakeBuild update ...".format(self._prog_name)) - - cmakebuild_version_current = self._get_current_cmakebuild_version(params.top_dir) - if cmakebuild_version_current is None: - print("{}: no existing CMakeBuild version found.".format(params.top_dir)) - - if not self._is_workspace_clean(params.top_dir): - return - - if params.cmakebuild_tag is None: - cmakebuild_tag = self._git_helper.get_latest_cmakebuild_tag(params.cmakebuild_repo) - - if cmakebuild_version_current and (ver.version_compare(cmakebuild_version_current, ver.version_tuple_from_str(cmakebuild_tag)) == 0): - print("{}: CMakeBuild is up to date, nothing to be done.".format(params.top_dir)) - return - else: - # Validate CMakeBuild tag - cmakebuild_tags = self._git_helper.get_remote_tags(params.cmakebuild_repo) - if params.cmakebuild_tag not in cmakebuild_tags: - raise InvalidInputParameterError("requested tag {0} does not exists in {1}.".format(params.cmakebuild_tag, params.cmakebuild_repo)) - cmakebuild_tag = params.cmakebuild_tag - if cmakebuild_version_current and (ver.version_compare(ver.version_tuple_from_str(cmakebuild_tag), cmakebuild_version_current) <= 0): - print("{}: CMakeBuild is up to date, nothing to be done.".format(params.top_dir)) - return - - install_dir = os.path.join(params.top_dir, 'build', 'cmakebuild_update') - self._install_self(install_dir) - - update_script = os.path.join(install_dir, self._prog_name) - # Prepare execv argument vector to call self with different arguments using the current python executable. - if self._sys_info.is_windows(): - child_args = [self._sys_info.get_short_path(self._sys_info.get_python_executable())] - else: - child_args = [self._sys_info.get_python_executable()] - child_args.extend([update_script, '--update']) - if cmakebuild_tag: - child_args.extend(['-t', cmakebuild_tag]) - if params.cmakebuild_repo: - child_args.extend(['--cmakebuild-repo', params.cmakebuild_repo]) - - # Add currrent log option to child_args[] to propagate the current log option to the child process. - log_level = self._logger.getEffectiveLevel() - log_level_str = None - if log_level == logging.DEBUG: - log_level_str = 'debug' - elif log_level == logging.INFO: - log_level_str = 'info' - elif log_level == logging.WARNING: - log_level_str = 'warning' - elif log_level == logging.ERROR: - log_level_str = 'error' - elif log_level == logging.CRITICAL: - log_level_str = 'critical' - if log_level_str is not None: - child_args.append('--log={}'.format(log_level_str)) - - child_args.append(params.top_dir) - os.chdir(params.top_dir) - if self._sys_info.is_windows(): - # Unfortunately, there are issues with os.execv() on Windows and therefore a subprocess call is used instead. - util.subproc_check_call_flushed(child_args) - else: - # execv() is preferred as the child is likely to remove python files just being executed - # by the current python process. - os.execv(child_args[0], child_args) - else: - try: - print("{}: updating CMakeBuild in {} to {}".format(self._prog_name, params.top_dir, params.cmakebuild_tag)) - os.chdir(params.top_dir) - if not self._is_workspace_clean(): - return - - self._append_item_to_summary("Git workspace:", params.top_dir) - if self._list_summary: - cmakebuild_version_current = self._get_current_cmakebuild_version(params.top_dir) - if cmakebuild_version_current is not None: - self._append_item_to_summary("Current CMakeBuild version:", "{}-{:d}".format(ver.version_tuple_to_str(cmakebuild_version_current[:3]), cmakebuild_version_current[-1])) - self._append_item_to_summary("New CMakeBuild version:", params.cmakebuild_tag) - - # Inventory of CMakeBuild to remember existing directories to be removed later on. - (git_cmakebuild_dirs, cmakebuild_dirs) = self._get_git_cmakebuild_dirs(params.top_dir) - if params.cmakebuild_tag in git_cmakebuild_dirs: - git_cmakebuild_dirs.remove(params.cmakebuild_tag) - if params.cmakebuild_tag in cmakebuild_dirs: - cmakebuild_dirs.remove(params.cmakebuild_tag) - # print("found existing Git CMakeBuild subdirs:", git_cmakebuild_dirs) - # print("found existing CMakeBuild subdirs:", cmakebuild_dirs) - - # Add new CMakeBuild subtree - self._add_cmakebuild_to_git_repo(params.cmakebuild_tag, params.cmakebuild_repo) - - # Update .svnimportprops in case is does exist. - svnimportprops_file = os.path.join(params.top_dir, '.svnimportprops') - svnimportprops_modified = self._update_svnimportprops(svnimportprops_file, params.cmakebuild_tag) - - for dname in git_cmakebuild_dirs: - git_argv = [self._git_executable, 'rm', '-r', os.path.join('CMakeBuild', dname)] - util.subproc_check_call_flushed(git_argv) - if svnimportprops_modified or git_cmakebuild_dirs: - # Need a git commit if '.svnimportprops' has been updated or git rm -r has been launched. - git_comment = [] - if git_cmakebuild_dirs: - git_comment.append("rm -r CMakeBuild/{}".format(','.join(git_cmakebuild_dirs))) - if svnimportprops_modified: - git_comment.append("modifying {}".format('.svnimportprops')) - git_argv = [self._git_executable, 'commit', '-am', '{}: {}'.format(self._prog_name, ', '.join(git_comment))] - util.subproc_check_call_flushed(git_argv) - - # Check again to get rid of any python cache files - cmakebuild_dirs.extend(git_cmakebuild_dirs) - for dname in cmakebuild_dirs: - dname_path = os.path.join(params.top_dir, 'CMakeBuild', dname) - if os.path.exists(dname_path): - util.rmtree(dname_path) - - print("{}: finished updating CMakeBuild in {} to {}".format(self._prog_name, params.top_dir, params.cmakebuild_tag)) - - if self._list_summary: - print("\n{0:^80}".format("Summary")) - print("{0:^80}".format("=======")) - for line in self._summary_lines: - print(line) - finally: - pass - os.chdir(initial_work_dir) - - def _parse_command_line(self, argv): - - params = CMakeBuildUpdateAppParams() - - parser = argparse.ArgumentParser(usage=self._usage, epilog=self._epilog, formatter_class=argparse.RawDescriptionHelpFormatter) - - parser.add_argument("top_dir", action="store", nargs='?', default=None, - help="specifies a Git workspace to work on. By default the scripts installation path will be used to deduce the workspace.") - - util.app_args_add_log_level(parser) - - parser.add_argument("-t", "--tag", action="store", dest="cmakebuild_tag", metavar="TAG", - help="specifies a CMakeBuild tag to be used. If omitted the latest release tag will be used.") - - parser.add_argument("--cmakebuild-repo", action="store", dest="cmakebuild_repo", metavar="REPO", default=params.cmakebuild_repo, - help="specifies an alternative CMakeBuild repository overriding %(default)s." ) - - parser.add_argument("--update", action="store_true", dest="update", default=False, - help="execute cmakebuild update, internal option reserved for the os.execv() machinery.") - - args = parser.parse_args(argv) - - # configure the python logger - util.app_configure_logging(args.log_level) - - if args.top_dir: - params.top_dir = os.path.normpath(os.path.abspath(args.top_dir)) - if args.cmakebuild_tag: - params.cmakebuild_tag = args.cmakebuild_tag - if args.cmakebuild_repo: - params.cmakebuild_repo = args.cmakebuild_repo - if args.update: - params.update_prepare = False - - return params - - def _check_params(self, params): - params.cmakebuild_repo = self._check_git_url(params.cmakebuild_repo) - if params.top_dir: - if not os.path.exists(params.top_dir): - raise InvalidInputParameterError("Git workspace {} does not exist.".format(params.top_dir)) - if not os.path.exists(os.path.join(params.top_dir, '.git')): - raise InvalidInputParameterError("Workspace {} does not seem to be a Git workspace.".format(params.top_dir)) - return params - - def _check_git_url(self, git_url): - vcs_url = vcsutil.VcsUrl(git_url) - proto = vcs_url.get_protocol() - if proto in ['ssh', 'https']: - # Normalize a remote Git URL to end with .git even if specified without the extension. - res_path = vcs_url.get_resource_path() - if not res_path.endswith('.git'): - vcs_url.set_resource_path("{}.git".format(res_path)) - else: - raise InvalidInputParameterError("Git URL {0} is not supported yet.".format(git_url)) - # Normalize all URLs. - git_url = str(vcs_url) - self._logger.debug("returning url={0}".format(git_url)) - return git_url - - def _install_self(self, install_dir): - script_installer = self._create_script_installer() - # print("py_mod_list:", self._py_mod_list) - script_installer.install_script(install_dir, self._prog_name_full, self._py_mod_list) - - def _create_script_installer(self): - import pyhhi.build.common.bldtools - script_installer = pyhhi.build.common.bldtools.BuildScriptInstaller(verbose=True) - return script_installer - - def _get_current_cmakebuild_version(self, top_dir): - assert os.path.exists(top_dir) - cmakebuild_top_dir = os.path.join(top_dir, 'CMakeBuild') - if not os.path.exists(cmakebuild_top_dir): - return None - re_version_dir = re.compile(r'^\d+[0-9.]+-\d+$') - version_list = [] - for fname in os.listdir(cmakebuild_top_dir): - if os.path.isdir(os.path.join(cmakebuild_top_dir, fname)): - if re_version_dir.match(fname) and os.path.exists(os.path.join(cmakebuild_top_dir, fname, 'CMakeBuild', 'bin', 'cmake.py')): - version_list.append(ver.version_tuple_from_str(fname)) - if not version_list: - return None - if len(version_list) > 1: - raise InvalidInputParameterError("Workspace {} contains multiple CMakeBuild versions, please update manually.".format(top_dir)) - self._logger.debug("found CMakeBuild {} in {}".format(ver.version_tuple_to_str(version_list[0]), top_dir)) - return version_list[0] - - def _get_git_cmakebuild_dirs(self, top_dir): - assert os.path.exists(top_dir) - cmakebuild_top_dir = os.path.join(top_dir, 'CMakeBuild') - if not os.path.exists(cmakebuild_top_dir): - return [] - - re_version_dir = re.compile(r'^\d+[0-9.]+-\d+$') - git_cmakebuild_version_dirs = [] - cmakebuild_version_dirs = [] - for fname in os.listdir(cmakebuild_top_dir): - if os.path.isdir(os.path.join(cmakebuild_top_dir, fname)): - if re_version_dir.match(fname): - git_argv = [self._git_executable, 'ls-files', os.path.join('CMakeBuild', fname)] - retv = subprocess.check_output(git_argv, universal_newlines=True) - retv = retv.lstrip().rstrip() - if retv != '': - git_cmakebuild_version_dirs.append(fname) - else: - cmakebuild_version_dirs.append(fname) - return git_cmakebuild_version_dirs, cmakebuild_version_dirs - - def _is_workspace_clean(self, top_dir=None): - if top_dir: - initial_work_dir = os.getcwd() - os.chdir(top_dir) - else: - initial_work_dir = None - top_dir = os.getcwd() - git_argv = [self._git_executable, 'status', '-b', '--porcelain'] - retv = subprocess.check_output(git_argv, universal_newlines=True) - retv = retv.lstrip().rstrip() - status_lines = retv.splitlines() - if status_lines[0].startswith('## HEAD (no branch)'): - raise InvalidInputParameterError("Git workspace {} has detached HEAD, not upgradable.".format(top_dir)) - if len(status_lines) > 1: - raise InvalidInputParameterError("Git workspace {} is not clean, please check.".format(top_dir)) - if initial_work_dir: - os.chdir(initial_work_dir) - return True - - def _add_cmakebuild_to_git_repo(self, cmakebuild_tag, cmakebuild_repo): - - self._logger.info("using CMakeBuild tag {} as subtree.".format(cmakebuild_tag)) - # - # Extra annoying step to convince git subtree the working dir is clean - # - git_argv = [self._git_executable, 'checkout'] - self._git_helper.trace_git_command(git_argv) - util.subproc_check_call_flushed(git_argv) - - subtree_prefix = "CMakeBuild/{0}".format(cmakebuild_tag) - git_argv = [self._git_executable, 'subtree', 'add', '-P', subtree_prefix, '--squash', '-m', "{0}: creates subtree -P {1} tag={2}".format(self._prog_name, subtree_prefix, cmakebuild_tag), cmakebuild_repo, cmakebuild_tag] - util.subproc_check_call_flushed(git_argv) - - def _update_svnimportprops(self, svnimportprops_file, cmakebuild_tag, svnimportprops_file_new=None): - svnimportprops_modified = False - if not os.path.exists(svnimportprops_file): - return svnimportprops_modified - svnprop_file_parser = vcsutil.SvnPropFileParser() - svnprops = svnprop_file_parser.parse_property_file(svnimportprops_file) - if not svnprops.has_property('svn:externals'): - svnimportprops_modified = True - svnprops.add_property('svn:externals', ["/svn/svn_CMakeBuild/tags/{}/CMakeBuild CMakeBuild".format(cmakebuild_tag)]) - else: - svnprop_externals = svnprops.get_property('svn:externals') - re_external_cmakebuild = re.compile(r'^/svn/svn_CMakeBuild/tags/([^/]+)/CMakeBuild\s+') - svnprop_externals_new = [] - for line in svnprop_externals: - if (line == '') or line.isspace(): - continue - self._logger.debug("processing line {}".format(line)) - re_match = re_external_cmakebuild.match(line) - if re_match: - cmakebuild_tag_existing = re_match.group(1) - self._logger.debug("{}: found CMakeBuild tag {}".format(svnimportprops_file, cmakebuild_tag_existing)) - if cmakebuild_tag_existing != cmakebuild_tag: - svnimportprops_modified = True - svnprop_externals_new.append("/svn/svn_CMakeBuild/tags/{}/CMakeBuild CMakeBuild".format(cmakebuild_tag)) - else: - svnprop_externals_new.append(line) - else: - svnprop_externals_new.append(line) - if svnimportprops_modified: - svnprops.update_property('svn:externals', svnprop_externals_new) - if svnimportprops_modified: - self._logger.debug("{}: updating changed svn:externals".format(svnimportprops_file)) - if svnimportprops_file_new is None: - svnimportprops_file_new = svnimportprops_file - with open(svnimportprops_file_new, 'w') as f: - svnprops_str = str(svnprops) - f.write(svnprops_str) - return svnimportprops_modified - - def _append_item_to_summary(self, item, value): - self._summary_lines.append("{0:<30} {1}".format(item, value)) diff --git a/cmake/CMakeBuild/bin/pyhhi/build/app/cmk.py b/cmake/CMakeBuild/bin/pyhhi/build/app/cmk.py deleted file mode 100755 index f231c70c..00000000 --- a/cmake/CMakeBuild/bin/pyhhi/build/app/cmk.py +++ /dev/null @@ -1,366 +0,0 @@ - -from __future__ import print_function - -import argparse -import logging -import os -import re -import shutil -import sys - -import pyhhi.build.common.system as system -import pyhhi.build.common.util as util -import pyhhi.build.common.ver as ver -import pyhhi.build.common.bldtools as bldtools -import pyhhi.build.cmksupp as cmksupp -from pyhhi.build.common.bldtools import BuildScriptInstaller -from pyhhi.build.common.error import InvalidCommandLineArgumentError - - -class CMakeLauncherApp(object): - - def __init__(self): - self._logger = logging.getLogger(__name__) - self._sys_info = system.SystemInfo() - self._cmake_launcher = None - self._dict_generator_choice = {'linux': ['umake', 'ninja'], - 'macosx': ['xcode', 'umake', 'ninja'], - 'windows': ['vs16', 'vs15', 'vs14', 'vs12', 'vs11', 'vs10', 'umake', 'mgwmake', 'ninja']} - self._top_dir = None - self._cmake_mod_list = ['pyhhi.build.app.cmk', - 'pyhhi.build.cmkfnd', - 'pyhhi.build.cmksupp', - 'pyhhi.build.common.bldtools', - 'pyhhi.build.common.cmbldver', - 'pyhhi.build.common.error', - 'pyhhi.build.common.system', - 'pyhhi.build.common.util', - 'pyhhi.build.common.ver'] - - def __call__(self): - self.main(sys.argv[1:]) - - def main(self, argv): - # self._print_env() - (params, cmake_argv) = self._parse_command_line(argv) - if params.install_dir: - top_dir = util.get_top_dir() - os.chdir(top_dir) - script_dir = util.get_script_dir() - # print("sys.path: ", sys.path) - script_installer = BuildScriptInstaller(verbose=True) - script_installer.install_script(params.install_dir, os.path.join(script_dir, 'cmake.py'), self._cmake_mod_list) - elif params.py_cache_dirs: - for dname in params.py_cache_dirs: - if not os.path.exists(dname): - continue - if not os.path.isdir(dname): - continue - self._remove_pycache(dname) - else: - # Apply additional checks on params. - self._check_params(params) - if self._sys_info.is_linux() or self._sys_info.is_macosx(): - self._remove_make_env_vars() - # Delayed construction to get the current log level at construction time of CMakeLauncher. - self._cmake_launcher = cmksupp.CMakeLauncher() - self._cmake_launcher.launch(params, cmake_argv) - - def _check_params(self, params): - pass - - def _print_env(self): - env_var_list = list(os.environ.keys()) - env_var_list.sort() - for env_var in env_var_list: - print(env_var, os.environ[env_var]) - # print(env_var) - # if env_var.startswith('MAKE') or (env_var == 'MFLAGS'): - # print(env_var) - # sys.exit(0) - - def _remove_make_env_vars(self): - make_env_vars = [] - for env_var in os.environ.keys(): - if env_var.startswith('MAKE') or (env_var == 'MFLAGS'): - make_env_vars.append(env_var) - for env_var in make_env_vars: - self._logger.debug("deleting environment variable: %s", env_var) - del os.environ[env_var] - - def _parse_command_line(self, argv): - - _usage = """ -%(prog)s [options] [variant=debug,release,relwithdebinfo,minsizerel] [link=static,shared] [toolset=] [address-model=32] - -%(prog)s is a script front end to cmake to simplify its usage on Linux, -Windows, MacOSX using cmake's generators "Unix Makefiles", "Ninja", "Xcode" and -"Visual Studio 16 - Visual Studio 10" and its compilers. - -arguments: - variant: debug if not specified - link: static if not specified - toolset: default c++ compiler if not specified - examples/windows: msvc-19.1x, msvc-19.0, msvc-18.0, msvc-17.0, msvc-16.0, intel, gcc - examples/linux: gcc-4.9, gcc-5, gcc-6, clang, intel - address-model=32: windows: builds 32 bit binaries instead of 64 bit binaries - -""" - _epilog = """ -usage examples: - - # debug build, create the build tree if it does not exist. - %(prog)s -b - - # release build, create the build tree if it does not exist. - %(prog)s -b variant=release - - # release build using shared libraries, create the build tree if it does not exist. - %(prog)s -b variant=release link=shared - - # create a build tree without building anything - %(prog)s - - # create a build tree specifying a cmake cache entry without building anything - %(prog)s -DENABLE_SOMETHING=1 - -""" - parser = argparse.ArgumentParser(usage=_usage, epilog=_epilog, formatter_class=argparse.RawDescriptionHelpFormatter) - - parser.add_argument("--cmake-bin-dir", action="store", dest="cmk_bin_dir", - help="specify a directory to search for CMake overriding the default CMake search path.") - - parser.add_argument("-g", "-G", action="store", dest="generator", choices=self._dict_generator_choice[self._sys_info.get_platform()], - help="""specify a cmake generator the script has special support for. - Supported generators: ninja, umake, mgwmake, vs16, vs15, vs14, vs12, vs11, vs10, xcode. - The choices accepted are platform and installation dependent. The environment variable - DEFAULT_CMAKE_GENERATOR may be used to override the default value.""") - - parser.add_argument("-D", action="append", dest="cache_entries", - help="specify a cmake cache entry. The option will be ignored if a build tree already exists.") - - parser.add_argument("-W", action="append", dest="warning_flags", help="specify a cmake warning flag.") - - parser.add_argument("-b", action="store_true", dest="build", default=False, - help="""invokes cmake --build to build the default debug configuration unless overridden by additional arguments. - If a build tree does not exist, it will be created.""") - - parser.add_argument("-j", action="store", dest="build_jobs", type=int, nargs='?', default=1, - const=str(self._get_optimal_number_cmake_jobs()), - help="""specify the number of parallel build jobs. If you omit the numeric argument, - cmake --build ... will be invoked with -j%(const)s.""") - - parser.add_argument("--target", action="store", dest="build_target", - help="specify a build target overriding the default target.") - - parser.add_argument("--clean-first", action="store_true", dest="clean_first", default=False, - help="build target clean first, then build the active target.") - - parser.add_argument("--verbosity", action="store", dest="build_verbosity", choices=['cmake', 'quiet', 'minimal', 'normal', 'detailed', 'diagnostic'], default='minimal', - help="""specify (ms)build verbosity level [default: %(default)s]. - The choice 'cmake' requires cmake 3.14.x or higher to increase build verbosity for Visual Studio and other generators.""") - - util.app_args_add_log_level(parser) - - g = parser.add_argument_group("advanced options") - g.add_argument("-i", action="store", dest="install_dir", nargs='?', const=os.path.join(self._sys_info.get_home_dir(native=True), 'bin'), - help="install this script and exit. The default destination directory is %(const)s.") - - g.add_argument("--py-cache-clean", action="store", dest="py_cache_dirs", nargs='+', - help="search for Python cache files in one or more directory trees, remove them and exit. This special option is intended " - "for cross-platform Makefiles to clean up the source tree as python cache files are stored next to the source and " - "not in the build tree.") - - # -j may be followed by a non-numeric argument which the parser is not able to handle. - if '-j' in argv: - i = argv.index('-j') - # If the next argument is all numeric, attach it directly. In all other cases use the optimal number of parallel jobs. - if i < (len(argv) - 1): - if re.match(r'\d+$', argv[i + 1]): - argv_parsed = argv - else: - # make a copy -> don't want to modify sys.argv. - argv_parsed = argv[:] - argv_parsed[i] = '-j' + str(self._get_optimal_number_cmake_jobs()) - else: - # make a copy -> don't want to modify sys.argv. - argv_parsed = argv[:] - argv_parsed[i] = '-j' + str(self._get_optimal_number_cmake_jobs()) - else: - argv_parsed = argv - - (cmake_py_options, args_left) = parser.parse_known_args(argv_parsed) - - # configure the python logger asap - util.app_configure_logging(cmake_py_options.log_level) - - launcher_params = cmksupp.CMakeLauncherParams() - cmake_args = [] - if cmake_py_options.install_dir: - # print("-i found, install dir", cmake_py_options.install_dir) - if os.path.isabs(cmake_py_options.install_dir): - launcher_params.install_dir = cmake_py_options.install_dir - else: - launcher_params.install_dir = os.path.abspath(cmake_py_options.install_dir) - elif cmake_py_options.py_cache_dirs: - launcher_params.py_cache_dirs = [] - for dname in cmake_py_options.py_cache_dirs: - launcher_params.py_cache_dirs.append(os.path.normpath(os.path.abspath(dname))) - - self._top_dir = os.getcwd() - if cmake_py_options.install_dir or launcher_params.py_cache_dirs: - return launcher_params, cmake_args - - # if args_left: - # print("cmake args", args_left) - - # Assign cmake.py options to attributes of CMakeLauncherParams. - launcher_params.cmk_bin_dir = cmake_py_options.cmk_bin_dir - launcher_params.cmk_build = cmake_py_options.build - launcher_params.cmk_build_jobs = cmake_py_options.build_jobs - launcher_params.clean_first = cmake_py_options.clean_first - launcher_params.cmk_build_target = cmake_py_options.build_target - launcher_params.cmk_build_verbosity = cmake_py_options.build_verbosity - launcher_params.cmk_generator_alias = cmake_py_options.generator - if cmake_py_options.cache_entries: - launcher_params.cmk_cache_entries = ['-D' + x for x in cmake_py_options.cache_entries] - if cmake_py_options.warning_flags: - launcher_params.cmk_warning_flags = ['-W' + x for x in cmake_py_options.warning_flags] - - re_cmake_py_arg = re.compile(r'(toolset|variant|link|address-model)=(\S+)') - for arg in args_left: - # print("processing argument " + arg) - re_match = re_cmake_py_arg.match(arg) - if re_match: - arg_key = re_match.group(1) - arg_value = re_match.group(2) - if arg_key == 'toolset': - if arg_value.endswith('.cmake'): - # A toolset=.cmake expression is supposed to be a toolchain file to enable - # some kind of cross compilation. - if not os.path.exists(arg_value): - raise InvalidCommandLineArgumentError("toolchain file={} does not exist.".format(arg_value)) - launcher_params.toolset_str = os.path.abspath(arg_value) - else: - launcher_params.toolset_str = self._normalize_toolset_spec(arg_value) - elif arg_key == 'variant': - build_configs = arg_value.split(',') - for cfg in build_configs: - if cfg not in ['release', 'debug', 'relwithdebinfo', 'minsizerel']: - raise InvalidCommandLineArgumentError("argument {} is not understood.".format(arg)) - launcher_params.build_configs = build_configs - elif arg_key == 'link': - link_variants = arg_value.split(',') - for lnk in link_variants: - if lnk not in ['static', 'shared']: - raise InvalidCommandLineArgumentError("argument {} is not understood.".format(arg)) - launcher_params.link_variants = link_variants - elif arg_key == 'address-model': - if arg_value == '32': - launcher_params.target_arch = 'x86' - elif arg_value == '64': - launcher_params.target_arch = 'x86_64' - else: - raise InvalidCommandLineArgumentError("argument {} is not understood.".format(arg)) - else: - raise Exception("argument {} is not understood.".format(arg)) - continue - if arg == '--': - # Semantics seems to be tricky and I haven't seen a convincing use case yet. - # In configuration mode all unknown arguments are passed verbatim to cmake and in build mode - # all unknown arguments are really build tool arguments and are passed verbatim to the build tool. - raise InvalidCommandLineArgumentError("argument '--' encountered, this is not yet supported, please contact the maintainer.") - # all other arguments are passed on to cmake verbatim. - cmake_args.append(arg) - return launcher_params, cmake_args - - def _normalize_toolset_spec(self, toolset_spec): - toolset_spec_norm = toolset_spec - if self._sys_info.is_linux(): - if toolset_spec.find('-g++') >= 0: - # x86_64-w64-mingw32-g++-posix -> normalized to x86_64-w64-mingw32-gcc-posix - toolset_spec_norm = toolset_spec.replace('-g++', '-gcc') - if toolset_spec_norm.find('-gcc') >= 0: - # looks like a cross compiler specification which requires a toolchain file matching the toolset spec and the linux system. - toolset_spec_norm = self._find_toolchain_file(toolset_spec_norm) - elif self._sys_info.is_windows(): - if toolset_spec.startswith('msvc-'): - msvc_registry = bldtools.MsvcRegistry() - if toolset_spec == 'msvc-19.2x': - if msvc_registry.is_version_installed((14, 2)): - cl_version = msvc_registry.get_compiler_version((14, 2)) - toolset_spec_norm = "msvc-{0:d}.{1:d}".format(cl_version[0], cl_version[1]) - else: - raise InvalidCommandLineArgumentError("toolset={} not available.".format(toolset_spec)) - elif toolset_spec == 'msvc-19.1x': - if msvc_registry.is_version_installed((14, 1)): - cl_version = msvc_registry.get_compiler_version((14, 1)) - toolset_spec_norm = "msvc-{0:d}.{1:d}".format(cl_version[0], cl_version[1]) - else: - raise InvalidCommandLineArgumentError("toolset={} not available.".format(toolset_spec)) - else: - # msvc-19.00 -> normalized to 19.0 - re_match = re.match(r'msvc-(\d+)\.(\d+)', toolset_spec) - if re_match: - minor_version = int(re_match.group(2)) - toolset_spec_norm = "msvc-{0}.{1:d}".format(re_match.group(1), minor_version) - elif self._sys_info.is_macosx(): - pass - else: - # unsupported platform -> contact maintainer - assert False - return toolset_spec_norm - - def _find_toolchain_file(self, toolset_spec): - toolchain_file = None - toolchains_dir = self._find_toolchains_dir() - if toolchains_dir is not None: - if self._sys_info.is_linux(): - toolchain_file_suffix = '-' + self._sys_info.get_os_distro_short() - if self._sys_info.get_os_distro_short() == 'ubuntu': - os_version_str = ver.ubuntu_version_tuple_to_str(self._sys_info.get_os_version()) - else: - os_version_str = self._sys_info.get_os_version() - toolchain_file_suffix += os_version_str.replace('.', '') + '.cmake' - if os.path.exists(os.path.join(toolchains_dir, toolset_spec + toolchain_file_suffix)): - toolchain_file = os.path.join(toolchains_dir, toolset_spec + toolchain_file_suffix) - if toolchain_file is None: - msg = "toolset=" + toolset_spec + " cannot be mapped to a default toolchain file automatically. Please use a toolchain file or " - msg += "contact technical support." - raise Exception(msg) - return toolchain_file - - def _find_toolchains_dir(self): - toolchains_dir = os.path.join(util.get_script_dir(), '..', 'cmake', 'toolchains') - if not os.path.exists(toolchains_dir): - self._logger.warning("toolchains dir {} does not exist.".format(toolchains_dir)) - return None - toolchains_dir = os.path.normpath(toolchains_dir) - return toolchains_dir - - def _get_workspace_folder(self): - assert self._top_dir is not None - return self._top_dir - - def _get_optimal_number_cmake_jobs(self): - """Returns the optimal number of cmake jobs.""" - cmake_jobs = self._sys_info.get_number_processors() - if 'CMAKE_MAX_JOBS' in os.environ: - cmake_max_jobs = int(os.environ['CMAKE_MAX_JOBS'], 10) - if cmake_jobs > cmake_max_jobs: - cmake_jobs = cmake_max_jobs - assert cmake_jobs >= 1 - return cmake_jobs - - def _remove_pycache(self, py_dir_root): - os.chdir(py_dir_root) - re_pyc_file = re.compile(r'.+\.pyc$', re.IGNORECASE) - for root, dirs, files in os.walk(py_dir_root): - if '__pycache__' in dirs: - self._logger.info("rm -rf {0}".format(os.path.join(root,'__pycache__'))) - shutil.rmtree(os.path.join(root, '__pycache__')) - dirs.remove('__pycache__') - for fname in files: - if re_pyc_file.match(fname): - self._logger.info("rm {0}".format(os.path.join(root, fname))) - os.remove(os.path.join(root, fname)) diff --git a/cmake/CMakeBuild/bin/pyhhi/build/app/cmkdocapp.py b/cmake/CMakeBuild/bin/pyhhi/build/app/cmkdocapp.py deleted file mode 100755 index cc37765f..00000000 --- a/cmake/CMakeBuild/bin/pyhhi/build/app/cmkdocapp.py +++ /dev/null @@ -1,88 +0,0 @@ - -from __future__ import print_function - -import argparse -import logging -import os.path -import sys - -import pyhhi.build.common.util as util -import pyhhi.build.cmkdoc as cmkdoc - -from pyhhi.build.common.error import InvalidCommandLineArgumentError, InvalidInputParameterError - - -class CMakeDocUtilApp(object): - - def __init__(self): - self._logger = logging.getLogger(__name__) - - def __call__(self): - self.main(sys.argv[1:]) - - def main(self, argv): - params = self._parse_command_line(argv) - self.update_cmake_manual_docs(params) - - def update_cmake_manual_docs(self, params): - self._check_params(params) - cmkdocutil = cmkdoc.CMakeManualRstUtil(dry_run=params.dry_run) - if params.update_action == 'add': - cmkdocutil.add_extension_modules(params.rst_module_filenm, params.extension_module_names, - output_rst_filenm=params.output_rst_filenm, section_title=params.extension_section_title) - elif params.update_action == 'remove': - cmkdocutil.remove_extension_module_section(params.rst_module_filenm, output_rst_filenm=params.output_rst_filenm, section_title=params.extension_section_title) - elif params.update_action == 'remove_all': - cmkdocutil.remove_all_extension_modules(params.rst_module_filenm, output_rst_filenm=params.output_rst_filenm) - else: - assert False - - def _check_params(self, params): - assert params.rst_module_filenm is not None - if not os.path.exists(params.rst_module_filenm): - raise InvalidInputParameterError("CMake doc module file {} does not exist.".format(params.rst_module_filenm)) - - def _parse_command_line(self, argv): - - params = cmkdoc.CMakeRstUtilParams() - - parser = argparse.ArgumentParser() - - parser.add_argument("input", action="store", help="specifies the CMake RST module file to be updated.") - - parser.add_argument("-m", action="append", dest="module_names", - help="specifies an extension module name, the option must be repeated for each extension module.") - parser.add_argument("-R", action="store_true", dest="remove_all", default=False, - help="remove all non-standard module sections.") - parser.add_argument("-r", action="store_true", dest="remove", default=False, - help="remove a single non-standard module section.") - parser.add_argument("-o", action="store", dest="output_rst_filenm") - parser.add_argument("-s", action="store", dest="section_title", default=params.extension_section_title, - help="specifies the section to be updated [default: %(default)s]") - parser.add_argument("--dry-run", action="store_true", dest="dry_run", default=False) - - util.app_args_add_log_level(parser) - - args = parser.parse_args(argv) - - # configure the python logger asap - util.app_configure_logging(args.log_level) - - params.dry_run = args.dry_run - params.rst_module_filenm = os.path.abspath(args.input) - - if args.module_names: - params.update_action = 'add' - params.extension_module_names = args.module_names - elif args.remove_all: - params.update_action = 'remove_all' - elif args.remove: - params.update_action = 'remove' - else: - raise InvalidCommandLineArgumentError("no update action specified, use -m, -R or -r.") - if args.section_title: - params.extension_section_title = args.section_title - if args.output_rst_filenm: - params.output_rst_filenm = os.path.abspath(args.output_rst_filenm) - - return params diff --git a/cmake/CMakeBuild/bin/pyhhi/build/cmkdoc.py b/cmake/CMakeBuild/bin/pyhhi/build/cmkdoc.py deleted file mode 100755 index 178cc382..00000000 --- a/cmake/CMakeBuild/bin/pyhhi/build/cmkdoc.py +++ /dev/null @@ -1,399 +0,0 @@ - -from __future__ import print_function - -import logging -import re -import os - -from pyhhi.build.common.error import InvalidInputParameterError - - -class CMakeRstUtilParams(object): - - def __init__(self): - self.dry_run = False - self.rst_module_filenm = None - self.update_action = 'add' - self.extension_module_names = [] - self.extension_section_title = "Extension Modules" - self.output_rst_filenm = None - - -class RstModuleSection(object): - - def __init__(self): - self.section_title = None - self.section_title_marker_line = None - self.section_header = [] - self.section_content = [] - - -class CMakeManualRstUtil(object): - - def __init__(self, dry_run=False): - self._logger = logging.getLogger(__name__) - self._dry_run = dry_run - self._section_title_cmake_modules_orig = "All Modules" - self._section_title_cmake_modules = "Standard Modules" - self._reserved_section_titles = [self._section_title_cmake_modules, self._section_title_cmake_modules_orig, "Legacy CPack Modules"] - self._section_title_marker = '=' - self._is_cmake_source_tree = False - # Location of .rst - self._cmake_help_module_dir = None - # Automatic removal of cmake module wrapper files. - self._autoremove = True - self._re_section_content = re.compile(r'\s+/module/([a-zA-Z0-9_-]+)\s*$') - - def is_cmake_source_tree(self): - return self._is_cmake_source_tree - - def add_extension_modules(self, rst_module_filenm, extension_module_names, section_title="Extension Modules", output_rst_filenm=None): - - if not os.path.exists(rst_module_filenm): - raise InvalidInputParameterError("CMake RST module file {} does not exist.".format(rst_module_filenm)) - if output_rst_filenm is None: - # in-place replacement - output_rst_filenm = rst_module_filenm - # Empty sections are not permitted, use one of the remove_xxx() methods to get rid of a section. - assert extension_module_names - self._detect_cmake_source_tree(rst_module_filenm) - self._check_section_title(section_title) - (module_file_header, section_list) = self._parse_rst_module_file(rst_module_filenm) - - if len(section_list) > 0: - # CMake's original module file has one or more sections. All extension sections are inserted in front of - # section titled "All Modules" or "Standard Modules". The latter title is used after the first extension section has been inserted. - - # Get cmake module names - cmake_module_names_set = self._get_cmake_module_names(section_list) - # Extension module names must not replace existing cmake module names - extension_module_names_set = set(extension_module_names) - if not cmake_module_names_set.isdisjoint(extension_module_names_set): - conflicting_names = cmake_module_names_set.intersection(extension_module_names_set) - msg = "CMake builtin module names cannot be part of an extension section.\n" - msg += "Please check the extension module names: " + " ".join(conflicting_names) - raise Exception(msg) - else: - # Looks like a corrupted cmake-modules.7.rst - assert False - # Get a list of RST extension module wrapper files belonging to section "section_title". - existing_extension_module_names = self._get_extension_module_names(section_list, section_title) - if existing_extension_module_names: - self._logger.debug('existing extensions: %s', ' '.join(existing_extension_module_names)) - modified = self._update_section(section_list, section_title, extension_module_names) - if modified: - # print("new content lines:") - # self._dump_section_list(section_list[0:-1]) - # Change title of the CMake module section from "All Modules" to "Standard Modules". - for section in section_list: - if section.section_title == self._section_title_cmake_modules_orig: - section.section_title = self._section_title_cmake_modules - section.section_title_marker_line = '{0:=>{width}}'.format(self._section_title_marker, width=len(section.section_title)) - break - - section_list = self._sort_section_list(section_list) - # Save top-level RST module file - self._save_rst_module_file(output_rst_filenm, module_file_header, section_list) - - # Remove RST extension module wrapper files not belonging to this section anymore. - outdated_extension_module_names = [] - for mod_nm in existing_extension_module_names: - if mod_nm not in extension_module_names: - outdated_extension_module_names.append(mod_nm) - if outdated_extension_module_names: - self._logger.debug('outdated extensions: %s', ' '.join(outdated_extension_module_names)) - # Remove outdated RST extension module wrapper files. - self._remove_rst_extension_module_files(outdated_extension_module_names) - - def remove_extension_module_section(self, rst_module_filenm, section_title="Extension Modules", output_rst_filenm=None): - if not os.path.exists(rst_module_filenm): - raise Exception("CMake RST module file " + rst_module_filenm + " does not exist.") - if output_rst_filenm is None: - output_rst_filenm = rst_module_filenm - self._detect_cmake_source_tree(rst_module_filenm) - self._check_section_title(section_title) - (module_file_header, section_list) = self._parse_rst_module_file(rst_module_filenm) - assert len(section_list) > 0 - - # Get a list of RST extension module wrapper files belonging to section "section_title". - existing_extension_module_names = self._get_extension_module_names(section_list, section_title) - if existing_extension_module_names: - self._logger.debug('existing extensions: %s', ' '.join(existing_extension_module_names)) - - modified = False - new_section_list = [] - for sect in section_list: - if section_title == sect.section_title: - modified = True - else: - new_section_list.append(sect) - assert len(new_section_list) > 0 - sect = new_section_list[0] - if sect.section_title == self._section_title_cmake_modules: - modified = True - # Recover the original section title - sect.section_title = self._section_title_cmake_modules_orig - sect.section_title_marker_line = '{0:=>{width}}'.format(self._section_title_marker, width=len(sect.section_title)) - - if modified: - # Save top-level RST module file - self._save_rst_module_file(output_rst_filenm, module_file_header, new_section_list) - # Remove RST extension module wrapper files belonging to the section just removed. - self._remove_rst_extension_module_files(existing_extension_module_names) - - def remove_all_extension_modules(self, rst_module_filenm, output_rst_filenm=None): - if not os.path.exists(rst_module_filenm): - raise Exception("CMake RST module file " + rst_module_filenm + " does not exist.") - if output_rst_filenm is None: - output_rst_filenm = rst_module_filenm - self._detect_cmake_source_tree(rst_module_filenm) - (module_file_header, section_list) = self._parse_rst_module_file(rst_module_filenm) - existing_extension_module_names = self._get_extension_module_names(section_list) - if existing_extension_module_names: - self._logger.debug('existing extensions: %s', ' '.join(existing_extension_module_names)) - modified = False - - while section_list: - sect = section_list[0] - if sect.section_title == self._section_title_cmake_modules: - # Found first original section - modified = True - sect.section_title = self._section_title_cmake_modules_orig - sect.section_title_marker_line = '{0:=>{width}}'.format(self._section_title_marker, width=len(sect.section_title)) - break - elif sect.section_title == self._section_title_cmake_modules_orig: - # Found first original section - break - else: - modified = True - section_list.pop(0) - assert len(section_list) > 0 - if modified: - # Save top-level RST module file - self._save_rst_module_file(output_rst_filenm, module_file_header, section_list) - # Remove all RST extension module wrapper files - self._remove_rst_extension_module_files(existing_extension_module_names) - - def _detect_cmake_source_tree(self, rst_module_filenm): - rst_manual_dir = os.path.dirname(rst_module_filenm) - rst_module_dir = os.path.join(rst_manual_dir, '..', 'module') - if (os.path.basename(rst_manual_dir) == 'manual') and (os.path.exists(rst_module_dir) and os.path.isdir(rst_module_dir)): - self._is_cmake_source_tree = True - self._cmake_help_module_dir = self._get_rst_module_dir(rst_module_filenm) - assert os.path.exists(self._cmake_help_module_dir) and os.path.isdir(self._cmake_help_module_dir) - else: - self._is_cmake_source_tree = False - self._cmake_help_module_dir = None - - def _get_rst_module_dir(self, rst_module_filenm): - rst_manual_dir = os.path.dirname(rst_module_filenm) - rst_module_dir = os.path.join(rst_manual_dir, '..', 'module') - return os.path.normpath(rst_module_dir) - - def _check_section_title(self, section_title): - if section_title in self._reserved_section_titles: - raise InvalidInputParameterError("section {} is protected and cannot be modified, please contact technical support.".format(section_title)) - - def _check_extension_module_names(self, extension_module_names): - if not self.is_cmake_source_tree(): - return - for mod_nm in extension_module_names: - rst_module_file = os.path.join(self._cmake_help_module_dir, mod_nm + '.rst') - if not os.path.exists(rst_module_file): - raise Exception("file {} does not exist.".format(rst_module_file)) - - def _update_section(self, section_list, section_title, extension_module_names): - section = None - modified = False - assert extension_module_names - extension_module_names.sort() - for sec in section_list: - if sec.section_title == section_title: - section = sec - break - if not section: - # add a new section - modified = True - section = RstModuleSection() - section.section_title = section_title - section.section_title_marker_line = '{0:=>{width}}'.format(self._section_title_marker, width=len(section.section_title)) - section.section_header.append('') - section.section_header.append('.. toctree::') - section.section_header.append(' :maxdepth: 1') - section.section_header.append('') - section_list.insert(0, section) - else: - # Section already present, update only if section content is different. - existing_extension_module_names = [] - # re_section_content = re.compile(r'\s+/module/([a-zA-Z0-9_-]+)\s*$') - for line in section.section_content: - re_match = self._re_section_content.match(line) - if re_match: - existing_extension_module_names.append(re_match.group(1)) - existing_extension_module_names.sort() - if len(existing_extension_module_names) != len(extension_module_names): - modified = True - else: - for module_nm in existing_extension_module_names: - if module_nm not in extension_module_names: - modified = True - break - if modified: - # replace the section - section.section_content = [] - if modified: - # replace the content of an existing section - for module_nm in extension_module_names: - section.section_content.append(' /module/' + module_nm) - return modified - - def _sort_section_list(self, section_list): - """Sort section list by title and keep CMake's original sections at the end.""" - - section_list_ext = [] - while section_list: - sect = section_list[0] - if sect.section_title in [self._section_title_cmake_modules_orig, self._section_title_cmake_modules]: - break - else: - section_list_ext.append(sect) - section_list.pop(0) - - section_title_dict = {} - section_list_sorted = [] - for sect in section_list_ext: - section_title_dict[sect.section_title] = sect - title_list = list(section_title_dict.keys()) - title_list.sort() - for title in title_list: - section_list_sorted.append(section_title_dict[title]) - - # and append CMake's original sections. - section_list_sorted.extend(section_list) - return section_list_sorted - - def _parse_rst_module_file(self, rst_module_filenm): - - module_file_header = [] - section_list = [] - section = None - previous_line = None - re_empty_line = re.compile(r'^\s*$') - - with open(rst_module_filenm) as f: - for line in f: - line = line.rstrip() - if not section_list: - # Processing lines in front of the first section header - if line.startswith(self._section_title_marker): - section = RstModuleSection() - section.section_title = previous_line - section.section_title_marker_line = line - self._logger.debug("found section: {}".format(previous_line)) - section_list.append(section) - # Remove the title line from the module header. - module_file_header.pop() - if module_file_header and re_empty_line.match(module_file_header[-1]): - # Remove the last empty line from the module header to simplify saving sections later on. - module_file_header.pop() - else: - module_file_header.append(line) - else: - if section.section_content: - if self._re_section_content.match(line): - section.section_content.append(line) - else: - section = RstModuleSection() - else: - # No section content found yet. - if not section.section_title: - if line.startswith(self._section_title_marker): - section.section_title = previous_line - section.section_title_marker_line = line - section_list.append(section) - self._logger.debug("found section: {}".format(previous_line)) - else: - pass - else: - if self._re_section_content.match(line): - section.section_content.append(line) - else: - section.section_header.append(line) - previous_line = line - - # self._dump_module_file_header(module_file_header) - # self._dump_section_list(section_list) - return module_file_header, section_list - - def _get_extension_module_names(self, section_list, section_title=None): - extension_module_names = [] - for sect in section_list: - if sect.section_title in [self._section_title_cmake_modules_orig, self._section_title_cmake_modules]: - continue - if (section_title is None) or (section_title == sect.section_title): - for line in sect.section_content: - re_match = self._re_section_content.match(line) - if re_match: - extension_module_names.append(re_match.group(1)) - return extension_module_names - - def _get_cmake_module_names(self, section_list): - - cmake_module_names = set() - section_all_modules_fnd = False - - for sect in section_list: - if not section_all_modules_fnd: - if sect.section_title in [self._section_title_cmake_modules_orig, self._section_title_cmake_modules]: - section_all_modules_fnd = True - else: - # One of the extension sections in front of "All Modules" or "Standard Modules" - continue - for line in sect.section_content: - re_match = self._re_section_content.match(line) - if re_match: - cmake_module_names.add(re_match.group(1)) - return cmake_module_names - - def _save_rst_module_file(self, output_rst_filenm, module_file_header, section_list): - if self._dry_run: - self._logger.debug("leaving without saving anything to %s", output_rst_filenm) - return - self._logger.debug("saving updated content to %s", output_rst_filenm) - with open(output_rst_filenm, "w") as f: - for line in module_file_header: - f.write(line + '\n') - for sect in section_list: - f.write('\n') - f.write(sect.section_title + '\n') - f.write(sect.section_title_marker_line + '\n') - for line in sect.section_header: - f.write(line + '\n') - for line in sect.section_content: - f.write(line + '\n') - - def _remove_rst_extension_module_files(self, extension_module_names): - if not self._autoremove: - return - if not self.is_cmake_source_tree(): - return - for mod_nm in extension_module_names: - rst_module_file = os.path.join(self._cmake_help_module_dir, mod_nm + '.rst') - if os.path.exists(rst_module_file): - self._logger.debug("removing %s", rst_module_file) - if not self._dry_run: - os.remove(rst_module_file) - - def _dump_module_file_header(self, module_file_header): - for line in module_file_header: - print("file header: " + line) - - def _dump_section_list(self, section_list): - print("number of sections: %d" %(len(section_list))) - for section in section_list: - print("section title: " + section.section_title) - print("section title marker: " + section.section_title_marker_line) - for line in section.section_header: - print("section header: " + line) - for line in section.section_content: - print("section content: " + line) \ No newline at end of file diff --git a/cmake/CMakeBuild/bin/pyhhi/build/cmkfnd.py b/cmake/CMakeBuild/bin/pyhhi/build/cmkfnd.py deleted file mode 100755 index 057d5c1b..00000000 --- a/cmake/CMakeBuild/bin/pyhhi/build/cmkfnd.py +++ /dev/null @@ -1,113 +0,0 @@ - -from __future__ import print_function - -import logging -import os -import re -import subprocess - -import pyhhi.build.common.util as util -import pyhhi.build.common.ver as ver -from pyhhi.build.common.system import SystemInfo - - -class CMakeFinder(object): - - def __init__(self, sys_info=None): - self._logger = logging.getLogger(__name__) - if sys_info is None: - self._sys_info = SystemInfo() - else: - self._sys_info = sys_info - self._cmake_prog = None - self._cmake_version = None - self._cmake_search_path = self._sys_info.get_path() - if self._sys_info.is_windows(): - cmake_dir_list = [] - cmake_inst_dir = self._query_winreg_cmake_inst_dir() - if cmake_inst_dir is None: - # cmake 3.6.1 is 64 bit but earlier cmake versions are 32 bit only. - if self._sys_info.get_os_arch() == 'x86_64': - cmake_dir_list.append(os.path.join(self._sys_info.get_program_dir('x86_64'), 'CMake', 'bin')) - cmake_dir_list.append(os.path.join(self._sys_info.get_program_dir('x86'), 'CMake', 'bin')) - for cmake_dir in cmake_dir_list: - if os.path.exists(cmake_dir): - if cmake_dir not in self._cmake_search_path: - self._cmake_search_path.append(cmake_dir) - else: - # Append cmake install directory picked up from the registry (3.8.0 or higher). - self._cmake_search_path.append(cmake_inst_dir) - elif self._sys_info.is_macosx(): - # The default installation path is /Applications/CMake.app/Contents/bin on MacOSX. - cmake_dir = os.path.join('/Applications', 'CMake.app', 'Contents', 'bin') - if os.path.exists(cmake_dir): - if cmake_dir not in self._cmake_search_path: - self._cmake_search_path.append(cmake_dir) - elif self._sys_info.is_linux(): - pass - else: - assert False - - def set_cmake_search_path(self, search_path): - if search_path: - self._cmake_search_path = search_path[:] - self._logger.debug("cmake search path changed to: %s", ';'.join(self._cmake_search_path)) - - def find_cmake(self): - """Returns the absolute path of a cmake executable.""" - if self._cmake_prog is None: - self._logger.debug("cmake search path: %s", ';'.join(self._cmake_search_path)) - self._cmake_prog = util.find_tool_on_path('cmake', must_succeed=True, search_path=self._cmake_search_path) - self._cmake_version = self._query_cmake_version(self._cmake_prog) - return self._cmake_prog - - def is_cmake_installed(self): - return self.find_cmake() is not None - - def get_cmake_version(self): - assert self._cmake_version is not None - return self._cmake_version - - def _query_cmake_version(self, cmake_cmd): - retv = subprocess.check_output([cmake_cmd, '--version'], universal_newlines=True) - return self._parse_cmake_version_retv(retv) - - def _parse_cmake_version_retv(self, retv): - version_response = retv.rstrip() - lines = version_response.splitlines() - # Possible version information: - # cmake version 3.7.2 - # cmake version 3.8.0-rc2 - # cmake3 version 3.6.3 # redhat 7.x cmake3 - re_version_match = re.match(r'cmake\d*\s+version\s+([0-9]+\.[0-9]+\.[0-9]+)', lines[0], re.IGNORECASE) - if not re_version_match: - raise Exception("cmake has returned an unsupported version string. Please contact technical support.") - self._logger.debug("cmake version: %s", re_version_match.group(1)) - return ver.version_tuple_from_str(re_version_match.group(1)) - - def _query_winreg_cmake_inst_dir(self): - cmake_install_dir = None - if self._sys_info.is_python3(): - import winreg - win_registry = winreg - else: - import _winreg - win_registry = _winreg - - reg_section = "SOFTWARE\\Kitware\\CMake" - - try: - # rkey must be initialized in case OpenKey() does not return but raises an exception. - rkey = None - rkey = win_registry.OpenKey(win_registry.HKEY_LOCAL_MACHINE, reg_section) - install_dir = win_registry.QueryValueEx(rkey, 'InstallDir')[0] - if os.path.exists(os.path.join(install_dir, 'bin', 'cmake.exe')): - cmake_install_dir = os.path.join(install_dir, 'bin') - except WindowsError: - if rkey is not None: - win_registry.CloseKey(rkey) - if cmake_install_dir: - self._logger.debug("cmake install dir (winreg): %s", cmake_install_dir) - else: - self._logger.debug("cmake install dir (winreg): %s", "not found") - return cmake_install_dir diff --git a/cmake/CMakeBuild/bin/pyhhi/build/cmksupp.py b/cmake/CMakeBuild/bin/pyhhi/build/cmksupp.py deleted file mode 100755 index 07754e6e..00000000 --- a/cmake/CMakeBuild/bin/pyhhi/build/cmksupp.py +++ /dev/null @@ -1,615 +0,0 @@ - -from __future__ import print_function - -import logging -import os -import re -import sys - -import pyhhi.build.common.bldtools as bldtools -import pyhhi.build.common.util as util -import pyhhi.build.common.ver as ver -from pyhhi.build.common.system import SystemInfo -from pyhhi.build.cmkfnd import CMakeFinder - - -class CMakeLauncherParams(object): - - def __init__(self): - self.dry_run = False - self.cmk_build = False - self.clean_first = False - # cmk_bin_dir override the default CMake search path. - self.cmk_bin_dir = None - self.cmk_build_jobs = 1 - self.cmk_build_target = None - #msbuild: verbosity levels: q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic] - self.cmk_build_verbosity = 'minimal' - self.cmk_generator_alias = None - self.cmk_warning_flags = [] - self.cmk_cache_entries = [] - # gcc, gcc-4.9, clang, msvc, msvc-19.0 - self.toolset_str = None - self.target_arch = None - # tuple/list of build configurations (debug, release) - self.build_configs = tuple(['debug']) - self.link_variants = tuple(['static']) - # Assigned if the script and its modules are to be installed. - self.install_dir = None - # Python directories to search for cache files/directories. - self.py_cache_dirs = [] - - -class CMakeCompilerInfo(object): - - def __init__(self): - # If a toolchain file is given, all other attributes are not used and a cross compiler configuration - # is assumed. - self.cmake_toolchain_file = None - # gcc, clang, msvc - self.compiler_family = None - self.version_major_minor = None - self.target_arch = None - self.cmake_cxx_compiler = None - self.cmake_c_compiler = None - self.mingw = False - - def is_cross_compiler(self): - return self.cmake_toolchain_file is not None - - def __str__(self): - if self.cmake_toolchain_file: - s = "toolchain file: %s\n" % self.cmake_toolchain_file - else: - s = "compiler family: %s\n" % self.compiler_family - s += "compiler version (major.minor): %s\n" % ver.version_tuple_to_str(self.version_major_minor) - if self.target_arch: - s += "target arch: %s\n" % self.target_arch - if self.cmake_cxx_compiler: - s += "cmake cxx compiler: %s\n" % self.cmake_cxx_compiler - s += "cmake c compiler: %s\n" % self.cmake_c_compiler - return s - - -class CMakeBuildTreeInfo(object): - - def __init__(self, build_root, compiler_info, generator_alias): - self._logger = logging.getLogger(__name__) - self._sys_info = SystemInfo() - self._build_root = build_root - self._generator_alias = generator_alias - self._default_build_configs = ['debug', 'release', 'relwithdebinfo', 'minsizerel'] - # key=bld_variant.lnk_variant value=build_dir - self._build_dir_dict = self._create_build_dir_dict(compiler_info, generator_alias, self._default_build_configs) - - def get_build_dir(self, bld_config, lnk_variant): - return self._build_dir_dict[bld_config + '.' + lnk_variant] - - def is_multi_configuration_generator(self): - return self._generator_alias.startswith('vs') or (self._generator_alias == 'xcode') - - def _create_build_dir_dict(self, compiler_info, generator_alias, build_configs): - build_dir_dict = {} - if compiler_info.is_cross_compiler(): - assert generator_alias == 'umake' - build_root = self._create_cross_compile_build_dir(self._build_root, compiler_info.cmake_toolchain_file, generator_alias) - print("cross compile build root: " + build_root) - if generator_alias == 'umake': - for cfg in build_configs: - build_dir_dict[cfg + '.' + 'static'] = os.path.join(build_root, cfg) - build_dir_dict[cfg + '.' + 'shared'] = os.path.join(build_root, cfg + '-shared') - else: - target_arch = compiler_info.target_arch - if compiler_info.mingw: - toolset_dir = "{}-mingw-{}".format(compiler_info.compiler_family, ver.version_tuple_to_str(compiler_info.version_major_minor)) - else: - toolset_dir = "{}-{}".format(compiler_info.compiler_family, ver.version_tuple_to_str(compiler_info.version_major_minor)) - if self.is_multi_configuration_generator(): - for cfg in build_configs: - build_dir_dict[cfg + '.' + 'static'] = os.path.join(self._build_root, generator_alias, toolset_dir, target_arch) - build_dir_dict[cfg + '.' + 'shared'] = os.path.join(self._build_root, generator_alias, toolset_dir, target_arch + '-shared') - else: - for cfg in build_configs: - build_dir_dict[cfg + '.' + 'static'] = os.path.join(self._build_root, generator_alias, toolset_dir, target_arch, cfg) - build_dir_dict[cfg + '.' + 'shared'] = os.path.join(self._build_root, generator_alias, toolset_dir, target_arch, cfg + '-shared') - return build_dir_dict - - def _create_cross_compile_build_dir(self, build_root, toolchain_file, generator_alias): - assert generator_alias == 'umake' - basenm = os.path.basename(toolchain_file) - re_match = re.match(r'(.+)\.cmake$', basenm) - if re_match: - basenm = re_match.group(1) - if self._sys_info.is_linux(): - # Try to strip a distro related suffix. - distro_suffix = self._sys_info.get_os_distro_short() - re_match = re.match('(.+)[-]' + distro_suffix + '([-_.0-9]+)?$', basenm) - if re_match: - basenm = re_match.group(1) - build_dir = os.path.join(build_root, basenm) - return build_dir - - -class CMakeLauncher(object): - - def __init__(self, verbosity=1): - self._logger = logging.getLogger(__name__) - self._sys_info = SystemInfo() - self._verbosity_level = verbosity - self._cmake_finder = CMakeFinder(self._sys_info) - self._top_dir = None - self._build_root = None - self._build_tree_create_if_not_exists = True - self._build_tree_info = None - self._deploy_dir = None - self._script_name = os.path.basename(sys.argv[0]) - self._cmk_cache_file = 'CMakeCache.txt' - # cache entries the user cannot override via -Dxxx - self._cmk_reserved_cache_vars = ['BUILD_SHARED_LIBS', - 'CMAKE_BUILD_TYPE', - 'CMAKE_CONFIGURATION_TYPES', - 'CMAKE_CXX_COMPILER', - 'CMAKE_C_COMPILER', - 'CMAKE_TOOLCHAIN_FILE'] - self._dict_to_cmake_generator = {'umake': 'Unix Makefiles', - 'mgwmake': 'MinGW Makefiles', - 'ninja': 'Ninja', - 'xcode': 'Xcode', - 'vs16': 'Visual Studio 16 2019', - 'vs15': 'Visual Studio 15 2017', - 'vs14': 'Visual Studio 14 2015', - 'vs12': 'Visual Studio 12 2013', - 'vs11': 'Visual Studio 11 2012', - 'vs10': 'Visual Studio 10 2010'} - - # list of default configuration types for multiconfiguration generators. - self._default_config_types = ['debug', 'release'] - # self._default_config_types = ['debug', 'release', 'relwithdebinfo'] - - self._dict_to_cmake_config = {'debug': 'Debug', 'release': 'Release', 'relwithdebinfo': 'RelWithDebInfo', 'minsizerel': 'MinSizeRel'} - self._dict_to_vs_platform_name = {'x86_64': 'x64', 'x86': 'Win32'} - self._prefer_vs_native_toolsets = True - if self._sys_info.is_windows(): - self._msvc_registry = bldtools.MsvcRegistry() - self._dict_to_vs_platform_toolset = {'msvc-19.0': 'v140', - 'msvc-18.0': 'v120', - 'msvc-17.0': 'v110', - 'msvc-16.0': 'v100'} - self._dict_generator_alias_to_msvc_toolsets = {'vs14': ['msvc-19.0', 'msvc-18.0', 'msvc-17.0', 'msvc-16.0'], - 'vs12': ['msvc-18.0', 'msvc-17.0', 'msvc-16.0'], - 'vs11': ['msvc-17.0', 'msvc-16.0'], - 'vs10': ['msvc-16.0']} - - # vs15 has not a fixed compiler version and therefore the mapping is generated dynamically. - if self._msvc_registry.is_version_installed((14, 1)): - cl_version = self._msvc_registry.get_compiler_version((14, 1)) - msvc_str = 'msvc-' + ver.version_tuple_to_str(cl_version[:2]) - if cl_version[1] < 20: - self._dict_to_vs_platform_toolset[msvc_str] = 'v141' - if not self._msvc_registry.is_vs2019_toolset((14, 1)): - self._dict_generator_alias_to_msvc_toolsets['vs15'] = [msvc_str, 'msvc-19.0', 'msvc-18.0', 'msvc-17.0', 'msvc-16.0'] - else: - assert False - - # vs16 has not a fixed compiler version and therefore the mapping is generated dynamically. - if self._msvc_registry.is_version_installed((14, 2)): - cl_version = self._msvc_registry.get_compiler_version((14, 2)) - msvc_str = 'msvc-' + ver.version_tuple_to_str(cl_version[:2]) - if cl_version[1] < 30: - self._dict_to_vs_platform_toolset[msvc_str] = 'v142' - msvc_version_list = [msvc_str] - if self._msvc_registry.is_version_installed((14, 1)): - cl_version = self._msvc_registry.get_compiler_version((14, 1)) - msvc_version_list.append("msvc-{0:d}.{1:d}".format(cl_version[0], cl_version[1])) - msvc_version_list.extend(['msvc-19.0', 'msvc-18.0', 'msvc-17.0', 'msvc-16.0']) - self._dict_generator_alias_to_msvc_toolsets['vs16'] = msvc_version_list - else: - assert False - - def launch(self, params, cmake_argv): - - if params.cmk_bin_dir: - self._cmake_finder.set_cmake_search_path([params.cmk_bin_dir]) - # Is cmake installed? - if not self._cmake_finder.is_cmake_installed(): - return - - self._top_dir = os.getcwd() - self._build_root = os.path.join(self._top_dir, 'build') - self._deploy_dir = os.path.join(self._top_dir, 'deploy') - if not os.path.exists(self._build_root): - os.makedirs(self._build_root) - self._check_cmake_params(params) - compiler_info = self._create_compiler_info(params.toolset_str, params.target_arch) - #print(compiler_info) - #return - self._build_tree_info = CMakeBuildTreeInfo(self._build_root, compiler_info, params.cmk_generator_alias) - #print(self._build_tree_info.get_build_dir('release', 'static')) - #print(self._build_tree_info.get_build_dir('release', 'shared')) - #print(self._build_tree_info.get_build_dir('debug', 'static')) - #print(self._build_tree_info.get_build_dir('debug', 'shared')) - # return - if params.cmk_build: - # cmake build - if self._build_tree_create_if_not_exists and (not self._is_build_target_clean(params.cmk_build_target)): - # cleaning a non-existing build tree is really a no-op and does not require a build tree at all. - cmake_argv_config = [] - if params.cmk_warning_flags: - cmake_argv_config.extend(params.cmk_warning_flags) - if params.cmk_cache_entries: - cmake_argv_config.extend(params.cmk_cache_entries) - for lnk in params.link_variants: - self._create_default_build_tree(compiler_info, params.cmk_generator_alias, params.build_configs, lnk, cmake_argv_config) - for lnk in params.link_variants: - self.launch_build(params, lnk, cmake_argv) - else: - # cmake build tree create/update - for lnk in params.link_variants: - cmake_argv_config = [] - if params.cmk_warning_flags: - cmake_argv_config.extend(params.cmk_warning_flags) - if params.cmk_cache_entries: - cmake_argv_config.extend(params.cmk_cache_entries) - if cmake_argv: - cmake_argv_config.extend(cmake_argv) - # print("warning flags: ", params.cmk_warning_flags) - # print("additional flags: ", cmake_argv_config) - self.launch_config(compiler_info, params.cmk_generator_alias, params.build_configs, lnk, cmake_argv_config) - - def launch_config(self, compiler_info, generator_alias, build_configs, lnk_variant, cmake_argv_optional): - cur_dir = os.getcwd() - cmake_argv = [] - if self._is_multi_configuration_generator(): - tmp_build_configs = [build_configs[0]] - else: - tmp_build_configs = build_configs - for cfg in tmp_build_configs: - b_dir = self._build_tree_info.get_build_dir(cfg, lnk_variant) - if not os.path.exists(b_dir): - os.makedirs(b_dir) - if generator_alias.startswith('vs'): - if compiler_info.compiler_family == 'msvc': - if self._is_vs_64bit_native_toolset_supported(generator_alias): - vs_toolset = self._dict_to_vs_platform_toolset['msvc-' + ver.version_tuple_to_str(compiler_info.version_major_minor)] + ',host=x64' - else: - vs_toolset = self._dict_to_vs_platform_toolset['msvc-' + ver.version_tuple_to_str(compiler_info.version_major_minor)] - elif compiler_info.compiler_family == 'intel': - vs_toolset = "Intel C++ Compiler %d.%d" % (compiler_info.version_major_minor[0], compiler_info.version_major_minor[1]) - else: - assert False - cmake_argv = ['-G', self._dict_to_cmake_generator[generator_alias]] - if generator_alias == 'vs16': - if ver.version_compare(compiler_info.version_major_minor, (19, 20)) < 0: - cmake_argv.extend(['-T', self._dict_to_vs_platform_toolset['msvc-' + ver.version_tuple_to_str(compiler_info.version_major_minor)]]) - if compiler_info.target_arch != 'x86_64': - cmake_argv.extend(['-A', self._dict_to_vs_platform_name[compiler_info.target_arch]]) - else: - cmake_argv.extend(['-T', vs_toolset, '-A', self._dict_to_vs_platform_name[compiler_info.target_arch]]) - - elif generator_alias == 'xcode': - cmake_argv = ['-G', self._dict_to_cmake_generator[generator_alias]] - elif generator_alias in ['umake', 'mgwmake', 'ninja']: - cmake_argv = ['-G', self._dict_to_cmake_generator[generator_alias], - '-DCMAKE_BUILD_TYPE:STRING=' + self._dict_to_cmake_config[cfg]] - if compiler_info.is_cross_compiler(): - cmake_argv.append('-DCMAKE_TOOLCHAIN_FILE:FILEPATH=' + compiler_info.cmake_toolchain_file) - else: - if compiler_info.cmake_cxx_compiler: - cmake_argv.append('-DCMAKE_CXX_COMPILER:FILEPATH=' + compiler_info.cmake_cxx_compiler) - if compiler_info.cmake_c_compiler: - cmake_argv.append('-DCMAKE_C_COMPILER:FILEPATH=' + compiler_info.cmake_c_compiler) - if cmake_argv_optional: - # Add any additional arguments to the cmake command line. - cmake_argv.extend(cmake_argv_optional) - if lnk_variant == 'shared': - cmake_argv.append('-DBUILD_SHARED_LIBS:BOOL=ON') - if self._is_multi_configuration_generator(): - cmake_config_types = [self._dict_to_cmake_config[x] for x in self._default_config_types] - for b_cfg in build_configs: - if b_cfg not in self._default_config_types: - cmake_config_types.append(self._dict_to_cmake_config[b_cfg]) - cmake_argv.append('-DCMAKE_CONFIGURATION_TYPES:STRING=' + ';'.join(cmake_config_types)) - # cmake_argv.append(self._top_dir) - # print("launch_config(): cmake_args", cmake_argv) - # print("build dir:", b_dir) - # print("top dir:", self._top_dir) - if ver.version_compare(self._cmake_finder.get_cmake_version(), (3, 13, 0)) >= 0: - cmake_argv.extend(['-S', self._top_dir, '-B', b_dir]) - retv = self.launch_cmake(cmake_argv) - else: - os.chdir(b_dir) - cmake_argv.append(os.path.relpath(self._top_dir)) - retv = self.launch_cmake(cmake_argv) - os.chdir(cur_dir) - if retv != 0: - sys.exit(1) - - def launch_build(self, params, lnk_variant, cmake_argv_optional): - if self._is_multi_configuration_generator(): - # multiple configurations / build directory - b_dir = self._build_tree_info.get_build_dir(params.build_configs[0], lnk_variant) - if self._is_build_target_clean(params.cmk_build_target) and (not os.path.exists(b_dir)): - return - for cfg in params.build_configs: - cmake_argv = ['--build', b_dir, '--config', self._dict_to_cmake_config[cfg]] - self._add_common_cmake_build_options(cmake_argv, params) - self._add_cmake_build_jobs_option(cmake_argv, params.cmk_generator_alias, params.cmk_build_jobs) - self._add_cmake_build_verbosity_option(cmake_argv, params.cmk_generator_alias, params.cmk_build_verbosity) - if params.cmk_generator_alias.startswith('vs'): - # msbuild option to disable node reuse -> jenkins build seems to idle at the end. - self._add_cmake_build_tool_options(cmake_argv, ['/nr:false']) - if cmake_argv_optional: - self._add_cmake_build_tool_options(cmake_argv, cmake_argv_optional) - retv = self.launch_cmake(cmake_argv) - if retv != 0: - sys.exit(1) - else: - # one build directory / configuration - for cfg in params.build_configs: - b_dir = self._build_tree_info.get_build_dir(cfg, lnk_variant) - if self._is_build_target_clean(params.cmk_build_target) and (not os.path.exists(b_dir)): - continue - cmake_argv = ['--build', b_dir] - self._add_common_cmake_build_options(cmake_argv, params) - self._add_cmake_build_jobs_option(cmake_argv, params.cmk_generator_alias, params.cmk_build_jobs) - self._add_cmake_build_verbosity_option(cmake_argv, params.cmk_generator_alias, params.cmk_build_verbosity) - if cmake_argv_optional: - self._add_cmake_build_tool_options(cmake_argv, cmake_argv_optional) - retv = self.launch_cmake(cmake_argv) - if retv != 0: - sys.exit(1) - - def launch_cmake(self, cmake_argv): - argv = [self._cmake_finder.find_cmake()] - argv.extend(cmake_argv) - - if self._verbosity_level > 0: - # assemble the cmake command line for logging purposes - joiner = ' ' - cmd_line = joiner.join(argv) - print("Launching: " + cmd_line) - retv = util.subproc_call_flushed(argv) - if retv < 0: - self._logger.debug("child was terminated by signal: %d", -retv) - else: - self._logger.debug("child returned: %d", retv) - return retv - - def _is_build_target_clean(self, target): - return (target is not None) and (target == 'clean') - - def _check_cmake_params(self, params): - if params.cmk_generator_alias is None: - if self._sys_info.is_windows_msys() and (params.toolset_str is not None) and (params.toolset_str == 'gcc'): - params.cmk_generator_alias = 'umake' - else: - params.cmk_generator_alias = self._get_default_cmake_generator() - if params.toolset_str is None: - if self._sys_info.get_platform() == 'linux': - params.toolset_str = 'gcc' - elif self._sys_info.get_platform() == 'macosx': - params.toolset_str = 'clang' - elif self._sys_info.get_platform() == 'windows': - if params.cmk_generator_alias in ['mgwmake', 'umake']: - params.toolset_str = 'gcc' - else: - params.toolset_str = self._dict_generator_alias_to_msvc_toolsets[params.cmk_generator_alias][0] - else: - assert False - elif params.toolset_str == 'msvc': - # toolset=msvc means to select the latest msvc version the selected generator supports. - assert self._sys_info.get_platform() == 'windows' - params.toolset_str = self._dict_generator_alias_to_msvc_toolsets[params.cmk_generator_alias][0] - elif params.toolset_str.startswith('msvc-'): - if params.toolset_str not in self._dict_generator_alias_to_msvc_toolsets[params.cmk_generator_alias]: - raise Exception("The selected generator does not support " + params.toolset_str + ", check toolset and generator arguments.") - if params.target_arch is None: - params.target_arch = self._sys_info.get_os_arch() - if params.cmk_cache_entries: - self._check_cmake_user_cache_entries(params.cmk_cache_entries) - - def _check_cmake_user_cache_entries(self, user_cache_entries): - # -D:= or -D= provided by the user cannot override any reserved cache entries like BUILD_SHARED_LIBS, ... - re_cache_entry = re.compile(r'-D(\w+)[=:]') - for cache_opt in user_cache_entries: - re_match = re_cache_entry.match(cache_opt) - if re_match: - cache_var = re_match.group(1) - if cache_var in self._cmk_reserved_cache_vars: - raise Exception("CMake cache entry " + cache_var + " is reserved by " - + self._script_name + " and may not be overridden via -D, please contact technical support.") - else: - # Unexpected -D expression, please investigate. - raise Exception("CMake cache entry expression " + cache_opt + " is unsupported, please contact technical support." ) - - def _get_default_cmake_generator(self): - if 'DEFAULT_CMAKE_GENERATOR' in os.environ: - generator_alias = os.environ['DEFAULT_CMAKE_GENERATOR'] - if generator_alias not in self._dict_to_cmake_generator: - raise Exception("CMake generator " + generator_alias + " defined by environment variable DEFAULT_CMAKE_GENERATOR is unsupported.") - return generator_alias - if self._sys_info.get_platform() == 'linux': - generator_alias = 'umake' - elif self._sys_info.get_platform() == 'macosx': - generator_alias = 'xcode' - elif self._sys_info.get_platform() == 'windows': - # e.g. 14.2, 14.1, 14.0, 12.0 etc. - bb_vs_latest_version = self._msvc_registry.get_latest_version() - if ver.version_compare(bb_vs_latest_version, (14, 2)) == 0: - generator_alias = 'vs16' - elif ver.version_compare(bb_vs_latest_version, (14, 1)) == 0: - generator_alias = 'vs15' - else: - generator_alias = 'vs' + str(bb_vs_latest_version[0]) - else: - assert False - return generator_alias - - def _is_multi_configuration_generator(self): - return self._build_tree_info.is_multi_configuration_generator() - - def _is_vs_64bit_native_toolset_supported(self, generator_alias): - re_vs_generator = re.compile(r'vs(\d+)$') - re_match = re_vs_generator.match(generator_alias) - if not re_match: - return False - if not self._prefer_vs_native_toolsets: - # Visual Studio native 64bit toolchains are disabled - return False - if self._sys_info.get_os_arch() != 'x86_64': - return False - if int(re_match.group(1), 10) < 12: - # Visual Studio 11 2012 or earlier don't have native 64 bit toolchains. - return False - if ver.version_compare(self._cmake_finder.get_cmake_version(), (3, 8, 0)) < 0: - # cmake too old to support vs native toolchains. - return False - return True - - def _create_compiler_info(self, toolset_str, target_arch): - if self._sys_info.is_cray(): - return self._create_cray_compiler_info(target_arch) - - compiler_info = CMakeCompilerInfo() - if toolset_str and (toolset_str.endswith('.cmake')): - # toolchain file specified -> no need to add any furter compiler details - compiler_info.cmake_toolchain_file = toolset_str - return compiler_info - # native compiler selected or assumed, figure out details to create the build tree folder. - compiler_info.target_arch = target_arch - re_msvc_version = re.compile(r'msvc-(\d+\.\d+)$') - re_match = re_msvc_version.match(toolset_str) - if re_match: - compiler_info.compiler_family = 'msvc' - compiler_info.version_major_minor = ver.version_tuple_from_str(re_match.group(1)) - return compiler_info - else: - assert not toolset_str.startswith('msvc') - bb_toolset_info = bldtools.Toolset(self._sys_info, toolset_str) - compiler_info.compiler_family = bb_toolset_info.get_toolset() - compiler_info.version_major_minor = bb_toolset_info.get_version()[:2] - # re_toolset_versioned = re.compile('([a-z]+)-(\d+\.\d+)$') - if self._sys_info.get_platform() == 'linux': - if toolset_str != 'gcc': - compiler_info.cmake_cxx_compiler = bb_toolset_info.get_compiler_command() - cxx_basename = os.path.basename(compiler_info.cmake_cxx_compiler) - # print("cxx_basename: ", cxx_basename) - if compiler_info.compiler_family == 'gcc': - gcc_basename = cxx_basename.replace('g++', 'gcc') - compiler_info.cmake_c_compiler = os.path.join(os.path.dirname(compiler_info.cmake_cxx_compiler), gcc_basename) - elif compiler_info.compiler_family == 'clang': - clang_basename = cxx_basename.replace('++', '') - compiler_info.cmake_c_compiler = os.path.join(os.path.dirname(compiler_info.cmake_cxx_compiler), clang_basename) - elif compiler_info.compiler_family == 'intel': - compiler_info.cmake_c_compiler = os.path.join(os.path.dirname(compiler_info.cmake_cxx_compiler), 'icc') - elif self._sys_info.get_platform() == 'macosx': - # assert compiler_info.compiler_family == 'clang' - if compiler_info.compiler_family == 'clang': - pass - elif compiler_info.compiler_family == 'intel': - compiler_info.cmake_cxx_compiler = bb_toolset_info.get_compiler_command() - compiler_info.cmake_c_compiler = os.path.join(os.path.dirname(compiler_info.cmake_cxx_compiler), 'icc') - else: - assert False - elif self._sys_info.get_platform() == 'windows': - if compiler_info.compiler_family == 'msvc': - pass - elif compiler_info.compiler_family == 'gcc': - # MinGW as native compiler: 64 bit and 32 bit default targets are possible. - compiler_info.mingw = bb_toolset_info.is_mingw() - compiler_info.target_arch = bb_toolset_info.get_platform_info(0).get_target_arch(0) - elif compiler_info.compiler_family == 'intel': - compiler_info.target_arch = bb_toolset_info.get_platform_info(0).get_target_arch(0) - else: - assert False - return compiler_info - - def _create_cray_compiler_info(self, target): - compiler_info = CMakeCompilerInfo() - compiler_info.target_arch = target - version_str = None - if 'CRAY_PRGENVGNU' in os.environ: - compiler_info.compiler_family = 'gcc' - version_str = os.environ['GCC_VERSION'] - elif 'CRAY_PRGENVCRAY' in os.environ: - compiler_info.compiler_family = 'cray' - version_str = os.environ['CRAY_CC_VERSION'] - elif 'CRAY_PRGENVINTEL' in os.environ: - compiler_info.compiler_family = 'intel' - version_str = os.environ['INTEL_VERSION'] - else: - assert False - version = ver.version_tuple_from_str(version_str) - assert len(version) >= 2 - compiler_info.version_major_minor = version[:2] - return compiler_info - - def _create_default_build_tree(self, compiler_info, generator_alias, build_configs, lnk_variant, cmake_argv_optional): - if self._is_multi_configuration_generator(): - build_dir = self._build_tree_info.get_build_dir(build_configs[0], lnk_variant) - if not self._is_valid_build_tree(build_dir): - self.launch_config(compiler_info, generator_alias, build_configs, lnk_variant, cmake_argv_optional) - else: - for cfg in build_configs: - build_dir = self._build_tree_info.get_build_dir(cfg, lnk_variant) - if not self._is_valid_build_tree(build_dir): - self.launch_config(compiler_info, generator_alias, [cfg], lnk_variant, cmake_argv_optional) - - def _is_valid_build_tree(self, build_dir): - if os.path.exists(os.path.join(build_dir, self._cmk_cache_file)): - return True - if os.path.exists(build_dir): - print(self._script_name + ": warning: build directory " + build_dir + " exists, but cmake cache file " + self._cmk_cache_file + " does not.") - return False - - def _add_common_cmake_build_options(self, cmake_argv, params): - if params.cmk_build_target: - cmake_argv.extend(['--target', params.cmk_build_target]) - if params.clean_first: - cmake_argv.append('--clean-first') - - def _add_cmake_build_jobs_option(self, cmake_argv, generator_alias, build_jobs): - cmake_version = self._cmake_finder.get_cmake_version() - if ver.version_compare(cmake_version, (3, 12)) >= 0: - assert len(cmake_argv) >= 2 - if build_jobs >= 2: - if generator_alias.startswith('vs'): - self._add_cmake_build_tool_options(cmake_argv, ['/maxcpucount:' + str(build_jobs)]) - else: - cmake_argv.insert(2, str(build_jobs)) - cmake_argv.insert(2, '--parallel') - elif build_jobs == 0: - # Use the build engine's native number of jobs. - cmake_argv.insert(2, '--parallel') - elif build_jobs >= 2: - if generator_alias in ['umake', 'ninja']: - self._add_cmake_build_tool_options(cmake_argv, ['-j' + str(build_jobs)]) - elif generator_alias.startswith('vs'): - self._add_cmake_build_tool_options(cmake_argv, ['/maxcpucount:' + str(build_jobs)]) - elif generator_alias == 'xcode': - self._add_cmake_build_tool_options(cmake_argv, ['-parallelizeTargets', '-jobs', str(build_jobs)]) - - def _add_cmake_build_verbosity_option(self, cmake_argv, generator_alias, verbosity_level): - if verbosity_level == 'cmake': - cmake_version = self._cmake_finder.get_cmake_version() - if ver.version_compare(cmake_version, (3, 14)) >= 0: - # self._add_cmake_build_tool_options(cmake_argv, ['-v']) - # -v is a cmake option and not a build tool option and therefore - # it has to be inserted left of '--' - if '--' in cmake_argv: - index = cmake_argv.index('--') - cmake_argv.insert(index, '-v') - else: - cmake_argv.append('-v') - else: - if generator_alias.startswith('vs'): - self._add_cmake_build_tool_options(cmake_argv, ['/verbosity:' + verbosity_level]) - - def _add_cmake_build_tool_options(self, cmake_argv, build_tool_options): - if not build_tool_options: - # no options given -> return - return - assert '--' not in build_tool_options - if '--' not in cmake_argv: - cmake_argv.append('--') - cmake_argv.extend(build_tool_options) diff --git a/cmake/CMakeBuild/bin/pyhhi/build/common/__init__.py b/cmake/CMakeBuild/bin/pyhhi/build/common/__init__.py deleted file mode 100755 index e69de29b..00000000 diff --git a/cmake/CMakeBuild/bin/pyhhi/build/common/android.py b/cmake/CMakeBuild/bin/pyhhi/build/common/android.py deleted file mode 100755 index a994d395..00000000 --- a/cmake/CMakeBuild/bin/pyhhi/build/common/android.py +++ /dev/null @@ -1,265 +0,0 @@ -from __future__ import print_function - -import os -import stat -import re -import shutil -import subprocess -import logging - -import pyhhi.build.common.system as system -import pyhhi.build.common.util as util -import pyhhi.build.common.ver as ver - - -class NdkFinder(object): - - def __init__(self, use_env=True): - self._logger = logging.getLogger(__name__) - self._sys_info = system.SystemInfo() - self._use_env = use_env # check for ANDROID_NDK_ROOT when searching for NDK. - self._re_ndk_root = re.compile(r'((android-ndk-r\d+([a-z]?))|(ndk-bundle))$') - self._ndksa_root = os.path.join(self._sys_info.get_home_dir(), 'bin', 'ndk-sa') - # set up a platform specific NDK search path - if self._sys_info.is_macosx(): - ndk_search_path = [os.path.join(self._sys_info.get_home_dir(), 'Library', 'Android', 'Sdk'), - os.path.join(self._sys_info.get_home_dir(), 'Library'), - self._sys_info.get_home_dir()] - else: - ndk_search_path = [os.path.join(self._sys_info.get_home_dir(), 'Android', 'Sdk'), - self._sys_info.get_home_dir()] - self._ndk_search_path = [d for d in ndk_search_path if os.path.exists(d)] - self._logger.debug("NDK search path: " + ';'.join(self._ndk_search_path)) - # - (self._ndk_root, self._ndk_version) = self._find_ndk_root() - - self._ndk_platforms = self._query_platforms(self._ndk_root) - - self._ndksa_toolchains = {'gnustl': self._query_ndksa_toolchains(self.get_ndksa_root('gnustl')), - 'libc++': self._query_ndksa_toolchains(self.get_ndksa_root('libc++'))} - - self._ndk_toolchain_dict = {'arm-linux-androideabi':'arm-linux-androideabi', - 'aarch64-linux-android':'aarch64-linux-android', - 'x86':'i686-linux-android', - 'x86_64':'x86_64-linux-android'} - - def get_ndk_root(self): - return self._ndk_root - - def get_ndk_version(self): - return self._ndk_version - - def get_ndksa_root(self, stl='gnustl'): - if stl: - return os.path.join(self._ndksa_root, stl) - else: - return self._ndksa_root - - def get_ndksa_toolchains(self, stl='gnustl'): - return self._ndksa_toolchains[stl] - - def get_ndk_platforms(self): - return self._ndk_platforms - - def get_api_level_from_platform(self, platform): - # platform := android-21, etc - re_match = re.match(r'android-(\d+)$', platform) - if re_match: - return int(re_match.group(1)) - else: - raise Exception("Unsupported android platform specification encountered: " + platform) - - def create_ndksa_toolchain(self, ndk_toolchain, api_level=None, unified_headers=False, ndk_stl='gnustl', ndk_llvm_version=None, inst_dir=None): - # whether bash scripts have proper hash bang lines or not. - hash_bang_missing = False - if ver.version_compare(self._ndk_version, (11,0)) < 0: - hash_bang_missing = True - # ndk_toolchain := arm-linux-androideabi-4.9, arm-linux-androideabi-clang3.6, arm-linux-androideabi - # := arm-linux-androideabi-4.9 aarch64-linux-android-4.9 x86-4.9 x86_64-4.9 - ndk_toolchain_parts = ndk_toolchain.split('-') - if re.match('(clang)?[0-9.]+$', ndk_toolchain_parts[-1]): - joiner = '-' - ndk_toolchain_prefix = joiner.join(ndk_toolchain_parts[:-1]) - else: - ndk_toolchain_prefix = ndk_toolchain - if ndk_toolchain_prefix in self._ndk_toolchain_dict: - if inst_dir is None: - ndksa_inst_dir = os.path.join(self.get_ndksa_root(ndk_stl), self._ndk_toolchain_dict[ndk_toolchain_prefix]) - else: - ndksa_inst_dir = os.path.join(inst_dir, ndk_stl, self._ndk_toolchain_dict[ndk_toolchain_prefix]) - else: - raise Exception("The NDK toolchain " + ndk_toolchain + " is not supported.") - # Create a possibly patched version of the original script which can be invoked from python. - mk_toolchain_script = self._create_mk_toolchain_script(self._ndk_root, hash_bang_missing) - # build the argument vector - mk_toolchain_args = [mk_toolchain_script] - if api_level is None: - api_level = self.get_api_level_from_platform(self._ndk_platforms[-1]) - - if (ver.version_compare(self._ndk_version, (14, 0)) >= 0) and (ver.version_compare(self._ndk_version, (16, 0)) < 0): - if unified_headers: - mk_toolchain_args.append('--unified-headers') - if ver.version_compare(self._ndk_version, (12,0)) >= 0: - # NDK 12 comes with a new python script expecting different command line options - if ndk_toolchain_parts[0] == 'aarch64': - ndk_arch = 'arm64' - else: - ndk_arch = ndk_toolchain_parts[0] - mk_toolchain_args.append('--arch=' + ndk_arch) - mk_toolchain_args.append('--api=' + str(api_level)) - # --force -> remove destination directory if it exists. - mk_toolchain_args.append('--force') - else: - ndk_platform = 'android-%d' % api_level - mk_toolchain_args.append('--platform=' + ndk_platform) - mk_toolchain_args.append('--toolchain=' + ndk_toolchain) - if ver.version_compare(self._ndk_version, (11,0)) < 0: - if ndk_llvm_version is not None: - mk_toolchain_args.append('--llvm-version=' + ndk_llvm_version) - else: - # enable clang by default - mk_toolchain_args.append('--use-llvm') - - if ndk_stl is not None: - mk_toolchain_args.append('--stl=' + ndk_stl) - mk_toolchain_args.append('--install-dir=' + ndksa_inst_dir) - #print("create_ndksa_toolchain:", mk_toolchain_args) - #return - - # prepare the destination directory - if os.path.exists(ndksa_inst_dir): - shutil.rmtree(ndksa_inst_dir) - if not os.path.exists(self._ndksa_root): - os.makedirs(self._ndksa_root) - - print("Launching: " + ' '.join(mk_toolchain_args)) - # and launch the script to create the new toolchain - util.subproc_check_call_flushed(mk_toolchain_args) - - if hash_bang_missing: - if os.path.exists(mk_toolchain_script): - os.remove(mk_toolchain_script) - # patch the clang++ shell wrapper to have a hash bang - self._patch_clang_shell_script(os.path.join(ndksa_inst_dir, 'bin', self._ndk_toolchain_dict[ndk_toolchain_prefix] + '-clang++')) - self._patch_clang_shell_script(os.path.join(ndksa_inst_dir, 'bin', self._ndk_toolchain_dict[ndk_toolchain_prefix] + '-clang')) - - # update the list of available toolchains. - self._ndksa_toolchains[ndk_stl] = self._query_ndksa_toolchains(os.path.join(ndksa_inst_dir, '..')) - - def _find_ndk_root(self): - self._logger.debug("entering: use_env=" + str(self._use_env)) - if self._use_env and ('ANDROID_NDK_ROOT' in os.environ): - self._logger.debug("using environment variable ANDROID_NDK_ROOT") - ndk_root = util.normalize_path(os.path.expandvars('$ANDROID_NDK_ROOT')) - if not os.path.exists(ndk_root): - raise Exception("environment variable ANDROID_NDK_ROOT points to a non-existing directory, please fix it or remove it.") - ndk_version = self._query_ndk_version(ndk_root) - else: - # self._logger.warn("The environment variable NDK is not defined.") - (ndk_root, ndk_version) = self._find_ndk_root_default(self._ndk_search_path) - return ndk_root, ndk_version - - def _find_ndk_root_default(self, ndk_search_path): - self._logger.debug("entering: ndk_search_path=" + ";".join(ndk_search_path)) - # Search for android-ndk-r10d, android-ndk-r10, or similar and select the latest release. If the regular expressions matches, - # there are always two groups but the second group is empty if no patch level is given. - ndk_version_list = [] - ndk_dir_map = {} - - for ndk_super_root in ndk_search_path: - for d in os.listdir(ndk_super_root): - re_match = self._re_ndk_root.match(d) - if re_match: - # the map associates a numeric version tuple with the NDK directory because the version sorter works on lists of numeric version tuples. - ndk_root = os.path.join(ndk_super_root, d) - ndk_version = self._query_ndk_version(ndk_root) - if ndk_version not in ndk_dir_map: - ndk_dir_map[ndk_version] = ndk_root - ndk_version_list.append(ndk_version) - self._logger.debug("find NDK " + ndk_root) - else: - self._logger.debug("duplicate NDK version encountered: " + ndk_root + " -> ignoring") - if not ndk_version_list: - raise Exception("The Android NDK installation directory cannot be found automatically, please contact technical support.") - ndk_version_list = ver.version_list_sort(ndk_version_list) - ndk_version = ndk_version_list[-1] - ndk_root = ndk_dir_map[ndk_version] - self._logger.debug("leaving, ndk_root=" + ndk_root) - return ndk_root, ndk_version - - def _query_ndk_version(self, ndk_root): - version_file = os.path.join(ndk_root, 'source.properties') - if not os.path.exists(version_file): - raise Exception("Android NDK version file " + version_file + " is missing, please contact technical support.") - # Pkg.Revision = 11.2.2725575 - re_ndk_version = re.compile(r'Pkg\.Revision\s*=\s*([0-9.]+)', re.IGNORECASE) - with open(version_file) as vf: - for line in vf: - re_match = re_ndk_version.match(line) - if re_match: - ndk_version = ver.version_tuple_from_str(re_match.group(1)) - return ndk_version - raise Exception("Android NDK " + ndk_root + ": version information is missing. Please contact technical support.") - - def _query_platforms(self, ndk_root): - platforms_dir = os.path.join(ndk_root, 'platforms') - assert os.path.exists(platforms_dir) - re_platform = re.compile('android-(\d+)$') - # enumerate installed platforms in ascending order. - version_list = [ver.version_tuple_from_str(re_platform.match(d).group(1)) for d in os.listdir(platforms_dir) if re_platform.match(d)] - if version_list: - version_list = ver.version_list_sort(version_list) - ndk_platforms = ['android-' + ver.version_tuple_to_str(version) for version in version_list] - return ndk_platforms - else: - assert False - - def _query_ndksa_toolchains(self, ndksa_root): - ndksa_toolchains = [] - if os.path.exists(ndksa_root): - ndksa_toolchains = [d for d in os.listdir(ndksa_root) if os.path.isdir(os.path.join(ndksa_root, d))] - return ndksa_toolchains - - def _create_mk_toolchain_script(self, ndk_root, hash_bang_missing): - if ver.version_compare(self._ndk_version, (12, 0)) >= 0: - mk_toolchain_script_basename = 'make_standalone_toolchain.py' - else: - mk_toolchain_script_basename = 'make-standalone-toolchain.sh' - mk_toolchain_script = os.path.join(ndk_root, 'build', 'tools', mk_toolchain_script_basename) - # print("mk_toolchain_script: " + mk_toolchain_script) - assert os.path.exists(mk_toolchain_script) - if hash_bang_missing: - mk_toolchain_script_tmp = os.path.join(ndk_root, 'build', 'tools', 'make-standalone-toolchain.bash') - self._add_bash_hash_bang(mk_toolchain_script, mk_toolchain_script_tmp) - else: - mk_toolchain_script_tmp = mk_toolchain_script - return mk_toolchain_script_tmp - - def _patch_clang_shell_script(self, clang_script): - if not os.path.exists(clang_script): - return - script_tmp = clang_script + '.tmp' - self._add_bash_hash_bang(clang_script, script_tmp) - assert os.path.exists(script_tmp) - os.remove(clang_script) - os.rename(script_tmp, clang_script) - - def _add_bash_hash_bang(self, script_old, script_new): - if not os.path.exists(script_old): - raise Exception("The script " + script_old + " does not exist.") - # read the content of the original script - input_lines = [] - with open(script_old) as fin: - for line in fin: - input_lines.append(line.rstrip()) - # create a new script with a hash bang - if os.path.exists(script_new): - os.remove(script_new) - with open(script_new, "w") as fout: - if not re.match(r'#!\s*/[a-zA-Z]+', input_lines[0]): - fout.write("#!/bin/bash\n") - for line in input_lines: - fout.write(line + "\n") - # make the script executable - st = os.stat(script_new) - os.chmod(script_new, st.st_mode | stat.S_IXUSR) diff --git a/cmake/CMakeBuild/bin/pyhhi/build/common/bldtools.py b/cmake/CMakeBuild/bin/pyhhi/build/common/bldtools.py deleted file mode 100755 index bbb6f70b..00000000 --- a/cmake/CMakeBuild/bin/pyhhi/build/common/bldtools.py +++ /dev/null @@ -1,1442 +0,0 @@ -from __future__ import print_function - -import glob -import logging -import os -import platform -import re -import shutil -import subprocess -import sys -import tempfile -import textwrap - -import pyhhi.build.common.system as system -import pyhhi.build.common.util as util -import pyhhi.build.common.ver as ver - - -class MsvcRegistry(object): - - class __MsvcRegistry(object): - - def __init__(self): - self._logger = logging.getLogger(__name__) - self._sys_info = system.SystemInfo() - self._supported_msvc_versions = ['14.2', '14.1', '14.0', '12.0', '11.0', '10.0'] - program_dir = self._sys_info.get_program_dir('x86') - # VS2019, VS2017 come with a locator tool vswhere to search for the installation directory. - # The dictionary _msvc_install_dir_dict will be augmented with keys 14.2 and 14.1 by method _do_inventory_vc14x(). - self._msvc_install_dir_dict = {'14.0': [os.path.join(program_dir, "Microsoft Visual Studio 14.0", 'VC')], - '12.0': [os.path.join(program_dir, "Microsoft Visual Studio 12.0", 'VC')], - '11.0': [os.path.join(program_dir, "Microsoft Visual Studio 11.0", 'VC')], - '10.0': [os.path.join(program_dir, "Microsoft Visual Studio 10.0", 'VC')]} - # a list of sorted version tuples identifying the installed MSVC products - self._installed_msvc_versions = [] - # key = msvc_version, value = full path of vcvarsall.bat - self._compiler_command_dict = {} - # key = msvc_version, value = options to be passed to the setup command; e.g. -vcvars_ver=14.0, -vcvars_ver=14.1x - self._compiler_command_option_dict = {} - # key = msvc_version, value = vc version - self._compiler_version_dict = {} - # key = msvc_version, value = True/False - self._is_vs2017_toolset_dict = {} - # key = msvc_version, value = True/False; e.g. '14.1' -> True indicates 14.1 is an alternative toolset installed with vs2019. - self._is_vs2019_toolset_dict = {} - # clear information on alternative toolset upfront - for version in self._supported_msvc_versions: - self._is_vs2017_toolset_dict[version] = False - self._is_vs2019_toolset_dict[version] = False - - if self._logger.isEnabledFor(logging.DEBUG): - self._logger.debug("performing in-depth VS inventory for debugging.") - self._do_inventory_winreg() - vswhere = self._find_vswhere() - if vswhere: - # Update VS2019 installation paths via vswhere.exe - self._do_inventory_vc14x('14.2', vswhere) - # Update VS2017 installation paths via vswhere.exe - self._do_inventory_vc14x('14.1', vswhere) - else: - pass - self._do_inventory() - self._dump_inventory() - - def _dump_inventory(self): - if self._logger.isEnabledFor(logging.DEBUG): - for version in self._installed_msvc_versions: - version_str = ver.version_tuple_to_str(version) - cl_version_str = ver.version_tuple_to_str(self._compiler_version_dict[version_str]) - self._logger.debug("found MSVC version {}, CL version {}, setup={}".format(version_str, cl_version_str, self._compiler_command_dict[version_str])) - - def get_compiler_command(self, version=None): - if version is None: - version = self.get_latest_version() - return self._compiler_command_dict[ver.version_tuple_to_str(version)] - - def get_compiler_version(self, version=None): - if version is None: - version = self.get_latest_version() - return self._compiler_version_dict[ver.version_tuple_to_str(version)] - - def get_latest_version(self, max_version=None): - if not self._installed_msvc_versions: - raise Exception("No supported Microsoft Visual C++ version found, please check your installation or contact technical support.") - if max_version is None: - max_version = ver.version_tuple_from_str(self._supported_msvc_versions[0]) - for version in self._installed_msvc_versions: - if ver.version_compare(max_version, version) >= 0: - return version - raise Exception("No suitable Microsoft Visual C++ version found, please check your installation or contact technical support.") - - def is_version_installed(self, version): - if (ver.version_compare(version, ver.version_tuple_from_str(self._supported_msvc_versions[0])) > 0) or (ver.version_compare(version, ver.version_tuple_from_str(self._supported_msvc_versions[-1])) < 0): - raise Exception("Microsoft Visual C++ toolset msvc-" + ver.version_tuple_to_str(version) + " is not supported.") - for v in self._installed_msvc_versions: - if ver.version_compare(v, version) == 0: - return True - return False - - def is_vs2017_toolset(self, version): - if not self.is_version_installed(version): - return False - version_str = ver.version_tuple_to_str(version) - if version_str in self._is_vs2017_toolset_dict: - return self._is_vs2017_toolset_dict[version_str] - return False - - def is_vs2019_toolset(self, version): - if not self.is_version_installed(version): - return False - version_str = ver.version_tuple_to_str(version) - if version_str in self._is_vs2019_toolset_dict: - return self._is_vs2019_toolset_dict[version_str] - return False - - def _do_inventory(self): - for version in self._supported_msvc_versions: - if version not in self._msvc_install_dir_dict: - continue - setup_cmd = None - for vc_dir in self._msvc_install_dir_dict[version]: - self._logger.debug("trying VC install dir %s", vc_dir) - # multiple vc install directories per version are possible to support community and professional/enterprise editions. - cl_cmd = self._find_cl_cmd(vc_dir, version) - if cl_cmd: - self._logger.debug("found VC compiler %s", cl_cmd) - if version in ['14.2', '14.1']: - setup_cmd = os.path.normpath(os.path.join(os.path.dirname(cl_cmd), '..', '..', '..', '..', '..', '..', 'Auxiliary', 'Build', 'vcvarsall.bat')) - elif version in ['14.0']: - if os.path.exists(os.path.join(vc_dir, '..', 'Common7', 'IDE', 'devenv.exe')): - self._logger.debug("found VS 2015 IDE installed.") - setup_cmd = os.path.join(vc_dir, 'vcvarsall.bat') - elif '14.2' in self._compiler_command_dict: - # We've got 14.0 as an alternative VS 2019 toolset. - self._logger.debug("found msvc-14.0 installed as an alternative VS 2019 toolset.") - setup_cmd = self._compiler_command_dict['14.2'] - self._is_vs2019_toolset_dict[version] = True - self._compiler_command_option_dict[version] = '-vcvars_ver=14.0' - elif '14.1' in self._compiler_command_dict: - # We've got 14.0 as an alternative VS 2017 toolset. - self._logger.debug("found msvc-14.0 installed as an alternative VS 2017 toolset.") - setup_cmd = self._compiler_command_dict['14.1'] - self._is_vs2017_toolset_dict[version] = True - self._compiler_command_option_dict[version] = '-vcvars_ver=14.0' - else: - setup_cmd = os.path.join(vc_dir, 'vcvarsall.bat') - break - if (setup_cmd is not None) and os.path.exists(setup_cmd): - assert cl_cmd is not None - cl_version = self._query_msvc_compiler_version(cl_cmd) - self._compiler_command_dict[version] = setup_cmd - self._compiler_version_dict[version] = cl_version - if (version == '14.2') and ('14.1' not in self._msvc_install_dir_dict): - # Search for alternative toolset vc141 installed with vs2019 - self._logger.debug("searching for alternative VS2019 toolset vc141.") - vc_dir in self._msvc_install_dir_dict[version][0] - setup_cmd = self._compiler_command_dict['14.2'] - cl_cmd = self._find_cl_cmd(vc_dir, '14.1') - if cl_cmd: - self._logger.debug("found alternative VC compiler {}".format(cl_cmd)) - cl_version = self._query_msvc_compiler_version(cl_cmd) - self._compiler_command_dict['14.1'] = setup_cmd - self._compiler_version_dict['14.1'] = cl_version - self._compiler_command_option_dict['14.1'] = '-vcvars_ver=14.1x' - self._is_vs2019_toolset_dict['14.1'] = True - - msvc_version_list = [] - for version in self._compiler_version_dict: - msvc_version_list.append(ver.version_tuple_from_str(version)) - if msvc_version_list: - self._installed_msvc_versions = ver.version_list_sort(msvc_version_list) - self._installed_msvc_versions.reverse() - # print("sorted msvc versions: ", self._installed_msvc_versions) - - def _find_cl_cmd(self, vc_inst_dir, version_str): - cl_cmd = None - if version_str in ['14.2', '14.1']: - msvc_dir = os.path.join(vc_inst_dir, 'Tools', 'MSVC') - if os.path.exists(msvc_dir): - version_dir_list = [ver.version_tuple_from_str(x) for x in os.listdir(msvc_dir) if re.match(r'[0-9.]+$', x)] - if version_dir_list: - version_dir_list = ver.version_list_sort(version_dir_list) - version_dir_list.reverse() - # VS2019 installs toolset v141 side-by-side in a folder named '14.16.27023', toolset v142 is - # installed in a folder named '14.20.27508'. - for version in version_dir_list: - if (version_str == '14.2') and (version[1] >= 30): - self._logger.debug("ignoring cl installation folder: {}".format(os.path.join(msvc_dir, ver.version_tuple_to_str(version)))) - continue - if (version_str == '14.1') and (version[1] >= 20): - self._logger.debug("ignoring cl installation folder: {}".format(os.path.join(msvc_dir, ver.version_tuple_to_str(version)))) - continue - cl_cmd = os.path.join(msvc_dir, ver.version_tuple_to_str(version), 'bin', 'HostX64', 'x64', 'cl.exe') - if os.path.exists(cl_cmd): - break - else: - cl_cmd = None - else: - cl_cmd = os.path.join(vc_inst_dir, 'bin', 'amd64', 'cl.exe') - if not os.path.exists(cl_cmd): - cl_cmd = None - if cl_cmd: - self._logger.debug("found cl: {}".format(cl_cmd)) - return cl_cmd - - def _query_msvc_compiler_version(self, cl_cmd): - version_file_dir = tempfile.mkdtemp() - version_file = os.path.join(version_file_dir, 'vc_version_peek.h') - with open(version_file, "w") as versionf: - versionf.write(textwrap.dedent("""\ - #pragma message(_MSC_FULL_VER _MSC_BUILD) - """.format())) - retv = subprocess.check_output([cl_cmd, '/EP', version_file], stderr=self._sys_info.get_subprocess_devnull(), universal_newlines=True).lstrip() - # print("_query_msvc_compiler_versionf(): retv=" + retv) - re_match = re.match(r'#pragma\s+message\(([0-9][0-9])([0-9][0-9])([0-9]+)\s+([0-9]+)\)', retv) - if re_match: - cl_version_str = "%s.%s.%s.%s" % (re_match.group(1), re_match.group(2), re_match.group(3), re_match.group(4)) - # print("_query_msvc_compiler_cpp(): cl version: " + cl_version_str) - cl_version = ver.version_tuple_from_str(cl_version_str) - else: - raise Exception("Failed to parse compiler version from " + version_file + ". Please contact technical support.") - if os.path.exists(version_file): - # print("temp. version file=" + version_file) - shutil.rmtree(version_file_dir) - return cl_version - - def _do_inventory_winreg(self): - if int(platform.python_version_tuple()[0]) >= 3: - import winreg - win_registry = winreg - else: - import _winreg - win_registry = _winreg - - msvc_registry_sections = ['Microsoft', 'Wow6432Node\\Microsoft'] - reg_key_joiner = "\\" - vc_install_dir_dict = {} - - for version in self._supported_msvc_versions: - for section in msvc_registry_sections: - try: - sub_key = reg_key_joiner.join(['Software', section, 'VisualStudio', version, 'Setup', 'VC' ]) - #print("_find_latest_msvc(): trying registry key:" + sub_key) - rkey = win_registry.OpenKey(win_registry.HKEY_LOCAL_MACHINE, sub_key) - #print("_find_latest_msvc(): found registry key:" + sub_key) - vc_product_dir = win_registry.QueryValueEx(rkey, 'ProductDir')[0] - vc_product_dir = util.normalize_path(vc_product_dir) - if os.path.exists(os.path.join(vc_product_dir, 'vcvarsall.bat')): - # check for vcvarsall.bat won't work as its existence won't indicate a complete installation of the development product. - cl_cmd = self._find_cl_cmd(vc_product_dir, version) - if (cl_cmd is not None) and os.path.exists(cl_cmd): - vc_install_dir_dict[version] = util.normalize_path(vc_product_dir) - self._logger.debug("found VC install dir %s", vc_install_dir_dict[version]) - win_registry.CloseKey(rkey) - except WindowsError: - continue - return vc_install_dir_dict - - def _do_inventory_vc14x(self, msvc_version_str, vswhere=None): - if msvc_version_str == '14.2': - vswhere_version_expr = '[16.0,17.0)' - vs_alias_str = 'VS2019' - elif msvc_version_str == '14.1': - vswhere_version_expr = '[15.0,16.0)' - vs_alias_str = 'VS2017' - else: - assert False - if vswhere is None: - vswhere = self._find_vswhere() - if vswhere is None: - self._logger.debug("{0} locator vswhere.exe not found, {0} detection disabled.".format(vs_alias_str)) - return - else: - self._logger.debug("found {} locator: {}".format(vs_alias_str, vswhere)) - vc_dir_fnd = False - try: - vswhere_argv = [vswhere, '-latest'] - # vswhere_argv.extend(['-products', 'Enterprise']) - # vswhere_argv.extend(['-products', 'Professional']) - # vswhere_argv.extend(['-products', 'Community']) - vswhere_argv.extend(['-products', '*']) - vswhere_argv.extend(['-requires', 'Microsoft.VisualStudio.Component.VC.Tools.x86.x64']) - vswhere_argv.extend(['-property', 'installationPath']) - vswhere_argv.extend(['-version', vswhere_version_expr]) - retv = subprocess.check_output(vswhere_argv, universal_newlines=True).rstrip() - if retv != '': - self._logger.debug("{} install path: {}".format(vs_alias_str, retv)) - vc_dir = os.path.join(retv, 'VC') - if os.path.exists(vc_dir): - self._logger.debug("{} VC install path: {}".format(vs_alias_str, vc_dir)) - self._msvc_install_dir_dict[msvc_version_str] = [vc_dir] - vc_dir_fnd = True - else: - self._logger.debug("{} install path: ".format(vs_alias_str)) - except subprocess.CalledProcessError: - self._logger.debug("{} vswhere locator call failed for some reason.".format(vs_alias_str)) - if not vc_dir_fnd: - self._logger.debug("{0} VC not found, {0} detection disabled.".format(vs_alias_str)) - - def _find_vswhere(self): - vswhere_prog = None - prog_dirs = [self._sys_info.get_program_dir('x86_64'), self._sys_info.get_program_dir('x86')] - for d in prog_dirs: - vswhere_dir = os.path.join(d, 'Microsoft Visual Studio', 'Installer') - if os.path.exists(os.path.join(vswhere_dir, 'vswhere.exe')): - vswhere_prog = os.path.join(vswhere_dir, 'vswhere.exe') - break - return vswhere_prog - - # the singleton as a class attribute - instance = None - - def __init__(self): - self._logger = logging.getLogger(__name__) - if MsvcRegistry.instance is None: - MsvcRegistry.instance = MsvcRegistry.__MsvcRegistry() - - def __getattr__(self, item): - return getattr(MsvcRegistry.instance, item) - - -class Toolset(object): - - class PlatformInfo(object): - def __init__(self, target_os, api_level=None): - # e.g. windows, linux, macosx, android, iphone, iphonesimulator - self._target_os = target_os - self._target_os_version = None - self._api_level = api_level - self._isysroot = None - # The sdk_version attribute is only available on MacOSX. - self._sdk_version = None - self._target_archs = [] - # Some compilers require extra flags to emit object code complying with a specific ABI or platform - # specific SDK. - self._target_cflags_dict = {} - self._target_runtime_lib_dict = {} - - def get_target_os(self): - return self._target_os - - def get_target_os_version(self): - return self._target_os_version - - def set_target_os_version(self, version): - self._target_os_version = version - self.set_sdk_version(version) - - def get_sdk_version(self): - return self._sdk_version - - def set_sdk_version(self, version): - self._sdk_version = version - - def get_api_level(self): - return self._api_level - - def set_api_level(self, api_level): - self._api_level = api_level - - def get_isysroot(self): - return self._isysroot - - def set_isysroot(self, isysroot): - self._isysroot = isysroot - - def get_target_arch(self, index=None): - if index is None: - return self._target_archs - else: - return self._target_archs[index] - - def set_target_archs(self, target_archs): - self._target_archs = target_archs - - def get_target_cflags(self, target_arch): - if target_arch in self._target_cflags_dict: - return self._target_cflags_dict[target_arch] - else: - return tuple() - - def set_target_cflags(self, target_arch, target_cflags): - self._target_cflags_dict[target_arch] = target_cflags - - def get_target_runtime_libs(self, target_arch): - if target_arch in self._target_runtime_lib_dict: - return self._target_runtime_lib_dict[target_arch] - else: - return tuple() - - def set_target_runtime_libs(self, target_arch, target_runtime_libs): - self._target_runtime_lib_dict[target_arch] = target_runtime_libs - - def __init__(self, sys_info, toolset=None, stl='default'): - self._logger = logging.getLogger(__name__) - self._sys_info = sys_info - if stl == 'default': - # only relevant for Android toolchains. - stl = 'gnustl' - if sys_info.is_windows(): - self._msvc_registry = MsvcRegistry() - self._toolset = None - self._toolset_versioned = None - self._toolset_info_short = None - self._is_mingw = False - # The ndk_finder attribute helps to qualify an Android toolset and will be created on first use. - self._ndk_finder = None - self._version = None - self._internal_version = None # msvc only: version number reported by cl /? - # A list of Platform objects - self._platform_info = [] - self._compiler_cmd = None - self._compiler_prefix = None - self._compiler_tag = None - self._boost_compiler_tag = None - self._lib_debug_tag = 'd' - self._lib_prefix_shared = 'lib' - self._lib_prefix_static = 'lib' - self._intel_search_path = [] - if sys_info.is_linux(): - self._lib_ext_shared = ('.so', '.so') - self._lib_ext_static = '.a' - # Add Intel compiler search path - if os.path.exists(os.path.join('/opt', 'intel', 'bin')): - self._intel_search_path.append(os.path.join('/opt', 'intel', 'bin')) - elif sys_info.is_macosx(): - self._lib_ext_shared = ('.dylib', '.dylib') - self._lib_ext_static = '.a' - # Add Intel compiler search path - self._intel_search_path.append(os.path.join('/usr', 'local', 'bin')) - if os.path.exists(os.path.join('/opt', 'intel', 'bin')): - self._intel_search_path.append(os.path.join('/opt', 'intel', 'bin')) - elif sys_info.is_windows(): - # Assume msvc naming convention as the default on windows - self._lib_prefix_shared = '' - self._lib_prefix_static = 'lib' - self._lib_ext_shared = ('.dll', '.lib') - self._lib_ext_static = '.lib' - # Add Intel compiler search path - intel_inst_root = os.path.join(self._sys_info.get_program_dir('x86'), 'IntelSWTools', 'compilers_and_libraries', 'windows', 'bin') - if os.path.exists(os.path.join(intel_inst_root, 'intel64')): - self._intel_search_path.append(os.path.join(intel_inst_root, 'intel64')) - else: - assert False - # and set the toolset attributes with real values - self._qualify_toolset(sys_info, toolset, stl) - self._toolset_info_short = self._create_toolset_info_short() - - def __str__(self): - s = "toolset: %s\n" % self._toolset - s += "toolset versioned: %s\n" % self._toolset_versioned - if self._internal_version: - s += "version: %s [%s]\n" % (ver.version_tuple_to_str(self._version),ver.version_tuple_to_str(self._internal_version)) - else: - s += "version: %s\n" % ver.version_tuple_to_str(self._version) - if self._toolset.startswith('msvc'): - if self._msvc_registry.is_vs2017_toolset(self._version): - s += "VS 2017 toolset!\n" - if self._msvc_registry.is_vs2019_toolset(self._version): - s += "VS 2019 toolset!\n" - - s += "platform(s):\n" - for platform_info in self._platform_info: - s += " target os: %s\n" % platform_info.get_target_os() - target_os_version = platform_info.get_target_os_version() - if target_os_version: - s += " target os version: %s\n" % ver.version_tuple_to_str(target_os_version) - sdk_version = platform_info.get_sdk_version() - if sdk_version: - s += " sdk version: %s\n" % ver.version_tuple_to_str(sdk_version) - s += " target arch: %s\n" % platform_info.get_target_arch() - for target in platform_info.get_target_arch(): - cflags_tuple = platform_info.get_target_cflags(target) - if cflags_tuple: - cflags = ' '.join(cflags_tuple) - s += " " + target + " => cflags: " + cflags + "\n" - runtime_libs = platform_info.get_target_runtime_libs(target) - for lib in runtime_libs: - s += " rtl(" + target + "): " + lib + "\n" - isysroot = platform_info.get_isysroot() - if isysroot: - s += " isysroot: %s\n" % isysroot - s += "mingw?: %s\n" % self._is_mingw - s += "compiler prefix: %s\n" % self._compiler_prefix - s += "compiler command: %s\n" % self._compiler_cmd - s += "compiler tag: %s\n" % self._compiler_tag - s += "boost compiler tag: %s\n" % self._boost_compiler_tag - s += "lib debug tag: %s\n" % self._lib_debug_tag - s += "lib prefix shared: %s\n" % self._lib_prefix_shared - s += "lib prefix static: %s\n" % self._lib_prefix_static - s += "lib extension shared: %s %s\n" % self._lib_ext_shared - s += "lib extension static: %s\n" % self._lib_ext_static - return s - - def get_toolset_info_short(self, target_arch=None): - """Returns a short description of the toolset.""" - str = self._toolset_info_short - # get the default platform - platform_info = self.get_platform_info(0) - if target_arch is None: - target_arch = platform_info.get_target_arch(0) - cflags_tuple = platform_info.get_target_cflags(target_arch) - if cflags_tuple: - str += '; ' - str += 'toolset flags: ' + ' '.join(cflags_tuple) - return str - - def get_toolset(self): - """Returns the toolset string as understood by BoostBuild without a version suffix. - The following toolsets are supported: msvc, gcc, clang.""" - return self._toolset - - def get_version(self): - return self._version - - def get_internal_version(self): - return self._internal_version - - def get_toolset_versioned(self): - """Returns the toolset string as understood by b2 with a version suffix. - Example: msvc-11.0 or gcc-4.8""" - return self._toolset_versioned - - def get_platform_info(self, index=None): - """Returns a list of PlatformInfo objects or a single PlatformInfo object consisting of - platform specific attributes. - Example: clang may support platforms macosx, iphone and iphonesimulator.""" - if index is None: - return self._platform_info - else: - return self._platform_info[index] - - def is_mingw(self): - return self._is_mingw - - def get_compiler_prefix(self): - return self._compiler_prefix - - def get_compiler_command(self): - """Returns the absolute path of the c++ compiler.""" - return self._compiler_cmd - - def get_compiler_tag(self): - return self._compiler_tag - - def get_boost_compiler_tag(self): - return self._boost_compiler_tag - - def get_lib_debug_tag(self): - return self._lib_debug_tag - - def get_lib_prefix_shared(self): - return self._lib_prefix_shared - - def get_lib_prefix_static(self): - return self._lib_prefix_static - - def get_lib_ext_shared(self): - return self._lib_ext_shared - - def get_lib_ext_static(self): - return self._lib_ext_static - - def _qualify_toolset(self, sys_info, toolset, stl='gnustl'): - # toolset is either - # 1) a toolset specification supported by Boost.Build: gcc-4.6, gcc, clang, msvc, msvc-x.y, darwin - # 2) a relative compiler command: clang++, g++, g++-4.9, g++-5 - # 3) an absolute compiler command - - if toolset is None: - toolset = self._get_default_toolset(sys_info) - - # The relative compiler commands clang++, clang++-3.6, g++, g++-4.9 will be translated into the corresponding - # Boost.Build toolset specifications. - toolset = self._normalize_toolset_spec(toolset) - - if self._qualify_android_toolset(sys_info, toolset, stl): - pass - else: - # Initialize the platform_info attributes for a native toolset. - platform_info = self.PlatformInfo(sys_info.get_platform()) - platform_info.set_target_archs([sys_info.get_os_arch()]) - # Handle msvc upfront to simplify the logic. The msvc toolset implies desktop windows for the time - # being. Portable platforms supported by msvc are not covered yet. - if toolset.find('msvc') >= 0: - self._toolset = 'msvc' - if toolset == 'msvc': - self._toolset_versioned = 'msvc-' + ver.version_tuple_to_str(self._msvc_registry.get_latest_version()) - else: - self._toolset_versioned = toolset - re_match = re.match(r'msvc-([0-9.]+)$', self._toolset_versioned) - if re_match: - # make sure this version is installed - if not self._msvc_registry.is_version_installed(ver.version_tuple_from_str(re_match.group(1))): - raise Exception("Microsoft Visual C++ toolset msvc-" + re_match.group(1) + " is not installed.") - # found a full product version, assume 32 and 64 bit compilers are available - self._version = ver.version_tuple_from_str(re_match.group(1)) - self._compiler_cmd = self._msvc_registry.get_compiler_command(self._version) - if sys_info.get_os_arch() == 'x86_64': - platform_info.set_target_archs(['x86', 'x86_64']) - else: - platform_info.set_target_archs(['x86']) - self._platform_info.append(platform_info) - # extract msvc/cl's internal version; e.g. 18.0.40629 - self._internal_version = self._msvc_registry.get_compiler_version(self._version) - else: - raise Exception("The toolset " + toolset + " is not supported, please contact technical support.") - else: - if os.path.isabs(toolset): - self._compiler_cmd = toolset - else: - if sys_info.is_macosx(): - if toolset == 'clang': - # Assume an Xcode toolchain, /usr/bin/clang++ will be ignored to support side-by-side installations of different Xcode toolchains. - self._compiler_cmd = self._find_xcode_clang() - elif toolset == 'darwin': - self._compiler_cmd = util.find_tool_on_path('g++', True) - elif toolset == 'intel': - self._compiler_cmd = self._find_intel() - else: - raise Exception("The toolset " + toolset + " is not supported on MacOSX, please contact technical support.") - else: - # check for gcc-x.y and clang-x.y - re_match = re.match(r'(gcc|clang)-([0-9.]+)$', toolset) - if re_match: - # self._toolset_versioned = toolset - if re_match.group(1) == 'gcc': - self._compiler_cmd = self._find_versioned_compiler('g++', ver.version_tuple_from_str(re_match.group(2))) - elif re_match.group(1) == 'clang': - self._compiler_cmd = self._find_versioned_compiler('clang++', ver.version_tuple_from_str(re_match.group(2))) - else: - assert False - elif toolset == 'gcc': - self._compiler_cmd = util.find_tool_on_path('g++', True) - elif toolset == 'clang': - self._compiler_cmd = self._find_clang() - elif toolset == 'intel': - self._compiler_cmd = self._find_intel() - else: - # toolset is supposed to be a c++ compiler command like g++-4.7, clang++-4.5 or some prefixed cross compiler. - self._compiler_cmd = util.find_tool_on_path(toolset, True) - # now guess the toolset category given the compiler command - self._toolset = self._get_toolset_category(self._compiler_cmd) - if self._toolset == 'clang': - self._version = self._get_clang_version(self._compiler_cmd) - elif self._toolset in ['gcc', 'darwin']: - self._version = self._get_gcc_version(self._compiler_cmd) - elif self._toolset == 'intel': - self._version = self._get_intel_version(self._compiler_cmd) - else: - assert False - - # This does not work if /usr/bin/clang++ is linked to clang somewhere in the - # filesystem. - #if sys_info.is_linux() or sys_info.is_macosx(): - # self._compiler_cmd = os.path.realpath(self._compiler_cmd) - if self._toolset == 'darwin': - self._platform_info.append(platform_info) - elif self._toolset == 'clang': - if sys_info.is_macosx(): - (sdk_path, sdk_version) = self._discover_macosx_sdk(platform_info.get_target_os()) - platform_info.set_isysroot(sdk_path) - platform_info.set_target_os_version(sdk_version) - self._platform_info.append(platform_info) - # Add iphone platform information - platform_info = self.PlatformInfo('iphone') - platform_info.set_target_archs(['combined', 'armv7', 'arm64']) - (sdk_path, sdk_version) = self._discover_macosx_sdk(platform_info.get_target_os()) - platform_info.set_isysroot(sdk_path) - platform_info.set_target_os_version(sdk_version) - self._platform_info.append(platform_info) - # Add iphonesimulator platform information - platform_info = self.PlatformInfo('iphonesimulator') - platform_info.set_target_archs(['combined', 'x86_64', 'x86']) - (sdk_path, sdk_version) = self._discover_macosx_sdk(platform_info.get_target_os()) - platform_info.set_isysroot(sdk_path) - platform_info.set_target_os_version(sdk_version) - self._platform_info.append(platform_info) - elif sys_info.is_linux(): - self._platform_info.append(platform_info) - else: - assert False - elif self._toolset == 'gcc': - # find out the compiler prefix if any. - self._compiler_prefix = self._get_compiler_prefix(self._compiler_cmd) - gcc_machine = self._get_machine(self._compiler_cmd) - # analyze the compiler's machine string to understand what kind of cross compiler we've got. - # e.g. ubuntu: x86_64-w64-mingw32 or i686-w64-mingw32 - # windows: x86_64-w64-mingw32 - # mingw32: mingw32 - if re.search('mingw', gcc_machine): - self._is_mingw = True - platform_info = self.PlatformInfo('windows') - if re.match('x86_64-', gcc_machine): - if sys_info.is_windows(): - # assume the 64 bit compiler can do 32 bit as well. - platform_info.set_target_archs(['x86_64', 'x86']) - else: - platform_info.set_target_archs(['x86_64']) - else: - platform_info.set_target_archs(['x86']) - elif re.match('arm-', gcc_machine): - platform_info.set_target_archs(['arm']) - elif re.match('aarch64-', gcc_machine): - platform_info.set_target_archs(['aarch64']) - self._platform_info.append(platform_info) - elif self._toolset == 'intel': - if sys_info.is_linux(): - self._platform_info.append(platform_info) - elif sys_info.is_macosx(): - (sdk_path, sdk_version) = self._discover_macosx_sdk(platform_info.get_target_os()) - platform_info.set_isysroot(sdk_path) - platform_info.set_target_os_version(sdk_version) - self._platform_info.append(platform_info) - elif sys_info.is_windows(): - #platform_info.set_target_archs(['x86_64', 'x86']) - self._platform_info.append(platform_info) - else: - raise Exception("The toolset " + self._toolset + " is not supported on this platform yet, please contact technical support.") - else: - assert False - - # fill in the compiler taqs - if self._toolset == 'msvc': - self._compiler_tag = self._toolset_versioned - self._boost_compiler_tag = 'vc' + str(self._version[0]) + str(self._version[1]) - self._lib_debug_tag = 'gd' - elif self._toolset == 'darwin': - self._compiler_tag = 'gcc-' + ver.version_tuple_to_str(self._version[:2]) - self._boost_compiler_tag = 'xgcc' + str(self._version[0]) + str(self._version[1]) - elif self._toolset == 'clang': - self._compiler_tag = 'clang-' + ver.version_tuple_to_str(self._version[:2]) - if sys_info.is_macosx(): - # The boost libraries are tagged with the version of the gcc backend and not the - # clang version. - gcc_version = self._get_gcc_version(self._compiler_cmd) - self._boost_compiler_tag = 'clang-darwin' + str(gcc_version[0]) + str(gcc_version[1]) - elif sys_info.is_linux(): - self._boost_compiler_tag = 'clang' + str(self._version[0]) + str(self._version[1]) - else: - assert False - elif self._toolset == 'gcc': - if self._is_mingw: - self._compiler_tag = 'gcc-mingw-' + ver.version_tuple_to_str(self._version[:2]) - self._boost_compiler_tag = 'mgw' + str(self._version[0]) + str(self._version[1]) - self._lib_prefix_shared = 'lib' - self._lib_prefix_static = 'lib' - self._lib_ext_shared = ('.dll', '.dll.a') - self._lib_ext_static = '.a' - self._add_mingw_runtime_lib_info(sys_info) - else: - self._compiler_tag = 'gcc-' + ver.version_tuple_to_str(self._version[:2]) - self._boost_compiler_tag = 'gcc' + str(self._version[0]) + str(self._version[1]) - elif self._toolset == 'intel': - self._compiler_tag = 'intel-' + ver.version_tuple_to_str(self._version[:2]) - if sys_info.is_linux() or sys_info.is_macosx(): - self._boost_compiler_tag = 'il' + str(self._version[0]) + str(self._version[1]) - elif sys_info.is_windows(): - self._lib_debug_tag = 'gd' - self._boost_compiler_tag = 'iw' - else: - assert False - else: - assert False - - def _normalize_toolset_spec(self, toolset): - self._logger.debug("entering toolset=%s", toolset) - # normalize a toolset specification like g++-4.9 to gcc-4.9 as understood by Boost.Build. - if self._sys_info.is_macosx(): - # deals with cmake which seems to detect c++ rather than clang++ on macosx. For some reason /usr/bin/c++ is linked to clang++ - # and the same is true for the Xcode path /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++. - re_match = re.match(r'(clang|[cg])\+\+(-[0-9.]+)?', toolset, re.IGNORECASE) - else: - re_match = re.match(r'(clang|g)\+\+(-[0-9.]+)?', toolset, re.IGNORECASE) - if re_match: - toolset_norm = re_match.group(1) - if toolset_norm == 'g': - toolset_norm = 'gcc' - elif toolset_norm == 'c': - toolset_norm = 'clang' - if re_match.group(2): - toolset_norm += re_match.group(2) - else: - toolset_norm = toolset - self._logger.debug("returning toolset=%s", toolset_norm) - return toolset_norm - - def _get_toolset_category(self, compiler_cmd): - assert os.path.isabs(compiler_cmd) - basename = os.path.basename(compiler_cmd) - if (basename.find('clang') >= 0) or (self._sys_info.is_macosx() and (basename == 'c++')): - # deals with cmake which seems to detect c++ rather than clang++ on macosx. - toolset_category = 'clang' - elif (basename == 'icpc') or (basename == 'icl.exe'): - toolset_category = 'intel' - else: - if self._sys_info.is_macosx(): - if basename in ['g++', 'gcc']: - toolset_category = 'darwin' - else: - toolset_category = 'gcc' - else: - toolset_category = 'gcc' - return toolset_category - - def _add_mingw_runtime_lib_info(self, sys_info): - if not sys_info.is_linux(): - return - # The LINUX mingw compilers are configured to link to the shared runtime by default, which has to be deployed to - # the target system. - if os.path.dirname(self.get_compiler_command()) != '/usr/bin': - # Ignore this mingw compiler, it might be user private. - return - platform_info = self.get_platform_info(0) - target_arch = platform_info.get_target_arch(0) - compiler_prefix = self.get_compiler_prefix() - compiler_version = ver.version_tuple_to_str(self.get_version()[:2]) - re_dll_names = re.compile(r'((libstdc.*)|(libgcc_s_.*)|(libwinpthread.*))\.dll$', re.IGNORECASE) - dir_list = [] - if sys_info.get_os_distro() == 'ubuntu': - # Ubuntu 15.04 - # /usr/lib/gcc/x86_64-w64-mingw32/4.9-posix/libstdc++-6.dll - # /usr/lib/gcc/x86_64-w64-mingw32/4.9-posix/libgcc_s_seh-1.dll - # /usr/x86_64-w64-mingw32/lib/libwinpthread-1.dll - # - # Ubuntu 14.04 - # /usr/lib/gcc/x86_64-w64-mingw32/4.8/libstdc++-6.dll - # /usr/lib/gcc/x86_64-w64-mingw32/4.8/libgcc_s_sjlj-1.dll - # /usr/x86_64-w64-mingw32/lib/libwinpthread-1.dll - # - thread_model = self._get_gcc_thread_model(self.get_compiler_command()) - if thread_model == 'win32': - # Assume thread model win32 without a dependency on libwinpthread. - dir_list = [os.path.join('/usr/lib/gcc', compiler_prefix, compiler_version + '-win32')] - else: - # Assume thread model posix. - dir_list = [os.path.join('/usr/lib/gcc', compiler_prefix, compiler_version), - os.path.join('/usr/lib/gcc', compiler_prefix, compiler_version + '-posix'), - os.path.join('/usr', compiler_prefix, 'lib')] - elif sys_info.is_redhat(): - retv = subprocess.check_output([self.get_compiler_command(), '-print-sysroot'], universal_newlines=True) - sys_root = retv.lstrip().rstrip() - if (len(sys_root) > 0) and os.path.exists(sys_root): - dir_list = [os.path.join(sys_root, 'mingw', 'bin')] - dll_list = [] - for dir in dir_list: - if os.path.exists(dir): - file_list = [os.path.join(dir, f) for f in os.listdir(dir) if re_dll_names.match(f)] - if file_list: - dll_list.extend(file_list) - if dll_list: - #print('_add_mingw_runtime_lib_info', dll_list) - platform_info.set_target_runtime_libs(target_arch, tuple(dll_list)) - - def _get_default_toolset(self, sys_info): - toolset = None - - if 'BJAM_TOOLSET' in os.environ: - # A power users can override the platform dependent default toolset via his environment. - # - # e.g. macosx: BJAM_TOOLSET=clang - # windows: BJAM_TOOLSET=msvc-10.0 - # - toolset = os.environ['BJAM_TOOLSET'] - else: - if sys_info.is_linux(): - toolset = 'gcc' - elif sys_info.is_macosx(): - #toolset = 'darwin' - toolset = 'clang' - elif sys_info.is_windows(): - # the default toolset is the latest msvc. - toolset = 'msvc-' + ver.version_tuple_to_str(self._msvc_registry.get_latest_version()) - else: - assert False - return toolset - - def _get_gcc_version(self, gcc_cmd): - # gcc -dumpversion may just emit the major version (g++-7/ubuntu 17.10) - retv = subprocess.check_output([gcc_cmd, '-E', '-dM', '-x', 'c++', os.devnull], universal_newlines=True) - lines = retv.splitlines() - gcc_version_list = [0, 0, 0] - re_gcc_version = re.compile(r'#define\s+(__GNUC__|__GNUC_MINOR__|__GNUC_PATCHLEVEL__)\s+(\d+)') - for l in lines: - re_match = re_gcc_version.match(l) - if re_match: - if re_match.group(1) == '__GNUC__': - gcc_version_list[0] = int(re_match.group(2), 10) - self._logger.debug("found gcc major %d", gcc_version_list[0]) - elif re_match.group(1) == '__GNUC_MINOR__': - gcc_version_list[1] = int(re_match.group(2), 10) - self._logger.debug("found gcc minor %d", gcc_version_list[1]) - elif re_match.group(1) == '__GNUC_PATCHLEVEL__': - gcc_version_list[2] = int(re_match.group(2), 10) - self._logger.debug("found gcc patch level %d", gcc_version_list[2]) - version = tuple(gcc_version_list) - return version - - def _get_gcc_thread_model(self, gcc_cmd): - thread_model = 'posix' - retv = subprocess.check_output([gcc_cmd, '-v'], stderr=subprocess.STDOUT, universal_newlines=True) - lines = retv.splitlines() - re_thread_model = re.compile(r'Thread model:\s*(\S+)', re.IGNORECASE) - for l in lines: - re_match = re_thread_model.match(l) - if re_match: - thread_model = re_match.group(1) - return thread_model - - def _get_clang_version(self, clang_cmd): - # ubuntu: Ubuntu clang version 3.0-6ubuntu3 (tags/RELEASE_30/final) (based on LLVM 3.0) - # macosx: - retv = subprocess.check_output([clang_cmd, '--version'], universal_newlines=True) - version_response = retv.rstrip() - lines = version_response.splitlines() - re_version_match = re.search(r'\s+version\s+([0-9]+\.[0-9]+)', lines[0], re.IGNORECASE) - if not re_version_match: - raise Exception("The clang compiler has returned an unsupported version string. Please contact technical support.") - return ver.version_tuple_from_str(re_version_match.group(1)) - - def _get_intel_version(self, icpc_cmd): - if self._sys_info.is_windows(): - re_version_match = None - # stderr=subprocess.STDOUT: - retv = subprocess.check_output([icpc_cmd, '/?'], stderr=subprocess.STDOUT, universal_newlines=True) - version_response = retv.rstrip() - lines = version_response.splitlines() - re_version_match = re.search(r'\s+Version\s+([0-9.]+)', lines[0], re.IGNORECASE) - else: - retv = subprocess.check_output([icpc_cmd, '--version'], universal_newlines=True) - version_response = retv.rstrip() - lines = version_response.splitlines() - re_version_match = re.match(r'^icpc\s+[^0-9.]+\s+([0-9.]+)', lines[0], re.IGNORECASE) - if not re_version_match: - raise Exception("The intel compiler has returned an unsupported version string. Please contact technical support.") - return ver.version_tuple_from_str(re_version_match.group(1)) - - def _get_machine(self, gcc_cmd): - retv = subprocess.check_output([gcc_cmd, '-dumpmachine'], universal_newlines=True) - return retv.lower() - - def _get_compiler_prefix(self, compiler_cmd): - # same for gcc and clang - if os.path.isabs(compiler_cmd): - compiler_cmd = os.path.basename(compiler_cmd) - # arm-linux-gnueabihf-g++-4.8 - # arm-linux-gnueabihf-g++ - # arm-linux-androideabi-g++ - # arm-linux-androideabi-g++-4.9 - # i686-w64-mingw32-gcc-4.8 - # i686-w64-mingw32-gcc - # arm-linux-androideabi-clang - compiler_cmd_parts = compiler_cmd.split('-') - if len(compiler_cmd_parts) < 4: - return None - else: - return '-'.join(compiler_cmd_parts[:3]) - - def _create_toolset_info_short(self): - toolset_info = None - if self._toolset == 'msvc': - toolset_info = self._toolset + '-' + ver.version_tuple_to_str(self._version) - if self._internal_version: - toolset_info += ' [' + ver.version_tuple_to_str(self._internal_version) + ']' - elif self._toolset in ['clang', 'darwin']: - toolset_info = self._toolset + ' ' + ver.version_tuple_to_str(self._version) - elif self._toolset == 'gcc': - toolset_info = 'gcc ' + ver.version_tuple_to_str(self._version) - if self._compiler_cmd != 'g++': - toolset_info += ' using ' + self._compiler_cmd - elif self._toolset == 'intel': - toolset_info = 'intel ' + ver.version_tuple_to_str(self._version) - else: - assert False - return toolset_info - - def _find_xcode_clang(self): - retv = subprocess.check_output(['xcrun', '--sdk', 'macosx', '--find', 'clang++'], universal_newlines=True) - clang_cmd = retv.lstrip().rstrip() - if not os.path.exists(clang_cmd): - raise Exception("Discovery of Xcode clang failed, please contact technical support.") - return clang_cmd - - def _find_clang(self): - if self._sys_info.is_linux(): - clang_cmd = util.find_tool_on_path('clang++') - if clang_cmd is None: - # Try /usr/bin/clang++-x.y as a fallback, ubuntu clang packages may not add a link to the default version. - clang_cmds = glob.glob('/usr/bin/clang++-[0-9]*') - if clang_cmds: - # select the highest version. - re_clang_version = re.compile(r'.*\+\+-([0-9.]+)$') - version_list = [] - for clang in clang_cmds: - re_match = re_clang_version.match(clang) - if re_match: - version_list.append(ver.version_tuple_from_str(re_match.group(1))) - version_list = ver.version_list_sort(version_list) - clang_cmd = '/usr/bin/clang++-' + ver.version_tuple_to_str(version_list[-1]) - else: - clang_cmd = util.find_tool_on_path('clang++') - if clang_cmd is None: - raise Exception("Discovery of clang++ failed, please check your installation or contact technical support.") - return clang_cmd - - def _find_intel(self): - icpc_cmd = None - if self._intel_search_path: - if self._sys_info.is_linux() or self._sys_info.is_macosx(): - icpc_cmd = util.find_tool_on_path('icpc', search_path=self._intel_search_path) - elif self._sys_info.is_windows(): - icpc_cmd = util.find_tool_on_path('icl.exe', search_path=self._intel_search_path) - else: - assert False - if icpc_cmd is None: - raise Exception("Discovery of Intel compiler failed, please check your installation or contact technical support.") - return icpc_cmd - - def _find_versioned_compiler(self, compiler_prog, toolset_version): - """Find versioned compiler on the path.""" - self._logger.debug("entering: compiler=%s %s", compiler_prog, ver.version_tuple_to_str(toolset_version)) - compiler_cmd = util.find_tool_on_path(compiler_prog + '-' + ver.version_tuple_to_str(toolset_version)) - if compiler_cmd: - self._logger.debug("returning: %s", compiler_cmd) - return compiler_cmd - # Starting with g++ 5.x ubuntu systems use g++-5 instead of g++-.. - compiler_cmd = util.find_tool_on_path(compiler_prog + '-' + str(toolset_version[0])) - if compiler_cmd is None: - # Search for the compiler without a version suffix but make sure its version matches the toolset version - compiler_cmd = util.find_tool_on_path(compiler_prog, True) - self._logger.debug("con't validating version of %s, expected: %s", compiler_cmd, ver.version_tuple_to_str(toolset_version)) - version = None - if compiler_prog.startswith('g++'): - version = self._get_gcc_version(compiler_cmd) - elif compiler_prog.startswith('clang++'): - version = self._get_clang_version(compiler_cmd) - else: - assert False - if version: - assert len(version) >= 2 - if ver.version_compare(version[:2], toolset_version) != 0: - raise Exception("Search for compiler command " + compiler_prog + " version " + ver.version_tuple_to_str(toolset_version) + " failed, please contact technical support.") - self._logger.debug("returning: %s", compiler_cmd) - return compiler_cmd - - def _discover_macosx_sdk(self, target_os): - sdk_version = None - if target_os == 'macosx': - sdk = target_os - elif target_os == 'iphone': - sdk = 'iphoneos' - elif target_os == 'iphonesimulator': - sdk = target_os - else: - assert False - retv = subprocess.check_output(['xcrun', '--sdk', sdk, '--show-sdk-path'], universal_newlines=True) - sdk_path = retv.lstrip().rstrip() - if not os.path.exists(sdk_path): - raise Exception("The location of the platform SDK cannot be discovered, please contact technical support.") - sdk_basename = os.path.basename(sdk_path) - re_match = re.match(r'[^0-9]+(\d+\.\d+)\.sdk$', sdk_basename, re.IGNORECASE) - if re_match: - sdk_version = ver.version_tuple_from_str(re_match.group(1)) - return (sdk_path, sdk_version) - - def _qualify_android_toolset(self, sys_info, toolset, stl='gnustl'): - if sys_info.is_windows(): - # No Android support on windows yet. - return False - # All android cross compilers are supposed to be named '[path]*android*'. - if os.path.isabs(toolset): - toolset_cmd = os.path.basename(toolset) - else: - toolset_cmd = toolset - if toolset_cmd.find('android') < 0: - return False - - if os.path.isabs(toolset): - toolset_cmd = toolset - else: - # toolset is supposed to be a prefixed g++ or possibly clang++ command. - toolset_cmd = util.find_tool_on_path(toolset) - if toolset_cmd is None: - # analyze toolset and search for -android or -androideabi - toolset_prefix_list = toolset.split('-') - if len(toolset_prefix_list) < 4: - return False - if re.match('android', toolset_prefix_list[2]): - # android or androideabi - toolchain_prefix = '-'.join(toolset_prefix_list[:3]) - ndk_finder = self._get_ndk_finder() - toolset_cmd = os.path.join(ndk_finder.get_ndksa_root(stl), toolchain_prefix, 'bin', toolset) - assert os.path.exists(toolset_cmd) - else: - return False - - toolset_machine = self._get_machine(toolset_cmd) - if re.search('-android', toolset_machine): - toolset_machine_parts = toolset_machine.split('-') - if len(toolset_machine_parts) < 3: - return False - # Looks like this toolset is really a supported Android toolset, initialize all attributes. - self._compiler_cmd = toolset_cmd - - self._compiler_prefix = self._get_compiler_prefix(toolset_cmd) - if re.match(r'.*((clang)|(clang\+\+))$', toolset_cmd): - self._toolset = 'clang' - else: - self._toolset = 'gcc' - - platform_info = self.PlatformInfo('android', self._get_android_api_level(toolset_cmd)) - if re.match('(armv5te)|(armv7a)|(arm)$', toolset_machine_parts[0]): - #armeabi armeabi-v7a armeabi-v7a-hard - platform_info.set_target_archs(['armeabi-v7a', 'armeabi']) - platform_info.set_target_cflags('armeabi-v7a', tuple(['-march=armv7-a', '-mfloat-abi=softfp', '-mfpu=vfpv3-d16'])) - elif toolset_machine_parts[0] == 'aarch64': - platform_info.set_target_archs(['arm64-v8a']) - elif toolset_machine_parts[0] == 'i686': - platform_info.set_target_archs(['x86']) - elif toolset_machine_parts[0] == 'x86_64': - platform_info.set_target_archs(['x86_64']) - else: - assert False - - self._platform_info.append(platform_info) - - if self._toolset == 'gcc': - self._version = self._get_gcc_version(toolset_cmd) - self._compiler_tag = 'gcc-' + ver.version_tuple_to_str(self._version[:2]) - self._boost_compiler_tag = 'gcc' + str(self._version[0]) + str(self._version[1]) - elif self._toolset == 'clang': - self._version = self._get_clang_version(toolset_cmd) - self._compiler_tag = 'clang-' + ver.version_tuple_to_str(self._version[:2]) - if sys_info.is_macosx(): - # The boost libraries are tagged with the version of the gcc backend and not the - # clang version. - gcc_version = self._get_gcc_version(self._compiler_cmd) - self._boost_compiler_tag = 'clang-darwin' + str(gcc_version[0]) + str(gcc_version[1]) - else: - self._boost_compiler_tag = 'clang' + str(self._version[0]) + str(self._version[1]) - else: - assert False - return True - else: - assert False - - def _get_ndk_finder(self): - if self._ndk_finder is None: - import pyhhi.build.common.android - self._ndk_finder = pyhhi.build.common.android.NdkFinder() - return self._ndk_finder - - def _get_android_api_level(self, toolset_cmd): - # toolset_cmd is supposed to be an absolute path to be able to support different API levels and - # architectures. If the toolset command refers to a standalone toolchain, there is a single api-level header and - # the API level can be extracted unless unified headers are used. - # If the toolset command refers to the NDK compiler (->QtCreator), the latest API level will be - # taken as default. - api_level_header = os.path.join(os.path.dirname(toolset_cmd), '..', 'sysroot', 'usr', 'include', 'android', 'api-level.h') - if os.path.exists(api_level_header): - # This looks like a standalone toolchain installation. - # #define __ANDROID_API__ 21 - re_api_define = re.compile(r'^#define\s+__ANDROID_API__\s+(\d+)') - with open(api_level_header) as fin: - for line in fin: - re_match = re_api_define.match(line) - if re_match: - api_level = int(re_match.group(1), 10) - return api_level - # Most likely NDK r15 with unified headers, the API level is now defined in arm-linux-androideabi-clang++. - ndk_finder = self._get_ndk_finder() - ndk_version = ndk_finder.get_ndk_version() - if ver.version_compare(ndk_version, (15, 0)) >= 0: - return self._get_android_api_level_unified(toolset_cmd) - raise Exception("The Android API level cannot be extracted from " + api_level_header + ". Please contact technical support.") - else: - # Assume the original NDK toolchain with multiple platform/API level support - ndk_finder = self._get_ndk_finder() - ndk_platforms = ndk_finder.get_ndk_platforms() - re_match = re.match(r'android-(\d+)', ndk_platforms[-1]) - if re_match: - api_level = int(re_match.group(1), 10) - else: - raise Exception("The Android API level cannot be determined, please contact technical support.") - return api_level - - def _get_android_api_level_unified(self, toolset_cmd): - if toolset_cmd.endswith('clang++') or toolset_cmd.endswith('clang'): - # -D__ANDROID_API__=26 - re_api_level_def = re.compile(r'\s+-D__ANDROID_API__=(\d+)') - with open(toolset_cmd) as fin: - for line in fin: - re_match = re_api_level_def.search(line) - if re_match: - api_level = int(re_match.group(1), 10) - return api_level - raise Exception("The Android API level cannot be determined. Please contact technical support.") - - -class FatBinaryTool(object): - - def __init__(self): - # search for lipo and raise an Exception if the command cannot be found. - self._lipo_cmd = util.find_tool_on_path('lipo', True) - - def createLibs(self, src_lib_dirs, dst_lib_dir, incremental=True): - if len(src_lib_dirs) < 2: - raise Exception("A universal library requires at least two different input formats.") - for d in src_lib_dirs: - if not os.path.exists(d): - raise Exception("The directory " + d + " does not exist.") - if not os.path.exists(dst_lib_dir): - os.makedirs(dst_lib_dir) - lib_dir = src_lib_dirs[0] - lib_names = [d for d in os.listdir(lib_dir) if (d.endswith('.a') or d.endswith('.dylib'))] - for lib in lib_names: - src_mtime = 0 - src_libs = [] - for d in src_lib_dirs: - src_lib = os.path.join(d, lib) - if os.path.exists(src_lib): - mtime = os.path.getmtime(src_lib) - if mtime > src_mtime: - src_mtime = mtime - src_libs.append(src_lib) - if len(src_libs) >= 2: - lipo_argv = [self._lipo_cmd, '-create'] - lipo_argv.extend(src_libs) - dst_lib = os.path.join(dst_lib_dir, lib) - lipo_argv.extend(['-output', dst_lib]) - build_universal = True - if os.path.exists(dst_lib): - mtime = os.path.getmtime(dst_lib) - if incremental and (mtime > src_mtime): - build_universal = False - if build_universal: - # and launch lipo to create the universal binary file. - cmd_line = ' '.join(lipo_argv) - print("Launching: " + cmd_line) - retv = util.subproc_call_flushed(lipo_argv) - if retv != 0: - raise Exception("Creating a universal file failed -> " + cmd_line) - else: - raise Exception("error: creating a univeral file requires at least two input files, check " + lib) - - -class DyLibInstallNameInfo(object): - - def __init__(self, dylib): - assert os.path.exists(dylib) - self.basename = os.path.basename(dylib) - self.inst_dir = os.path.dirname(dylib) - self.inst_name = None - self.depends_list = [] - self.rpath_list = [] - - -class DyLibInstallNameInfoInspector(object): - - def __init__(self, ignore_system_libs=True): - self._ignore_system_libs = ignore_system_libs - self._inst_name_info_cache = {} - - def create_install_name_info(self, dylib): - assert os.path.exists(dylib) - if not os.path.isabs(dylib): - dylib = os.path.abspath(dylib) - if dylib not in self._inst_name_info_cache: - inst_name_info = DyLibInstallNameInfo(dylib) - inst_name_info.inst_name = self.get_install_name(dylib) - (depends_list, rpath_list) = self.get_depends_list(dylib) - inst_name_info.depends_list = depends_list - inst_name_info.rpath_list = rpath_list - self._inst_name_info_cache[dylib] = inst_name_info - else: - inst_name_info = self._inst_name_info_cache[dylib] - return inst_name_info - - def get_install_name(self, dylib): - assert os.path.exists(dylib) - lines = subprocess.check_output(['otool', '-D', dylib], universal_newlines=True).rstrip().splitlines() - return lines[1] - - def get_depends_list(self, dylib): - assert os.path.exists(dylib) - depends_list = [] - rpath_list = [] - load_cmd_lines = subprocess.check_output(['otool', '-l', dylib], universal_newlines=True).rstrip().splitlines() - - re_depends_path = re.compile(r'\s*name\s+([^ ]+)') - re_rpath = re.compile(r'\s*path\s+([^ ]+)') - - # otool -L dylib -> - # lib/clang-4.2/x86_64/plugins/debug/codec/libmpg4nulldec_plugin.dylib: - # libmpg4nulldec_plugin.dylib (compatibility version 0.0.0, current version 0.0.0) - # @loader_path/lib/libvlccore.5.dylib (compatibility version 7.0.0, current version 7.0.0) - # /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 56.0.0) - # /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0) - # - # -- - # otool -l dylib -> - # cmd LC_RPATH - # cmdsize 80 - # path /Users/rauthenberg/projects/VlcPluginSampleLib/lib/clang-6.1/x86_64 (offset 12) - # - # cmd LC_LOAD_DYLIB - # cmdsize 48 - # name /usr/lib/libc++.1.dylib (offset 24) - # - re_lc_rpath = re.compile(r'\s*cmd\s+LC_RPATH') - re_lc_load_dylib = re.compile(r'\s*cmd\s+LC_LOAD_DYLIB') - line_cnt = 0 - while line_cnt < len(load_cmd_lines): - line = load_cmd_lines[line_cnt].lstrip() - if re_lc_rpath.match(line): - re_match = re_rpath.match(load_cmd_lines[line_cnt + 2]) - if re_match: - rpath_list.append(re_match.group(1)) - line_cnt += 3 - elif re_lc_load_dylib.match(line): - re_match = re_depends_path.match(load_cmd_lines[line_cnt + 2]) - if re_match: - depends_path = re_match.group(1) - if self._ignore_system_libs: - if not depends_path.startswith(('/System/', '/Library/', '/usr/lib/')): - depends_list.append(depends_path) - else: - depends_list.append(depends_path) - line_cnt += 3 - else: - line_cnt += 1 - - return (depends_list, rpath_list) - - def modify_depends(self, dylib, depends_dict): - argv = ['install_name_tool'] - for key in depends_dict: - argv.append('-change') - argv.append(key) - argv.append(depends_dict[key]) - argv.append(dylib) - #print("modify_depends(): ", argv) - util.subproc_check_call_flushed(argv) - - def change_rpaths(self, dylib, rpaths_dict): - argv = ['install_name_tool'] - for key in rpaths_dict: - argv.append('-rpath') - argv.append(key) - argv.append(rpaths_dict[key]) - argv.append(dylib) - #print("change_rpaths(): ", argv) - util.subproc_check_call_flushed(argv) - - def delete_rpaths(self, dylib, rpath_list): - argv = ['install_name_tool'] - for rpath in rpath_list: - argv.append('-delete_rpath') - argv.append(rpath) - argv.append(dylib) - #print("change_rpaths(): ", argv) - util.subproc_check_call_flushed(argv) - - def modify_install_name(self, dylib, install_name): - argv = ['install_name_tool', '-id', install_name, dylib] - util.subproc_check_call_flushed(argv) - - -class BuildScriptInstaller(object): - - def __init__(self, verbose=False): - self._logger = logging.getLogger(__name__) - # print("BuildScriptInstaller.__init__(): __name__=" + __name__) - self._verbose = verbose - - def set_verbose(self, verbose): - self._verbose = verbose - - def install_script(self, inst_dir, script, modules): - assert inst_dir is not None - script = os.path.abspath(script) - module_flist = [] - package_dir_set = set() - # python modules are specified in import syntax like ".". - for pymod in modules: - pymod_elem = pymod.split('.') - rel_path = os.path.sep.join(pymod_elem) - module_flist.append(rel_path + '.py') - if len(pymod_elem) > 1: - # module is part of a python package - pkg_list = list(pymod_elem[:-1]) - #print("processing python package dir list", pkg_list) - while len(pkg_list) > 0: - pkg_dir = os.path.sep.join(pkg_list) - #print("processing pkg dir", pkg_dir) - if pkg_dir not in package_dir_set: - package_dir_set.add(pkg_dir) - pkg_list.pop() - for pkg_dir in package_dir_set: - #print("processing pkg dir", pkg_dir) - module_flist.append(os.path.join(pkg_dir, '__init__.py')) - #print("install_script: modules:", module_flist) - - # make sure all files exist before trying to copy anything. - if not os.path.exists(script): - raise Exception("file " + script + " does not exist.") - # key = module_file_path, value = file system path - # e.g. pyhhi/build/common/ver.py must be mapped to a directory listed by sys.path. - module_flist_src_dict = {} - for f in module_flist: - for pth in sys.path: - fpath = os.path.join(pth, f) - if os.path.exists(fpath): - module_flist_src_dict[f] = fpath - break - else: - fpath = None - if fpath is None: - raise Exception("module file {0} not found.".format(fpath)) - - # create destination directory - if not os.path.exists(inst_dir): - os.makedirs(inst_dir) - - for f in module_flist: - assert f in module_flist_src_dict - fpath_src = module_flist_src_dict[f] - dname = os.path.dirname(f) - dst_dir = os.path.join(inst_dir, dname) - #print("cp " + fpath_src + " -> " + os.path.join(dst_dir, dname)) - if not os.path.exists(dst_dir): - os.makedirs(dst_dir) - #print("creating directory " + dst_dir) - if self._verbose: - print("copying %-15s %s" % (os.path.basename(fpath_src), dst_dir)) - shutil.copy(fpath_src, dst_dir) - - # copy the script to - if self._verbose: - print("copying %-15s %s" % (os.path.basename(script), inst_dir)) - shutil.copy(script, inst_dir) - diff --git a/cmake/CMakeBuild/bin/pyhhi/build/common/cmbldver.py b/cmake/CMakeBuild/bin/pyhhi/build/common/cmbldver.py deleted file mode 100755 index ea821ef1..00000000 --- a/cmake/CMakeBuild/bin/pyhhi/build/common/cmbldver.py +++ /dev/null @@ -1,7 +0,0 @@ - -#-- WARNING -- -# This file is automatically generated by CMake. -# Any manual changes here will be overridden by the next build. -#------------- - -CMAKE_BUILD_VERSION_STR = "3.14.4.4" diff --git a/cmake/CMakeBuild/bin/pyhhi/build/common/error.py b/cmake/CMakeBuild/bin/pyhhi/build/common/error.py deleted file mode 100755 index e1822f3d..00000000 --- a/cmake/CMakeBuild/bin/pyhhi/build/common/error.py +++ /dev/null @@ -1,30 +0,0 @@ - - -class BaseError(Exception): - """Base exception with a hint whether to list traceback information or not. - - Attributes: - msg -- explanation of the error - list_traceback -- hint to an application level exception handler whether to list traceback information or not. - """ - - def __init__(self, msg, list_traceback=True): - self.msg = msg - self.list_traceback = list_traceback - - def __str__(self): - return self.msg - - -class InvalidInputParameterError(BaseError): - """Exception raised for invalid input parameters.""" - - def __init__(self, msg, list_traceback=False): - BaseError.__init__(self, msg, list_traceback) - - -class InvalidCommandLineArgumentError(BaseError): - """Exception raised for invalid command line arguments.""" - - def __init__(self, msg, list_traceback=False): - BaseError.__init__(self, msg, list_traceback) diff --git a/cmake/CMakeBuild/bin/pyhhi/build/common/system.py b/cmake/CMakeBuild/bin/pyhhi/build/common/system.py deleted file mode 100755 index b51f0fc6..00000000 --- a/cmake/CMakeBuild/bin/pyhhi/build/common/system.py +++ /dev/null @@ -1,498 +0,0 @@ - -from __future__ import print_function - -import multiprocessing -import logging -import platform -import os -import sys -import re -import shutil -import tempfile -import textwrap -import subprocess - -import pyhhi.build.common.ver as ver -import pyhhi.build.common.util as util - - -class SystemInfo(object): - - class __SystemInfo(object): - - def __init__(self): - self._logger = logging.getLogger(__name__) - # print("Constructing a new SystemInfo object") - # check python version: it has to be 2.7 or higher - self._python_version = ver.get_python_version(True) - - # create all attributes with default values which will be overwritten in platform specific sections later on - self._python_launcher = None - self._python_arch = 'x86_64' - self._python_implementation = platform.python_implementation() - self._os_distro = platform.platform() - # self._os_distro_short = platform.platform() - self._win32api_installed = False - self._windows_msys = False - self._redhat_system = False - self._debian_system = False - self._suse_system = False - self._pkg_fmt = None - self._pkg_arch = None - - self._os_codename = 'unknown' - self._os_arch = 'x86_64' - self._os_version = (0, 0, 0) - self._num_processors = multiprocessing.cpu_count() - - platform_system = platform.system().lower() - self._platform_system = platform_system - - self._desktop_dir = None - self._default_proj_home_dir = None - - if platform_system == 'linux': - # e.g. x86_64 or i686 - platform_machine = platform.machine().lower() - if platform_machine != 'x86_64': - assert re.match(r'i[6543]86', platform_machine, re.IGNORECASE) - platform_machine = 'x86' - - self._os_arch = platform_machine - self._python_arch = platform_machine - - # there's no portable way in python to obtain the linux version. - self._query_linux_distro_info() - - if self.is_debian(): - self._pkg_fmt = 'deb' - self._pkg_arch = subprocess.check_output(['dpkg', '--print-architecture'], universal_newlines=True).rstrip() - elif self.is_redhat() or self.is_suse(): - self._pkg_fmt = 'rpm' - self._pkg_arch = subprocess.check_output(['rpm', '--eval', '%_arch'], universal_newlines=True).rstrip() - else: - # unknown linux system, no logic available to figure out the package format or package architecture yet. - self._pkg_fmt = 'unknown' - self._pkg_arch = subprocess.check_output(['uname', '-m'], universal_newlines=True).rstrip() - if self._pkg_arch == 'x86_64': - self._pkg_arch = 'amd64' - elif platform_system == 'windows': - self._programx86_dir = None - self._program_dir = None - self._program_data_dir = None - - if 'MSYSTEM' in os.environ: - self._windows_msys = True - - # obtain additional version information - # windows 7: ('7', '6.1.7601', 'SP1', 'Multiprocessor Free') - self._os_version = ver.version_tuple_from_str(platform.win32_ver()[1]) - - # Hm, win32api not installed/available -> system detection may not by accurate and includes some guessing. - if platform.architecture()[0] != '64bit': - self._python_arch = 'x86' - self._os_arch = 'x86' - if ('PROCESSOR_ARCHITEW6432' in os.environ) and (os.getenv('PROCESSOR_ARCHITEW6432') == 'AMD64'): - # 32 bit python interpreter and 64 bit windows - self._os_arch = 'x86_64' - - if self._os_arch == 'x86_64': - if self._python_arch == 'x86': - self._program_dir = os.path.normpath(os.getenv('PROGRAMW6432')) - self._programx86_dir = os.path.normpath(os.getenv('PROGRAMFILES')) - else: - self._program_dir = os.path.normpath(os.getenv('PROGRAMFILES')) - self._programx86_dir = os.path.normpath(os.getenv('PROGRAMFILES(X86)')) - assert self._programx86_dir is not None - elif self._os_arch == 'x86': - self._program_dir = os.path.normpath(os.getenv('PROGRAMFILES')) - else: - assert False - assert self._program_dir is not None - self._program_data_dir = os.path.normpath(os.getenv('PROGRAMDATA')) - - if self._windows_msys: - pass - elif os.path.exists(os.path.join(r'C:\Windows', 'py.exe')): - self._python_launcher = os.path.join(r'C:\Windows', 'py.exe') - - # probe the registry to ensure the shell will pass additional arguments to the - # registered python interpreter. - # if pywin_check: - # self.check_pywin_registry() - elif platform_system == 'darwin': - # create a dictionary to simplify the mapping between minor version ID and codenames - codename_dict = {'10.4': 'tiger', - '10.5': 'leopard', - '10.6': 'snow leopard', - '10.7': 'lion', - '10.8': 'mountain lion', - '10.9': 'mavericks', - '10.10': 'yosemite', - '10.11': 'el capitan', - '10.12': 'sierra', - '10.13': 'high sierra', - '10.14': 'mojave'} - # replace darwin by macosx - self._platform_system = 'macosx' - # e.g. ('10.7.4', ('', '', ''), 'x86_64') - mac_ver = platform.mac_ver() - # save the macosx version as a tuple of integers - self._os_version = ver.version_tuple_from_str(mac_ver[0]) - # analyze the version tuple to derive the codename: lion, mountain lion, etc - major_minor_ver = str(self._os_version[0]) + '.' + str(self._os_version[1]) - if major_minor_ver in codename_dict: - self._os_codename = codename_dict[major_minor_ver] - #e.g. x86_64 - self._os_arch = mac_ver[2] - # python architecture is the same as the macosx architecture - self._python_arch = self._os_arch - else: - raise Exception('unsupported platform detected: ' + platform_system) - self._query_home_dir() - self._query_default_proj_home_dir() - self._query_desktop_dir() - self._query_search_path() - - def get_python_version(self): - return self._python_version - - def get_python_executable(self): - return sys.executable - - def get_python_launcher(self): - return self._python_launcher - - def is_python3(self): - return ver.version_compare(self._python_version, (3, 0)) >= 0 - - def get_script_ext(self): - if self.is_python3(): - script_ext = '3.py' - else: - script_ext = '.py' - return script_ext - - def get_python_implementation(self): - return self._python_implementation - - def get_python_arch(self): - return self._python_arch - - def get_platform(self): - return self._platform_system - - def get_platform_long(self): - return platform.platform() - - def is_linux(self): - return self._platform_system == 'linux' - - def get_pkg_fmt(self): - assert self._pkg_fmt is not None - return self._pkg_fmt - - def get_pkg_arch(self): - assert self._pkg_arch is not None - return self._pkg_arch - - def is_redhat(self): - return self._redhat_system - - def is_debian(self): - return self._debian_system - - def is_suse(self): - return self._suse_system - - def is_cray(self): - if self._os_distro is None: - return False - return self._os_distro == 'cray' - - def is_windows(self): - return self._platform_system == 'windows' - - def is_windows8(self): - return self.is_windows() and (self._os_version[0] == 6) and (self._os_version[1] == 2) - - def is_windows_msys(self): - return self._windows_msys - - def check_pywin_registry(self): - assert self.is_windows() - # Create a temporary script and invoke it to see whether argument passing works or not. - # The test must go through the windows shell to be meaningful. - tmp_dir = tempfile.mkdtemp() - probe_script_name = os.path.join(tmp_dir, 'pywin_test.py') - tmp_file = open(probe_script_name, "w") - # create a simple script to echo the command arguments separated by a single space - if self.is_python3(): - tmp_file.write("#!/usr/bin/env python3\n") - else: - tmp_file.write("#!/usr/bin/env python\n") - tmp_file.write("from __future__ import print_function\n") - tmp_file.write("import sys\n") - tmp_file.write("if len(sys.argv) > 1:\n") - tmp_file.write(" joiner = ' '\n") - tmp_file.write(" print(joiner.join(sys.argv[1:]))\n") - tmp_file.close() - - # invoke the script through the windows shell and check the output - retv = subprocess.check_output([probe_script_name, "probe"], shell=True, universal_newlines=True).rstrip() - shutil.rmtree(tmp_dir) - # print("check_pywin_registry: '" + retv + "'") - if retv != "probe": - msg = "\nThe python installation is broken, the shell does not pass on any command line arguments to the python script.\n" - msg += "The following steps are most likely to fix the problem, for further assistance contact technical support.\n" - msg += " - Deinstall all versions of python and reboot the system.\n" - msg += " - Download the latest 64 bit version of python from www.python.org and install it, the build system will work with python 2.7.x or python 3.x.\n" - raise Exception(msg) - return True - - def check_os_detection(self, todo_list): - if (self._os_version[0] == 0) and self.is_linux(): - if not os.path.exists('/usr/bin/lsb_release'): - todo_list.append("The system identification depends on lsb_release which does not seem to be available.") - if self.is_redhat(): - todo_list.append("On redhat 6.x/7.x and compatible systems, you may need to install redhat-lsb-core.") - todo_list.append("") - - def is_macosx(self): - return self._platform_system == 'macosx' - - def get_os_distro(self): - return self._os_distro - - def get_os_distro_short(self): - return self._os_distro - - def get_os_codename(self): - return self._os_codename - - def get_os_arch(self): - return self._os_arch - - def get_os_version(self): - return self._os_version - - def get_number_processors(self): - return self._num_processors - - def get_system_info_full_str(self): - """Return a string consisting of colon separated fields intended for the Boost.Build script interface.""" - str_list = [] - - str_list.append(self.get_platform()) - str_list.append(self.get_os_arch()) - str_list.append(str(self.get_number_processors())) - - # should be a single lowercase word as it may be used to make up a package filename - str_list.append(self.get_os_distro_short()) - - str_list.append(self.get_os_codename()) - - # create a version string given the version tuple - joiner = '.' - str_list.append(joiner.join([str(x) for x in self.get_os_version()])) - - # no sure it's really needed somewhere in Boost.Build - str_list.append(self._python_arch) - if self.is_linux(): - if self.is_debian(): - str_list.append('debian') - elif self.is_redhat(): - str_list.append('redhat') - elif self.is_suse(): - str_list.append('suse') - else: - str_list.append('unknown_linux_flavor') - else: - str_list.append('none') - str_list.append(self.get_home_dir()) - return ';'.join(str_list) - - def get_path(self): - return self._search_path - - def get_home_dir(self, native=False): - if self.is_windows_msys() and native: - home_dir = os.path.normpath(os.path.expandvars('$USERPROFILE')) - else: - home_dir = self._home_dir - return home_dir - - def get_default_proj_home_dir(self): - return self._default_proj_home_dir - - def get_desktop_dir(self): - return self._desktop_dir - - def get_program_dir(self, target_arch): - if not self.is_windows(): - raise Exception("The method get_program_dir is only supported on the windows platform.") - if (self.get_os_arch() == 'x86_64') and (target_arch == 'x86'): - program_dir = self._programx86_dir - else: - program_dir = self._program_dir - assert os.path.exists(program_dir) - return program_dir - - def get_program_data_dir(self): - return self._program_data_dir - - def get_short_path(self, fpath): - if self.is_windows(): - fpath = os.path.normpath(self.get_short_path_win(fpath)) - return fpath - - def get_short_path_win(self, fpath): - # need to go through the shell to get the short path name - tempdir = tempfile.gettempdir() - get_short_path_script = os.path.join(tempdir, 'pyhhi_get_short_path.cmd') - if not os.path.exists(get_short_path_script): - # create a shell command script to do the path conversion - with open(get_short_path_script, "w") as script_file: - script_file.write(textwrap.dedent("""\ - @ECHO OFF - echo %~s1 - """)) - # invoke the script through the windows shell. - short_path = subprocess.check_output([get_short_path_script, fpath], shell=True, universal_newlines=True).rstrip() - return short_path - - def check_comspec(self): - comspec = os.getenv('COMSPEC') - if (comspec is None) or (not os.path.exists(comspec)): - raise Exception("The environment variable COMSPEC must be fixed, please contact technical support.") - - def get_subprocess_devnull(self): - if ver.version_compare(self._python_version, (3,3)) >= 0: - devnull = subprocess.DEVNULL - else: - self._logger.debug("attribute subprocess.DEVNULL not available (python < 3.3), using os.devnull instead") - devnull = self._get_devnull() - return devnull - - def _get_devnull(self): - if not hasattr(self, '_devnull'): - self._devnull = os.open(os.devnull, os.O_RDWR) - return self._devnull - - def _query_linux_distro_info(self): - if 'CRAYOS_VERSION' in os.environ: - self._os_distro = 'cray' - self._os_version = ver.version_tuple_from_str(os.environ['CRAYOS_VERSION']) - else: - lsb_release = '/usr/bin/lsb_release' - if os.path.exists(lsb_release): - # use lsb_release if available and assume all options are supported and return - # sensible values. - - # obtain a human readable description of the distribution. This should be a single word as it - # may be used to generate package filenames. - retv = subprocess.check_output([lsb_release, '-is'], universal_newlines=True) - self._os_distro = retv.rstrip().lower() - - retv = subprocess.check_output([lsb_release, '-rs'], universal_newlines=True) - version_str = retv.rstrip() - # version_str = "4" - # version_str = "4.0-rolling" - # version_str = "rolling" - re_match = re.match(r'([0-9.,_-]+\d+)|(\d+)', version_str) - if re_match: - self._os_version = ver.version_tuple_from_str(re_match.group(0)) - - retv = subprocess.check_output([lsb_release, '-cs'], universal_newlines=True) - self._os_codename = retv.rstrip().lower() - if self._os_codename == 'n/a': - self._os_codename = 'none' - else: - # lsb_release not found -> try to guess the distro but don't try to parse the - # proprietary files to figure out the remaining system info bits. - if os.path.exists('/etc/fedora-release'): - self._os_distro = 'fedora' - elif os.path.exists('/etc/redhat-release'): - self._os_distro = 'redhat' - elif os.path.exists('/etc/SuSE-release'): - self._os_distro = 'suse' - elif os.path.exists('/etc/debian_version'): - self._os_distro = 'debian' - else: - self._os_distro = 'unknown' - - # make sure os_distro and os_codename do not contain any spaces as they may become part of a - # package filename. - if self._os_distro is not None: - self._os_distro = self._os_distro.replace(' ', '-') - - if self._os_codename is not None: - self._os_codename = self._os_codename.replace(' ', '-') - - # determine the general flavor of the linux system: redhat, debian or suse - if os.path.exists('/etc/redhat-release'): - self._redhat_system = True - elif os.path.exists('/etc/debian_version'): - self._debian_system = True - else: - # not sure how to do this for suse, revert back to regex - if re.match(r'(suse)|(opensuse)', self._os_distro): - self._suse_system = True - - def _query_home_dir(self): - home_dir = os.path.expanduser('~') - # make sure the user's home directory exists - if not os.path.exists(home_dir): - raise Exception('home directory "' + home_dir + '" does not exist.') - self._home_dir = os.path.normpath(home_dir) - - def _query_default_proj_home_dir(self): - if 'PROJ_HOME' in os.environ: - proj_home_dir = os.path.normpath(os.path.expandvars('$PROJ_HOME')) - else: - proj_home_dir = os.path.join(self.get_home_dir(native=True), 'projects') - if os.path.exists(proj_home_dir): - self._default_proj_home_dir = proj_home_dir - else: - self._default_proj_home_dir = None - - def _query_search_path(self): - self._search_path = [] - env_path = os.getenv('PATH') - for dir in env_path.split(os.path.pathsep): - self._search_path.append(util.normalize_path(dir)) - - def _query_desktop_dir(self): - # MSYS has its own environment but Desktop comes from the native windows home. - home_dir = self.get_home_dir(native=True) - desktop_dir = os.path.join(home_dir, 'Desktop') - if os.path.exists(desktop_dir): - self._desktop_dir = desktop_dir - else: - self._desktop_dir = None - - # the singleton as a class attribute - instance = None - - def __init__(self, pywin_check=False): - self._logger = logging.getLogger(__name__) - if SystemInfo.instance is None: - SystemInfo.instance = SystemInfo.__SystemInfo() - if SystemInfo.instance.is_windows() and pywin_check: - # The caller requested the additional windows registry check. - # SystemInfo.instance.check_pywin_registry() - - # One more addtional check to catch a corrupted COMSPEC setting which yields to subsequent failures of - # subprocess calls if shell=True is used. - SystemInfo.instance.check_comspec() - - if SystemInfo.instance.get_os_arch() == 'x86': - msg = "\nThe build system requires windows 64 bit but the platform seems to be windows 32 bit.\n" - msg += "Please contact technical support for further assistance.\n" - raise Exception(msg) - elif (SystemInfo.instance.get_os_arch() == 'x86_64') and (SystemInfo.instance.get_python_arch() == 'x86'): - msg = "\nPython 32 bit is not supported on windows 64 bit, please use python 64 bit." - raise Exception(msg) - - def __getattr__(self, item): - return getattr(SystemInfo.instance, item) diff --git a/cmake/CMakeBuild/bin/pyhhi/build/common/util.py b/cmake/CMakeBuild/bin/pyhhi/build/common/util.py deleted file mode 100755 index a8b2719e..00000000 --- a/cmake/CMakeBuild/bin/pyhhi/build/common/util.py +++ /dev/null @@ -1,276 +0,0 @@ -from __future__ import print_function - -import inspect -import logging -import os -import platform -import re -import shutil -import stat -import subprocess -import sys -import traceback - - -# imports a base exception with an attribute to enable or disable traceback information. -from pyhhi.build.common.error import BaseError - - -def exec_main_default_try(main_fnc, sys_exit_err=1, finally_action=None): - """Execute main_fnc inside a try block and dump the callstack in case of exceptions.""" - exit_error = False - prog_name = os.path.basename(sys.argv[0]) - try: - main_fnc() - # except (InvalidInputParameterError, InvalidCommandLineArgumentError) BaseError as e: - except BaseError as e: - exit_error = True - if e.list_traceback: - exc_type, exc_value, exc_traceback = sys.exc_info() - lines = traceback.format_exception(exc_type, exc_value, exc_traceback) - for line in lines[:-1]: - print(line.rstrip()) - print('-----') - print("{0}: error: {1}".format(prog_name, e.msg)) - - except KeyboardInterrupt: - exit_error = True - #print("Keyboard interrupt signaled") - except Exception: - exit_error = True - exc_type, exc_value, exc_traceback = sys.exc_info() - lines = traceback.format_exception(exc_type, exc_value, exc_traceback) - for line in lines[:-1]: - print(line.rstrip()) - print('-----') - print(lines[-1]) - finally: - if finally_action: - finally_action() - if exit_error: - # some exception thrown, exit with error code to inform the shell something went wrong. - sys.exit(sys_exit_err) - return 0 - - -def app_args_add_log_level(parser): - parser.add_argument("--log-level", action="store", dest="log_level", choices=['warning', 'info', 'debug'], default="warning", - help="configure the log level [default: %(default)s]") - - -def app_configure_logging(log_level): - # assuming loglevel is bound to the string value obtained from the - # command line argument. Convert to upper case to allow the user to - # specify --log-level=DEBUG or --log-level=debug - numeric_level = getattr(logging, log_level.upper(), None) - if not isinstance(numeric_level, int): - raise ValueError('Invalid log level: %s' % log_level) - - # FORMAT = "py-trace %(module)s.%(funcName)s: %(lineno)d: %(message)s" - FORMAT = "%(module)s.%(funcName)s: %(lineno)d: %(message)s" - logging.basicConfig(format=FORMAT, level=numeric_level) - - -def normalize_path(fpath): - # remove leading and trailing spaces - fpath = fpath.lstrip().rstrip() - if platform.system().lower() == 'windows': - # ensure drive letters are in uppercase which os.path.normpath() does not seem to enforce. - re_drive_letter = re.compile(r'([a-z]):', re.IGNORECASE) - re_match = re_drive_letter.match(fpath) - if re_match: - fpath = re_match.group(1).upper() + fpath[1:] - return os.path.normpath(fpath) - - -def to_posix_path(fpath): - fpath = normalize_path(fpath) - if platform.system().lower() == 'windows': - fpath = fpath.replace('\\', '/') - return fpath - - -def find_tool_on_path(tool, must_succeed=False, search_path=None): - """Find a tool on the search path and return the full path.""" - if os.path.isabs(tool): - if platform.system().lower() == 'windows': - tool_basename = os.path.basename(tool) - if not re.search(r'\.\S+$', tool_basename): - tool = os.path.join(os.path.dirname(tool), tool_basename + '.exe') - if os.path.exists(tool): - return tool - else: - if platform.system().lower() == 'windows': - # special fix for windows to qualify tool with .exe if tool does not have an extension. - if not re.search(r'\.\S+$', tool): - tool += '.exe' - if search_path is None: - search_path = os.path.expandvars('$PATH') - search_path = search_path.split(os.path.pathsep) - for d in search_path: - if d == '.': - continue - prog = os.path.join(d, tool) - if os.path.exists(prog) and (not os.path.isdir(prog)): - # Always return an absolute path in case the current working directory will be changed later on. - prog = os.path.abspath(prog) - return prog - if must_succeed: - if os.path.isabs(tool): - raise Exception("The command '" + tool + "' does not exist.") - else: - if search_path: - raise Exception("The command " + tool + " cannot be found on PATH=" + ';'.join(search_path)) - else: - raise Exception("The command " + tool + " cannot be found on PATH.") - return None - - -def get_tool_dir(tool): - if platform.system().lower() == 'windows': - # some folks use slashes on windows or combination of slashes and backslashes - re_pathsep = re.compile(r'[\\/:]+') - else: - # assume a linux path - re_pathsep = re.compile(r'[/]+') - if re_pathsep.search(tool): - tool_path = normalize_path(os.path.abspath(tool)) - else: - tool_path = find_tool_on_path(tool) - # Resolve any symbolic links to get the real location; e.g. - # bjam.py is a symbolic link and points to $HOME/bin/bjam.py. The real location of bjam.py is writeable but - # the location of the symbolic link may not. - tool_path = os.path.realpath(tool_path) - tool_dir = os.path.dirname(tool_path) - return tool_dir - - -def get_top_dir(): - # 1st check: try current working directory - top_dir = os.getcwd() - if is_top_dir(top_dir): - return top_dir - # 2nd check: try to deduce top from the script directory; e.g. /CMakeBuild/bin or /BoostBuild/bin - top_dir = os.path.normpath(os.path.join(get_script_dir(), '..', '..')) - if not is_top_dir(top_dir): - raise Exception(os.path.basename(sys.argv[0]) + " failed to find its parent workspace, please contact technical support.") - return top_dir - - -def is_top_dir(top_dir): - if not os.path.exists(top_dir): - return False - # Path check returns true if CMakeBuild is a top-level SVN external or Git submodule. - if not os.path.exists(os.path.join(top_dir, 'CMakeBuild')): - return False - if os.path.exists(os.path.join(top_dir, 'CMakeBuild', 'bin', 'cmake.py')) or os.path.exists(os.path.join(top_dir, 'CMakeBuild', 'CMakeBuild', 'bin', 'cmake.py')): - return True - - # Check for CMakeBuild versioned subtree - cmakebuild_dir = os.path.join(top_dir, 'CMakeBuild') - for fname in os.listdir(cmakebuild_dir): - if os.path.isdir(os.path.join(cmakebuild_dir, fname)): - if os.path.exists(os.path.join(cmakebuild_dir, fname, 'CMakeBuild', 'bin', 'cmake.py')): - return True - return False - - -def get_script_dir(): - py_util_fname = inspect.getfile(get_script_dir) - # /CMakeBuild/bin/pyhhi/build/common/util.py - script_dir = os.path.normpath(os.path.join(os.path.dirname(py_util_fname), '..', '..', '..')) - return script_dir - - -def get_boost_build_dir(top_dir): - # Assume the standard SVN layout without a submodules folder holding the externals. - boost_build_dir = os.path.join(top_dir, 'BoostBuild') - if not os.path.exists(boost_build_dir): - raise Exception("The directory '" + top_dir + "' does not seem to be a workspace directory with a BoostBuild folder, please contact technical support.") - return boost_build_dir - - -def find_repo_path_from_src_path(src_path): - src_path = os.path.abspath(src_path.rstrip(os.path.sep)) - is_windows = platform.system().lower() == 'windows' - # split the path - if is_windows: - drive_path_comps = os.path.splitdrive(src_path) - src_path = drive_path_comps[1] - - dir_list = src_path.lstrip(os.path.sep).split(os.path.sep) - joiner = os.path.sep - - while dir_list: - # walk the tree until 'src' is found. The parent of src is supposed to be the name of the repository. - dir = dir_list.pop() - if len(dir_list) < 2: - break - - if dir.lower() == 'src': - if is_windows: - jamroot_dir = os.path.join(drive_path_comps[0], os.path.sep, joiner.join(dir_list[:-1])) - repo_path = os.path.join(drive_path_comps[0], os.path.sep, joiner.join(dir_list)) - else: - # repo_path: /home/rauthenberg/projects/BoostBuild/BoostBuild - jamroot_dir = os.path.join(os.path.sep, joiner.join(dir_list[:-1])) - repo_path = os.path.join(os.path.sep, joiner.join(dir_list)) - if os.path.isfile(os.path.join(jamroot_dir, 'Jamroot')): - return repo_path - raise Exception("The repository path cannot be deduced from '" + src_path + "'") - - -def find_repo_name_from_src_path(src_path): - repo_path = find_repo_path_from_src_path(src_path) - if platform.system().lower() == 'windows': - drive_path_comps = os.path.splitdrive(repo_path) - repo_path = drive_path_comps[1] - return repo_path.lstrip(os.path.sep).split(os.path.sep)[-1] - - -def subproc_call_flushed(*popenargs, **kwargs): - """Run command with arguments. Wait for command to complete or - timeout, then return the returncode attribute. - - The arguments are the same as for the Popen constructor. Example: - - retcode = call(["ls", "-l"]) - """ - sys.stdout.flush() - return subprocess.call(*popenargs, **kwargs) - - -def subproc_check_call_flushed(*popenargs, **kwargs): - """Run command with arguments. Wait for command to complete. If - the exit code was zero then return, otherwise raise - CalledProcessError. The CalledProcessError object will have the - return code in the returncode attribute. - - The arguments are the same as for the call function. Example: - - check_call(["ls", "-l"]) - """ - sys.stdout.flush() - return subprocess.check_call(*popenargs, **kwargs) - - -def rmtree(directory): - """On Windows invokes rmtree_readonly() and on other platforms shutil.rmtree(). - This convenience function may be used as an replacement of shutil.rmtree(directory) - to be able to remove directory trees on Windows containing some readonly files. - """ - if sys.platform.startswith('win'): - rmtree_readonly(directory) - else: - shutil.rmtree(directory) - - -def rmtree_readonly(directory): - """Remove a directory tree on Windows where some files are readonly.""" - - def remove_readonly(func, path, _excinfo): - "Clear the readonly bit and reattempt the removal" - os.chmod(path, stat.S_IWRITE) - func(path) - - shutil.rmtree(directory, onerror=remove_readonly) diff --git a/cmake/CMakeBuild/bin/pyhhi/build/common/ver.py b/cmake/CMakeBuild/bin/pyhhi/build/common/ver.py deleted file mode 100755 index 90e80eee..00000000 --- a/cmake/CMakeBuild/bin/pyhhi/build/common/ver.py +++ /dev/null @@ -1,223 +0,0 @@ - -from __future__ import print_function - -import platform -import re -import os.path -import plistlib -import subprocess -import functools - - -import pyhhi.build.common.util as util -import pyhhi.build.common.cmbldver as cmbldver - - -def get_cmake_build_version(): - return version_tuple_from_str(cmbldver.CMAKE_BUILD_VERSION_STR) - - -def _get_python_version_numeric(): - re_number = re.compile(r'(\d+).*') - version_list = [] - # extra logic to deal with python on ubuntu 11.10: 2.7.2+ - for x in platform.python_version_tuple(): - re_match = re_number.match(x) - if re_match: - version_list.append(int(re_match.group(1), 10)) - else: - version_list.append(0) - return tuple(version_list) - - -def check_python_version(version_tuple=None): - """Checks the python version and throws an exception if the version is not supported.""" - if version_tuple is None: - version_tuple = _get_python_version_numeric() - if version_compare(version_tuple, (2, 7)) < 0: - raise Exception('python ' + platform.python_version() + ' is not supported. Please update to 2.7 or higher.') - - -def get_python_version(check_version=False): - version_tuple = _get_python_version_numeric() - if check_version: - check_python_version(version_tuple) - return version_tuple - - -def version_tuple_from_str(version, nelem=None): - """Split a version string using '.' and '-' as separators and return a tuple of integers.""" - re_match = re.match(r'([0-9.,_-]+\d+)|(\d+)', version) - if re_match: - version_list = re.split('[.,_-]', re_match.group(0)) - if nelem is not None: - # adjust the list to contain exactly the specified number of elements. - while len(version_list) < nelem: - version_list.append('0') - return tuple([int(x, 10) for x in version_list[:nelem]]) - else: - return tuple([int(x, 10) for x in version_list]) - else: - raise Exception("The version string '" + version + "' is not supported, no leading numeric digits found.") - - -def get_boost_version_str(version_str): - re_match = re.match(r'([0-9.]+\d+)', version_str) - if not re_match: - raise Exception("The version string '" + version_str + "' cannot be converted into a boost compliant version string.") - boost_version_str = re.sub(r'\.', '_', re_match.group(1)) - return boost_version_str - - -def version_tuple_to_str(version, sep='.'): - """Join the version components using '.' and return the string.""" - return sep.join([str(x) for x in version]) - - -def version_list_to_str(version_list): - return ' '.join([version_tuple_to_str(x) for x in version_list]) - - -def ubuntu_version_tuple_to_str(version): - """Join the first two version components of an ubuntu release number and return the string.""" - assert len(version) >= 2 - version_str = '%d.%02d' % (version[0], version[1]) - return version_str - - -def version_compare(version1, version2): - """Compare two version iterables consisting of arbitrary number of numeric elements.""" - len_version1 = len(version1) - len_version2 = len(version2) - if len_version1 == len_version2: - # Both version objects have the same number of components, compare them left to right - for i in range(len_version1): - if version1[i] > version2[i]: return 1 - elif version1[i] < version2[i]: return -1 - # version objects compare equal - return 0 - elif len_version1 > len_version2: - version2_tmp = list(version2) - while len(version2_tmp) < len_version1: version2_tmp.append(0) - return version_compare(version1, version2_tmp) - else: - version1_tmp = list(version1) - while len(version1_tmp) < len_version2: version1_tmp.append(0) - return version_compare(version1_tmp, version2) - - -def version_list_sort(version_list): - - # Written for Python 2.7 and 3.x: functools.cmp_to_key() requires 2.7 or higher. - - # Notes: python 2.x supports a second argument cmp to specify the comparision function but - # python 3.x does not. - return sorted(version_list, key=functools.cmp_to_key(version_compare)) - - -def version_str_to_rpm_version_tuple(version): - re_match = re.match(r'([^-]+)-(\S+)', version) - if re_match: - return re_match.group(1), re_match.group(2) - else: - re_match = re.match(r'([\d.-]+)[-.](\d+)', version) - if re_match: - return re_match.group(1), re_match.group(2) - raise Exception("The version string '" + version + "' is not a valid RPM version string.") - - -def get_default_version_filename(src_filename): - """Returns the default version filename given a source filename.""" - repo_name = util.find_repo_name_from_src_path(src_filename) - repo_path = util.find_repo_path_from_src_path(src_filename) - return os.path.join(repo_path, 'include', repo_name, 'version.h') - - -def parse_version_file(version_file, verbatim=False): - """Parse standard version file and return the version ID as a numeric tuple or verbatim.""" - if not os.path.exists(version_file): - raise Exception("version file '" + version_file + "' does not exist.") - - # look at the extension to determine the file type: header file or plist file. - (root, ext) = os.path.splitext(version_file) - if ext == '.plist': - return _parse_version_plist_file(version_file, verbatim) - else: - return _parse_version_h_file(version_file, verbatim) - - -def _parse_version_h_file(version_file, verbatim=False): - """Parse standard version file and return the version ID as a numeric tuple or verbatim.""" - if not os.path.exists(version_file): - raise Exception("version file '" + version_file + "' does not exist.") - - re_version_expr = re.compile(r'(^#if\s+![ ]*defined\(.*)|(^#\s*define\s+\S+_VERSION\s+)') - re_version_tag_expr = re.compile(r'^#if\s+!\s*defined\(\s*([a-zA-Z0-9_]+)\s*\)') - - version_tag = None - with open(version_file) as f: - for line in f: - re_match = re_version_expr.match(line) - if not re_match: - continue - # print("version.h: found cpp line: {}".format(line)) - if version_tag is None: - re_match = re_version_tag_expr.match(line) - if re_match: - version_tag = re_match.group(1) - # print("found version tag: {}".format(version_tag)) - re_version_str = re.compile(r'^#define\s+{}\s+"([^"]+)'.format(version_tag)) - re_version_str2 = re.compile(r'^#define\s+{}\s+(\d+)'.format(version_tag)) - continue - else: - # print("checking cpp line: {}".format(line)) - # version tag found - re_match = re_version_str.match(line) - if not re_match: - re_match = re_version_str2.match(line) - if re_match: - if verbatim: - return re_match.group(1) - else: - return version_tuple_from_str(re_match.group(1)) - - raise Exception("No version ID found in file '" + version_file + "'.") - - -def _parse_version_plist_file(plist_file, verbatim=False): - """Parse Info.plist file and return the version ID as a numeric tuple or verbatim.""" - if not os.path.exists(plist_file): - raise Exception("version file '" + plist_file + "' does not exist.") - - version_str = None - - if (platform.system().lower() == 'darwin') and _is_binary_plist_file(plist_file): - # On MacOSX there are two different plist formats supported: the older xml format and on more recent releases - # the binary format. The latter is not supported by Python's plistlib directly. - retv = subprocess.check_output(['/usr/bin/plutil', '-convert', 'xml1', '-o', '-', plist_file], universal_newlines=True) - pl_dict = plistlib.readPlistFromString(retv) - else: - pl_dict = plistlib.readPlist(plist_file) - - # An Info.plist file is expected to contain at least one of the following version keys: CFBundleVersion and CFBundleShortVersionString. - if 'CFBundleShortVersionString' in pl_dict: - version_str = pl_dict['CFBundleShortVersionString'] - elif 'CFBundleVersion' in pl_dict: - version_str = pl_dict['CFBundleVersion'] - else: - raise Exception("No version ID found in file '" + plist_file + "'.") - if verbatim: - return version_str - else: - return version_tuple_from_str(version_str) - - -def _is_binary_plist_file(plist_file): - if not os.path.exists(plist_file): - raise Exception("file '" + plist_file + "' does not exist.") - retv = subprocess.check_output(['/usr/bin/file', plist_file], universal_newlines=True) - if re.search('binary property list', retv): - return True - else: - return False - diff --git a/cmake/CMakeBuild/bin/pyhhi/build/vcsutil.py b/cmake/CMakeBuild/bin/pyhhi/build/vcsutil.py deleted file mode 100755 index 409e3b7c..00000000 --- a/cmake/CMakeBuild/bin/pyhhi/build/vcsutil.py +++ /dev/null @@ -1,896 +0,0 @@ - -from __future__ import print_function - -import logging -import os -import posixpath -import re -import shutil -import subprocess -import sys -import tempfile - -import pyhhi.build.common.ver as ver -import pyhhi.build.common.util as util - -from pyhhi.build.common.system import SystemInfo - - -class VcsCommandTracer(object): - - def __init__(self, enable_command_history=True): - self._logger = logging.getLogger(__name__) - if self._logger.isEnabledFor(logging.DEBUG): - self._verbosity_level = 1 - else: - self._verbosity_level = 0 - self._prog_name = os.path.basename(sys.argv[0]) - self._command_history = [] - self._enable_command_history = enable_command_history - - def add_to_command_history(self, cmd_argv): - if self._enable_command_history: - self._command_history.append(' '.join(cmd_argv)) - - def get_command_history(self): - return self._command_history - - def clear_command_history(self): - self._command_history = [] - - def trace_command(self, cmd_argv): - if self._verbosity_level > 0: - print("Launching: %s" % ' '.join(cmd_argv)) - self.add_to_command_history(cmd_argv) - - -class VcsUrl(object): - - def __init__(self, url_str=None): - self._sys_info = SystemInfo() - self._proto = None - self._username = None - self._host = None - self._resource_path = None - self._re_scp_url = re.compile(r'^([^@/\\:]+)@([^:]+):([^/].+)$') - - if url_str: - (self._proto, self._username, self._host, self._resource_path) = self.parse_from_string(url_str) - - def get_protocol(self): - return self._proto - - def get_hostname(self): - return self._host - - def get_username(self): - return self._username - - def get_resource_path(self, native=False): - if self._resource_path: - if native and (self._proto is not None) and (self._proto == 'file') and self._sys_info.is_windows(): - # Convert the resource path to a native file system path. - if self._resource_path.startswith('/'): - assert len(self._resource_path) > 1 - return os.path.normpath(self._resource_path[1:]) - elif re.match(r'^[a-zA-Z]:', self._resource_path): - assert len(self._resource_path) > 2 - return os.path.normpath(self._resource_path) - return self._resource_path - - def set_resource_path(self, res_path): - self._resource_path = res_path - - def parse_from_string(self, url_str): - proto = None - username = None - host = None - resource_path = None - - re_match = self._re_scp_url.match(url_str) - if re_match: - # Split scp URL - proto = 'ssh' - username = re_match.group(1) - host = re_match.group(2) - resource_path = re_match.group(3) - else: - # Check for proto:// - re_match = re.match(r'^([a-z][^:/]+)://(.+)$', url_str) - if re_match: - proto = re_match.group(1) - if proto == 'file': - # A relative path will be converted into an absolute path. - resource_path = re_match.group(2) - if self._sys_info.is_windows(): - fs_path_native = os.path.abspath(os.path.normpath(resource_path)) - resource_path = util.to_posix_path(fs_path_native) - else: - resource_path = os.path.abspath(resource_path) - else: - host_res_path = re_match.group(2) - re_match = re.match(r'^([^/]+)/(.+)$', host_res_path) - if re_match: - host_part = re_match.group(1) - host = host_part - resource_path = re_match.group(2) - if proto == 'ssh': - # Analyze the host_part - re_match = re.match(r'([^@]+)@([^@]+)$', host_part) - if re_match: - username = re_match.group(1) - host = re_match.group(2) - else: - # Unsupported URL - raise Exception("Unsupported URL: {0}".format(url_str)) - else: - # Assume a native file system path. - proto = 'file' - fpath_abs = os.path.abspath(url_str) - # On windows backslashes are converted to slashes. - resource_path = util.to_posix_path(fpath_abs) - - self._proto = proto - self._username = username - self._host = host - if resource_path is None: - self._resource_path = resource_path - else: - if proto != 'file': - # Windows file URLs start with a driver letter and are not supported by posixpath. - # Example file://C:/Users/user -> resource path C:/Users/user. - resource_path = posixpath.normpath(resource_path) - self._resource_path = resource_path - - return proto, username, host, resource_path - - def __str__(self): - if self._proto == 'file': - s = "{0}://{1}".format(self._proto, self._resource_path) - elif (self._proto == 'ssh') and (self._username is not None): - s = "{0}://{1}@{2}/{3}".format(self._proto, self._username, self._host, self._resource_path) - else: - s = "{0}://{1}/{2}".format(self._proto, self._host, self._resource_path) - return s - - -class VcsUtil(object): - - def __init__(self, cmd_tracer=None): - self._logger = logging.getLogger(__name__) - self._sys_info = SystemInfo() - self._remove_tmp_files = True - if self._logger.isEnabledFor(logging.DEBUG): - self._remove_tmp_files = False - self._re_empty_line = re.compile(r'^\s*$') - self._prog_name = os.path.basename(sys.argv[0]) - if cmd_tracer is None: - self._cmd_tracer = VcsCommandTracer() - else: - self._cmd_tracer = cmd_tracer - - def get_subprocess_devnull(self): - return self._sys_info.get_subprocess_devnull() - - def strip_empty_comment_lines(self, comment_lines): - """Strip empty lines at the beginning and from the end of comment lines passed and return them.""" - - if not comment_lines: - return comment_lines - while len(comment_lines) > 0: - if self._re_empty_line.match(comment_lines[0]): - comment_lines.pop(0) - else: - break - while len(comment_lines) > 0: - if self._re_empty_line.match(comment_lines[-1]): - comment_lines.pop() - else: - break - return comment_lines - - def save_comment_lines_tmpf(self, comment_lines, add_final_newline=True): - assert len(comment_lines) > 0 - (tmp_fh, tmp_fname) = tempfile.mkstemp(text=True) - tmp_file = os.fdopen(tmp_fh, 'w') - tmp_file.write('\n'.join(comment_lines)) - if add_final_newline: - # and one newline to terminate the last line. - tmp_file.write('\n') - tmp_file.close() - return tmp_fname - - def remove_tmp_file(self, fname): - if not os.path.exists(fname): - return - if self._remove_tmp_files: - os.remove(fname) - else: - print("Keeping temporary file: ", fname) - - -class GitHelper(VcsUtil): - - def __init__(self, cmd_tracer=None): - VcsUtil.__init__(self, cmd_tracer) - self._logger = logging.getLogger(__name__) - # git-svn-id: https://visvn.fe.hhi.de/svn/svn_CMakeBuild/tags/3.11.2-1@791 a315372b-2729-4e68-a986-494f0c48443b - self._re_svn_import_id = re.compile(r'^(git-svn-id|svntogit-id):\s*([^@]+)@([0-9]+)\s+(\S+)') - # Attribute _git_executable reserved for future extensions. - self._git_executable = util.find_tool_on_path('git', must_succeed=True) - self._git_version = self._discover_git_version() - - def _discover_git_version(self): - git_argv = [self._git_executable, '--version'] - retv = subprocess.check_output(git_argv, universal_newlines=True) - lines = retv.splitlines() - re_match = re.search(r'[0-9.]+\.\d+', lines[0]) - if re_match: - git_version = ver.version_tuple_from_str(re_match.group(0)) - return git_version - else: - raise Exception("git --version returned: '{0}' - version expression not understood.".format(retv)) - - def get_git_executable(self): - return self._git_executable - - def get_git_version(self): - return self._git_version - - def get_command_history(self): - return self._cmd_tracer.get_command_history() - - def clear_command_history(self): - self._cmd_tracer.clear_command_history() - - def is_empty_repo(self, repo_dir=None): - git_argv = [self._git_executable, 'show-ref', '-q'] - # Save initial current working directory - cur_dir = os.getcwd() - if repo_dir is None: - assert os.path.exists(os.path.join(cur_dir, '.git')) - self.trace_git_command(git_argv) - retv = util.subproc_call_flushed(git_argv) - else: - assert os.path.exists(os.path.join(repo_dir, '.git')) - os.chdir(repo_dir) - self.trace_git_command(git_argv) - retv = util.subproc_call_flushed(git_argv) - # Recover initial current working directory - os.chdir(cur_dir) - return retv != 0 - - def get_local_branches(self): - local_branches = [] - git_argv = [self._git_executable, 'branch'] - self.trace_git_command(git_argv) - retv = subprocess.check_output(git_argv, universal_newlines=True) - re_expr = re.compile(r'^\*?\s+(\S+)') - for line in retv.splitlines(): - l = line.rstrip() - re_match = re_expr.match(l) - if re_match: - local_branches.append(re_match.group(1)) - return local_branches - - def get_remote_branches(self, repo='origin'): - remote_branches = [] - git_argv = [self._git_executable, 'ls-remote', '--heads', repo] - self.trace_git_command(git_argv) - retv = subprocess.check_output(git_argv, universal_newlines=True) - re_expr = re.compile(r'\S+\s+refs/heads/(\S+)') - for line in retv.splitlines(): - l = line.rstrip().lstrip() - re_match = re_expr.match(l) - if re_match: - remote_branches.append(re_match.group(1)) - return remote_branches - - def get_local_tags(self): - local_tags = [] - git_argv = [self._git_executable, 'tag'] - self.trace_git_command(git_argv) - retv = subprocess.check_output(git_argv, universal_newlines=True) - for line in retv.splitlines(): - l = line.rstrip().lstrip() - if re.match(r'^\S+', l): - local_tags.append(l) - return local_tags - - def get_remote_tags(self, repo='origin'): - remote_tags = [] - git_argv = [self._git_executable, 'ls-remote', '--tags', '--refs', repo] - self.trace_git_command(git_argv) - retv = subprocess.check_output(git_argv, universal_newlines=True) - # 5acba4bba0159c921d3e9de82a450d0e48092d1f refs/tags/3.10.1-1 - re_expr = re.compile(r'\S+\s+refs/tags/(\S+)') - for line in retv.splitlines(): - l = line.rstrip().lstrip() - re_match = re_expr.match(l) - if re_match: - remote_tags.append(re_match.group(1)) - return remote_tags - - def get_submodule_paths(self): - submd_paths = [] - if not os.path.exists('.gitmodules'): - # If .gitmodules does not exist, we don't have any submodules. - # If it does exist, we may have some provided the file is not empty. - return submd_paths - elif os.stat('.gitmodules').st_size == 0: - # Check for empty .gitmodules - return submd_paths - - if ver.version_compare(self._git_version, (2, 7)) < 0: - raise Exception("git version {0} is too old, please update to 2.7 or higher".format(ver.version_tuple_to_str(self._git_version))) - git_argv = [self._git_executable, 'submodule--helper', 'list'] - self.trace_git_command(git_argv) - retv = subprocess.check_output(git_argv, universal_newlines=True) - for line in retv.splitlines(): - if self._re_empty_line.match(line): - continue - l = line.rstrip().lstrip() - fields = l.split() - if fields: - self._logger.debug("found submodule path {0}".format(fields[-1])) - submd_paths.append(fields[-1]) - return submd_paths - - def get_tag_log(self, tag, strip_git_svn_id=False, strip_empty_lines=True): - tag_log = [] - git_argv = [self._git_executable, 'tag', '-l', '--format=%(contents)', tag] - self.trace_git_command(git_argv) - retv = subprocess.check_output(git_argv, universal_newlines=True) - log_lines = retv.splitlines() - for line in log_lines: - if strip_git_svn_id and (line.startswith('git-svn-id:') or line.startswith('svntogit-id:')): - continue - tag_log.append(line) - if strip_empty_lines: - tag_log = self.strip_empty_comment_lines(tag_log) - return tag_log - - def get_commit_hash(self, tag=None): - git_argv = [self._git_executable, 'rev-list', '-n', '1'] - if tag is None: - git_argv.append('HEAD') - else: - git_argv.append(tag) - self.trace_git_command(git_argv) - retv = subprocess.check_output(git_argv, universal_newlines=True) - return retv.lstrip().rstrip() - - def parse_svn_import_id(self, comment_lines): - for line in comment_lines: - re_match = self._re_svn_import_id.match(line) - if re_match: - svn_url = re_match.group(2) - svn_rev = int(re_match.group(3)) - svn_repo_uuid = re_match.group(4) - return svn_url, svn_rev, svn_repo_uuid - return None - - def get_wc_commit_log(self, strip_git_svn_id=True, strip_empty_lines=True): - commit_log = [] - # List commit message preserving newlines. - git_argv = [self._git_executable, 'log', '--pretty=tformat:%B', '-n', '1'] - self.trace_git_command(git_argv) - retv = subprocess.check_output(git_argv, universal_newlines=True) - log_lines = retv.splitlines() - for line in log_lines: - if strip_git_svn_id and line.startswith('git-svn-id:'): - continue - commit_log.append(line) - if strip_empty_lines: - # Strip leading and trailing empty lines - commit_log = self.strip_empty_comment_lines(commit_log) - return commit_log - - def trace_git_command(self, git_argv): - self._cmd_tracer.trace_command(git_argv) - - def get_latest_cmakebuild_tag(self, cmakebuild_repo): - cmakebuild_tags = self.get_remote_tags(cmakebuild_repo) - cmakebuild_version_list = [] - cmakebuild_release_tag_map = {} - re_expr_release_tag = re.compile(r'^[0-9.-]+$') - for tag in cmakebuild_tags: - if re_expr_release_tag.match(tag): - # Release tag found - cmakebuild_version = ver.version_tuple_from_str(tag) - cmakebuild_version_list.append(cmakebuild_version) - cmakebuild_version_str = ver.version_tuple_to_str(cmakebuild_version) - # Adds a mapping from a normalized version string to the tag: e.g. 3.12.3.4 -> 3.12.3-4 - cmakebuild_release_tag_map[cmakebuild_version_str] = tag - else: - self._logger.info("ignoring CMakeBuild tag {} - it does not match the release pattern.".format(tag)) - if not cmakebuild_version_list: - raise Exception("No CMakeBuild release tag found.") - cmakebuild_version_list = ver.version_list_sort(cmakebuild_version_list) - cmakebuild_version = cmakebuild_version_list[-1] - cmakebuild_tag = cmakebuild_release_tag_map[ver.version_tuple_to_str(cmakebuild_version)] - self._logger.info("selecting CMakeBuild tag {}".format(cmakebuild_tag)) - return cmakebuild_tag - - -class SvnProperties(object): - - def __init__(self): - self._svn_prop_list = [] - # key = svn property, value = list of property values - self._svn_prop_value_dict = {} - - def is_empty(self): - return len(self._svn_prop_list) == 0 - - def clear(self): - self._svn_prop_list = [] - self._svn_prop_value_dict = {} - - def add_property(self, prop, prop_values): - # Each property must have at least one associated value. - assert len(prop_values) >= 1 - self._svn_prop_list.append(prop) - self._svn_prop_value_dict[prop] = prop_values - - def update_property(self, prop, prop_values): - # Each property must have at least one associated value. - assert len(prop_values) >= 1 - assert self.has_property(prop) - self._svn_prop_value_dict[prop] = prop_values - - def get_property_list(self): - return self._svn_prop_list - - def has_property(self, prop): - if prop in self._svn_prop_value_dict: - return True - else: - return False - - def get_property(self, prop): - return self._svn_prop_value_dict[prop] - - def remove_property(self, prop): - if not self.has_property(prop): - return - self._svn_prop_list.remove(prop) - self._svn_prop_value_dict.pop(prop) - - def __str__(self): - if self.is_empty(): - return '' - lines = [] - for prop in self._svn_prop_list: - # lines.append("{0:>2}{1}".format(' ', prop)) - lines.append(prop) - for prop_value in self._svn_prop_value_dict[prop]: - # lines.append("{0:>4}{1}".format(' ', prop_value)) - lines.append("{0:>2}{1}".format(' ', prop_value)) - # SVN seems to be in favor of a newline terminating multivalue properties - if len(self._svn_prop_value_dict[prop]) > 1: - lines.append('\n') - # Serialize svn properties into a single string and avoid a duplicate newline after - # a multivalue property; e.g. - props_str = '' - for ln in lines: - if ln != '\n': - props_str += "{}\n".format(ln) - else: - # a newline value must not be duplicated. - props_str += ln - return props_str - - -class SvnPropFileParser(object): - - def __init__(self): - self._logger = logging.getLogger(__name__) - - def parse_property_file(self, filenm): - if not os.path.exists(filenm): - raise Exception("SVN property file {0} does not exist.".format(filenm)) - svn_prop_lines = [] - with open(filenm) as svnpropf: - for line in svnpropf: - l = line.rstrip() - svn_prop_lines.append(l) - svn_prop = self.parse_property_file_content(svn_prop_lines) - return svn_prop - - def parse_gitignore_file(self, filenm): - if not os.path.exists(filenm): - raise Exception("gitignore file {0} does not exist.".format(filenm)) - gitignore_lines = [] - with open(filenm) as svnpropf: - for line in svnpropf: - l = line.rstrip() - gitignore_lines.append(l) - svn_prop = self.parse_gitignore_file_content(gitignore_lines) - return svn_prop - - def parse_property_file_content(self, svn_prop_lines): - svn_prop = SvnProperties() - prop_name = None - prop_value_list = [] - re_prop_name = re.compile(r'^(\s*)(\S+)') - re_discard_line = re.compile(r'(^\s*$)|(^#.*$)|(^Properties on.*$)') - line_cnt = 1 - while len(svn_prop_lines) > 0: - line = svn_prop_lines[0] - if not re_discard_line.match(line): - # print(line) - if prop_name is None: - # This line is supposed to contain a property like svn:ignore, leading ws is supported. - re_match = re_prop_name.match(line) - if re_match: - leading_ws_prop_name = re_match.group(1) - prop_name = re_match.group(2) - prop_value_list = [] - else: - raise Exception("SVN property parsing error at line {0:d}: {1}".format(line_cnt, line)) - else: - # Next property value or next property name? - if line.startswith(' ' + leading_ws_prop_name): - prop_value = line.lstrip() - prop_value_list.append(prop_value) - else: - if prop_value_list: - svn_prop.add_property(prop_name, prop_value_list) - else: - self._logger.debug("ignoring empty SVN property: {0}".format(prop_name)) - # print("new property: {0} -> {1}".format(prop_name, ' '.join(prop_value_list))) - prop_name = None - prop_value_list = [] - # This line must be reparsed, it's the next property. - continue - else: - self._logger.debug("ignoring line: {0}".format(line)) - svn_prop_lines.pop(0) - line_cnt = line_cnt + 1 - - if prop_name is not None: - if prop_value_list: - svn_prop.add_property(prop_name, prop_value_list) - # print("new property: {0} -> {1}".format(prop_name, ' '.join(prop_value_list))) - #if not svn_prop.is_empty(): - # print(svn_prop) - return svn_prop - - def parse_gitignore_file_content(self, gitignore_lines, svn_prop=None): - svn_ignores = [] - re_discard_line = re.compile(r'(^\s*$)|(^#.*$)') - re_top_folder = re.compile(r'^/([^/]+)/$') - re_folder = re.compile(r'^([^/]+)/$') - - for line in gitignore_lines: - if re_discard_line.match(line): - continue - ln_trimmed = line.lstrip().rstrip() - if '/' in ln_trimmed: - re_match = re_top_folder.match(ln_trimmed) - if re_match: - svn_ignores.append(re_match.group(1)) - continue - re_match = re_folder.match(ln_trimmed) - if re_match: - svn_ignores.append(re_match.group(1)) - continue - else: - svn_ignores.append(ln_trimmed) - - if svn_ignores: - if svn_prop is None: - svn_prop = SvnProperties() - svn_prop.add_property('svn:ignore', svn_ignores) - return svn_prop - - -class SvnHelper(VcsUtil): - - def __init__(self, cmd_tracer=None): - VcsUtil.__init__(self, cmd_tracer) - self._logger = logging.getLogger(__name__) - self._dry_run = False - - self._svn_repo_std_layout = True - # Not really useful right now but added for future extensions to deal with platforms - # which don't have svn on the search path (e.g. windows or macOS). - self._svn_executable = util.find_tool_on_path('svn', must_succeed=True) - self._svnadmin_executable = self._find_svnadmin() - self._svnmucc_executable = self._find_svnmucc() - - def _find_svnadmin(self): - if os.path.isabs(self._svn_executable): - svn_prog = self._svn_executable - else: - svn_prog = util.find_tool_on_path('svn', must_succeed=True) - svn_dir = os.path.dirname(svn_prog) - if self._sys_info.is_windows(): - svnadmin = os.path.join(svn_dir, 'svnadmin.{0}'.format('exe')) - else: - svnadmin = os.path.join(svn_dir, 'svnadmin') - return svnadmin - - def _find_svnmucc(self): - if os.path.isabs(self._svn_executable): - svn_prog = self._svn_executable - else: - svn_prog = util.find_tool_on_path('svn', must_succeed=True) - svn_dir = os.path.dirname(svn_prog) - if self._sys_info.is_windows(): - svnmucc = os.path.join(svn_dir, 'svnmucc.{0}'.format('exe')) - else: - svnmucc = os.path.join(svn_dir, 'svnmucc') - if not os.path.exists(svnmucc): - svnmucc = None - return svnmucc - - def set_dry_run(self, dry_run=True): - self._dry_run = dry_run - - def get_svn_executable(self): - return self._svn_executable - - def get_svnadmin_executable(self): - return self._svnadmin_executable - - def create_empty_repository(self, repo_path, std_layout=True): - repo_path = os.path.normpath(os.path.abspath(repo_path)) - if os.path.exists(repo_path): - raise Exception("SVN repository path {} already exists.".format(repo_path)) - repo_dir = os.path.dirname(repo_path) - if not os.path.exists(repo_dir): - os.makedirs(repo_dir) - svn_argv = [self._svnadmin_executable, 'create', repo_path] - self.trace_svn_command(svn_argv) - if self._dry_run: - self._logger.warning("dry run: {0}".format(' '.join(svn_argv))) - else: - util.subproc_check_call_flushed(svn_argv) - if std_layout: - svn_repo_path_posix = util.to_posix_path(repo_path) - for pth in ['trunk', 'branches', 'tags']: - svn_url = "file://{0}/{1}".format(svn_repo_path_posix, pth) - svn_argv = [self._svn_executable, 'mkdir', '-m', 'creating folder {}'.format(pth), svn_url] - self.trace_svn_command(svn_argv) - if self._dry_run: - self._logger.warning("dry run: {0}".format(' '.join(svn_argv))) - else: - util.subproc_check_call_flushed(svn_argv) - - def has_svnmucc(self): - return self._svnmucc_executable is not None - - def get_svnmucc_executable(self): - return self._svn_executable - - def get_command_history(self): - return self._cmd_tracer.get_command_history() - - def clear_command_history(self): - self._cmd_tracer.clear_command_history() - - def get_tag_url(self, svn_repo, tag): - assert self._svn_repo_std_layout - return "{0}/tags/{1}".format(svn_repo, tag) - - def get_branch_url(self, svn_repo, branch): - assert self._svn_repo_std_layout - if branch == 'trunk': - return "{0}/{1}".format(svn_repo, branch) - else: - return "{0}/branches/{1}".format(svn_repo, branch) - - def get_tags(self, svn_repo, with_rev=False): - tags = self.get_svn_folders(svn_repo + '/tags', with_rev) - return tags - - def get_latest_tag(self, svn_repo): - tags = self.get_tags(svn_repo) - if not tags: - return None - tag_rev_list = [] - for tag in tags: - svn_tag_url = self.get_tag_url(svn_repo, tag) - tag_rev = self.get_svn_rev(svn_tag_url) - tag_rev_list.append(tuple([tag, tag_rev])) - # Sort by revision - tag_rev_list = sorted(tag_rev_list, key=lambda tag_rev: tag_rev[1]) - (latest_tag, tag_rev) = tag_rev_list[-1] - return latest_tag - - def get_branches(self, svn_repo, with_rev=False): - branches = self.get_svn_folders(svn_repo + '/branches', with_rev) - return branches - - def get_svn_folders(self, svn_url, with_rev=False): - svn_folders = [] - svn_argv = [self._svn_executable, 'list', svn_url] - self.trace_svn_command(svn_argv) - retv = subprocess.check_output(svn_argv, universal_newlines=True) - re_trailing_slash = re.compile(r'^(.+)/$') - for line in retv.splitlines(): - l = line.rstrip().lstrip() - re_match = re_trailing_slash.match(l) - if re_match: - svn_folder = re_match.group(1) - if with_rev: - rev = self.get_svn_rev("{0}/{1}".format(svn_url, svn_folder)) - svn_folder += "@{0:d}".format(rev) - svn_folders.append(svn_folder) - return svn_folders - - def get_svn_rev(self, svn_url): - svn_argv = [self._svn_executable, 'info', '--show-item', 'last-changed-revision', svn_url] - self.trace_svn_command(svn_argv) - retv = subprocess.check_output(svn_argv, universal_newlines=True) - retv = retv.rstrip() - rev = int(retv) - return rev - - def get_repo_uuid(self, svn_repo): - svn_argv = [self._svn_executable, 'info', '--show-item', 'repos-uuid', svn_repo] - self.trace_svn_command(svn_argv) - retv = subprocess.check_output(svn_argv, universal_newlines=True) - retv = retv.lstrip().rstrip() - return retv - - def get_svn_log_msg(self, svn_url): - # svn log -l 1 https://visvn.fe.hhi.de/svn/svn_CMakeBuild/tags/3.11.0-1 - svn_argv = [self._svn_executable, 'log', '-l', '1', svn_url] - self.trace_svn_command(svn_argv) - retv = subprocess.check_output(svn_argv, universal_newlines=True) - comment_lines = retv.splitlines() - assert len(comment_lines) >= 3 - assert comment_lines[0].startswith('---') - comment_lines.pop(0) - # Drop rXXXX ... - comment_lines.pop(0) - assert comment_lines[-1].startswith('---') - comment_lines.pop() - comment_lines = self.strip_empty_comment_lines(comment_lines) - return comment_lines - - def svn_save_property_values_tmpf(self, prop_values): - tmp_fname = self.save_comment_lines_tmpf(prop_values) - return tmp_fname - - def svn_save_properties(self, svn_props, fname, header_lines=None): - svn_props_serialized = str(svn_props) - with open(fname, "w") as propf: - if header_lines: - header = '\n'.join(header_lines) - propf.write(header) - propf.write('\n') - propf.write(svn_props_serialized) - - def svn_read_properties(self, svn_res_path): - svn_argv = [self._svn_executable, 'proplist', '--verbose', svn_res_path] - self.trace_svn_command(svn_argv) - retv = subprocess.check_output(svn_argv, universal_newlines=True) - prop_lines = retv.splitlines() - prop_file_parser = SvnPropFileParser() - return prop_file_parser.parse_property_file_content(prop_lines) - - def svn_commit_wc(self, comment_lines, wc_dir): - tmp_fname = self.save_comment_lines_tmpf(comment_lines) - svn_argv = [self._svn_executable, 'ci', '-F', tmp_fname, wc_dir] - self.trace_svn_command(svn_argv) - if self._dry_run: - self._logger.warning("dry run: {0}".format(' '.join(svn_argv))) - else: - util.subproc_check_call_flushed(svn_argv) - - def svn_import_wc(self, comment_lines, wc_dir, svn_url, global_ignores=None, quiet=False): - # svn import -F --auto-props --config-option config:miscellany:global-ignores=.git wc_dir svn_url - # e.g. svn_url = https://visvn.fe.hhi.de/svn/svn_CMakeBuildClone/branches/imports/3.10.1-1 - tmp_fname = self.save_comment_lines_tmpf(comment_lines) - svn_argv = [self._svn_executable, 'import', '-F', tmp_fname, '--auto-props'] - # Add any global ignores. - if global_ignores: - svn_argv.extend(['--config-option', 'config:miscellany:global-ignores=' + ' '.join(global_ignores)]) - if quiet: - svn_argv.append('-q') - # finalize the command line - svn_argv.extend([wc_dir, svn_url]) - self.trace_svn_command(svn_argv) - if self._dry_run: - self._logger.warning("dry run: {0}".format(' '.join(svn_argv))) - else: - util.subproc_check_call_flushed(svn_argv) - - def svn_set_properties_url(self, svn_url, svn_props, work_dir=None): - if svn_props.is_empty(): - return - if self.has_svnmucc(): - self._svn_set_properties_url_svnmucc(svn_url, svn_props) - else: - raise Exception("svn_set_properties_url() requires svnmucc which is not available.") - - def _svn_set_properties_url_svnmucc(self, svn_url, svn_props): - if svn_props.is_empty(): - return - tmp_files = [] - try: - svn_argv = [self._svnmucc_executable] - (svn_url_prefix, svn_path) = self.svn_split_url(svn_url) - for prop in svn_props.get_property_list(): - prop_values = svn_props.get_property(prop) - if len(prop_values) > 1: - tmp_fname = self.svn_save_property_values_tmpf(prop_values) - tmp_files.append(tmp_fname) - svn_argv.extend(['propsetf', prop, tmp_fname, svn_path]) - else: - svn_argv.extend(['propset', prop, prop_values[0], svn_path]) - svn_argv.append('-m') - svn_argv.append("Properties inserted by {0}".format(self._prog_name)) - svn_argv.extend(['-U', svn_url_prefix]) - self.trace_svn_command(svn_argv) - if self._dry_run: - self._logger.warning("dry run: {0}".format(' '.join(svn_argv))) - else: - util.subproc_check_call_flushed(svn_argv) - finally: - for pth in tmp_files: - if os.path.exists(pth): - os.remove(pth) - - def svn_set_properties_wc(self, svn_props, work_dir): - if svn_props.is_empty(): - return - tmp_files = [] - try: - for prop in svn_props.get_property_list(): - prop_values = svn_props.get_property(prop) - if len(prop_values) > 1: - tmp_fname = self.svn_save_property_values_tmpf(prop_values) - tmp_files.append(tmp_fname) - svn_argv = [self._svn_executable, 'propset', prop, '-F', tmp_fname, work_dir] - else: - svn_argv = [self._svn_executable, 'propset', prop, prop_values[0], work_dir] - self.trace_svn_command(svn_argv) - if self._dry_run: - self._logger.warning("dry run: {0}".format(' '.join(svn_argv))) - else: - util.subproc_check_call_flushed(svn_argv) - finally: - for pth in tmp_files: - if os.path.exists(pth): - os.remove(pth) - - def svn_remote_copy(self, comment_lines, svn_url_src, svn_url_dst, create_intermediate_folders=True): - tmp_fname = self.save_comment_lines_tmpf(comment_lines) - svn_argv = [self._svn_executable, 'copy', '-F', tmp_fname] - if create_intermediate_folders: - svn_argv.append('--parents') - svn_argv.extend([svn_url_src, svn_url_dst]) - self.trace_svn_command(svn_argv) - if self._dry_run: - self._logger.warning("dry run: {0}".format(' '.join(svn_argv))) - else: - util.subproc_check_call_flushed(svn_argv) - self.remove_tmp_file(tmp_fname) - - def svn_remote_rm(self, svn_url, comment_lines): - tmp_fname = self.save_comment_lines_tmpf(comment_lines) - svn_argv = [self._svn_executable, 'rm', '-F', tmp_fname, svn_url] - self.trace_svn_command(svn_argv) - if self._dry_run: - self._logger.warning("dry run: {0}".format(' '.join(svn_argv))) - else: - util.subproc_check_call_flushed(svn_argv) - self.remove_tmp_file(tmp_fname) - - def svn_split_url(self, svn_url): - svn_url_norm = svn_url.rstrip('/') - re_match = re.match(r'^(.+)/([^/]+)$', svn_url_norm) - if re_match: - svn_root_url = re_match.group(1) - svn_url_path = "/{}".format(re_match.group(2)) - else: - raise Exception("SVN URL {0} not supported.".format(svn_url)) - return svn_root_url, svn_url_path - - def trace_svn_command(self, svn_argv): - self._cmd_tracer.trace_command(svn_argv) diff --git a/cmake/CMakeBuild/cmake/modules/BBuildEnv.cmake b/cmake/CMakeBuild/cmake/modules/BBuildEnv.cmake deleted file mode 100644 index 07532ba3..00000000 --- a/cmake/CMakeBuild/cmake/modules/BBuildEnv.cmake +++ /dev/null @@ -1,1365 +0,0 @@ -#[===[.rst: -BBuildEnv ---------- - -The module BBuildEnv provides a CMake build environment with functions and macros -to access other external SDKs including CodeMeter, CUDASamples, Intel Performance Libraries -not yet supported by CMake natively. - -Other macros ensure consistent build settings for multithreading and provide -an abstract CMake generator independent way to configure compiler warnings -depending on compiler family and version. - -This module also provides some system information not yet available by CMake. - -Unless explicitly disabled by configuration option ``BBuildEnv_EXCLUDE_MODULES`` -module ``BBuildEnv`` loads the following submodules to provide additional support -for Boost, Qt5, OpenCV, file downloads, MinGW and CPack: - -============================== =========================================================== -Module Description -============================== =========================================================== -:module:`BBuildEnvAddProject` Macros and functions to add standard - subproject like console applications, libraries, samples, - UTF tests and Qt applications to a standard workspace -:module:`BBuildEnvGitSvn` Utility functions to support Git to SVN interoperability. -:module:`BBuildEnvDownload` Supports HTTPS downloads of single files at build time -:module:`BBuildEnvVersionUtil` Functions to parse version header files -:module:`BBuildEnvCPack` Functions helping to create binary distribution packages -:module:`BBuildEnvBoost` Macros and functions helping to use locally built Boost - libraries. -:module:`BBuildEnvOpenCV` Helper functions to copy OpenCV runtime DLLs -:module:`BBuildEnvQt5` Helper functions to copy Qt5 runtime DLLs -:module:`BBuildEnvMingw` Helper functions to copy MinGW runtime DLLs on Ubuntu -============================== =========================================================== - -The following modules are not loaded by default as they provide functionality not needed -by all main projects. - -- :module:`BBuildEnvGit` provides macros and functions to checkout Git repositories at - configuration time to aggregate them into a single build tree. Similar functionality - is provided by module :module:`FetchContent` with slightly different Git clone and - update behavior. - -Configuration Options -^^^^^^^^^^^^^^^^^^^^^ - -This module evaluates the following variables at load time allowing users to -customize its behavior: - -``BBuildEnv_EXCLUDE_MODULES`` - List of submodules to be excluded from loading. Use ``ALL`` to disable - loading any submodule. - -``BBuildEnv_DEBUG`` - Enable debugging messages. - -``BBuildEnv_USE_LIBRARY_NAME_POSTFIX`` - A boolean variable to enable a configuration specific library name postfix which - allows to install all library or executable variants in the same directory. It's unset/off by - default to provide backward compatibility with earlier releases. If enabled executable - targets will need a configuration postfix as well. - - -How to Use -^^^^^^^^^^ - -Include the following statement(s) in your top-level CMakeLists.txt to load this module -and its submodules. The modification of :variable:`CMAKE_MODULE_PATH` makes a set of new -or patched find modules available as well and is therefore the recommended way -to include ``BBuildEnv``. The logic below assumes assumes CMakeBuild is included -as an svn:external or as a versioned Git subtree: - -.. code-block:: cmake - - # Set module path to subversion or git layout based on the existence of - # ${CMAKE_SOURCE_DIR}/CMakeBuild/CMakeBuild/cmake/modules. - if( EXISTS "${CMAKE_SOURCE_DIR}/CMakeBuild/CMakeBuild/cmake/modules" ) - set( CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMakeBuild/CMakeBuild/cmake/modules" ) - set( USE_GIT_SUBPROJECTS OFF ) - else() - file( GLOB CMAKEBUILD_TAGS RELATIVE ${CMAKE_SOURCE_DIR}/CMakeBuild ${CMAKE_SOURCE_DIR}/CMakeBuild/*/CMakeBuild/cmake/modules/BBuildEnv.cmake ) - list( LENGTH CMAKEBUILD_TAGS NUM_OF_TAGS ) - if( ${NUM_OF_TAGS} EQUAL 1 ) - if( CMAKEBUILD_TAGS MATCHES "^([^/]+)/" ) - set( CMAKEBUILD_TAG ${CMAKE_MATCH_1} ) - endif() - if( EXISTS "${CMAKE_SOURCE_DIR}/CMakeBuild/${CMAKEBUILD_TAG}/CMakeBuild/cmake/modules" ) - set( CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMakeBuild/${CMAKEBUILD_TAG}/CMakeBuild/cmake/modules" ) - set( USE_GIT_SUBPROJECTS ON ) - else() - message( FATAL_ERROR "ERROR: CMakeBuild directory not found: ${CMAKE_SOURCE_DIR}/CMakeBuild/${CMAKEBUILD_TAG}/CMakeBuild/cmake/modules" ) - endif() - else() - message( FATAL_ERROR "ERROR: ${NUM_OF_TAGS} CMakeBuild directories found, exactly one is expected. Directories found: ${CMAKEBUILD_TAGS}" ) - endif() - endif() - - # Include a utility module providing functions, macros, and settings to customize the build environment. - include( BBuildEnv ) - - -Provided Variables -^^^^^^^^^^^^^^^^^^ - -Module ``BBuildEnv`` provides the following output variables -which are supposed to be treated readonly: - -``BBuildEnv_VERSION`` - Module's version in decimal dotted format with a maximum of four components. - -``BBuildEnv_MSYS`` - Set to true when using MSYS. - -``BBuildEnv_GENERATOR_ALIAS`` - CMake generator specific build directory. It's a plain name without any path separators. - - ``umake`` - Unix Makefiles - - ``vs16`` - Microsoft Visual Studio 2019 - - ``vs15`` - Microsoft Visual Studio 2017 - - ``vs14`` - Microsoft Visual Studio 2015 - - ``xcode`` - Xcode generator, switching between different Xcode versions is currently not supported within a single build tree. - - ``ninja`` - Ninja generator - -``BBuildEnv__POSTFIX`` - Configuration specific postfix strings to support side-by-side installation in the same - directory. - -``BBuildEnv_SHARED_DIR_POSTFIX`` - A string specific to the shared library configuration to allow for single - output directories or installation directories. - -``BBuildEnv_OUTPUT_DIR_SUFFIX`` - A generator specific relative path to be used in installation rules to support multiple - generators or compiler versions in combination with the same installation prefix. - -``BBuildEnv_ROOT_DIR`` - Optional root directory of CMakeBuild customization files. - -``BBuildEnv_SCRIPT_DIR`` - Optional path to non-cmake scripts. - - -Provided Functions and Macros -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. command:: bb_multithreading - - The ``bb_multithreading()`` macro adds an imported target ``Threads::Threads`` - to enable multithreaded code generation. All multithreaded targets - shall have an explicit or implicit dependency on ``Threads::Threads``:: - - bb_multithreading() - - -.. command:: bb_enable_warnings - - The ``bb_enable_warnings()`` macro enables CXX compiler warnings in case the - selected CMake generator does not by default - and accepts parameters to configure warnings as errors and disable warnings given a - specific compiler version or compiler family:: - - bb_enable_warnings([[-]] [warnings-as-errors] [...]) - - **Parameters:** - - ``compiler`` - The macro supports the following compiler families - ``gcc``, ``clang``, ``msvc`` and ``intel``. - - ``compiler_version`` - Compiler version specified as ``major_version`` or - ``major_version.minor_version`` to indicate which compiler version - the macro should configure. - - ``warnings-as-errors`` - Treat warnings as errors. - - ``warning_flag`` - Compiler specific flag to enable or disable a warning. - - -.. command:: bb_add_subdirectory - - The ``bb_add_subdirectory()`` macro adds an external in-tree Git subproject - provided variable ``USE_GIT_SUBPROJECTS`` is ON. - The macro silently assumes the subproject is checked out to - ``${CMAKE_SOURCE_DIR}/ext/``. If variable ``USE_GIT_SUBPROJECTS`` - is OFF, the macro will invoke :command:`add_subdirectory` for backward compatibility - with SVN repositories and subproject aggregation via SVN externals:: - - bb_add_subdirectory() - - **Parameters:** - - ``subproject`` - A relative path to an in-tree subproject; e.g. ``BoostAddon/src/lib/LoggerLib`` - - -.. command:: bb_set_target_output_name - - The ``bb_set_target_output_name`` macro appends a configuration specific postfix to - the output name of executable targets if variable ``BBuildEnv_USE_LIBRARY_NAME_POSTFIX`` - is ON. If applied to library targets, it will change :prop_tgt:`COMPILE_PDB_NAME_` - for static libraries to align the PDB filename with the library filename. - CMake's postfix machinery does it for linker generated PDB files but not for compiler - generated PDB files:: - - bb_set_target_output_name( ) - - **Parameters:** - - ``target`` - An existing target to be modified. - - -.. command:: bb_set_external_dir - - The ``bb_set_external_dir()`` function searches for a directory given a - relative path using a fixed set of root paths. It's intended use is to find - a shared folder holding an external project - without searching any system paths or cross compiler specific paths:: - - bb_set_external_dir( []) - - **Parameters:** - - ``abs_path`` - Absolute path to ``relative_path`` found in one of the default locations. - - ``dir`` - Directory to search for in one of the default locations. An absolute path - will be returned as-is. - - ``OPTIONAL`` - Search failure is not treated as an fatal error. - - **Search Path:** - - Search path in decreasing order of preference. All paths consisting of - undefined environment variables are silently ignored. - - ``$ENV{PROJ_HOME}`` - - ``${CMAKE_SOURCE_DIR}/..`` - - ``${CMAKE_SOURCE_DIR}/../..`` - - ``$ENV{HOME}/projects`` - Ignored on native windows host systems. It is searched when MSYS has been detected - or any other non-windows platform. - - ``$ENV{USERPROFILE}/projects`` - Ignored on non-windows host systems. - - -Reserved Identifiers -^^^^^^^^^^^^^^^^^^^^ - -Avoiding name clashes in CMakeLists.txt or project specific CMake files all -projects including module ``BBuildEnv``, or any of its submodules, are advised -not to use CMake variables, functions or macros starting with:: - - BBuildEnv, _BBuildEnv, _bb_, bb_, BB_, _BB_ - -Users may use variables starting with ``BBuildEnv_`` only to configure the -behavior of ``BuildEnv`` modules or submodules or evaluate properties of loaded -``BuildEnv`` modules or submodules exposed through documented variables -``BBuildEnv_``. - -#]===] - - -if( NOT CMAKE_VERSION VERSION_LESS 3.10 ) - include_guard( GLOBAL ) -endif() - -include( "${CMAKE_CURRENT_LIST_DIR}/BBuildEnvVersion.cmake" ) - -# List of submodules to load by default. -set( _BBuildEnvSubmoduleList - BBuildEnvAddProject - # BBuildEnvDebug - BBuildEnvDownload - BBuildEnvMingw - BBuildEnvVersionUtil - BBuildEnvCPack - BBuildEnvBoost - BBuildEnvQt5 - BBuildEnvOpenCV - BBuildEnvGitSvn - ) - -foreach( _cmod IN LISTS _BBuildEnvSubmoduleList ) - if( DEFINED BBuildEnv_EXCLUDE_MODULES ) - if( "${BBuildEnv_EXCLUDE_MODULES}" STREQUAL "ALL" ) - break() - endif() - if( NOT _cmod IN_LIST BBuildEnv_EXCLUDE_MODULES ) - include( "${CMAKE_CURRENT_LIST_DIR}/${_cmod}.cmake" OPTIONAL ) - endif() - else() - include( "${CMAKE_CURRENT_LIST_DIR}/${_cmod}.cmake" OPTIONAL ) - endif() -endforeach() - - -# this macro switches between subversion externals and git dependencies -macro( bb_add_subdirectory subdirectory_ ) - if( USE_GIT_SUBPROJECTS ) - string( REGEX REPLACE "([^/]+).*" "\\1" BASE_DIRECTORY ${subdirectory_} ) - add_subdirectory( ${CMAKE_SOURCE_DIR}/ext/${BASE_DIRECTORY}/${subdirectory_} ${CMAKE_BINARY_DIR}/${subdirectory_} ) - else() - add_subdirectory( ${subdirectory_} ) - endif() -endmacro() - - -macro( bb_set_target_output_name target_ ) - if( BBuildEnv_USE_LIBRARY_NAME_POSTFIX ) - get_target_property( _bb_tmp_target_type ${target_} TYPE ) - if( _bb_tmp_target_type STREQUAL "EXECUTABLE" ) - set_target_properties( ${target_} PROPERTIES OUTPUT_NAME_DEBUG ${target_}${CMAKE_DEBUG_POSTFIX} - OUTPUT_NAME_RELWITHDEBINFO ${target_}${CMAKE_RELWITHDEBINFO_POSTFIX} - OUTPUT_NAME_MINSIZEREL ${target_}${CMAKE_MINSIZEREL_POSTFIX} ) - elseif( MSVC AND (_bb_tmp_target_type STREQUAL "STATIC_LIBRARY" ) ) - # message( STATUS "${target_} is static, setting COMPILE_PDB_NAME_DEBUG ..." ) - set_target_properties( ${target_} PROPERTIES COMPILE_PDB_NAME_DEBUG ${target_}${CMAKE_DEBUG_POSTFIX} COMPILE_PDB_NAME_RELWITHDEBINFO ${target_}${CMAKE_RELWITHDEBINFO_POSTFIX} ) - endif() - endif() -endmacro() - - -macro( bb_save_find_context fnd_ctx ) - if( CMAKE_CROSSCOMPILING ) - # find_package must be told not to expect the BOOST libraries inside "CMAKE_FIND_ROOT_PATH". - foreach( _v INCLUDE LIBRARY PACKAGE ) - if( DEFINED CMAKE_FIND_ROOT_PATH_MODE_${_v} ) - # message( STATUS "bb_save_find_context(): CMAKE_FIND_ROOT_PATH_MODE_${_v}=${CMAKE_FIND_ROOT_PATH_MODE_${_v}}" ) - - set( ${fnd_ctx}_CMAKE_FIND_ROOT_PATH_MODE_${_v} ${CMAKE_FIND_ROOT_PATH_MODE_${_v}} ) - set( CMAKE_FIND_ROOT_PATH_MODE_${_v} NEVER ) - else() - unset( ${fnd_ctx}_CMAKE_FIND_ROOT_PATH_MODE_${_v} ) - endif() - endforeach() - endif() -endmacro() - - -macro( bb_restore_find_context fnd_ctx ) - if( CMAKE_CROSSCOMPILING ) - # Restore CMAKE_FIND_ROOT_PATH settings - foreach( _v INCLUDE LIBRARY PACKAGE ) - if( DEFINED ${fnd_ctx}_CMAKE_FIND_ROOT_PATH_MODE_${_v} ) - set( CMAKE_FIND_ROOT_PATH_MODE_${_v} ${${fnd_ctx}_CMAKE_FIND_ROOT_PATH_MODE_${_v}} ) - unset( ${fnd_ctx}_CMAKE_FIND_ROOT_PATH_MODE_${_v} ) - - # message( STATUS "bb_restore_find_context(): CMAKE_FIND_ROOT_PATH_MODE_${_v}=${CMAKE_FIND_ROOT_PATH_MODE_${_v}}" ) - endif() - endforeach() - endif() -endmacro() - - - -# -# Internal macro to extract the CXX compiler's . version. -# -macro( _bb_get_cxx_compiler_version_major_minor version_major_minor_ ) - string( REGEX REPLACE "([0-9]+)\\.([0-9]+)([0-9.]+)?" "\\1.\\2" ${version_major_minor_} ${CMAKE_CXX_COMPILER_VERSION} ) -endmacro() - - -function( bb_get_home_dir home_dir_ ) - set( _native FALSE ) - - if( ARGC EQUAL 2 ) - if( ${ARGV1} STREQUAL "NATIVE" ) - set( _native TRUE ) - else() - message( FATAL_ERROR "bb_get_home_dir: argument ${ARGV1} not understood." ) - endif() - elseif( ARGC GREATER 2 ) - message( FATAL_ERROR "bb_get_home_dir: too many arguments specified, expected [NATIVE]." ) - endif() - - if( CMAKE_HOST_WIN32 ) - # Force forward slashes on Windows - if( BBuildEnv_MSYS ) - if( _native ) - file( TO_CMAKE_PATH "$ENV{USERPROFILE}" _home_dir ) - else() - file( TO_CMAKE_PATH "$ENV{HOME}" _home_dir ) - endif() - else() - file( TO_CMAKE_PATH "$ENV{USERPROFILE}" _home_dir ) - endif() - else() - set( _home_dir "$ENV{HOME}" ) - endif() - - set( ${home_dir_} "${_home_dir}" PARENT_SCOPE ) - -endfunction() - - -macro( bb_set_home_dir home_dir_ ) - # backward compatibility - bb_get_home_dir( ${home_dir_} ) -endmacro() - - - -function( bb_get_binary_tool_dir tool_dir_ ) - # Location to store scripts and programs generated by CMake to support the build. - set( _tool_dir "${CMAKE_BINARY_DIR}/tools" ) - if( NOT EXISTS "${_tool_dir}" ) - file( MAKE_DIRECTORY "${_tool_dir}" ) - endif() - set( ${tool_dir_} "${_tool_dir}" PARENT_SCOPE ) -endfunction() - - -macro( bb_check_build_type ) - # message( STATUS "bb_check_build_type(): entering" ) - if( CMAKE_VERSION VERSION_LESS 3.9 ) - # Define property GENERATOR_IS_MULTI_CONFIG if it does not exist. - get_property( _bb_have_generator_is_multi_config GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG DEFINED ) - if( NOT _bb_have_generator_is_multi_config ) - # message( STATUS "bb_check_build_type(): global property GENERATOR_IS_MULTI_CONFIG is undefined." ) - # Property GENERATOR_IS_MULTI_CONFIG is not available - define_property( GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG - BRIEF_DOCS "True when using a multi-configuration generator." - FULL_DOCS "True when using a multi-configuration generator. Builtin property of CMake 3.9.0 or higher." ) - if( MSVC OR XCODE ) - set_property( GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG 1 ) - else() - set_property( GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG 0 ) - endif() - endif() - unset( _bb_have_generator_is_multi_config ) - endif() - get_property( _bb_generator_is_multi_config GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG ) - # message( STATUS "bb_check_build_type(): GENERATOR_IS_MULTI_CONFIG=${_bb_generator_is_multi_config}" ) - if( NOT _bb_generator_is_multi_config ) - # set default CMAKE_BUILD_TYPE to Release if not set - if( NOT CMAKE_BUILD_TYPE ) - set( CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel." FORCE ) - endif() - endif() - unset( _bb_generator_is_multi_config ) - # message( STATUS "bb_check_build_type(): leaving" ) -endmacro( bb_check_build_type ) - - -macro( bb_multithreading ) - if( TARGET Threads::Threads ) - message( FATAL_ERROR "bb_multithreading(): target Threads::Threads already exists. Please contact technical support." ) - endif() - unset( _bb_mt_prop_value ) - if( MINGW ) - # MinGW may be a native compiler or a cross compiler. - find_package( Threads REQUIRED ) - #add_compile_options( -mthreads ) - #message( STATUS "bb_multithreading(): mingw detected, add_compile_options: -mthreads" ) - get_target_property( _bb_mt_prop_value Threads::Threads INTERFACE_COMPILE_OPTIONS ) - if( _bb_mt_prop_value ) - if( NOT _bb_mt_prop_value STREQUAL "-mthreads" ) - message( FATAL_ERROR "bb_multithreading(): target Threads::Threads has unexpected INTERFACE_COMPILE_OPTIONS: ${_bb_mt_prop_value}" ) - endif() - else() - set_target_properties( Threads::Threads PROPERTIES INTERFACE_COMPILE_OPTIONS "-mthreads" ) - endif() - elseif( CMAKE_CROSSCOMPILING ) - find_package( Threads REQUIRED ) - elseif( CMAKE_CXX_COMPILER_ID STREQUAL "Cray" ) - find_package( Threads REQUIRED ) - else() - if( CMAKE_SYSTEM_NAME STREQUAL "Linux" ) - # Add interface compile/link option -pthread - set( THREADS_PREFER_PTHREAD_FLAG ON ) - endif() - find_package( Threads REQUIRED ) - if( CMAKE_SYSTEM_NAME STREQUAL "Linux" ) - # A compile option -pthread bound to all enabled languages won't work if CUDA is enabled as a programming language (tested with cmake 3.9.1). - # Since NVCC does not understand -pthread, the compile option must be bound to C and CXX. - get_target_property( _bb_mt_prop_value Threads::Threads INTERFACE_COMPILE_OPTIONS ) - if( _bb_mt_prop_value ) - if( _bb_mt_prop_value STREQUAL "-pthread" ) - set_target_properties( Threads::Threads PROPERTIES INTERFACE_COMPILE_OPTIONS $<$,$>:-pthread> ) - endif() - endif() - endif() - endif() -endmacro( bb_multithreading ) - - -macro( bb_enable_warnings ) - unset( _bb_warning_options ) # in case the calling context has defined it. - - _bb_enable_warnings_helper( _bb_warning_options ${ARGN} ) - - if( DEFINED _bb_warning_options ) - message( STATUS "bb_enable_warnings: ${toolset} -> updating warnings flags: ${_bb_warning_options}" ) - foreach( _bb_warning_opt IN LISTS _bb_warning_options ) - if( MSVC ) - # CMake 3.11.0 introduces support for generator expression COMPILE_LANGUAGE. - # MSVC generator does not support the generator expression COMPILE_LANGUAGE yet. - string( APPEND CMAKE_CXX_FLAGS " ${_bb_warning_opt}" ) - string( APPEND CMAKE_C_FLAGS " ${_bb_warning_opt}" ) - else() - add_compile_options( $<$,$>:${_bb_warning_opt}> ) - endif() - endforeach() - unset( _bb_warning_options ) - endif() -endmacro() - -function( _bb_enable_warnings_helper warning_options_ ) - #message( STATUS "_bb_enable_warnings_helper(): ${warning_options_} ARGC=${ARGC} ${ARGN}" ) - - # Translate CMAKE_CXX_COMPILER_ID to a string which compares easily with toolset -> gcc, msvc, clang. - if( CMAKE_CXX_COMPILER_ID STREQUAL "GNU" ) - set( _bb_warning_compiler_id "gcc" ) - elseif( CMAKE_CXX_COMPILER_ID MATCHES "^(AppleClang|Clang)$" ) - if( MSVC ) - # No support for clang as MSVC toolset. - # message( STATUS "_bb_enable_warnings_helper(): no support for MSVC/clang toolsets yet." ) - return() - else() - set( _bb_warning_compiler_id "clang" ) - endif() - elseif( CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" ) - set( _bb_warning_compiler_id "msvc" ) - elseif( CMAKE_CXX_COMPILER_ID STREQUAL "Intel" ) - set( _bb_warning_compiler_id "intel" ) - if( APPLE ) - # No support for intel yet. - return() - endif() - elseif( CMAKE_CXX_COMPILER_ID STREQUAL "Cray" ) - set( _bb_warning_compiler_id "cray" ) - return() - else() - # Not a compiler ID we have support for. - return() - endif() - - # Unset a few variables the logic below depends on. The calling context may have defined them. - unset( _bb_warning_options ) - unset( _bb_tmp_list_var ) - - if( ${ARGC} GREATER 1 ) - set( _bb_tmp_list_var "${ARGN}" ) - # Analyze the first argument it may be a toolset, warnings-as-errors or a warning option. - list( GET _bb_tmp_list_var 0 _arg1 ) - - if( "${_arg1}" MATCHES "^(gcc|clang|msvc|intel)" ) - #message( STATUS "bb_enable_warnings(): found toolset argument ${ARGV0}" ) - if( "${_arg1}" MATCHES "^([a-z]+)-([0-9]+)$" ) - # Strip version suffix; e.g. gcc-8 -> gcc - set( _bb_warning_toolset "${CMAKE_MATCH_1}" ) - # Save major version - set( _bb_warning_toolset_version "${CMAKE_MATCH_2}" ) - # Get compiler's minor version - if( CMAKE_CXX_COMPILER_VERSION MATCHES "^[0-9]+\\.([0-9]+)" ) - string( APPEND _bb_warning_toolset_version ".${CMAKE_MATCH_1}" ) - endif() - elseif( "${_arg1}" MATCHES "^([a-z]+)-([0-9]+\\.[0-9]+)" ) - # Strip version suffix; e.g. gcc-4.8 -> gcc - set( _bb_warning_toolset "${CMAKE_MATCH_1}" ) - set( _bb_warning_toolset_version "${CMAKE_MATCH_2}" ) - else() - set( _bb_warning_toolset "${_arg1}" ) - # Fake a version matching the current compiler version which simplifies the logic below. - if( DEFINED bb_compiler_version_major_minor ) - set( _bb_warning_toolset_version "${bb_compiler_version_major_minor}" ) - else() - _bb_get_cxx_compiler_version_major_minor( _bb_warning_toolset_version ) - endif() - endif() - - if( ( NOT _bb_warning_toolset STREQUAL _bb_warning_compiler_id ) OR ( NOT _bb_warning_toolset_version VERSION_EQUAL bb_compiler_version_major_minor ) ) - # No match for current CXX compiler - # message( STATUS "_bb_enable_warnings_helper(): no match for current compiler" ) - return() - endif() - - # Drop the toolset from the list of arguments to be processed later on - list( REMOVE_AT _bb_tmp_list_var 0 ) - endif() - endif() - - if( CMAKE_CXX_COMPILER_ID MATCHES "^(AppleClang|Clang)$" ) - if( NOT XCODE ) - set( _bb_warning_options -Wall ) - endif() - elseif( CMAKE_CXX_COMPILER_ID STREQUAL "GNU" ) - set( _bb_warning_options -Wall -fdiagnostics-show-option ) - elseif( CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" ) - # Do we have to override the warning level? - elseif( CMAKE_CXX_COMPILER_ID STREQUAL "Intel" ) - # Do we have to override the warning level on Windows/MSVC? - if( ( NOT MSVC ) AND ( NOT XCODE ) ) - set( _bb_warning_options -Wall ) - endif() - elseif( CMAKE_CXX_COMPILER_ID STREQUAL "Cray" ) - # Do we have to override the warning level? - endif() - - #message( STATUS "bb_enable_warnings(): processing additional warning options ${_bb_tmp_list_var}" ) - foreach( _bb_v IN LISTS _bb_tmp_list_var ) - #message( STATUS "processing ${_bb_v}" ) - if( ${_bb_v} STREQUAL "warnings-as-errors" ) - if( CMAKE_CXX_COMPILER_ID MATCHES "^(GNU|AppleClang|Clang)$" ) - list( APPEND _bb_warning_options "-Werror" ) - elseif( CMAKE_CXX_COMPILER_ID STREQUAL "Intel" ) - if( MSVC ) - list( APPEND _bb_warning_options "/WX" ) - else() - list( APPEND _bb_warning_options "-Werror" ) - endif() - elseif( CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" ) - list( APPEND _bb_warning_options "/WX" ) - endif() - else() - list( APPEND _bb_warning_options "${_bb_v}" ) - endif() - endforeach() - - if( DEFINED _bb_warning_options ) - if( MSVC ) - if( CMAKE_CXX_COMPILER_ID STREQUAL "Intel" ) - # Replace -XXX with /XXX avoiding the mix of both option specifications. - string( REPLACE "-Q" "/Q" _bb_warning_options "${_bb_warning_options}" ) - endif() - endif() - set( ${warning_options_} ${_bb_warning_options} PARENT_SCOPE ) - endif() -endfunction( _bb_enable_warnings_helper ) - - -macro( bb_get_program_files_x86 program_files_x86_ ) - bb_get_env_icase( ${program_files_x86_} "ProgramFiles(x86)" TO_CMAKE_PATH ) -endmacro() - - -macro( bb_get_program_files program_files_ ) - bb_get_env_icase( ${program_files_} "ProgramFiles" TO_CMAKE_PATH ) -endmacro() - - -macro( bb_get_program_data program_data_ ) - bb_get_env_icase( ${program_data_} "ProgramData" TO_CMAKE_PATH ) -endmacro() - - -function( bb_get_env_icase env_var_value_ env_var_ ) - unset( _path_conversion ) - if( ${ARGC} EQUAL 3 ) - set( _path_conversion ${ARGV2} ) - if( NOT ${_path_conversion} MATCHES "^(TO_CMAKE_PATH|TO_NATIVE_PATH)$" ) - message( FATAL_ERROR "illegal conversion ${_path_conversion} specified, use TO_CMAKE_PATH or TO_NATIVE_PATH" ) - endif() - elseif( ${ARGC} GREATER 3 ) - message( FATAL_ERROR "too many arguments specified: ${ARGV}" ) - endif() - unset( _env_var_value ) - if( DEFINED ENV{${env_var_}} ) - set( _env_var_value "$ENV{${env_var_}}" ) - else() - # Mixed-case environment variable? - string( TOUPPER "${env_var_}" _env_var_uc ) - if( NOT ${_env_var_uc} STREQUAL ${env_var_} ) - # Try uppercase environment variable to suit buildbot and possibly other python frameworks. - if( DEFINED ENV{${_env_var_uc}} ) - set( _env_var_value "$ENV{${_env_var_uc}}" ) - endif() - endif() - endif() - if( DEFINED _env_var_value ) - if( DEFINED _path_conversion ) - file( ${_path_conversion} "${_env_var_value}" _env_var_value ) - endif() - set( ${env_var_value_} "${_env_var_value}" PARENT_SCOPE ) - else() - # Should we assign -NOTFOUND instead? - if( DEFINED ${env_var_value_} ) - unset( ${env_var_value_} PARENT_SCOPE ) - endif() - endif() -endfunction() - - -function( _bb_find_proj_home proj_home_ home_dir_ ) - unset( _proj_home ) - if( DEFINED ENV{PROJ_HOME} ) - # message( STATUS "BBuildEnv: using environment variable PROJ_HOME=$ENV{PROJ_HOME}" ) - # Force forward slashes on Windows - file( TO_CMAKE_PATH "$ENV{PROJ_HOME}" _proj_home ) - if( NOT EXISTS ${_proj_home} ) - message( FATAL_ERROR "\ - Environment variable PROJ_HOME=${_proj_home} - points to a non-existing directory. - " ) - endif() - elseif( EXISTS "${home_dir_}/projects" ) - set( _proj_home "${home_dir_}/projects" ) - elseif( BBuildEnv_MSYS ) - # Check for %USERPROFILE%/projects as a fallback when using MSYS. - bb_get_home_dir( _home_dir NATIVE ) - if( EXISTS "${_home_dir}/projects" ) - set( _proj_home "${_home_dir}/projects" ) - endif() - endif() - if( DEFINED _proj_home ) - set( ${proj_home_} "${_proj_home}" PARENT_SCOPE ) - endif() -endfunction() - -# -# search path: $ENV{PROJ_HOME} ${CMAKE_SOURCE_DIR}/.. ${CMAKE_SOURCE_DIR}/../.. ${bb_home_dir}/projects -# -function( bb_set_external_dir dir_var_ dir_ ) - unset( _dir ) - set( _dir_required TRUE ) - - if( ARGC GREATER 2 ) - # Process optional arguments - foreach( _arg IN LISTS ARGN ) - if( _arg STREQUAL "OPTIONAL" ) - set( _dir_required FALSE ) - endif() - endforeach() - endif() - - if( IS_ABSOLUTE "${dir_}" ) - if( NOT EXISTS "${dir_}" ) - if( _dir_required ) - message( FATAL_ERROR "bb_set_external_dir(): ${dir_} does not exist." ) - endif() - else() - set( _dir "${dir_}" ) - endif() - else() - unset( _search_path ) - if( DEFINED ENV{PROJ_HOME} ) - file( TO_CMAKE_PATH "$ENV{PROJ_HOME}" _proj_home ) - list( APPEND _search_path "${_proj_home}" ) - endif() - foreach( _dir_tmp "${CMAKE_CURRENT_SOURCE_DIR}/.." "${CMAKE_CURRENT_SOURCE_DIR}/../.." ) - if( EXISTS "${_dir_tmp}" ) - get_filename_component( _dir_norm "${_dir_tmp}" REALPATH ) - list( APPEND _search_path "${_dir_norm}" ) - endif() - endforeach() - bb_get_home_dir( _home_dir ) - if( EXISTS "${_home_dir}/projects" ) - list( APPEND _search_path "${_home_dir}/projects" ) - endif() - if( BBuildEnv_MSYS ) - bb_get_home_dir( _home_dir NATIVE ) - if( EXISTS "${_home_dir}/projects" ) - list( APPEND _search_path "${_home_dir}/projects" ) - endif() - endif() - list( REMOVE_DUPLICATES _search_path ) - foreach( _path IN LISTS _search_path ) - if( EXISTS "${_path}/${dir_}" ) - set( _dir "${_path}/${dir_}" ) - break() - endif() - endforeach() - if( NOT DEFINED _dir ) - if( _dir_required ) - message( FATAL_ERROR "bb_set_external_dir(): cannot find ${dir_} in ${_search_path}. You may use the environment variable PROJ_HOME to supplement the default search path." ) - endif() - else() - get_filename_component( _dir "${_dir}" REALPATH ) - endif() - endif() - if( DEFINED _dir ) - set( ${dir_var_} "${_dir}" PARENT_SCOPE ) - endif() -endfunction() - - -# -# Additional system information -# -macro( bb_get_python_script_path script_path_ script_dir_ script_name_ ) - if( PYTHONINTERP_FOUND ) - if( ${PYTHON_VERSION_STRING} VERSION_LESS 3.0 ) - set( ${script_path_} "${script_dir_}/${script_name_}.py" ) - else() - set( ${script_path_} "${script_dir_}/${script_name_}3.py" ) - endif() - else() - message( FATAL_ERROR "bb_get_python_script_path(): configuration error: python interpreter not found, please contact technical support." ) - endif() -endmacro() - - -function( _bb_query_linux_pkg_arch pkg_arch_ ) - if( bb_dpkg_cmd ) - execute_process( COMMAND ${bb_dpkg_cmd} --print-architecture - RESULT_VARIABLE _retv_child - OUTPUT_VARIABLE _pkg_arch - OUTPUT_STRIP_TRAILING_WHITESPACE ) - if( NOT _retv_child EQUAL 0 ) - message( FATAL_ERROR "${bb_dpkg_cmd} --print-architecture failed, please contact technical support." ) - endif() - set( ${pkg_arch_} "${_pkg_arch}" PARENT_SCOPE ) - elseif( bb_rpm_cmd ) - execute_process( COMMAND ${bb_rpm_cmd} --eval "%_arch" - RESULT_VARIABLE _retv_child - OUTPUT_VARIABLE _pkg_arch - OUTPUT_STRIP_TRAILING_WHITESPACE ) - if( NOT _retv_child EQUAL 0 ) - message( FATAL_ERROR "${bb_rpm_cmd} --eval %_arch failed, please contact technical support." ) - endif() - endif() - if( DEFINED _pkg_arch ) - set( ${pkg_arch_} "${_pkg_arch}" PARENT_SCOPE ) - endif() -endfunction() - -function( _bb_find_macosx_isysroot isysroot_ ) - if( CMAKE_HOST_APPLE ) - execute_process( COMMAND xcrun --sdk macosx --show-sdk-path - RESULT_VARIABLE _retv_child - OUTPUT_VARIABLE _isysroot - OUTPUT_STRIP_TRAILING_WHITESPACE ) - # message( STATUS "macosx isysroot discovery: retv_child=${_retv_child} ${_isysroot}" ) - if( _retv_child EQUAL 0 ) - set( ${isysroot_} ${_isysroot} PARENT_SCOPE ) - endif() - endif() -endfunction() - -function( _bb_query_system_info system_info_ ) - - #message( STATUS "_bb_query_system_info: starting system_info=${${system_info_}}" ) - if( DEFINED ${system_info_} ) - return() - endif() - - #message( STATUS "BBuildEnv: collecting additional system information ..." ) - - foreach( v _lsb_distro_name _lsb_distro_codename _lsb_distro_version _distro_pkg_fmt _distro_pkg_arch _isysroot ) - # message( STATUS "v = ${v}" ) - set( ${v} "none" ) - endforeach() - - set( _os_arch "x86_64" ) - - if( CMAKE_HOST_WIN32 ) - # cmake host system: Windows-6.1.7601 - set( _system_info "windows" ) - if( CMAKE_HOST_SYSTEM MATCHES "[wW][A-Za-z]+-([0-9.]+)" ) - set( _lsb_distro_version "${CMAKE_MATCH_1}" ) - endif() - elseif( CMAKE_HOST_APPLE ) - set( _system_info "macosx" ) - if( NOT CMAKE_VERSION VERSION_LESS 3.10.0 ) - # sw_vers -productVersion - cmake_host_system_information( RESULT _lsb_distro_version QUERY OS_RELEASE ) - # sw_vers -buildVersion - # cmake_host_system_information( RESULT _lsb_distro_version QUERY OS_VERSION ) - else() - execute_process( COMMAND sw_vers -productVersion - OUTPUT_VARIABLE _lsb_distro_version - RESULT_VARIABLE _retv_child - OUTPUT_STRIP_TRAILING_WHITESPACE ) - if( NOT _retv_child EQUAL 0 ) - message( WARNING "sw_vers -productVersion failed, please contact technical support." ) - endif() - endif() - - if( NOT CMAKE_CROSSCOMPILING ) - _bb_find_macosx_isysroot( _isysroot ) - endif() - elseif( CMAKE_HOST_UNIX ) - set( _system_info "linux" ) - if( CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "^(i686|x86)$" ) - set( _os_arch "x86" ) - endif() - - mark_as_advanced( bb_dpkg_cmd bb_bb_rpm_cmd bb_lsb_release_cmd ) - - find_program( bb_dpkg_cmd "dpkg" ) - if( bb_dpkg_cmd ) - set( _distro_pkg_fmt "deb" ) - else() - find_program( bb_rpm_cmd "rpm" ) - if( bb_rpm_cmd ) - set( _distro_pkg_fmt "rpm" ) - endif() - endif() - find_program( bb_lsb_release_cmd "lsb_release" ) - - if( DEFINED ENV{CRAYOS_VERSION} ) - set( _lsb_distro_version $ENV{CRAYOS_VERSION} ) - set( _lsb_distro_name "cray" ) - set( _lsb_distro_codename "none" ) - else() - if( NOT bb_lsb_release_cmd ) - message( WARNING "BBuildEnv: lsb_release not found, no way to retrieve additional linux system information." ) - #return() - else() - execute_process( COMMAND ${bb_lsb_release_cmd} -is - RESULT_VARIABLE _retv_child - OUTPUT_VARIABLE _lsb_distro_name - OUTPUT_STRIP_TRAILING_WHITESPACE ) - if( NOT _retv_child EQUAL 0 ) - message( WARNING "${bb_lsb_release_cmd} -is failed, please contact technical support." ) - endif() - execute_process( COMMAND ${bb_lsb_release_cmd} -cs - RESULT_VARIABLE _retv_child - OUTPUT_VARIABLE _lsb_distro_codename - OUTPUT_STRIP_TRAILING_WHITESPACE ) - if( NOT _retv_child EQUAL 0 ) - message( WARNING "${bb_lsb_release_cmd} -cs failed, please contact technical support." ) - endif() - execute_process( COMMAND ${bb_lsb_release_cmd} -rs - RESULT_VARIABLE _retv_child - OUTPUT_VARIABLE _lsb_distro_version - OUTPUT_STRIP_TRAILING_WHITESPACE ) - if( NOT _retv_child EQUAL 0 ) - message( WARNING "${bb_lsb_release_cmd} -rs failed, please contact technical support." ) - endif() - endif() - endif() - - _bb_query_linux_pkg_arch( _distro_pkg_arch ) - - # convert distro name to lowercase - string( TOLOWER "${_lsb_distro_name}" _lsb_distro_name ) - # convert distro codename to lowercase - string( TOLOWER "${_lsb_distro_codename}" _lsb_distro_codename ) - # suse does not seem to provide a reasonable codename via lsb_release -cs and issues "n/a". Such - # a string is likely to cause problems if used as filename component or evaluated in a similar context. - # Hence, it's replace by none. - if( _lsb_distro_codename STREQUAL "n/a" ) - set( _lsb_distro_codename "none" ) - endif() - endif() - if( _lsb_distro_version STREQUAL "none" ) - set( _lsb_distro_version "0.0" ) - endif() - list( APPEND _system_info ${_os_arch} ${_lsb_distro_name} ${_lsb_distro_codename} ${_lsb_distro_version} ${_distro_pkg_fmt} ${_distro_pkg_arch} ${_isysroot} ) - set( ${system_info_} "${_system_info}" CACHE INTERNAL "additional system information" ) -endfunction( _bb_query_system_info ) - -function( _bb_get_platform_dir platform_dir_ ) - if( CMAKE_CROSSCOMPILING ) - if( CMAKE_SYSTEM_PROCESSOR MATCHES "^(i686|x86)$" ) - set( _platform_dir "x86" ) - elseif( CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86_64|AMD64)$" ) - set( _platform_dir "x86_64" ) - else() - set( _platform_dir "${CMAKE_SYSTEM_PROCESSOR}" ) - endif() - else() - if( CMAKE_SIZEOF_VOID_P EQUAL 8 ) - set( _platform_dir "x86_64" ) - else() - set( _platform_dir "x86" ) - endif() - endif() - set( ${platform_dir_} "${_platform_dir}" PARENT_SCOPE ) -endfunction() - -function( _bb_get_toolset_subdir toolset_subdir_ compiler_version_ ) - unset( _toolset_subdir ) - # Assume cmake is able to figure out CMAKE_CXX_COMPILER_ID for all compilers including cross compilers. - if( CMAKE_CXX_COMPILER_ID MATCHES "^(AppleClang|Clang)$" ) - set( _toolset_subdir "clang-${compiler_version_}" ) - elseif( CMAKE_CXX_COMPILER_ID STREQUAL "GNU" ) - set( _toolset_subdir "gcc-${compiler_version_}" ) - elseif( CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" ) - set( _toolset_subdir "msvc-${compiler_version_}" ) - elseif( CMAKE_CXX_COMPILER_ID STREQUAL "Intel" ) - set( _toolset_subdir "intel-${compiler_version_}" ) - if( MSVC ) - if( NOT DEFINED bb_generator_alias ) - message( FATAL_ERROR "MSVC defined but bb_generator_alias is undefined, looks like an internal bug. Please contact technical support." ) - else() - set( _toolset_subdir "intel-${compiler_version_}-${bb_generator_alias}" ) - endif() - endif() - elseif( CMAKE_CXX_COMPILER_ID STREQUAL "Cray" ) - set( _toolset_subdir "cray-${compiler_version_}" ) - else() - message( FATAL_ERROR "unsupported CMAKE_CXX_COMPILER_ID=${CMAKE_CXX_COMPILER_ID}, please contact technical support." ) - endif() - if( MINGW ) - # MinGW is either a cross compiler or a native compiler. - set( _toolset_subdir "gcc-mingw-${compiler_version_}" ) - elseif( CMAKE_CROSSCOMPILING ) - if( BBuildEnv_DEBUG ) - message( STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " - "cross compiling for ${CMAKE_SYSTEM_PROCESSOR} CMAKE_CXX_COMPILER_ID=${CMAKE_CXX_COMPILER_ID} cxx_version=${compiler_version_}" ) - endif() - # message( FATAL_ERROR "no support for this type of cross compiler, please contact technical support." ) - endif() - if( DEFINED _toolset_subdir ) - set( ${toolset_subdir_} "${_toolset_subdir}" PARENT_SCOPE ) - endif() -endfunction() - -function( bb_get_os_arch os_arch_ ) - list( GET bb_system_info 1 _os_arch ) - set( ${os_arch_} "${_os_arch}" PARENT_SCOPE ) -endfunction() - -function( bb_get_target_arch target_arch_ ) - list( GET bb_system_info 1 _target_arch ) - if( MSVC ) - if( CMAKE_SIZEOF_VOID_P EQUAL 4 ) - set( _target_arch "x86" ) - endif() - elseif( MINGW ) - if( CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86_64|amd64|AMD64)$" ) - set( _target_arch "x86_64" ) - else() - set( _target_arch "x86" ) - endif() - elseif( CMAKE_CROSSCOMPILING ) - # tbd - set( _target_arch "${CMAKE_SYSTEM_PROCESSOR}" ) - endif() - set( ${target_arch_} "${_target_arch}" PARENT_SCOPE ) -endfunction() - -function( bb_get_linux_distro_name distro_name_ ) - list( GET bb_system_info 2 _distro_name ) - set( ${distro_name_} "${_distro_name}" PARENT_SCOPE ) -endfunction() - -function( bb_get_os_codename os_codename_ ) - list( GET bb_system_info 3 _os_codename ) - set( ${os_codename_} "${_os_codename}" PARENT_SCOPE ) -endfunction() - -function( bb_get_os_version os_version_ ) - list( GET bb_system_info 4 _os_version ) - set( ${os_version_} "${_os_version}" PARENT_SCOPE ) -endfunction() - -function( bb_get_linux_pkg_fmt pkg_fmt_ ) - list( GET bb_system_info 5 _pkg_fmt ) - set( ${pkg_fmt_} "${_pkg_fmt}" PARENT_SCOPE ) -endfunction() - -function( bb_get_linux_pkg_arch pkg_arch_ ) - list( GET bb_system_info 6 _pkg_arch ) - set( ${pkg_arch_} "${_pkg_arch}" PARENT_SCOPE ) -endfunction() - -function( bb_get_isysroot isysroot_ ) - list( GET bb_system_info 7 _isysroot ) - set( ${isysroot_} "${_isysroot}" PARENT_SCOPE ) -endfunction() - - - -function( bb_get_imp_targets_from_components target_list_ target_prefix_ config_ comp1_ ) - set( _comp_list ${comp1_} ${ARGN} ) - unset( _target_list ) - #message( STATUS "bb_get_imp_targets_from_components(): ${_comp_list}" ) - string( TOUPPER "${config_}" _config_uc ) - set( _target_prop_list INTERFACE_LINK_LIBRARIES_${_config_uc} INTERFACE_LINK_LIBRARIES IMPORTED_LINK_INTERFACE_LIBRARIES_${_config_uc} IMPORTED_LINK_INTERFACE_LIBRARIES ) - foreach( _comp IN LISTS _comp_list ) - set( _target_name ${target_prefix_}${_comp} ) - list( APPEND _target_list ${_target_name} ) - foreach( _target_prop IN LISTS _target_prop_list ) - get_target_property( _prop_value ${_target_name} ${_target_prop} ) - #message( STATUS "${_target_name} ${_target_prop} -> _prop_value=${_prop_value}" ) - if( _prop_value ) - #message( STATUS "_bb_get_qt5_dlls: Qt5::${_comp}: INTERFACE_LINK_LIBRARIES=${_prop_value}" ) - foreach( _lnk_lib ${_prop_value} ) - if( _lnk_lib MATCHES "^${target_prefix_}[a-zA-Z]" ) - list( APPEND _target_list ${_lnk_lib} ) - endif() - endforeach() - break() - endif() - endforeach() - endforeach() - if( DEFINED _target_list ) - list( REMOVE_DUPLICATES _target_list ) - set( ${target_list_} ${_target_list} PARENT_SCOPE ) - endif() -endfunction() - -# Optional argument: NO_PDB_FILES -function( bb_get_dsos_from_imp_targets dso_list_ config_ target1_ ) - string( TOUPPER "${config_}" _config_uc ) - set( _target_list ${target1_} ${ARGN} ) - if( NO_PDB_FILES IN_LIST _target_list ) - set( _no_pdb_files TRUE ) - list( REMOVE_ITEM _target_list NO_PDB_FILES ) - else() - set( _no_pdb_files FALSE ) - endif() - unset( _bin_dir ) - unset( _dso_list ) - # Walk _target_list and collect paths to dlls. - foreach( _target ${_target_list} ) - # "IMPORTED_LOCATION" "IMPORTED_LOCATION_RELEASE" "IMPORTED_LOCATION_DEBUG" - get_target_property( _prop_value ${_target} IMPORTED_LOCATION_${_config_uc} ) - if( NOT _prop_value ) - message( WARNING "bb_get_dsos_from_imp_targets(): no IMPORTED_LOCATION_${_config_uc} for target ${_target}" ) - get_target_property( _prop_value ${_target} IMPORTED_LOCATION ) - endif() - if( _prop_value ) - # Ignore any static libraries - get_filename_component( _lib_ext ${_prop_value} EXT ) - if( WIN32 ) - if( NOT _lib_ext MATCHES "^\\.(dll|DLL)$" ) - continue() - endif() - elseif( APPLE ) - if( _lib_ext STREQUAL ".a" ) - continue() - endif() - else() - # Linux: extension may have a trailing version number. - if( NOT _lib_ext MATCHES "^\\.so" ) - continue() - endif() - endif() - # message( STATUS "${_target}: IMPORTED_LOCATION_RELEASE=${_prop_value}" ) - if( NOT DEFINED _bin_dir ) - get_filename_component( _bin_dir ${_prop_value} DIRECTORY ) - endif() - list( APPEND _dso_list ${_prop_value} ) - if( _config_uc STREQUAL "DEBUG" ) - if( WIN32 AND NOT ${_no_pdb_files} ) - # Add PDB file if available - get_filename_component( _filenm ${_prop_value} NAME_WE ) - if( EXISTS "${_bin_dir}/${_filenm}.pdb" ) - list( APPEND _dso_list "${_bin_dir}/${_filenm}.pdb" ) - endif() - endif() - endif() - endif() - endforeach() - if( DEFINED _dso_list ) - set( ${dso_list_} ${_dso_list} PARENT_SCOPE ) - endif() -endfunction() - - -function( bb_file action_ input_path_ output_path_ ) - - if( "${action_}" STREQUAL "TO_SHORT_PATH" ) - if( NOT CMAKE_HOST_WIN32 ) - message( FATAL_ERROR "Short path conversion is only supported on Windows host systems." ) - endif() - endif() - - if( "${action_}" MATCHES "^(TO_NATIVE_PATH|TO_SHORT_PATH)$" ) - if( CMAKE_HOST_WIN32 ) - if( CMAKE_GENERATOR STREQUAL "MinGW Makefiles" ) - # Painful hack to get backslashes as the CMake generator mgwmake seems to enable Linux path conversion - # rather than Windows path conversion. - # example: C:/Program Files -> C:/Program\ Files - string( REPLACE "/" "\\" _native_path "${input_path_}" ) - else() - file( TO_NATIVE_PATH "${input_path_}" _native_path ) - endif() - else() - file( TO_NATIVE_PATH "${input_path_}" _native_path ) - endif() - # message( STATUS "input_path='${input_path_}' native_path='${_native_path}'" ) - if( "${action_}" STREQUAL "TO_NATIVE_PATH" ) - set( ${output_path_} "${_native_path}" PARENT_SCOPE ) - endif() - endif() - - if( "${action_}" STREQUAL "TO_SHORT_PATH" ) - find_program( BB_SHELL_PROG "cmd.exe" ) - bb_file( TO_NATIVE_PATH "${BB_SHELL_PROG}" script_launcher ) - set( script_cmd_line "/c" ) - - bb_get_binary_tool_dir( _tool_dir ) - - if( NOT EXISTS "${_tool_dir}/get_short_path.cmd" ) - file( WRITE "${_tool_dir}/get_short_path.cmd" "@echo off\n" "echo %~s1\n" ) - endif() - - bb_file( TO_NATIVE_PATH "${_tool_dir}/get_short_path.cmd" cmd_script ) - string( APPEND script_cmd_line " ${cmd_script}" ) - string( APPEND script_cmd_line " \"${_native_path}\"" ) - # - separate_arguments( script_args NATIVE_COMMAND "${script_cmd_line}" ) - # message( STATUS "Launching: ${script_launcher} ${script_args}" ) - execute_process( COMMAND "${script_launcher}" ${script_args} WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" RESULT_VARIABLE retv OUTPUT_VARIABLE short_path OUTPUT_STRIP_TRAILING_WHITESPACE ) - - if( retv EQUAL 0 ) - #message( STATUS "python interpreter (short path): ${short_path}" ) - set( ${output_path_} "${short_path}" PARENT_SCOPE ) - else() - message( FATAL_ERROR "short path conversion failed: ${retv}, please contact technical support." ) - endif() - endif() -endfunction() - - - -# -# Internal macro to setup the build environment. -# -macro( bb_build_env_setup ) - - message( STATUS "Setting up BBuildEnv ${BBuildEnv_VERSION}" ) - - unset( BBuildEnv_ROOT_DIR ) - unset( BBuildEnv_SCRIPT_DIR ) - set( BBuildEnv_MSYS FALSE ) - - if( CMAKE_HOST_WIN32 ) - if( DEFINED ENV{MSYSTEM} ) - message( STATUS "BBuildEnv: MSYS[2] platform detected." ) - set( BBuildEnv_MSYS TRUE ) - endif() - endif() - - bb_check_build_type() - - if( EXISTS "${CMAKE_CURRENT_LIST_DIR}/../.." ) - get_filename_component( BBuildEnv_ROOT_DIR "${CMAKE_CURRENT_LIST_DIR}/../.." REALPATH ) - if( EXISTS "${BBuildEnv_ROOT_DIR}/bin" ) - set( BBuildEnv_SCRIPT_DIR "${BBuildEnv_ROOT_DIR}/bin" ) - endif() - endif() - - - _bb_query_system_info( bb_system_info ) - # message( STATUS "bb_system_info: ${bb_system_info}" ) - - bb_get_home_dir( bb_home_dir ) - - _bb_find_proj_home( bb_proj_home "${bb_home_dir}" ) - - # Add a cmake generator alias - unset( bb_generator_alias ) - if( CMAKE_GENERATOR STREQUAL "Unix Makefiles" ) - set( bb_generator_alias "umake" ) - elseif( CMAKE_GENERATOR STREQUAL "Xcode" ) - set( bb_generator_alias "xcode" ) - elseif( CMAKE_GENERATOR MATCHES "Visual Studio ([0-9][0-9])" ) - set( bb_generator_alias "vs${CMAKE_MATCH_1}" ) - elseif( CMAKE_GENERATOR STREQUAL "Ninja" ) - set( bb_generator_alias "ninja" ) - elseif( CMAKE_GENERATOR STREQUAL "MinGW Makefiles" ) - set( bb_generator_alias "mgwmake" ) - else() - message( WARNING "BBuildEnv.cmake: generator '${CMAKE_GENERATOR}' is not fully supported yet, please contact technical support for further information." ) - #return() - string( TOLOWER "${CMAKE_GENERATOR}" _generator_uc ) - string( REPLACE " " "_" bb_generator_alias "${_generator_uc}" ) - unset( _generator_uc ) - endif() - #message( STATUS "bb_generator_alias: ${bb_generator_alias}" ) - _bb_get_cxx_compiler_version_major_minor( bb_compiler_version_major_minor ) - _bb_get_toolset_subdir( bb_toolset_subdir ${bb_compiler_version_major_minor} ) - _bb_get_platform_dir( bb_platform_dir ) - - # set standard output directories: gcc-5.4/x86_64 - if( DEFINED bb_generator_alias ) - set( BBuildEnv_GENERATOR_ALIAS "${bb_generator_alias}" ) - set( bb_default_output_dir "${bb_generator_alias}/${bb_toolset_subdir}/${bb_platform_dir}" ) - else() - set( bb_default_output_dir "${bb_toolset_subdir}/${bb_platform_dir}" ) - endif() - - # BBuildEnv_OUTPUT_DIR_SUFFIX could be a cache variable to make it customizable. - set( BBuildEnv_OUTPUT_DIR_SUFFIX "${bb_default_output_dir}" ) - - # the deploy folder may be used to save installer packages. - set( bb_deploy_dir "${CMAKE_SOURCE_DIR}/deploy" ) - - if( CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT ) - set( CMAKE_INSTALL_PREFIX "${CMAKE_SOURCE_DIR}/install" CACHE PATH "Standard install prefix" FORCE ) - endif() - - if( BUILD_SHARED_LIBS ) - set( BBuildEnv_SHARED_DIR_POSTFIX "-shared" ) - else() - unset( BBuildEnv_SHARED_DIR_POSTFIX ) - endif() - - if( NOT DEFINED BBuildEnv_USE_LIBRARY_NAME_POSTFIX ) - set( BBuildEnv_USE_LIBRARY_NAME_POSTFIX OFF CACHE BOOL "Enable library name postfix" ) - endif() - - #set( BBuildEnv_RELEASE_POSTFIX "" ) - set( BBuildEnv_DEBUG_POSTFIX "-d" ) - set( BBuildEnv_RELWITHDEBINFO_POSTFIX "-rd" ) - set( BBuildEnv_MINSIZEREL_POSTFIX "-mr" ) - - - if( BBuildEnv_USE_LIBRARY_NAME_POSTFIX ) - set( CMAKE_DEBUG_POSTFIX ${BBuildEnv_DEBUG_POSTFIX} ) - set( CMAKE_RELWITHDEBINFO_POSTFIX ${BBuildEnv_RELWITHDEBINFO_POSTFIX} ) - set( CMAKE_MINSIZEREL_POSTFIX ${BBuildEnv_MINSIZEREL_POSTFIX} ) - - set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/lib${BBuildEnv_SHARED_DIR_POSTFIX}/${BBuildEnv_OUTPUT_DIR_SUFFIX}" ) - set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}" ) - set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}" ) - set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}" ) - set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_MINSIZEREL "${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}" ) - - set( CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG "${CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG}" ) - set( CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE "${CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE}" ) - set( CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELWITHDEBINFO}" ) - set( CMAKE_LIBRARY_OUTPUT_DIRECTORY_MINSIZEREL "${CMAKE_ARCHIVE_OUTPUT_DIRECTORY_MINSIZEREL}" ) - - set( CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin${BBuildEnv_SHARED_DIR_POSTFIX}/${BBuildEnv_OUTPUT_DIR_SUFFIX}" ) - set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" ) - set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" ) - set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" ) - set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" ) - - else() - # Using CMake's default library name convention which is the same for all configurations. - set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${CMAKE_SOURCE_DIR}/lib/${BBuildEnv_OUTPUT_DIR_SUFFIX}/debug${BBuildEnv_SHARED_DIR_POSTFIX}" ) - set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${CMAKE_SOURCE_DIR}/lib/${BBuildEnv_OUTPUT_DIR_SUFFIX}/release${BBuildEnv_SHARED_DIR_POSTFIX}" ) - set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_SOURCE_DIR}/lib/${BBuildEnv_OUTPUT_DIR_SUFFIX}/relwithdebinfo${BBuildEnv_SHARED_DIR_POSTFIX}" ) - set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_MINSIZEREL "${CMAKE_SOURCE_DIR}/lib/${BBuildEnv_OUTPUT_DIR_SUFFIX}/minsizerel${BBuildEnv_SHARED_DIR_POSTFIX}" ) - - - set( CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG "${CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG}" ) - set( CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE "${CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE}" ) - set( CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELWITHDEBINFO}" ) - set( CMAKE_LIBRARY_OUTPUT_DIRECTORY_MINSIZEREL "${CMAKE_ARCHIVE_OUTPUT_DIRECTORY_MINSIZEREL}" ) - - set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_SOURCE_DIR}/bin/${BBuildEnv_OUTPUT_DIR_SUFFIX}/debug${BBuildEnv_SHARED_DIR_POSTFIX}" ) - set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_SOURCE_DIR}/bin/${BBuildEnv_OUTPUT_DIR_SUFFIX}/release${BBuildEnv_SHARED_DIR_POSTFIX}" ) - set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_SOURCE_DIR}/bin/${BBuildEnv_OUTPUT_DIR_SUFFIX}/relwithdebinfo${BBuildEnv_SHARED_DIR_POSTFIX}" ) - set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL "${CMAKE_SOURCE_DIR}/bin/${BBuildEnv_OUTPUT_DIR_SUFFIX}/minsizerel${BBuildEnv_SHARED_DIR_POSTFIX}" ) - endif() - - -endmacro( bb_build_env_setup ) - -#message( STATUS "BBuildEnv.cmake: starting: ${CMAKE_GENERATOR}" ) -# Setup the build environment -bb_build_env_setup() -#message( STATUS "BBuildEnv.cmake: leaving" ) - diff --git a/cmake/CMakeBuild/cmake/modules/BBuildEnvDebug.cmake b/cmake/CMakeBuild/cmake/modules/BBuildEnvDebug.cmake deleted file mode 100644 index 3f195eb4..00000000 --- a/cmake/CMakeBuild/cmake/modules/BBuildEnvDebug.cmake +++ /dev/null @@ -1,144 +0,0 @@ -#[===[.rst: -BBuildEnvDebug --------------- - -Internal module providing macros and functions for debugging. It won't be included by BBuildEnv by default. - -#]===] - - -if( NOT CMAKE_VERSION VERSION_LESS 3.10 ) - include_guard( GLOBAL ) -endif() - - -function( bb_dump_cmake_system_info ) - message( STATUS "bb_dump_cmake_system_info() entering" ) - message( STATUS "CMAKE_COMMAND: ${CMAKE_COMMAND}" ) - message( STATUS "CMAKE_VERSION: ${CMAKE_VERSION}" ) - message( STATUS "CMAKE_ROOT: ${CMAKE_ROOT}" ) - message( STATUS "CMAKE_SOURCE_DIR: ${CMAKE_SOURCE_DIR}" ) - message( STATUS "CMAKE_SIZEOF_VOID_P: ${CMAKE_SIZEOF_VOID_P}" ) - - if( MINGW ) - message( STATUS "MINGW: on" ) - endif() - - if( CMAKE_CROSSCOMPILING ) - message( STATUS "CMAKE_CROSSCOMPILING: on" ) - endif() - - # target operating system: Linux, Windows, Darwin, Android - message( STATUS "CMAKE_SYSTEM_NAME: ${CMAKE_SYSTEM_NAME}" ) - message( STATUS "CMAKE_HOST_SYSTEM: ${CMAKE_HOST_SYSTEM}" ) - message( STATUS "CMAKE_SYSTEM_VERSION: ${CMAKE_SYSTEM_VERSION}" ) - - # examples: x86_64 (ubuntu 16.04, macosx 10.12) - # AMD64 (windows 7 64-bit, -A x64, -A Win32) - message( STATUS "CMAKE_SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}" ) - message( STATUS "CMAKE_HOST_SYSTEM_PROCESSOR: ${CMAKE_HOST_SYSTEM_PROCESSOR}" ) - - if( CMAKE_HOST_APPLE ) - message( STATUS "CMAKE_HOST_APPLE: on" ) - endif() - if( CMAKE_HOST_UNIX ) - message( STATUS "CMAKE_HOST_UNIX: on" ) - endif() - if( CMAKE_HOST_WIN32 ) - message( STATUS "CMAKE_HOST_WIN32: on" ) - endif() - if( NOT CMAKE_VERSION VERSION_LESS 3.10.0 ) - cmake_host_system_information( RESULT os_name QUERY OS_NAME ) - cmake_host_system_information( RESULT os_release QUERY OS_RELEASE ) - cmake_host_system_information( RESULT os_version QUERY OS_VERSION ) - cmake_host_system_information( RESULT os_platform QUERY OS_PLATFORM ) - message( STATUS "OS_NAME: ${os_name}" ) - message( STATUS "OS_RELEASE: ${os_release}" ) - message( STATUS "OS_VERSION: ${os_version}" ) - message( STATUS "OS_PLATFORM: ${os_platform}" ) - endif() - message( STATUS "CMAKE_PROGRAM_PATH: ${CMAKE_PROGRAM_PATH}" ) - message( STATUS "CMAKE_SYSTEM_PROGRAM_PATH: ${CMAKE_SYSTEM_PROGRAM_PATH}" ) - message( STATUS "CMAKE_GENERATOR: ${CMAKE_GENERATOR}" ) - message( STATUS "CMAKE_GENERATOR_PLATFORM: ${CMAKE_GENERATOR_PLATFORM}" ) - - if( CMAKE_CXX_COMPILER_LOADED ) - message( STATUS "CMAKE_CXX_COMPILER_LOADED: on" ) - endif() - # expected: GNU, Clang, AppleClang, MSVC, - message( STATUS "CMAKE_CXX_COMPILER_ID: ${CMAKE_CXX_COMPILER_ID}" ) - message( STATUS "CMAKE_CXX_COMPILER: ${CMAKE_CXX_COMPILER}" ) - message( STATUS "CMAKE_CXX_COMPILER_VERSION: ${CMAKE_CXX_COMPILER_VERSION}" ) - #message( STATUS "cxx compile features: ${CMAKE_CXX_COMPILE_FEATURES}" ) - if( CMAKE_CXX_COMPILER_ARCHITECTURE_ID ) - # CMAKE_CXX_COMPILER_ARCHITECTURE_ID is defined but empty on Linux - message( STATUS "CMAKE_CXX_COMPILER_ARCHITECTURE_ID: ${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" ) - endif() - if( MSVC ) - message( STATUS "CMAKE_VS_PLATFORM_NAME: ${CMAKE_VS_PLATFORM_NAME}" ) - message( STATUS "CMAKE_VS_PLATFORM_NAME: ${CMAKE_VS_PLATFORM_NAME}" ) - message( STATUS "CMAKE_VS_PLATFORM_TOOLSET: ${CMAKE_VS_PLATFORM_TOOLSET}" ) - message( STATUS "MSVC_VERSION: ${MSVC_VERSION}" ) - if( NOT CMAKE_VERSION VERSION_LESS 3.12.0 ) - message( STATUS "MSVC_TOOLSET_VERSION: ${MSVC_TOOLSET_VERSION}" ) - endif() - if( CMAKE_CSharp_COMPILER_WORKS ) - message( STATUS "CMAKE_CSharp_COMPILER_ID: ${CMAKE_CSharp_COMPILER_ID}" ) - message( STATUS "CMAKE_CSharp_COMPILER: ${CMAKE_CSharp_COMPILER}" ) - message( STATUS "CMAKE_CSharp_COMPILER_VERSION: ${CMAKE_CSharp_COMPILER_VERSION}" ) - endif() - endif() - if( XCODE ) - if( CMAKE_Swift_COMPILER_ID ) - message( STATUS "CMAKE_Swift_COMPILER_ID: ${CMAKE_Swift_COMPILER_ID}" ) - message( STATUS "CMAKE_Swift_COMPILER: ${CMAKE_Swift_COMPILER}" ) - message( STATUS "CMAKE_Swift_COMPILER_VERSION: ${CMAKE_Swift_COMPILER_VERSION}" ) - endif() - endif() - get_property( _bb_generator_is_multi_config GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG ) - if( _bb_generator_is_multi_config ) - message( STATUS "CMAKE_CONFIGURATION_TYPES: ${CMAKE_CONFIGURATION_TYPES}" ) - else() - message( STATUS "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}" ) - endif() - unset( _bb_generator_is_multi_config ) - - message( STATUS "bb_system_info: ${bb_system_info}" ) - bb_get_target_arch( _bb_value ) - message( STATUS "bb_get_target_arch: ${_bb_value}" ) - bb_get_home_dir( _bb_value ) - message( STATUS "bb_get_home_dir: ${_bb_value}" ) - - if( CMAKE_HOST_WIN32 ) - bb_get_program_files_x86( _bb_value ) - message( STATUS "bb_get_program_files_x86: ${_bb_value}" ) - bb_get_program_files( _bb_value ) - message( STATUS "bb_get_program_files: ${_bb_value}" ) - bb_get_program_data( _bb_value ) - message( STATUS "bb_get_program_data: ${_bb_value}" ) - endif() - message( STATUS "bb_dump_cmake_system_info() leaving" ) -endfunction( bb_dump_cmake_system_info ) - - -function( bb_dump_target_properties target_ prop1_ ) - if( NOT TARGET ${target_} ) - message( WARNING "target ${target_} does not exist." ) - return() - endif() - set( _prop_list ${prop1_} ) - list( APPEND _prop_list ${ARGN} ) - list( LENGTH _prop_list _prop_list_len ) - message( STATUS "bb_dump_target_properties: len=${_prop_list_len} ${_prop_list}" ) - foreach( _prop ${_prop_list} ) - get_target_property( _prop_value ${target_} ${_prop} ) - if( _prop_value ) - message( STATUS "${target_}: ${_prop}=${_prop_value}" ) - endif() - endforeach() - message( STATUS "bb_dump_target_properties: leaving" ) -endfunction() - -macro( bb_dump_imported_target_properties target_ ) - bb_dump_target_properties( ${target_} IMPORTED_LOCATION IMPORTED_IMPLIB INTERFACE_INCLUDE_DIRECTORIES INTERFACE_COMPILE_DEFINITIONS INTERFACE_LINK_LIBRARIES ) -endmacro() diff --git a/cmake/CMakeBuild/cmake/modules/BBuildEnvLldb.cmake b/cmake/CMakeBuild/cmake/modules/BBuildEnvLldb.cmake deleted file mode 100644 index 08834b64..00000000 --- a/cmake/CMakeBuild/cmake/modules/BBuildEnvLldb.cmake +++ /dev/null @@ -1,165 +0,0 @@ -#.rst: -# BBuildEnvLldb -# ------------- -# -# Functions to update an LLDB init file. -# -# :: -# -# bb_lldbinit_update(ADD [OUTPUT ]) -# -# Add or replace the content of section labeled with ``marker`` in file ``lldbinit_file``. -# -# :: -# -# bb_lldbinit_update(REMOVE [OUTPUT ]) -# -# Remove the section labeled with ``marker`` from file ``lldbinit_file``. -# - -if( NOT CMAKE_VERSION VERSION_LESS 3.10 ) - include_guard( GLOBAL ) -endif() - -function( bb_lldbinit_update action_ lldbinit_file_ marker_ ) - set( _fnc_name "bb_lldbinit_update" ) - #message( STATUS "${_fnc_name}: entering" ) - - if( NOT ${action_} MATCHES "^(ADD|REMOVE)$" ) - message( FATAL_ERROR "Unknown update action ${action_} specified, expected ADD or REMOVE." ) - endif() - - if( IS_ABSOLUTE "${lldbinit_file_}" ) - set( _lldbinit_file "${lldbinit_file_}" ) - else() - set( _lldbinit_file "${CMAKE_CURRENT_SOURCE_DIR}/${lldbinit_file_}" ) - endif() - - set( _lldbinit_out_file "${_lldbinit_file}" ) - unset( _lldbinit_lines ) - - # Parse command line and handle optional arguments - if( ARGC GREATER 3 ) - #message( STATUS "${_fnc_name}: optional arguments ${ARGN}" ) - set( _opt_args ${ARGN} ) - list( LENGTH _opt_args _opt_args_cnt ) - while( _opt_args_cnt GREATER 0 ) - list( GET _opt_args 0 _arg ) - list( REMOVE_AT _opt_args 0 ) - #message( STATUS "${_fnc_name}: processing optional argument ${_arg}" ) - if( _arg STREQUAL "OUTPUT" ) - # Pick the next argument and stop processing - list( LENGTH _opt_args _opt_args_cnt ) - if( _opt_args_cnt EQUAL 1 ) - list( GET _opt_args 0 _lldbinit_out_file ) - if( NOT IS_ABSOLUTE "${_lldbinit_out_file}" ) - set( _lldbinit_out_file "${CMAKE_CURRENT_SOURCE_DIR}/${_lldbinit_out_file}" ) - endif() - else() - message( FATAL_ERROR "${_fnc_name}: illegal number of arguments." ) - endif() - break() - else() - list( APPEND _lldbinit_lines ${_arg} ) - endif() - list( LENGTH _opt_args _opt_args_cnt ) - endwhile() - endif() - - #message( STATUS "${_fnc_name}: new_content: ${_lldbinit_lines}" ) - #message( STATUS "${_fnc_name}: input_file: ${_lldbinit_file}" ) - #message( STATUS "${_fnc_name}: output_file: ${_lldbinit_out_file}" ) - - set( _regex_start "^#[ \t]*<${marker_}>" ) - set( _regex_end "^#[ \t]*" ) - - unset( _lldbinit_section_orig ) - unset( _lldbinit_section_new ) - - unset( _lldbinit_orig_top ) - unset( _lldbinit_orig_bottom ) - set( _start_section_cnt 0 ) - set( _end_section_cnt 0 ) - - if( action_ STREQUAL "ADD" ) - set( _update_lldbinit_file TRUE ) - elseif( action_ STREQUAL "REMOVE" ) - set( _update_lldbinit_file FALSE ) - endif() - - # Create the new lldbinit section - foreach( _line IN LISTS _lldbinit_lines ) - string( APPEND _lldbinit_section_new "${_line}" "\n" ) - endforeach() - - # Create section start and section end lines - _bb_lldbinit_create_marker_lines( ${marker_} _lldbinit_section_start _lldbinit_section_end ) - - if( EXISTS "${_lldbinit_file}" ) - file( STRINGS ${_lldbinit_file} _lldbinit_lines_orig ) - #message( STATUS "bb_update_lldbinit(): |${_lldbinit_lines_orig}|" ) - #message( STATUS "----" ) - #message( STATUS ${_lldbinit_lines_orig} ) - #message( STATUS "----" ) - foreach( _line IN LISTS _lldbinit_lines_orig ) - #message( STATUS "bb_update_lldbinit(): processing ${_line}" ) - if( _line MATCHES "${_regex_start}" ) - math( EXPR _start_section_cnt "${_start_section_cnt} + 1" ) - continue() - endif() - if( _line MATCHES "${_regex_end}" ) - math( EXPR _end_section_cnt "${_end_section_cnt} + 1" ) - continue() - endif() - if( ( _start_section_cnt EQUAL 1 ) AND ( _end_section_cnt EQUAL 0 ) ) - # Extract existing section - string( APPEND _lldbinit_section_orig "${_line}" "\n" ) - elseif( ( _start_section_cnt EQUAL 0 ) AND ( _end_section_cnt EQUAL 0 ) ) - string( APPEND _lldbinit_orig_top "${_line}" "\n" ) - elseif( ( _start_section_cnt EQUAL 1 ) AND ( _end_section_cnt EQUAL 1 ) ) - string( APPEND _lldbinit_orig_bottom "${_line}" "\n" ) - endif() - endforeach() - # Check section counters - if( ( _start_section_cnt EQUAL 1 ) AND ( _end_section_cnt EQUAL 1 ) ) - #message( STATUS "_lldbinit_orig_top: ${_lldbinit_orig_top}" ) - #message( STATUS "_lldbinit_section_orig: ${_lldbinit_section_orig}" ) - #message( STATUS "_lldbinit_orig_bottom: ${_lldbinit_orig_bottom}" ) - if( action_ STREQUAL "ADD" ) - if( "${_lldbinit_section_orig}" STREQUAL "${_lldbinit_section_new}" ) - set( _update_lldbinit_file FALSE ) - endif() - elseif( action_ STREQUAL "REMOVE" ) - set( _update_lldbinit_file TRUE ) - endif() - elseif( ( _start_section_cnt EQUAL 0 ) AND ( _end_section_cnt EQUAL 0 ) ) - else() - # Unsupported format - message( WARNING "${_fnc_name}: unsupported lldbinit, check number of tags." ) - return() - endif() - endif() - - if( NOT EXISTS ${_lldbinit_out_file} ) - set( _update_lldbinit_file TRUE ) - endif() - - if( _update_lldbinit_file ) - message( STATUS "${_fnc_name}: updating ${_lldbinit_out_file}, section=${marker_}" ) - if( action_ STREQUAL "ADD" ) - file( WRITE ${_lldbinit_out_file} "${_lldbinit_orig_top}" "${_lldbinit_section_start}" "${_lldbinit_section_new}" "${_lldbinit_section_end}" "${_lldbinit_orig_bottom}" ) - elseif( action_ STREQUAL "REMOVE" ) - file( WRITE ${_lldbinit_out_file} "${_lldbinit_orig_top}" "${_lldbinit_orig_bottom}" ) - endif() - endif() - - #message( STATUS "${_fnc_name}: leaving" ) -endfunction( bb_lldbinit_update ) - -function( _bb_lldbinit_create_marker_lines marker_ start_marker_ end_marker_ ) - string( TIMESTAMP _time_now "%Y-%m-%d %H:%M:%S" ) - set( ${start_marker_} "#<${marker_}> - automatically inserted at ${_time_now}, don't remove.\n" PARENT_SCOPE ) - #set( ${start_marker_} "#<${marker_}> - automatically inserted, don't remove.\n" PARENT_SCOPE ) - set( ${end_marker_} "# - automatically inserted, don't remove.\n" PARENT_SCOPE ) -endfunction( _bb_lldbinit_create_marker_lines ) - \ No newline at end of file diff --git a/cmake/CMakeBuild/cmake/modules/BBuildEnvMingw.cmake b/cmake/CMakeBuild/cmake/modules/BBuildEnvMingw.cmake deleted file mode 100644 index 5e3a015c..00000000 --- a/cmake/CMakeBuild/cmake/modules/BBuildEnvMingw.cmake +++ /dev/null @@ -1,53 +0,0 @@ -#[[.rst: -BBuildEnvMingw --------------- - -Functions and macros supporting MinGW development. - -.. command:: bb_add_target_CopyMingwRuntimeFiles - - The ``bb_add_target_CopyMingwRuntimeFiles()`` macro adds a custom target ``CopyMingwRuntimeFiles`` - to copy MinGW dlls to :variable:`CMAKE_RUNTIME_OUTPUT_DIRECTORY_`. - -#]] - -if( NOT CMAKE_VERSION VERSION_LESS 3.10 ) - include_guard( GLOBAL ) -endif() - -macro( bb_add_target_CopyMingwRuntimeFiles ) - if( MINGW AND CMAKE_CROSSCOMPILING ) - if( NOT TARGET CopyMingwRuntimeFiles ) - if( NOT DEFINED bb_MINGW_RUNTIME_FILES ) - message( FATAL_ERROR "\ - No MinGW runtime files defined, check your toolchain file and - define bb_MINGW_RUNTIME_FILES or don't call bb_add_target_CopyMingwRuntimeFiles()." ) - endif() - if( NOT CMAKE_VERSION VERSION_LESS 3.8 ) - add_custom_target( CopyMingwRuntimeFiles ALL ${CMAKE_COMMAND} -E make_directory - $<$:${CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG}> - $<$:${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE}> - $<$:${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO}> - $<$:${CMAKE_RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL}> - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${bb_MINGW_RUNTIME_FILES} - $<$:${CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG}> - $<$:${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE}> - $<$:${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO}> - $<$:${CMAKE_RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL}> - VERBATIM COMMAND_EXPAND_LISTS ) - else() - add_custom_target( CopyMingwRuntimeFiles ALL ${CMAKE_COMMAND} -E make_directory - $<$:${CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG}> - $<$:${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE}> - $<$:${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO}> - $<$:${CMAKE_RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL}> - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${bb_MINGW_RUNTIME_FILES} - $<$:${CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG}> - $<$:${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE}> - $<$:${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO}> - $<$:${CMAKE_RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL}> ) - endif() - endif() - endif() -endmacro() - diff --git a/cmake/CMakeBuild/cmake/modules/BBuildEnvVersion.cmake b/cmake/CMakeBuild/cmake/modules/BBuildEnvVersion.cmake deleted file mode 100644 index 2f5b5ea5..00000000 --- a/cmake/CMakeBuild/cmake/modules/BBuildEnvVersion.cmake +++ /dev/null @@ -1,13 +0,0 @@ -# -# WARNING: This file is automatically generated by CMake and any manual changes will -# be overridden by the next build. -# If you need to change anything here, please update the configure template BBuildEnvVersion.cmake.in. -# - -set( BBuildEnv_VERSION_MAJOR 3 ) -set( BBuildEnv_VERSION_MINOR 14 ) -set( BBuildEnv_VERSION_PATCH 4 ) -set( BBuildEnv_VERSION_TWEAK 4 ) - -# BBuildEnv version in decimal dotted format as supported by CMake's version compare operations. -set( BBuildEnv_VERSION "${BBuildEnv_VERSION_MAJOR}.${BBuildEnv_VERSION_MINOR}.${BBuildEnv_VERSION_PATCH}.${BBuildEnv_VERSION_TWEAK}" ) diff --git a/cmake/CMakeBuild/cmake/toolchains/aarch64-linux-gnu-gcc-ubuntu1804.cmake b/cmake/CMakeBuild/cmake/toolchains/aarch64-linux-gnu-gcc-ubuntu1804.cmake deleted file mode 100644 index 3e78dc08..00000000 --- a/cmake/CMakeBuild/cmake/toolchains/aarch64-linux-gnu-gcc-ubuntu1804.cmake +++ /dev/null @@ -1,51 +0,0 @@ -# name of the target operating system -set( CMAKE_SYSTEM_NAME Linux ) -set( CMAKE_SYSTEM_PROCESSOR aarch64 ) - -set( GNU_MACHINE "aarch64-linux-gnu" ) - -# which compilers to use for C and C++ -set( CMAKE_C_COMPILER ${GNU_MACHINE}-gcc ) -set( CMAKE_CXX_COMPILER ${GNU_MACHINE}-g++ ) - -# here is the target environment located -if( NOT DEFINED ARM_LINUX_SYSROOT AND DEFINED GNU_MACHINE ) - set( ARM_LINUX_SYSROOT /usr/${GNU_MACHINE}${FLOAT_ABI_SUFFIX} ) -endif() - -list( APPEND CMAKE_FIND_ROOT_PATH ${ARM_LINUX_SYSROOT} ) - -# adjust the default behaviour of the FIND_XXX() commands: -# search headers and libraries in the target environment, search -# programs in the host environment -set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER ) - -# Ubuntu/amd64 + foreign architecture arm64 -set( CMAKE_LIBRARY_PATH /usr/lib/${GNU_MACHINE}-linux-gnu ) -set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH ) -#set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY ) - -set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY ) - -set( USE_OPENCV_TOOLCHAIN_FLAGS ON ) -if( USE_OPENCV_TOOLCHAIN_FLAGS ) - # --- - # Snatched from OpenCV 3.4.2-1 - # --- - - #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdata-sections -Wa,--noexecstack -fsigned-char -Wno-psabi") - #set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fdata-sections -Wa,--noexecstack -fsigned-char -Wno-psabi") - set( CMAKE_CXX_FLAGS_INIT "-fdata-sections -Wa,--noexecstack -fsigned-char" ) - set( CMAKE_C_FLAGS_INIT "-fdata-sections -Wa,--noexecstack -fsigned-char" ) - - set(ARM_LINKER_FLAGS "-Wl,--no-undefined -Wl,--gc-sections -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now") - - #set(CMAKE_SHARED_LINKER_FLAGS "${ARM_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS}") - #set(CMAKE_MODULE_LINKER_FLAGS "${ARM_LINKER_FLAGS} ${CMAKE_MODULE_LINKER_FLAGS}") - #set(CMAKE_EXE_LINKER_FLAGS "${ARM_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS}") - - set( CMAKE_SHARED_LINKER_FLAGS_INIT "${ARM_LINKER_FLAGS}" ) - set( CMAKE_MODULE_LINKER_FLAGS_INIT "${ARM_LINKER_FLAGS}" ) - set( CMAKE_EXE_LINKER_FLAGS_INIT "${ARM_LINKER_FLAGS}" ) - -endif() diff --git a/cmake/CMakeBuild/cmake/toolchains/i686-w64-mingw32-gcc-posix-ubuntu1604.cmake b/cmake/CMakeBuild/cmake/toolchains/i686-w64-mingw32-gcc-posix-ubuntu1604.cmake deleted file mode 100644 index 5698dc85..00000000 --- a/cmake/CMakeBuild/cmake/toolchains/i686-w64-mingw32-gcc-posix-ubuntu1604.cmake +++ /dev/null @@ -1,31 +0,0 @@ -# name of the target operating system -set( CMAKE_SYSTEM_NAME Windows ) -set( CMAKE_SYSTEM_PROCESSOR x86 ) - -# which compilers to use for C and C++ -set( CMAKE_C_COMPILER i686-w64-mingw32-gcc-posix ) -set( CMAKE_CXX_COMPILER i686-w64-mingw32-g++-posix ) -set( CMAKE_RC_COMPILER i686-w64-mingw32-windres ) - -# here is the target environment located -#SET(CMAKE_FIND_ROOT_PATH /usr/i586-mingw32msvc /home/alex/mingw-install ) -# -# /usr/share/mingw-w64/include -# /usr/x86_64-w64-mingw32/lib -# /usr/x86_64-w64-mingw32/include -# /usr/lib/gcc/x86_64-w64-mingw32/5.3-posix/include -# /usr/lib/gcc/x86_64-w64-mingw32/5.3-posix/libstdc++.a -set( CMAKE_FIND_ROOT_PATH /usr/share/mingw-w64 /usr/i686-w64-mingw32 /usr/lib/gcc/i686-w64-mingw32/5.3-posix ) - -# adjust the default behaviour of the FIND_XXX() commands: -# search headers and libraries in the target environment, search -# programs in the host environment -set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER ) -set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY ) -set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY ) - -set( bb_MINGW_RUNTIME_FILES - /usr/lib/gcc/i686-w64-mingw32/5.3-posix/libstdc++-6.dll - /usr/lib/gcc/i686-w64-mingw32/5.3-posix/libgcc_s_sjlj-1.dll - /usr/i686-w64-mingw32/lib/libwinpthread-1.dll ) - \ No newline at end of file diff --git a/cmake/CMakeBuild/cmake/toolchains/x86_64-w64-mingw32-gcc-posix-ubuntu1604.cmake b/cmake/CMakeBuild/cmake/toolchains/x86_64-w64-mingw32-gcc-posix-ubuntu1604.cmake deleted file mode 100644 index 41f689c3..00000000 --- a/cmake/CMakeBuild/cmake/toolchains/x86_64-w64-mingw32-gcc-posix-ubuntu1604.cmake +++ /dev/null @@ -1,31 +0,0 @@ -# name of the target operating system -set( CMAKE_SYSTEM_NAME Windows ) -set( CMAKE_SYSTEM_PROCESSOR x86_64 ) # or AMD64? - -# which compilers to use for C and C++ -set( CMAKE_C_COMPILER x86_64-w64-mingw32-gcc-posix ) -set( CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++-posix ) -set( CMAKE_RC_COMPILER x86_64-w64-mingw32-windres ) - -# here is the target environment located -#SET(CMAKE_FIND_ROOT_PATH /usr/i586-mingw32msvc /home/alex/mingw-install ) -# -# /usr/share/mingw-w64/include -# /usr/x86_64-w64-mingw32/lib -# /usr/x86_64-w64-mingw32/include -# /usr/lib/gcc/x86_64-w64-mingw32/5.3-posix/include -# /usr/lib/gcc/x86_64-w64-mingw32/5.3-posix/libstdc++.a -set( CMAKE_FIND_ROOT_PATH /usr/share/mingw-w64 /usr/x86_64-w64-mingw32 /usr/lib/gcc/x86_64-w64-mingw32/5.3-posix ) - -# adjust the default behaviour of the FIND_XXX() commands: -# search headers and libraries in the target environment, search -# programs in the host environment -set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER ) -set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY ) -set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY ) - -set( bb_MINGW_RUNTIME_FILES - /usr/lib/gcc/x86_64-w64-mingw32/5.3-posix/libstdc++-6.dll - /usr/lib/gcc/x86_64-w64-mingw32/5.3-posix/libgcc_s_seh-1.dll - /usr/x86_64-w64-mingw32/lib/libwinpthread-1.dll ) - diff --git a/cmake/CMakeBuild/cmake/toolchains/x86_64-w64-mingw32-gcc-posix-ubuntu1804.cmake b/cmake/CMakeBuild/cmake/toolchains/x86_64-w64-mingw32-gcc-posix-ubuntu1804.cmake deleted file mode 100644 index 2b5fb981..00000000 --- a/cmake/CMakeBuild/cmake/toolchains/x86_64-w64-mingw32-gcc-posix-ubuntu1804.cmake +++ /dev/null @@ -1,31 +0,0 @@ -# name of the target operating system -set( CMAKE_SYSTEM_NAME Windows ) -set( CMAKE_SYSTEM_PROCESSOR x86_64 ) # or AMD64? - -# which compilers to use for C and C++ -set( CMAKE_C_COMPILER x86_64-w64-mingw32-gcc-posix ) -set( CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++-posix ) -set( CMAKE_RC_COMPILER x86_64-w64-mingw32-windres ) - -# here is the target environment located -#SET(CMAKE_FIND_ROOT_PATH /usr/i586-mingw32msvc /home/alex/mingw-install ) -# -# /usr/share/mingw-w64/include -# /usr/x86_64-w64-mingw32/lib -# /usr/x86_64-w64-mingw32/include -# /usr/lib/gcc/x86_64-w64-mingw32/5.3-posix/include -# /usr/lib/gcc/x86_64-w64-mingw32/5.3-posix/libstdc++.a -set( CMAKE_FIND_ROOT_PATH /usr/share/mingw-w64 /usr/x86_64-w64-mingw32 /usr/lib/gcc/x86_64-w64-mingw32/7.3-posix ) - -# adjust the default behaviour of the FIND_XXX() commands: -# search headers and libraries in the target environment, search -# programs in the host environment -set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER ) -set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY ) -set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY ) - -set( bb_MINGW_RUNTIME_FILES - /usr/lib/gcc/x86_64-w64-mingw32/7.3-posix/libstdc++-6.dll - /usr/lib/gcc/x86_64-w64-mingw32/7.3-posix/libgcc_s_seh-1.dll - /usr/x86_64-w64-mingw32/lib/libwinpthread-1.dll ) - diff --git a/cmake/CMakeBuild/lldb/CMakeBuildLldbExt.py b/cmake/CMakeBuild/lldb/CMakeBuildLldbExt.py deleted file mode 100755 index fc2b0b56..00000000 --- a/cmake/CMakeBuild/lldb/CMakeBuildLldbExt.py +++ /dev/null @@ -1,13 +0,0 @@ -import lldb - -def Rectangle_SummaryProvider (valobj,internal_dict): - height_val = valobj.GetChildMemberWithName('height') - width_val = valobj.GetChildMemberWithName('width') - height = height_val.GetValueAsUnsigned(0) - width = width_val.GetValueAsUnsigned(0) - area = height*width - perimeter = 2*(height + width) - return 'Area: ' + str(area) + ', Perimeter: ' + str(perimeter) - -def __lldb_init_module( debugger, dict ): - debugger.HandleCommand( 'type summary add -F CMakeBuildLldbExt.Rectangle_SummaryProvider -e Rectangle' ) diff --git a/cmake/CMakeBuild/lldb/CMakeLists.txt b/cmake/CMakeBuild/lldb/CMakeLists.txt deleted file mode 100644 index a947e4cd..00000000 --- a/cmake/CMakeBuild/lldb/CMakeLists.txt +++ /dev/null @@ -1,51 +0,0 @@ -# CMakeBuild/CMakeBuild/lldb/CMakeLists.txt - -if( NOT DEFINED LLDB_INSTALL_ROOT ) - set( LLDB_INSTALL_ROOT "$ENV{HOME}/.lldb.d" ) - message( STATUS "${CMAKE_CURRENT_LIST_FILE}: LLDB_INSTALL_ROOT not set, using default ${LLDB_INSTALL_ROOT}." ) -endif() - -if( NOT DEFINED LLDBINIT_FILE ) - set( LLDBINIT_FILE "$ENV{HOME}/.lldbinit" ) - message( STATUS "${CMAKE_CURRENT_LIST_FILE}: LLDBINIT_FILE not set, using default ${LLDBINIT_FILE}." ) -endif() - -if( NOT DEFINED ENABLE_LLDBINIT_UPDATE ) - set( ENABLE_LLDBINIT_UPDATE TRUE ) - message( STATUS "${CMAKE_CURRENT_LIST_FILE}: ENABLE_LLDBINIT_UPDATE not set, using default ${ENABLE_LLDBINIT_UPDATE}." ) -endif() - - -set( LLDB_INSTALL_DIR ${LLDB_INSTALL_ROOT}/${PROJECT_NAME} ) - -# Get all LLDB python modules -file( GLOB LLDB_MODULES "*.py" ) - -configure_file( lldbinit-${PROJECT_NAME}.in lldbinit-${PROJECT_NAME} @ONLY ) - -if( ENABLE_LLDBINIT_UPDATE ) - # Install LLDB files and update ~/.lldbinit - - # --- - # Create a cmake script to update ~/.ldbinit - set( cmake_lldbinit_module ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/modules/BBuildEnvLldb.cmake ) - set( input_file ${LLDBINIT_FILE} ) - set( section_marker ${PROJECT_NAME} ) - set( lldbinit_content "command source -s 0 ${LLDB_INSTALL_ROOT}/lldbinit-${PROJECT_NAME}" ) - configure_file( lldbinit_update-in.cmake lldbinit_update.cmake ) - # --- - - add_custom_target( Install${PROJECT_NAME}LldbFiles ${CMAKE_COMMAND} -E make_directory ${LLDB_INSTALL_DIR} - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_BINARY_DIR}/lldbinit-${PROJECT_NAME} ${LLDB_INSTALL_ROOT} - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${LLDB_MODULES} ${LLDB_INSTALL_DIR} - COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/lldbinit_update.cmake - VERBATIM - SOURCES lldbinit-${PROJECT_NAME}.in ${LLDB_MODULES} ) -else() - # Install LLDB files without touching ~/.lldbinit - add_custom_target( Install${PROJECT_NAME}LldbFiles ${CMAKE_COMMAND} -E make_directory ${LLDB_INSTALL_DIR} - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_BINARY_DIR}/lldbinit-${PROJECT_NAME} ${LLDB_INSTALL_ROOT} - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${LLDB_MODULES} ${LLDB_INSTALL_DIR} - VERBATIM - SOURCES lldbinit-${PROJECT_NAME}.in ${LLDB_MODULES} ) -endif() diff --git a/cmake/CMakeBuild/lldb/lldbinit-CMakeBuild.in b/cmake/CMakeBuild/lldb/lldbinit-CMakeBuild.in deleted file mode 100644 index 950ad7b0..00000000 --- a/cmake/CMakeBuild/lldb/lldbinit-CMakeBuild.in +++ /dev/null @@ -1,11 +0,0 @@ -# lldbinit-@PROJECT_NAME@ -# -# Add the following line to ~/.lldbinit -# command source -s 0 @LLDB_INSTALL_ROOT@/lldbinit-@PROJECT_NAME@ -# - -# Load a custom LLDB python module. -command script import @LLDB_INSTALL_DIR@/CMakeBuildLldbExt.py - - -# Other settings , aliases ... diff --git a/cmake/CMakeBuild/lldb/lldbinit_update-in.cmake b/cmake/CMakeBuild/lldb/lldbinit_update-in.cmake deleted file mode 100644 index 577d7412..00000000 --- a/cmake/CMakeBuild/lldb/lldbinit_update-in.cmake +++ /dev/null @@ -1,11 +0,0 @@ -# -# lldbinit_update-in.cmake -# - -include( @cmake_lldbinit_module@ ) - -# in-place add -bb_lldbinit_update( ADD "@input_file@" @section_marker@ "@lldbinit_content@" ) - -# in-place remove -# bb_lldbinit_update( REMOVE "@input_file@" @section_marker@ ) diff --git a/doc/.gitignore b/doc/.gitignore deleted file mode 100644 index d5811189..00000000 --- a/doc/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# ignore these Latex files -jctvcdoc.cls -*.aux -*.log -*.lot -*.out -*.toc -*~ diff --git a/doc/DTrace for NextSoftware.docx b/doc/DTrace for NextSoftware.docx deleted file mode 100644 index 1ec988f8..00000000 Binary files a/doc/DTrace for NextSoftware.docx and /dev/null differ diff --git a/doc/DTrace for NextSoftware.pdf b/doc/DTrace for NextSoftware.pdf deleted file mode 100644 index 4b2a0fe8..00000000 Binary files a/doc/DTrace for NextSoftware.pdf and /dev/null differ diff --git a/doc/Doxyfile b/doc/Doxyfile deleted file mode 100644 index bb0222f9..00000000 --- a/doc/Doxyfile +++ /dev/null @@ -1,2423 +0,0 @@ -# Doxyfile 1.8.9.1 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project. -# -# All text after a double hash (##) is considered a comment and is placed in -# front of the TAG it is preceding. -# -# All text after a single hash (#) is considered a comment and will be ignored. -# The format is: -# TAG = value [value, ...] -# For lists, items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (\" \"). - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file -# that follow. The default is UTF-8 which is also the encoding used for all text -# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv -# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv -# for the list of possible encodings. -# The default value is: UTF-8. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by -# double-quotes, unless you are using Doxywizard) that should identify the -# project for which the documentation is generated. This name is used in the -# title of most generated pages and in a few other places. -# The default value is: My Project. - -PROJECT_NAME = "HEVC Test Model (HM)" - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. This -# could be handy for archiving the generated documentation or if some version -# control system is used. - -PROJECT_NUMBER = HM-16.13 - -# Using the PROJECT_BRIEF tag one can provide an optional one line description -# for a project that appears at the top of each page and should give viewer a -# quick idea about the purpose of the project. Keep the description short. - -PROJECT_BRIEF = - -# With the PROJECT_LOGO tag one can specify a logo or an icon that is included -# in the documentation. The maximum height of the logo should not exceed 55 -# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy -# the logo to the output directory. - -PROJECT_LOGO = - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path -# into which the generated documentation will be written. If a relative path is -# entered, it will be relative to the location where doxygen was started. If -# left blank the current directory will be used. - -OUTPUT_DIRECTORY = . - -# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- -# directories (in 2 levels) under the output directory of each output format and -# will distribute the generated files over these directories. Enabling this -# option can be useful when feeding doxygen a huge amount of source files, where -# putting all generated files in the same directory would otherwise causes -# performance problems for the file system. -# The default value is: NO. - -CREATE_SUBDIRS = NO - -# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII -# characters to appear in the names of generated files. If set to NO, non-ASCII -# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode -# U+3044. -# The default value is: NO. - -ALLOW_UNICODE_NAMES = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, -# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), -# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, -# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), -# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, -# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, -# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, -# Ukrainian and Vietnamese. -# The default value is: English. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member -# descriptions after the members that are listed in the file and class -# documentation (similar to Javadoc). Set to NO to disable this. -# The default value is: YES. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief -# description of a member or function before the detailed description -# -# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. -# The default value is: YES. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator that is -# used to form the text in various listings. Each string in this list, if found -# as the leading text of the brief description, will be stripped from the text -# and the result, after processing the whole list, is used as the annotated -# text. Otherwise, the brief description is used as-is. If left blank, the -# following values are used ($name is automatically replaced with the name of -# the entity):The $name class, The $name widget, The $name file, is, provides, -# specifies, contains, represents, a, an and the. - -ABBREVIATE_BRIEF = "The $name class" \ - "The $name widget" \ - "The $name file" \ - is \ - provides \ - specifies \ - contains \ - represents \ - a \ - an \ - the - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# doxygen will generate a detailed section even if there is only a brief -# description. -# The default value is: NO. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. -# The default value is: NO. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path -# before files name in the file list and in the header files. If set to NO the -# shortest path that makes the file name unique will be used -# The default value is: YES. - -FULL_PATH_NAMES = YES - -# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. -# Stripping is only done if one of the specified strings matches the left-hand -# part of the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the path to -# strip. -# -# Note that you can specify absolute paths here, but also relative paths, which -# will be relative from the directory where doxygen is started. -# This tag requires that the tag FULL_PATH_NAMES is set to YES. - -STRIP_FROM_PATH = ../source - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the -# path mentioned in the documentation of a class, which tells the reader which -# header file to include in order to use a class. If left blank only the name of -# the header file containing the class definition is used. Otherwise one should -# specify the list of include paths that are normally passed to the compiler -# using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but -# less readable) file names. This can be useful is your file systems doesn't -# support long names like on DOS, Mac, or CD-ROM. -# The default value is: NO. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the -# first line (until the first dot) of a Javadoc-style comment as the brief -# description. If set to NO, the Javadoc-style will behave just like regular Qt- -# style comments (thus requiring an explicit @brief command for a brief -# description.) -# The default value is: NO. - -JAVADOC_AUTOBRIEF = NO - -# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first -# line (until the first dot) of a Qt-style comment as the brief description. If -# set to NO, the Qt-style will behave just like regular Qt-style comments (thus -# requiring an explicit \brief command for a brief description.) -# The default value is: NO. - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a -# multi-line C++ special comment block (i.e. a block of //! or /// comments) as -# a brief description. This used to be the default behavior. The new default is -# to treat a multi-line C++ comment block as a detailed description. Set this -# tag to YES if you prefer the old behavior instead. -# -# Note that setting this tag to YES also means that rational rose comments are -# not recognized any more. -# The default value is: NO. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the -# documentation from any documented member that it re-implements. -# The default value is: YES. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new -# page for each member. If set to NO, the documentation of a member will be part -# of the file/class/namespace that contains it. -# The default value is: NO. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen -# uses this value to replace tabs by spaces in code fragments. -# Minimum value: 1, maximum value: 16, default value: 4. - -TAB_SIZE = 8 - -# This tag can be used to specify a number of aliases that act as commands in -# the documentation. An alias has the form: -# name=value -# For example adding -# "sideeffect=@par Side Effects:\n" -# will allow you to put the command \sideeffect (or @sideeffect) in the -# documentation, which will result in a user-defined paragraph with heading -# "Side Effects:". You can put \n's in the value part of an alias to insert -# newlines. - -ALIASES = - -# This tag can be used to specify a number of word-keyword mappings (TCL only). -# A mapping has the form "name=value". For example adding "class=itcl::class" -# will allow you to use the command class in the itcl::class meaning. - -TCL_SUBST = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources -# only. Doxygen will then generate output that is more tailored for C. For -# instance, some of the names that are used will be different. The list of all -# members will be omitted, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or -# Python sources only. Doxygen will then generate output that is more tailored -# for that language. For instance, namespaces will be presented as packages, -# qualified scopes will look different, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources. Doxygen will then generate output that is tailored for Fortran. -# The default value is: NO. - -OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for VHDL. -# The default value is: NO. - -OPTIMIZE_OUTPUT_VHDL = NO - -# Doxygen selects the parser to use depending on the extension of the files it -# parses. With this tag you can assign which parser to use for a given -# extension. Doxygen has a built-in mapping, but you can override or extend it -# using this tag. The format is ext=language, where ext is a file extension, and -# language is one of the parsers supported by doxygen: IDL, Java, Javascript, -# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: -# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: -# Fortran. In the later case the parser tries to guess whether the code is fixed -# or free formatted code, this is the default for Fortran type files), VHDL. For -# instance to make doxygen treat .inc files as Fortran files (default is PHP), -# and .f files as C (default is Fortran), use: inc=Fortran f=C. -# -# Note: For files without extension you can use no_extension as a placeholder. -# -# Note that for custom extensions you also need to set FILE_PATTERNS otherwise -# the files are not read by doxygen. - -EXTENSION_MAPPING = - -# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments -# according to the Markdown format, which allows for more readable -# documentation. See http://daringfireball.net/projects/markdown/ for details. -# The output of markdown processing is further processed by doxygen, so you can -# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in -# case of backward compatibilities issues. -# The default value is: YES. - -MARKDOWN_SUPPORT = YES - -# When enabled doxygen tries to link words that correspond to documented -# classes, or namespaces to their corresponding documentation. Such a link can -# be prevented in individual cases by putting a % sign in front of the word or -# globally by setting AUTOLINK_SUPPORT to NO. -# The default value is: YES. - -AUTOLINK_SUPPORT = YES - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should set this -# tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); -# versus func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. -# The default value is: NO. - -BUILTIN_STL_SUPPORT = YES - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. -# The default value is: NO. - -CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: -# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen -# will parse them like normal C++ but will assume all classes use public instead -# of private inheritance when no explicit protection keyword is present. -# The default value is: NO. - -SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate -# getter and setter methods for a property. Setting this option to YES will make -# doxygen to replace the get and set methods by a property in the documentation. -# This will only work if the methods are indeed getting or setting a simple -# type. If this is not the case, or you want to show the methods anyway, you -# should set this option to NO. -# The default value is: YES. - -IDL_PROPERTY_SUPPORT = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. -# The default value is: NO. - -DISTRIBUTE_GROUP_DOC = NO - -# Set the SUBGROUPING tag to YES to allow class member groups of the same type -# (for instance a group of public functions) to be put as a subgroup of that -# type (e.g. under the Public Functions section). Set it to NO to prevent -# subgrouping. Alternatively, this can be done per class using the -# \nosubgrouping command. -# The default value is: YES. - -SUBGROUPING = YES - -# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions -# are shown inside the group in which they are included (e.g. using \ingroup) -# instead of on a separate page (for HTML and Man pages) or section (for LaTeX -# and RTF). -# -# Note that this feature does not work in combination with -# SEPARATE_MEMBER_PAGES. -# The default value is: NO. - -INLINE_GROUPED_CLASSES = NO - -# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions -# with only public data fields or simple typedef fields will be shown inline in -# the documentation of the scope in which they are defined (i.e. file, -# namespace, or group documentation), provided this scope is documented. If set -# to NO, structs, classes, and unions are shown on a separate page (for HTML and -# Man pages) or section (for LaTeX and RTF). -# The default value is: NO. - -INLINE_SIMPLE_STRUCTS = NO - -# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or -# enum is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically be -# useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. -# The default value is: NO. - -TYPEDEF_HIDES_STRUCT = NO - -# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This -# cache is used to resolve symbols given their name and scope. Since this can be -# an expensive process and often the same symbol appears multiple times in the -# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small -# doxygen will become slower. If the cache is too large, memory is wasted. The -# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range -# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 -# symbols. At the end of a run doxygen will report the cache usage and suggest -# the optimal cache size from a speed point of view. -# Minimum value: 0, maximum value: 9, default value: 0. - -LOOKUP_CACHE_SIZE = 0 - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in -# documentation are documented, even if no documentation was available. Private -# class members and static file members will be hidden unless the -# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. -# Note: This will also disable the warnings about undocumented members that are -# normally produced when WARNINGS is set to YES. -# The default value is: NO. - -EXTRACT_ALL = YES - -# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will -# be included in the documentation. -# The default value is: NO. - -EXTRACT_PRIVATE = YES - -# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal -# scope will be included in the documentation. -# The default value is: NO. - -EXTRACT_PACKAGE = NO - -# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be -# included in the documentation. -# The default value is: NO. - -EXTRACT_STATIC = YES - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined -# locally in source files will be included in the documentation. If set to NO, -# only classes defined in header files are included. Does not have any effect -# for Java sources. -# The default value is: YES. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. If set to YES, local methods, -# which are defined in the implementation section but not in the interface are -# included in the documentation. If set to NO, only methods in the interface are -# included. -# The default value is: NO. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base name of -# the file that contains the anonymous namespace. By default anonymous namespace -# are hidden. -# The default value is: NO. - -EXTRACT_ANON_NSPACES = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all -# undocumented members inside documented classes or files. If set to NO these -# members will be included in the various overviews, but no documentation -# section is generated. This option has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. If set -# to NO, these classes will be included in the various overviews. This option -# has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend -# (class|struct|union) declarations. If set to NO, these declarations will be -# included in the documentation. -# The default value is: NO. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any -# documentation blocks found inside the body of a function. If set to NO, these -# blocks will be appended to the function's detailed documentation block. -# The default value is: NO. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation that is typed after a -# \internal command is included. If the tag is set to NO then the documentation -# will be excluded. Set it to YES to include the internal documentation. -# The default value is: NO. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file -# names in lower-case letters. If set to YES, upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. -# The default value is: system dependent. - -CASE_SENSE_NAMES = NO - -# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with -# their full class and namespace scopes in the documentation. If set to YES, the -# scope will be hidden. -# The default value is: NO. - -HIDE_SCOPE_NAMES = NO - -# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will -# append additional text to a page's title, such as Class Reference. If set to -# YES the compound reference will be hidden. -# The default value is: NO. - -HIDE_COMPOUND_REFERENCE= NO - -# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of -# the files that are included by a file in the documentation of that file. -# The default value is: YES. - -SHOW_INCLUDE_FILES = YES - -# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each -# grouped member an include statement to the documentation, telling the reader -# which file to include in order to use the member. -# The default value is: NO. - -SHOW_GROUPED_MEMB_INC = NO - -# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include -# files with double quotes in the documentation rather than with sharp brackets. -# The default value is: NO. - -FORCE_LOCAL_INCLUDES = NO - -# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the -# documentation for inline members. -# The default value is: YES. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the -# (detailed) documentation of file and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. -# The default value is: YES. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief -# descriptions of file, namespace and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. Note that -# this will also influence the order of the classes in the class list. -# The default value is: NO. - -SORT_BRIEF_DOCS = NO - -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the -# (brief and detailed) documentation of class members so that constructors and -# destructors are listed first. If set to NO the constructors will appear in the -# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. -# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief -# member documentation. -# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting -# detailed member documentation. -# The default value is: NO. - -SORT_MEMBERS_CTORS_1ST = NO - -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy -# of group names into alphabetical order. If set to NO the group names will -# appear in their defined order. -# The default value is: NO. - -SORT_GROUP_NAMES = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by -# fully-qualified names, including namespaces. If set to NO, the class list will -# be sorted only by class name, not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the alphabetical -# list. -# The default value is: NO. - -SORT_BY_SCOPE_NAME = NO - -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper -# type resolution of all parameters of a function it will reject a match between -# the prototype and the implementation of a member function even if there is -# only one candidate or it is obvious which candidate to choose by doing a -# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still -# accept a match between prototype and implementation in such cases. -# The default value is: NO. - -STRICT_PROTO_MATCHING = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo -# list. This list is created by putting \todo commands in the documentation. -# The default value is: YES. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test -# list. This list is created by putting \test commands in the documentation. -# The default value is: YES. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug -# list. This list is created by putting \bug commands in the documentation. -# The default value is: YES. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) -# the deprecated list. This list is created by putting \deprecated commands in -# the documentation. -# The default value is: YES. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional documentation -# sections, marked by \if ... \endif and \cond -# ... \endcond blocks. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the -# initial value of a variable or macro / define can have for it to appear in the -# documentation. If the initializer consists of more lines than specified here -# it will be hidden. Use a value of 0 to hide initializers completely. The -# appearance of the value of individual variables and macros / defines can be -# controlled using \showinitializer or \hideinitializer command in the -# documentation regardless of this setting. -# Minimum value: 0, maximum value: 10000, default value: 30. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at -# the bottom of the documentation of classes and structs. If set to YES, the -# list will mention the files that were used to generate the documentation. -# The default value is: YES. - -SHOW_USED_FILES = YES - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This -# will remove the Files entry from the Quick Index and from the Folder Tree View -# (if specified). -# The default value is: YES. - -SHOW_FILES = YES - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces -# page. This will remove the Namespaces entry from the Quick Index and from the -# Folder Tree View (if specified). -# The default value is: YES. - -SHOW_NAMESPACES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command command input-file, where command is the value of the -# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided -# by doxygen. Whatever the program writes to standard output is used as the file -# version. For an example see the documentation. - -FILE_VERSION_FILTER = - -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated -# output files in an output format independent way. To create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. You can -# optionally specify a file name after the option, if omitted DoxygenLayout.xml -# will be used as the name of the layout file. -# -# Note that if you run doxygen from a directory containing a file called -# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE -# tag is left empty. - -LAYOUT_FILE = - -# The CITE_BIB_FILES tag can be used to specify one or more bib files containing -# the reference definitions. This must be a list of .bib files. The .bib -# extension is automatically appended if omitted. This requires the bibtex tool -# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. -# For LaTeX the style of the bibliography can be controlled using -# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the -# search path. See also \cite for info how to create references. - -CITE_BIB_FILES = - -#--------------------------------------------------------------------------- -# Configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated to -# standard output by doxygen. If QUIET is set to YES this implies that the -# messages are off. -# The default value is: NO. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES -# this implies that the warnings are on. -# -# Tip: Turn warnings on while writing the documentation. -# The default value is: YES. - -WARNINGS = YES - -# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate -# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag -# will automatically be disabled. -# The default value is: YES. - -WARN_IF_UNDOCUMENTED = YES - -# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some parameters -# in a documented function, or documenting parameters that don't exist or using -# markup commands wrongly. -# The default value is: YES. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that -# are documented, but have no documentation for their parameters or return -# value. If set to NO, doxygen will only warn about wrong or incomplete -# parameter documentation, but not about the absence of documentation. -# The default value is: NO. - -WARN_NO_PARAMDOC = NO - -# The WARN_FORMAT tag determines the format of the warning messages that doxygen -# can produce. The string should contain the $file, $line, and $text tags, which -# will be replaced by the file and line number from which the warning originated -# and the warning text. Optionally the format may contain $version, which will -# be replaced by the version of the file (if it could be obtained via -# FILE_VERSION_FILTER) -# The default value is: $file:$line: $text. - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning and error -# messages should be written. If left blank the output is written to standard -# error (stderr). - -WARN_LOGFILE = warning.log - -#--------------------------------------------------------------------------- -# Configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag is used to specify the files and/or directories that contain -# documented source files. You may enter file names like myfile.cpp or -# directories like /usr/src/myproject. Separate the files or directories with -# spaces. -# Note: If this tag is empty the current directory is searched. - -INPUT = ../source \ - mainpage.h - -# This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses -# libiconv (or the iconv built into libc) for the transcoding. See the libiconv -# documentation (see: http://www.gnu.org/software/libiconv) for the list of -# possible encodings. -# The default value is: UTF-8. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and -# *.h) to filter out the source-files in the directories. If left blank the -# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii, -# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, -# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, -# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, -# *.qsf, *.as and *.js. - -FILE_PATTERNS = *.c \ - *.cc \ - *.cxx \ - *.cpp \ - *.c++ \ - *.d \ - *.java \ - *.ii \ - *.ixx \ - *.ipp \ - *.i++ \ - *.inl \ - *.h \ - *.hh \ - *.hxx \ - *.hpp \ - *.h++ \ - *.idl \ - *.odl \ - *.cs \ - *.php \ - *.php3 \ - *.inc \ - *.m \ - *.mm \ - *.dox \ - *.py \ - *.f90 \ - *.f \ - *.for \ - *.vhd \ - *.vhdl - -# The RECURSIVE tag can be used to specify whether or not subdirectories should -# be searched for input files as well. -# The default value is: NO. - -RECURSIVE = YES - -# The EXCLUDE tag can be used to specify files and/or directories that should be -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. -# -# Note that relative paths are relative to the directory from which doxygen is -# run. - -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or -# directories that are symbolic links (a Unix file system feature) are excluded -# from the input. -# The default value is: NO. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories for example use the pattern */test/* - -EXCLUDE_PATTERNS = */.svn - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories use the pattern */test/* - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or directories -# that contain example code fragments that are included (see the \include -# command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and -# *.h) to filter out the source-files in the directories. If left blank all -# files are included. - -EXAMPLE_PATTERNS = * - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude commands -# irrespective of the value of the RECURSIVE tag. -# The default value is: NO. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or directories -# that contain images that are to be included in the documentation (see the -# \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command: -# -# -# -# where is the value of the INPUT_FILTER tag, and is the -# name of an input file. Doxygen will then use the output that the filter -# program writes to standard output. If FILTER_PATTERNS is specified, this tag -# will be ignored. -# -# Note that the filter must not add or remove lines; it is applied before the -# code is scanned, but not when the output code is generated. If lines are added -# or removed, the anchors will not be placed correctly. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: pattern=filter -# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how -# filters are used. If the FILTER_PATTERNS tag is empty or if none of the -# patterns match the file name, INPUT_FILTER is applied. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will also be used to filter the input files that are used for -# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). -# The default value is: NO. - -FILTER_SOURCE_FILES = NO - -# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and -# it is also possible to disable source filtering for a specific pattern using -# *.ext= (so without naming a filter). -# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. - -FILTER_SOURCE_PATTERNS = - -# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that -# is part of the input, its contents will be placed on the main page -# (index.html). This can be useful if you have a project on for instance GitHub -# and want to reuse the introduction page also for the doxygen output. - -USE_MDFILE_AS_MAINPAGE = - -#--------------------------------------------------------------------------- -# Configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will be -# generated. Documented entities will be cross-referenced with these sources. -# -# Note: To get rid of all source code in the generated output, make sure that -# also VERBATIM_HEADERS is set to NO. -# The default value is: NO. - -SOURCE_BROWSER = YES - -# Setting the INLINE_SOURCES tag to YES will include the body of functions, -# classes and enums directly into the documentation. -# The default value is: NO. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any -# special comment blocks from generated source code fragments. Normal C, C++ and -# Fortran comments will always remain visible. -# The default value is: YES. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES then for each documented -# function all documented functions referencing it will be listed. -# The default value is: NO. - -REFERENCED_BY_RELATION = NO - -# If the REFERENCES_RELATION tag is set to YES then for each documented function -# all documented entities called/used by that function will be listed. -# The default value is: NO. - -REFERENCES_RELATION = NO - -# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set -# to YES then the hyperlinks from functions in REFERENCES_RELATION and -# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will -# link to the documentation. -# The default value is: YES. - -REFERENCES_LINK_SOURCE = YES - -# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the -# source code will show a tooltip with additional information such as prototype, -# brief description and links to the definition and documentation. Since this -# will make the HTML file larger and loading of large files a bit slower, you -# can opt to disable this feature. -# The default value is: YES. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -SOURCE_TOOLTIPS = YES - -# If the USE_HTAGS tag is set to YES then the references to source code will -# point to the HTML generated by the htags(1) tool instead of doxygen built-in -# source browser. The htags tool is part of GNU's global source tagging system -# (see http://www.gnu.org/software/global/global.html). You will need version -# 4.8.6 or higher. -# -# To use it do the following: -# - Install the latest version of global -# - Enable SOURCE_BROWSER and USE_HTAGS in the config file -# - Make sure the INPUT points to the root of the source tree -# - Run doxygen as normal -# -# Doxygen will invoke htags (and that will in turn invoke gtags), so these -# tools must be available from the command line (i.e. in the search path). -# -# The result: instead of the source browser generated by doxygen, the links to -# source code will now point to the output of htags. -# The default value is: NO. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a -# verbatim copy of the header file for each class for which an include is -# specified. Set to NO to disable this. -# See also: Section \class. -# The default value is: YES. - -VERBATIM_HEADERS = YES - -# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the -# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the -# cost of reduced performance. This can be particularly helpful with template -# rich C++ code for which doxygen's built-in parser lacks the necessary type -# information. -# Note: The availability of this option depends on whether or not doxygen was -# compiled with the --with-libclang option. -# The default value is: NO. - -CLANG_ASSISTED_PARSING = NO - -# If clang assisted parsing is enabled you can provide the compiler with command -# line options that you would normally use when invoking the compiler. Note that -# the include paths will already be set by doxygen for the files and directories -# specified with INPUT and INCLUDE_PATH. -# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. - -CLANG_OPTIONS = - -#--------------------------------------------------------------------------- -# Configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all -# compounds will be generated. Enable this if the project contains a lot of -# classes, structs, unions or interfaces. -# The default value is: YES. - -ALPHABETICAL_INDEX = YES - -# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in -# which the alphabetical index list will be split. -# Minimum value: 1, maximum value: 20, default value: 5. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all classes will -# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag -# can be used to specify a prefix (or a list of prefixes) that should be ignored -# while generating the index headers. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output -# The default value is: YES. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of -# it. -# The default directory is: html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each -# generated HTML page (for example: .htm, .php, .asp). -# The default value is: .html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a user-defined HTML header file for -# each generated HTML page. If the tag is left blank doxygen will generate a -# standard header. -# -# To get valid HTML the header file that includes any scripts and style sheets -# that doxygen needs, which is dependent on the configuration options used (e.g. -# the setting GENERATE_TREEVIEW). It is highly recommended to start with a -# default header using -# doxygen -w html new_header.html new_footer.html new_stylesheet.css -# YourConfigFile -# and then modify the file new_header.html. See also section "Doxygen usage" -# for information on how to generate the default header that doxygen normally -# uses. -# Note: The header is subject to change so you typically have to regenerate the -# default header when upgrading to a newer version of doxygen. For a description -# of the possible markers and block names see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each -# generated HTML page. If the tag is left blank doxygen will generate a standard -# footer. See HTML_HEADER for more information on how to generate a default -# footer and what special commands can be used inside the footer. See also -# section "Doxygen usage" for information on how to generate the default footer -# that doxygen normally uses. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style -# sheet that is used by each HTML page. It can be used to fine-tune the look of -# the HTML output. If left blank doxygen will generate a default style sheet. -# See also section "Doxygen usage" for information on how to generate the style -# sheet that doxygen normally uses. -# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as -# it is more robust and this tag (HTML_STYLESHEET) will in the future become -# obsolete. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_STYLESHEET = - -# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined -# cascading style sheets that are included after the standard style sheets -# created by doxygen. Using this option one can overrule certain style aspects. -# This is preferred over using HTML_STYLESHEET since it does not replace the -# standard style sheet and is therefore more robust against future updates. -# Doxygen will copy the style sheet files to the output directory. -# Note: The order of the extra style sheet files is of importance (e.g. the last -# style sheet in the list overrules the setting of the previous ones in the -# list). For an example see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_STYLESHEET = - -# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or -# other source files which should be copied to the HTML output directory. Note -# that these files will be copied to the base HTML output directory. Use the -# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these -# files. In the HTML_STYLESHEET file, use the file name only. Also note that the -# files will be copied as-is; there are no commands or markers available. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_FILES = - -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen -# will adjust the colors in the style sheet and background images according to -# this color. Hue is specified as an angle on a colorwheel, see -# http://en.wikipedia.org/wiki/Hue for more information. For instance the value -# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 -# purple, and 360 is red again. -# Minimum value: 0, maximum value: 359, default value: 220. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_HUE = 220 - -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors -# in the HTML output. For a value of 0 the output will use grayscales only. A -# value of 255 will produce the most vivid colors. -# Minimum value: 0, maximum value: 255, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_SAT = 100 - -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the -# luminance component of the colors in the HTML output. Values below 100 -# gradually make the output lighter, whereas values above 100 make the output -# darker. The value divided by 100 is the actual gamma applied, so 80 represents -# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not -# change the gamma. -# Minimum value: 40, maximum value: 240, default value: 80. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_GAMMA = 80 - -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting this -# to NO can help when comparing the output of multiple runs. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_TIMESTAMP = YES - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_DYNAMIC_SECTIONS = NO - -# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries -# shown in the various tree structured indices initially; the user can expand -# and collapse entries dynamically later on. Doxygen will expand the tree to -# such a level that at most the specified number of entries are visible (unless -# a fully collapsed tree already exceeds this amount). So setting the number of -# entries 1 will produce a full collapsed tree by default. 0 is a special value -# representing an infinite number of entries and will result in a full expanded -# tree by default. -# Minimum value: 0, maximum value: 9999, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_INDEX_NUM_ENTRIES = 100 - -# If the GENERATE_DOCSET tag is set to YES, additional index files will be -# generated that can be used as input for Apple's Xcode 3 integrated development -# environment (see: http://developer.apple.com/tools/xcode/), introduced with -# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a -# Makefile in the HTML output directory. Running make will produce the docset in -# that directory and running make install will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at -# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html -# for more information. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_DOCSET = NO - -# This tag determines the name of the docset feed. A documentation feed provides -# an umbrella under which multiple documentation sets from a single provider -# (such as a company or product suite) can be grouped. -# The default value is: Doxygen generated docs. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_FEEDNAME = "Doxygen generated docs" - -# This tag specifies a string that should uniquely identify the documentation -# set bundle. This should be a reverse domain-name style string, e.g. -# com.mycompany.MyDocSet. Doxygen will append .docset to the name. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_BUNDLE_ID = org.doxygen.Project - -# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify -# the documentation publisher. This should be a reverse domain-name style -# string, e.g. com.mycompany.MyDocSet.documentation. -# The default value is: org.doxygen.Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_ID = org.doxygen.Publisher - -# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. -# The default value is: Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_NAME = Publisher - -# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three -# additional HTML index files: index.hhp, index.hhc, and index.hhk. The -# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop -# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on -# Windows. -# -# The HTML Help Workshop contains a compiler that can convert all HTML output -# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML -# files are now used as the Windows 98 help format, and will replace the old -# Windows help format (.hlp) on all Windows platforms in the future. Compressed -# HTML files also contain an index, a table of contents, and you can search for -# words in the documentation. The HTML workshop also contains a viewer for -# compressed HTML files. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_HTMLHELP = NO - -# The CHM_FILE tag can be used to specify the file name of the resulting .chm -# file. You can add a path in front of the file if the result should not be -# written to the html output directory. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_FILE = - -# The HHC_LOCATION tag can be used to specify the location (absolute path -# including file name) of the HTML help compiler (hhc.exe). If non-empty, -# doxygen will try to run the HTML help compiler on the generated index.hhp. -# The file has to be specified with full path. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -HHC_LOCATION = - -# The GENERATE_CHI flag controls if a separate .chi index file is generated -# (YES) or that it should be included in the master .chm file (NO). -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -GENERATE_CHI = NO - -# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) -# and project file content. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_INDEX_ENCODING = - -# The BINARY_TOC flag controls whether a binary table of contents is generated -# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it -# enables the Previous and Next buttons. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members to -# the table of contents of the HTML help documentation and to the tree view. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -TOC_EXPAND = NO - -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that -# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help -# (.qch) of the generated HTML documentation. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_QHP = NO - -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify -# the file name of the resulting .qch file. The path specified is relative to -# the HTML output folder. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QCH_FILE = - -# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help -# Project output. For more information please see Qt Help Project / Namespace -# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_NAMESPACE = org.doxygen.Project - -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt -# Help Project output. For more information please see Qt Help Project / Virtual -# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- -# folders). -# The default value is: doc. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_VIRTUAL_FOLDER = doc - -# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom -# filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_NAME = - -# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the -# custom filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -# project's filter section matches. Qt Help Project / Filter Attributes (see: -# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_SECT_FILTER_ATTRS = - -# The QHG_LOCATION tag can be used to specify the location of Qt's -# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the -# generated .qhp file. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHG_LOCATION = - -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be -# generated, together with the HTML files, they form an Eclipse help plugin. To -# install this plugin and make it available under the help contents menu in -# Eclipse, the contents of the directory containing the HTML and XML files needs -# to be copied into the plugins directory of eclipse. The name of the directory -# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. -# After copying Eclipse needs to be restarted before the help appears. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_ECLIPSEHELP = NO - -# A unique identifier for the Eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have this -# name. Each documentation set should have its own identifier. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. - -ECLIPSE_DOC_ID = org.doxygen.Project - -# If you want full control over the layout of the generated HTML pages it might -# be necessary to disable the index and replace it with your own. The -# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top -# of each HTML page. A value of NO enables the index and the value YES disables -# it. Since the tabs in the index contain the same information as the navigation -# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -DISABLE_INDEX = NO - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. If the tag -# value is set to YES, a side panel will be generated containing a tree-like -# index structure (just like the one that is generated for HTML Help). For this -# to work a browser that supports JavaScript, DHTML, CSS and frames is required -# (i.e. any modern browser). Windows users are probably better off using the -# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can -# further fine-tune the look of the index. As an example, the default style -# sheet generated by doxygen has an example that shows how to put an image at -# the root of the tree instead of the PROJECT_NAME. Since the tree basically has -# the same information as the tab index, you could consider setting -# DISABLE_INDEX to YES when enabling this option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_TREEVIEW = NO - -# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that -# doxygen will group on one line in the generated HTML documentation. -# -# Note that a value of 0 will completely suppress the enum values from appearing -# in the overview section. -# Minimum value: 0, maximum value: 20, default value: 4. -# This tag requires that the tag GENERATE_HTML is set to YES. - -ENUM_VALUES_PER_LINE = 4 - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used -# to set the initial width (in pixels) of the frame in which the tree is shown. -# Minimum value: 0, maximum value: 1500, default value: 250. -# This tag requires that the tag GENERATE_HTML is set to YES. - -TREEVIEW_WIDTH = 250 - -# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to -# external symbols imported via tag files in a separate window. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -EXT_LINKS_IN_WINDOW = NO - -# Use this tag to change the font size of LaTeX formulas included as images in -# the HTML documentation. When you change the font size after a successful -# doxygen run you need to manually remove any form_*.png images from the HTML -# output directory to force them to be regenerated. -# Minimum value: 8, maximum value: 50, default value: 10. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_FONTSIZE = 10 - -# Use the FORMULA_TRANPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are not -# supported properly for IE 6.0, but are supported on all modern browsers. -# -# Note that when changing this option you need to delete any form_*.png files in -# the HTML output directory before the changes have effect. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_TRANSPARENT = YES - -# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see -# http://www.mathjax.org) which uses client side Javascript for the rendering -# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX -# installed or if you want to formulas look prettier in the HTML output. When -# enabled you may also need to install MathJax separately and configure the path -# to it using the MATHJAX_RELPATH option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -USE_MATHJAX = NO - -# When MathJax is enabled you can set the default output format to be used for -# the MathJax output. See the MathJax site (see: -# http://docs.mathjax.org/en/latest/output.html) for more details. -# Possible values are: HTML-CSS (which is slower, but has the best -# compatibility), NativeMML (i.e. MathML) and SVG. -# The default value is: HTML-CSS. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_FORMAT = HTML-CSS - -# When MathJax is enabled you need to specify the location relative to the HTML -# output directory using the MATHJAX_RELPATH option. The destination directory -# should contain the MathJax.js script. For instance, if the mathjax directory -# is located at the same level as the HTML output directory, then -# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax -# Content Delivery Network so you can quickly see the result without installing -# MathJax. However, it is strongly recommended to install a local copy of -# MathJax from http://www.mathjax.org before deployment. -# The default value is: http://cdn.mathjax.org/mathjax/latest. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_RELPATH = http://www.mathjax.org/mathjax - -# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax -# extension names that should be enabled during MathJax rendering. For example -# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_EXTENSIONS = - -# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces -# of code that will be used on startup of the MathJax code. See the MathJax site -# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an -# example see the documentation. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_CODEFILE = - -# When the SEARCHENGINE tag is enabled doxygen will generate a search box for -# the HTML output. The underlying search engine uses javascript and DHTML and -# should work on any modern browser. Note that when using HTML help -# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) -# there is already a search function so this one should typically be disabled. -# For large projects the javascript based search engine can be slow, then -# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to -# search using the keyboard; to jump to the search box use + S -# (what the is depends on the OS and browser, but it is typically -# , /