From 7f7e3717a4a2c1cf2ad49f1638f36d49959732a7 Mon Sep 17 00:00:00 2001 From: Frank Plowman Date: Wed, 31 May 2023 15:10:46 +0100 Subject: [PATCH 1/4] Track latest VTM version using CMake's FetchContent --- CMakeLists.txt | 229 +- COPYING | 31 - Makefile | 180 - README.md | 134 - cfg/444/yuv444.cfg | 1 - cfg/CacheCfg/cache_1d.cfg | 6 - cfg/CacheCfg/cache_2d.cfg | 8 - cfg/encoder_intra_vtm.cfg | 117 - cfg/encoder_lowdelay_P_vtm.cfg | 143 - cfg/encoder_lowdelay_vtm.cfg | 147 - cfg/encoder_randomaccess_vtm.cfg | 163 - .../VTM_encoder_lowdelay_field_GOP16.cfg | 23 - cfg/field/VTM_encoder_lowdelay_field_GOP8.cfg | 15 - .../VTM_encoder_randomaccess_field_GOP16.cfg | 24 - .../VTM_encoder_randomaccess_field_GOP32.cfg | 40 - cfg/lossless/lossless.cfg | 24 - cfg/lossless/lossless444.cfg | 5 - cfg/lossless/losslessRGB.cfg | 6 - cfg/lossless/lossless_mixed.cfg | 47 - cfg/multi-layer/two_layers.cfg | 25 - cfg/multi-layer/two_layers_ELonlyILP.cfg | 29 - .../two_layers_max_tid_ref_pic.cfg | 30 - ...llText_subpicture_4_slice_2_hor_subpic.cfg | 48 - .../entropy_coding_synchronization.cfg | 1 - cfg/partitioning/raster_slice.cfg | 13 - .../raster_slice_1_slice_per_tile.cfg | 11 - cfg/partitioning/rect_slice_classB.cfg | 13 - cfg/partitioning/rect_slice_fixed_size.cfg | 14 - .../rpr_no_subpic_single_slice_per_subpic.cfg | 20 - .../subpicture_3_slice_2_tile.cfg | 38 - ...ture_3_slice_2_tile_1_slice_per_subpic.cfg | 39 - .../subpicture_4_slice_2_hor_subpic.cfg | 35 - .../subpicture_4_slice_2_tiles_4_subpic.cfg | 38 - .../subpicture_4_slice_2_ver_subpic.cfg | 39 - .../subpicture_8_slice_12_tile_2_subpic.cfg | 25 - cfg/per-class/classF.cfg | 3 - cfg/per-class/classH1.cfg | 27 - cfg/per-class/classH2.cfg | 16 - cfg/per-class/classSCC.cfg | 5 - cfg/per-class/formatRGB.cfg | 3 - cfg/per-sequence-HDR/H1_BalloonFestival.cfg | 11 - cfg/per-sequence-HDR/H1_Cosmos1_TreeTrunk.cfg | 15 - cfg/per-sequence-HDR/H1_EBU_Hurdles.cfg | 11 - cfg/per-sequence-HDR/H1_EBU_Starting.cfg | 11 - cfg/per-sequence-HDR/H1_Market.cfg | 11 - cfg/per-sequence-HDR/H1_ShowGirl.cfg | 21 - cfg/per-sequence-HDR/H1_SunRise.cfg | 11 - cfg/per-sequence-HDR/H2_DayStreet.cfg | 11 - cfg/per-sequence-HDR/H2_FlyingBirds2.cfg | 11 - .../H2_PeopleInShoppingCenter.cfg | 11 - cfg/per-sequence-HDR/H2_SunsetBeach2.cfg | 11 - cfg/per-sequence-non-420/ArenaOfValor_444.cfg | 11 - cfg/per-sequence-non-420/ArenaOfValor_RGB.cfg | 14 - .../BasketballScreen_444.cfg | 11 - .../BasketballScreen_RGB.cfg | 14 - .../BirdsInCage_444_10bit.cfg | 11 - .../ChineseEditing_444.cfg | 11 - .../ChineseEditing_RGB.cfg | 14 - cfg/per-sequence-non-420/Console_444.cfg | 11 - cfg/per-sequence-non-420/Console_RGB.cfg | 14 - .../CrowdRun_444_10bit.cfg | 11 - cfg/per-sequence-non-420/Desktop_444.cfg | 11 - cfg/per-sequence-non-420/Desktop_RGB.cfg | 14 - .../DucksAndLegs_RGB_10bit.cfg | 14 - .../EBUGraphics_422_10bit.cfg | 11 - .../EBUHorse_422_10bit.cfg | 11 - .../EBUKidsSoccer_422_10bit.cfg | 11 - .../EBULupoCandlelight_444_10bit.cfg | 11 - .../EBULupoCandlelight_RGB_10bit.cfg | 14 - .../EBURainFruits_444_10bit.cfg | 11 - .../EBURainFruits_RGB_10bit.cfg | 14 - .../EBUWaterRocksClose_422_10bit.cfg | 11 - .../FlyingGraphics_444.cfg | 11 - .../FlyingGraphics_RGB.cfg | 14 - .../GlassHalf_444_10bit.cfg | 11 - cfg/per-sequence-non-420/GlassHalf_RGB.cfg | 14 - cfg/per-sequence-non-420/Kimono_422_10bit.cfg | 11 - cfg/per-sequence-non-420/Kimono_444_10bit.cfg | 11 - cfg/per-sequence-non-420/Kimono_RGB_10bit.cfg | 14 - cfg/per-sequence-non-420/Map_444.cfg | 11 - cfg/per-sequence-non-420/Map_RGB.cfg | 14 - .../MissionControl2_444.cfg | 11 - .../MissionControl2_RGB.cfg | 14 - .../MissionControl3_444.cfg | 11 - .../MissionControl3_RGB.cfg | 14 - .../OldTownCross_RGB_10bit.cfg | 14 - .../ParkScene_RGB_10bit.cfg | 14 - cfg/per-sequence-non-420/Programming_444.cfg | 11 - cfg/per-sequence-non-420/Programming_RGB.cfg | 14 - cfg/per-sequence-non-420/Robot_444.cfg | 11 - cfg/per-sequence-non-420/Robot_RGB.cfg | 14 - .../Seeking_422_10bit.cfg | 11 - cfg/per-sequence-non-420/SlideShow_444.cfg | 11 - cfg/per-sequence-non-420/SlideShow_RGB.cfg | 14 - .../Traffic_422_10bit.cfg | 11 - .../Traffic_444_10bit.cfg | 11 - .../Traffic_RGB_12bit.cfg | 14 - .../VenueVu_444_10bit.cfg | 11 - cfg/per-sequence-non-420/VenueVu_RGB.cfg | 14 - cfg/per-sequence-non-420/WebBrowsing_444.cfg | 11 - cfg/per-sequence-non-420/WebBrowsing_RGB.cfg | 14 - cfg/per-sequence/ArenaOfValor.cfg | 11 - cfg/per-sequence/BQMall.cfg | 11 - cfg/per-sequence/BQSquare.cfg | 11 - cfg/per-sequence/BQTerrace.cfg | 11 - cfg/per-sequence/BasketballDrill.cfg | 11 - cfg/per-sequence/BasketballDrillText.cfg | 11 - cfg/per-sequence/BasketballDrive.cfg | 11 - cfg/per-sequence/BasketballPass.cfg | 11 - cfg/per-sequence/BlowingBubbles.cfg | 11 - cfg/per-sequence/Bubbles_RGB_16bit.cfg | 14 - cfg/per-sequence/CADWaveform_444.cfg | 11 - cfg/per-sequence/CADWaveform_GBR.cfg | 11 - cfg/per-sequence/CADWaveform_RGB.cfg | 14 - cfg/per-sequence/Cactus.cfg | 11 - cfg/per-sequence/Campfire.cfg | 11 - cfg/per-sequence/Cardiac_400_12bit.cfg | 11 - cfg/per-sequence/CatRobot.cfg | 11 - cfg/per-sequence/ChinaSpeed.cfg | 11 - cfg/per-sequence/CrowdRun_RGB_16bit.cfg | 14 - cfg/per-sequence/DaylightRoad2.cfg | 11 - cfg/per-sequence/Doc_444.cfg | 11 - cfg/per-sequence/Doc_RGB.cfg | 14 - cfg/per-sequence/DucksTakeOff_RGB_16bit.cfg | 14 - .../EBURainFruits_RGB_10bit+2MSB.cfg | 15 - .../EBURainFruits_RGB_10bit+4MSB.cfg | 15 - .../EBURainFruits_RGB_10bit+6MSB.cfg | 15 - cfg/per-sequence/FoodMarket4.cfg | 11 - cfg/per-sequence/FourPeople.cfg | 11 - cfg/per-sequence/FruitStall_RGB_16bit.cfg | 14 - cfg/per-sequence/Head_400_16bit.cfg | 11 - cfg/per-sequence/InToTree_RGB_16bit.cfg | 14 - cfg/per-sequence/Johnny.cfg | 11 - cfg/per-sequence/Kimono.cfg | 11 - cfg/per-sequence/Kimono_RGB_10bit+2MSB.cfg | 15 - cfg/per-sequence/Kimono_RGB_10bit+4MSB.cfg | 15 - cfg/per-sequence/Kimono_RGB_10bit+6MSB.cfg | 15 - cfg/per-sequence/KristenAndSara.cfg | 11 - cfg/per-sequence/LongRunShort_400_12bit.cfg | 11 - cfg/per-sequence/Map_GBR.cfg | 11 - cfg/per-sequence/MarketPlace.cfg | 11 - cfg/per-sequence/NebutaFestival_10bit.cfg | 11 - cfg/per-sequence/OldTownCross_RGB_16bit.cfg | 14 - cfg/per-sequence/PCBLayout_444.cfg | 11 - cfg/per-sequence/PCBLayout_GBR.cfg | 11 - cfg/per-sequence/PCBLayout_RGB.cfg | 14 - cfg/per-sequence/ParkJoy_RGB_16bit.cfg | 14 - cfg/per-sequence/ParkRunning3.cfg | 11 - cfg/per-sequence/ParkScene.cfg | 11 - cfg/per-sequence/PartyScene.cfg | 11 - cfg/per-sequence/PeopleOnStreet.cfg | 11 - cfg/per-sequence/Programming_GBR.cfg | 11 - cfg/per-sequence/RaceHorses.cfg | 11 - cfg/per-sequence/RaceHorsesC.cfg | 11 - cfg/per-sequence/RitualDance.cfg | 11 - cfg/per-sequence/SlideEditing.cfg | 11 - cfg/per-sequence/SlideShow.cfg | 11 - cfg/per-sequence/SocialNetworkMap_444.cfg | 11 - cfg/per-sequence/SocialNetworkMap_RGB.cfg | 14 - .../SteamLocomotiveTrain_10bit.cfg | 11 - cfg/per-sequence/Tango2.cfg | 11 - cfg/per-sequence/Traffic.cfg | 11 - cfg/per-sequence/TwistTunnel_444.cfg | 11 - cfg/per-sequence/TwistTunnel_GBR.cfg | 11 - cfg/per-sequence/TwistTunnel_RGB.cfg | 14 - cfg/per-sequence/VenueVu_GBR.cfg | 11 - .../VideoConferencingDocSharing_444.cfg | 11 - .../VideoConferencingDocSharing_GBR.cfg | 11 - .../VideoConferencingDocSharing_RGB.cfg | 14 - cfg/per-sequence/Vidyo1.cfg | 11 - cfg/per-sequence/Vidyo3.cfg | 11 - cfg/per-sequence/Vidyo4.cfg | 11 - cfg/per-sequence/WebBrowsing_GBR.cfg | 11 - cfg/per-sequence/Web_444.cfg | 11 - cfg/per-sequence/Web_RGB.cfg | 14 - cfg/per-sequence/WordEditing_444.cfg | 11 - cfg/per-sequence/WordEditing_GBR.cfg | 11 - cfg/per-sequence/WordEditing_RGB.cfg | 14 - cfg/per-sequence/ppt_doc_xls_444.cfg | 11 - cfg/per-sequence/ppt_doc_xls_GBR.cfg | 11 - cfg/per-sequence/ppt_doc_xls_RGB.cfg | 14 - cfg/rpr/scale1.5x.cfg | 6 - cfg/rpr/scale2.0x.cfg | 6 - cfg/scaling_list/sample_scaling_list.cfg | 3 - cfg/scaling_list/sample_scaling_list_file.txt | 304 - .../alternative_transfer_characteristics.cfg | 2 - cfg/sei_vui/ambient_viewing_environment.cfg | 5 - cfg/sei_vui/content_colour_volume.cfg | 17 - cfg/sei_vui/content_light_level.cfg | 4 - cfg/sei_vui/equirectangular.cfg | 9 - cfg/sei_vui/film_grain_characterstics.cfg | 11 - cfg/sei_vui/frame_packing.cfg | 6 - .../generalized_cubemap_projection.cfg | 17 - .../mastering_display_colour_volume.cfg | 6 - cfg/sei_vui/omni_viewport.cfg | 12 - .../parameter_sets_inclusion_indication.cfg | 2 - cfg/sei_vui/region_wise_packing.cfg | 27 - cfg/sei_vui/sample_aspect_ratio.cfg | 6 - cfg/sei_vui/sphere_rotation.cfg | 8 - cfg/sei_vui/subpicture_level.cfg | 6 - cfg/sei_vui/timing.cfg | 4 - cfg/sei_vui/vui_HD.cfg | 19 - cfg/sei_vui/vui_UHD_PQ.cfg | 19 - cmake/CMakeBuild/bin/cmake.py | 11 - cmake/CMakeBuild/bin/cmake_docutil.py | 11 - cmake/CMakeBuild/bin/cmakebuild_update.py | 11 - cmake/CMakeBuild/bin/pyhhi/__init__.py | 0 cmake/CMakeBuild/bin/pyhhi/build/__init__.py | 0 .../bin/pyhhi/build/app/__init__.py | 0 .../CMakeBuild/bin/pyhhi/build/app/cmbldup.py | 391 - cmake/CMakeBuild/bin/pyhhi/build/app/cmk.py | 366 - .../bin/pyhhi/build/app/cmkdocapp.py | 88 - cmake/CMakeBuild/bin/pyhhi/build/cmkdoc.py | 399 - cmake/CMakeBuild/bin/pyhhi/build/cmkfnd.py | 113 - cmake/CMakeBuild/bin/pyhhi/build/cmksupp.py | 615 -- .../bin/pyhhi/build/common/__init__.py | 0 .../bin/pyhhi/build/common/android.py | 265 - .../bin/pyhhi/build/common/bldtools.py | 1442 --- .../bin/pyhhi/build/common/cmbldver.py | 7 - .../bin/pyhhi/build/common/error.py | 30 - .../bin/pyhhi/build/common/system.py | 498 - .../CMakeBuild/bin/pyhhi/build/common/util.py | 276 - .../CMakeBuild/bin/pyhhi/build/common/ver.py | 223 - cmake/CMakeBuild/bin/pyhhi/build/vcsutil.py | 896 -- .../CMakeBuild/cmake/modules/BBuildEnv.cmake | 1365 --- .../cmake/modules/BBuildEnvDebug.cmake | 144 - .../cmake/modules/BBuildEnvLldb.cmake | 165 - .../cmake/modules/BBuildEnvMingw.cmake | 53 - .../cmake/modules/BBuildEnvVersion.cmake | 13 - .../aarch64-linux-gnu-gcc-ubuntu1804.cmake | 51 - ...686-w64-mingw32-gcc-posix-ubuntu1604.cmake | 31 - ..._64-w64-mingw32-gcc-posix-ubuntu1604.cmake | 31 - ..._64-w64-mingw32-gcc-posix-ubuntu1804.cmake | 31 - cmake/CMakeBuild/lldb/CMakeBuildLldbExt.py | 13 - cmake/CMakeBuild/lldb/CMakeLists.txt | 51 - cmake/CMakeBuild/lldb/lldbinit-CMakeBuild.in | 11 - .../CMakeBuild/lldb/lldbinit_update-in.cmake | 11 - doc/.gitignore | 8 - doc/DTrace for NextSoftware.docx | Bin 17023 -> 0 bytes doc/DTrace for NextSoftware.pdf | Bin 310980 -> 0 bytes doc/Doxyfile | 2423 ----- doc/Makefile | 41 - doc/NextSoftware-CommonModel.emf | Bin 97392 -> 0 bytes doc/NextSoftware-CommonModel.vsd | Bin 214016 -> 0 bytes doc/NextSoftware-Data Structures.pdf | Bin 674103 -> 0 bytes doc/NextSoftware-Data Structures.pptx | Bin 1328151 -> 0 bytes doc/README_software-manual.txt | 29 - doc/figures/YUView.png | Bin 1149729 -> 0 bytes doc/figures/gop-structure-example.pdf | Bin 14926 -> 0 bytes doc/figures/raceHorsesShot2MotionVectors.png | Bin 250701 -> 0 bytes doc/figures/raceHorsesShot3SkipFlag.png | Bin 153928 -> 0 bytes doc/jvetdoc.cls | 148 - doc/mainpage.h | 65 - doc/pyuv_format.pdf | Bin 559498 -> 0 bytes doc/software-manual.pdf | Bin 1653925 -> 0 bytes doc/software-manual.tex | 4684 ---------- lldb/CMakeLists.txt | 48 - lldb/NextSoftware.py | 123 - lldb/lldbinit-NextSoftware.in | 11 - lldb/lldbinit_update-in.cmake | 11 - .../BitstreamExtractorApp.cpp | 677 -- .../BitstreamExtractorApp.h | 98 - .../BitstreamExtractorAppCfg.cpp | 155 - .../BitstreamExtractorAppCfg.h | 65 - .../App/BitstreamExtractorApp/CMakeLists.txt | 84 - .../bitstreamextractormain.cpp | 112 - source/App/DecoderAnalyserApp/CMakeLists.txt | 86 - source/App/DecoderApp/CMakeLists.txt | 84 - source/App/DecoderApp/DecApp.cpp | 722 -- source/App/DecoderApp/DecApp.h | 98 - source/App/DecoderApp/DecAppCfg.cpp | 256 - source/App/DecoderApp/DecAppCfg.h | 96 - source/App/DecoderApp/decmain.cpp | 119 - source/App/EncoderApp/CMakeLists.txt | 95 - source/App/EncoderApp/EncApp.cpp | 1250 --- source/App/EncoderApp/EncApp.h | 129 - source/App/EncoderApp/EncAppCfg.cpp | 3902 -------- source/App/EncoderApp/EncAppCfg.h | 770 -- source/App/EncoderApp/encmain.cpp | 343 - source/App/Parcat/CMakeLists.txt | 34 - source/App/Parcat/parcat.cpp | 419 - source/App/Parcat/readme.md | 48 - source/App/SEIRemovalApp/CMakeLists.txt | 84 - source/App/SEIRemovalApp/SEIRemovalApp.cpp | 148 - source/App/SEIRemovalApp/SEIRemovalApp.h | 70 - source/App/SEIRemovalApp/SEIRemovalAppCfg.cpp | 127 - source/App/SEIRemovalApp/SEIRemovalAppCfg.h | 77 - source/App/SEIRemovalApp/seiremovalmain.cpp | 119 - source/App/StreamMergeApp/CMakeLists.txt | 84 - source/App/StreamMergeApp/StreamMergeApp.cpp | 345 - source/App/StreamMergeApp/StreamMergeApp.h | 196 - .../App/StreamMergeApp/StreamMergeAppCfg.cpp | 86 - source/App/StreamMergeApp/StreamMergeAppCfg.h | 74 - source/App/StreamMergeApp/StreamMergeMain.cpp | 94 - .../BitrateTargeting/ExtractBitrates.cpp | 212 - .../utils/BitrateTargeting/ExtractBitrates.h | 71 - .../BitrateTargeting/ExtractBitratesMain.cpp | 99 - .../BitrateTargeting/GuessLambdaModifiers.cpp | 484 - .../BitrateTargeting/GuessLambdaModifiers.h | 148 - .../GuessLambdaModifiersMain.cpp | 75 - .../BitrateTargeting/QuickStartGuide.pdf | Bin 79085 -> 0 bytes .../App/utils/BitrateTargeting/RuntimeError.h | 76 - source/App/utils/BitrateTargeting/encode.shl | 151 - .../utils/BitrateTargeting/encodeCommand.sh | 258 - source/App/utils/BitrateTargeting/makefile | 54 - .../utils/BitrateTargeting/targetBitrates.sh | 409 - source/App/utils/annexBbytecount.cpp | 241 - source/App/utils/convert_NtoMbit_YCbCr.cpp | 136 - source/Lib/CommonAnalyserLib/CMakeLists.txt | 112 - source/Lib/CommonLib/AdaptiveLoopFilter.cpp | 1410 --- source/Lib/CommonLib/AdaptiveLoopFilter.h | 206 - source/Lib/CommonLib/AffineGradientSearch.cpp | 174 - source/Lib/CommonLib/AffineGradientSearch.h | 74 - source/Lib/CommonLib/AlfParameters.h | 287 - source/Lib/CommonLib/BitStream.cpp | 411 - source/Lib/CommonLib/BitStream.h | 217 - source/Lib/CommonLib/Buffer.cpp | 919 -- source/Lib/CommonLib/Buffer.h | 1046 --- source/Lib/CommonLib/CMakeLists.txt | 110 - source/Lib/CommonLib/CacheModel.cpp | 484 - source/Lib/CommonLib/CacheModel.h | 128 - source/Lib/CommonLib/ChromaFormat.cpp | 89 - source/Lib/CommonLib/ChromaFormat.h | 128 - source/Lib/CommonLib/CodingStatistics.h | 1014 --- source/Lib/CommonLib/CodingStructure.cpp | 1623 ---- source/Lib/CommonLib/CodingStructure.h | 332 - source/Lib/CommonLib/Common.h | 264 - source/Lib/CommonLib/CommonDef.h | 723 -- source/Lib/CommonLib/ContextModelling.cpp | 557 -- source/Lib/CommonLib/ContextModelling.h | 521 -- source/Lib/CommonLib/Contexts.cpp | 1004 --- source/Lib/CommonLib/Contexts.h | 476 - source/Lib/CommonLib/CrossCompPrediction.cpp | 44 - source/Lib/CommonLib/CrossCompPrediction.h | 32 - source/Lib/CommonLib/DepQuant.cpp | 1640 ---- source/Lib/CommonLib/DepQuant.h | 66 - source/Lib/CommonLib/HRD.cpp | 58 - source/Lib/CommonLib/HRD.h | 214 - source/Lib/CommonLib/Hash.cpp | 702 -- source/Lib/CommonLib/Hash.h | 136 - source/Lib/CommonLib/IbcHashMap.cpp | 434 - source/Lib/CommonLib/IbcHashMap.h | 97 - source/Lib/CommonLib/InterPrediction.cpp | 2470 ----- source/Lib/CommonLib/InterPrediction.h | 200 - source/Lib/CommonLib/InterpolationFilter.cpp | 976 -- source/Lib/CommonLib/InterpolationFilter.h | 118 - source/Lib/CommonLib/IntraPrediction.cpp | 1962 ---- source/Lib/CommonLib/IntraPrediction.h | 176 - source/Lib/CommonLib/LoopFilter.cpp | 1711 ---- source/Lib/CommonLib/LoopFilter.h | 136 - source/Lib/CommonLib/MCTS.cpp | 280 - source/Lib/CommonLib/MCTS.h | 86 - .../Lib/CommonLib/MatrixIntraPrediction.cpp | 335 - source/Lib/CommonLib/MatrixIntraPrediction.h | 94 - source/Lib/CommonLib/MipData.h | 879 -- source/Lib/CommonLib/MotionInfo.h | 231 - source/Lib/CommonLib/Mv.cpp | 141 - source/Lib/CommonLib/Mv.h | 298 - source/Lib/CommonLib/NAL.h | 168 - source/Lib/CommonLib/ParameterSetManager.cpp | 185 - source/Lib/CommonLib/ParameterSetManager.h | 287 - source/Lib/CommonLib/PicYuvMD5.cpp | 292 - source/Lib/CommonLib/Picture.cpp | 1318 --- source/Lib/CommonLib/Picture.h | 345 - source/Lib/CommonLib/ProfileLevelTier.cpp | 152 - source/Lib/CommonLib/ProfileLevelTier.h | 104 - source/Lib/CommonLib/Quant.cpp | 1283 --- source/Lib/CommonLib/Quant.h | 195 - source/Lib/CommonLib/QuantRDOQ.cpp | 1932 ---- source/Lib/CommonLib/QuantRDOQ.h | 175 - source/Lib/CommonLib/RdCost.cpp | 3550 -------- source/Lib/CommonLib/RdCost.h | 424 - .../Lib/CommonLib/RdCostWeightPrediction.cpp | 642 -- source/Lib/CommonLib/RdCostWeightPrediction.h | 60 - source/Lib/CommonLib/Reshape.cpp | 283 - source/Lib/CommonLib/Reshape.h | 113 - source/Lib/CommonLib/Rom.cpp | 789 -- source/Lib/CommonLib/Rom.h | 239 - source/Lib/CommonLib/RomLFNST.cpp | 366 - source/Lib/CommonLib/RomTr.cpp | 514 -- source/Lib/CommonLib/SEI.cpp | 185 - source/Lib/CommonLib/SEI.h | 667 -- source/Lib/CommonLib/SampleAdaptiveOffset.cpp | 767 -- source/Lib/CommonLib/SampleAdaptiveOffset.h | 131 - source/Lib/CommonLib/Slice.cpp | 4440 --------- source/Lib/CommonLib/Slice.h | 3038 ------- source/Lib/CommonLib/TrQuant.cpp | 1215 --- source/Lib/CommonLib/TrQuant.h | 180 - source/Lib/CommonLib/TrQuant_EMT.cpp | 1880 ---- source/Lib/CommonLib/TrQuant_EMT.h | 79 - source/Lib/CommonLib/TypeDef.h | 1324 --- source/Lib/CommonLib/Unit.cpp | 863 -- source/Lib/CommonLib/Unit.h | 574 -- source/Lib/CommonLib/UnitPartitioner.cpp | 1148 --- source/Lib/CommonLib/UnitPartitioner.h | 228 - source/Lib/CommonLib/UnitTools.cpp | 3912 -------- source/Lib/CommonLib/UnitTools.h | 254 - source/Lib/CommonLib/WeightPrediction.cpp | 461 - source/Lib/CommonLib/WeightPrediction.h | 115 - source/Lib/CommonLib/dtrace.cpp | 337 - source/Lib/CommonLib/dtrace.h | 160 - .../Lib/CommonLib/dtrace_blockstatistics.cpp | 1177 --- source/Lib/CommonLib/dtrace_blockstatistics.h | 239 - source/Lib/CommonLib/dtrace_buffer.h | 214 - source/Lib/CommonLib/dtrace_codingstruct.h | 194 - source/Lib/CommonLib/dtrace_next.h | 286 - source/Lib/CommonLib/version.h | 3 - .../Lib/CommonLib/x86/AdaptiveLoopFilterX86.h | 693 -- .../CommonLib/x86/AffineGradientSearchX86.h | 322 - source/Lib/CommonLib/x86/BufferX86.h | 1083 --- source/Lib/CommonLib/x86/CommonDefX86.cpp | 223 - source/Lib/CommonLib/x86/CommonDefX86.h | 363 - source/Lib/CommonLib/x86/IbcHashMapX86.h | 62 - source/Lib/CommonLib/x86/InitX86.cpp | 190 - .../CommonLib/x86/InterpolationFilterX86.h | 1611 ---- source/Lib/CommonLib/x86/RdCostX86.h | 2337 ----- .../x86/avx/AdaptiveLoopFilter_avx.cpp | 1 - .../x86/avx/AffineGradientSearch_avx.cpp | 1 - source/Lib/CommonLib/x86/avx/Buffer_avx.cpp | 1 - .../x86/avx/InterpolationFilter_avx.cpp | 1 - source/Lib/CommonLib/x86/avx/RdCost_avx.cpp | 1 - .../x86/avx2/AdaptiveLoopFilter_avx2.cpp | 1 - .../x86/avx2/AffineGradientSearch_avx2.cpp | 1 - source/Lib/CommonLib/x86/avx2/Buffer_avx2.cpp | 1 - .../x86/avx2/InterpolationFilter_avx2.cpp | 1 - source/Lib/CommonLib/x86/avx2/RdCost_avx2.cpp | 1 - .../x86/sse41/AdaptiveLoopFilter_sse41.cpp | 1 - .../x86/sse41/AffineGradientSearch_sse41.cpp | 1 - .../Lib/CommonLib/x86/sse41/Buffer_sse41.cpp | 1 - .../x86/sse41/InterpolationFilter_sse41.cpp | 1 - .../Lib/CommonLib/x86/sse41/RdCost_sse41.cpp | 1 - .../CommonLib/x86/sse42/IbcHashmap_sse42.cpp | 1 - source/Lib/DecoderAnalyserLib/CMakeLists.txt | 59 - source/Lib/DecoderLib/AnnexBread.cpp | 214 - source/Lib/DecoderLib/AnnexBread.h | 199 - source/Lib/DecoderLib/BinDecoder.cpp | 366 - source/Lib/DecoderLib/BinDecoder.h | 107 - source/Lib/DecoderLib/CABACReader.cpp | 3667 -------- source/Lib/DecoderLib/CABACReader.h | 181 - source/Lib/DecoderLib/CMakeLists.txt | 58 - source/Lib/DecoderLib/DecCu.cpp | 1031 --- source/Lib/DecoderLib/DecCu.h | 107 - source/Lib/DecoderLib/DecLib.cpp | 3084 ------- source/Lib/DecoderLib/DecLib.h | 285 - source/Lib/DecoderLib/DecSlice.cpp | 297 - source/Lib/DecoderLib/DecSlice.h | 82 - source/Lib/DecoderLib/NALread.cpp | 176 - source/Lib/DecoderLib/NALread.h | 73 - source/Lib/DecoderLib/SEIread.cpp | 1395 --- source/Lib/DecoderLib/SEIread.h | 102 - source/Lib/DecoderLib/VLCReader.cpp | 4924 ---------- source/Lib/DecoderLib/VLCReader.h | 198 - source/Lib/EncoderLib/AQp.cpp | 161 - source/Lib/EncoderLib/AQp.h | 96 - source/Lib/EncoderLib/Analyze.h | 664 -- source/Lib/EncoderLib/AnnexBwrite.h | 97 - source/Lib/EncoderLib/BinEncoder.cpp | 469 - source/Lib/EncoderLib/BinEncoder.h | 285 - source/Lib/EncoderLib/CABACWriter.cpp | 3511 -------- source/Lib/EncoderLib/CABACWriter.h | 213 - source/Lib/EncoderLib/CMakeLists.txt | 66 - .../Lib/EncoderLib/EncAdaptiveLoopFilter.cpp | 4328 --------- source/Lib/EncoderLib/EncAdaptiveLoopFilter.h | 392 - source/Lib/EncoderLib/EncCfg.h | 1930 ---- source/Lib/EncoderLib/EncCfgParam.h | 81 - source/Lib/EncoderLib/EncCu.cpp | 4724 ---------- source/Lib/EncoderLib/EncCu.h | 308 - source/Lib/EncoderLib/EncGOP.cpp | 5503 ------------ source/Lib/EncoderLib/EncGOP.h | 338 - source/Lib/EncoderLib/EncHRD.cpp | 194 - source/Lib/EncoderLib/EncHRD.h | 55 - source/Lib/EncoderLib/EncLib.cpp | 2257 ----- source/Lib/EncoderLib/EncLib.h | 295 - source/Lib/EncoderLib/EncLibCommon.cpp | 51 - source/Lib/EncoderLib/EncLibCommon.h | 65 - source/Lib/EncoderLib/EncModeCtrl.cpp | 2221 ----- source/Lib/EncoderLib/EncModeCtrl.h | 618 -- source/Lib/EncoderLib/EncReshape.cpp | 1199 --- source/Lib/EncoderLib/EncReshape.h | 125 - .../EncoderLib/EncSampleAdaptiveOffset.cpp | 1582 ---- .../Lib/EncoderLib/EncSampleAdaptiveOffset.h | 137 - source/Lib/EncoderLib/EncSlice.cpp | 1910 ---- source/Lib/EncoderLib/EncSlice.h | 151 - source/Lib/EncoderLib/EncTemporalFilter.cpp | 626 -- source/Lib/EncoderLib/EncTemporalFilter.h | 165 - source/Lib/EncoderLib/InterSearch.cpp | 7998 ----------------- source/Lib/EncoderLib/InterSearch.h | 614 -- source/Lib/EncoderLib/IntraSearch.cpp | 6100 ------------- source/Lib/EncoderLib/IntraSearch.h | 493 - source/Lib/EncoderLib/NALwrite.cpp | 134 - source/Lib/EncoderLib/NALwrite.h | 89 - source/Lib/EncoderLib/RateCtrl.cpp | 1953 ---- source/Lib/EncoderLib/RateCtrl.h | 376 - source/Lib/EncoderLib/SEIEncoder.cpp | 670 -- source/Lib/EncoderLib/SEIEncoder.h | 101 - source/Lib/EncoderLib/SEIwrite.cpp | 896 -- source/Lib/EncoderLib/SEIwrite.h | 90 - source/Lib/EncoderLib/VLCWriter.cpp | 2880 ------ source/Lib/EncoderLib/VLCWriter.h | 150 - source/Lib/EncoderLib/WeightPredAnalysis.cpp | 779 -- source/Lib/EncoderLib/WeightPredAnalysis.h | 67 - source/Lib/Utilities/CMakeLists.txt | 58 - source/Lib/Utilities/VideoIOYuv.cpp | 1300 --- source/Lib/Utilities/VideoIOYuv.h | 106 - source/Lib/Utilities/program_options_lite.cpp | 598 -- source/Lib/Utilities/program_options_lite.h | 312 - source/Lib/libmd5/MD5.h | 75 - source/Lib/libmd5/libmd5.cpp | 256 - source/Lib/libmd5/libmd5.h | 58 - source/VisualStudio/common.natvis | 62 - source/VisualStudio/static_vector.natvis | 16 - {source/App/DecoderLib => src}/CMakeLists.txt | 0 {source/App/DecoderLib => src}/Logger.cpp | 0 {source/App/DecoderLib => src}/Logger.h | 0 .../App/DecoderLib => src}/libVTMDecoder.cpp | 0 .../App/DecoderLib => src}/libVTMDecoder.h | 0 vtm-cmake.patch | 13 + 517 files changed, 103 insertions(+), 180555 deletions(-) delete mode 100644 COPYING delete mode 100644 Makefile delete mode 100644 README.md delete mode 100644 cfg/444/yuv444.cfg delete mode 100644 cfg/CacheCfg/cache_1d.cfg delete mode 100644 cfg/CacheCfg/cache_2d.cfg delete mode 100644 cfg/encoder_intra_vtm.cfg delete mode 100644 cfg/encoder_lowdelay_P_vtm.cfg delete mode 100644 cfg/encoder_lowdelay_vtm.cfg delete mode 100644 cfg/encoder_randomaccess_vtm.cfg delete mode 100644 cfg/field/VTM_encoder_lowdelay_field_GOP16.cfg delete mode 100644 cfg/field/VTM_encoder_lowdelay_field_GOP8.cfg delete mode 100644 cfg/field/VTM_encoder_randomaccess_field_GOP16.cfg delete mode 100644 cfg/field/VTM_encoder_randomaccess_field_GOP32.cfg delete mode 100644 cfg/lossless/lossless.cfg delete mode 100644 cfg/lossless/lossless444.cfg delete mode 100644 cfg/lossless/losslessRGB.cfg delete mode 100644 cfg/lossless/lossless_mixed.cfg delete mode 100644 cfg/multi-layer/two_layers.cfg delete mode 100644 cfg/multi-layer/two_layers_ELonlyILP.cfg delete mode 100644 cfg/multi-layer/two_layers_max_tid_ref_pic.cfg delete mode 100644 cfg/partitioning/BasketballDrillText_subpicture_4_slice_2_hor_subpic.cfg delete mode 100644 cfg/partitioning/entropy_coding_synchronization.cfg delete mode 100644 cfg/partitioning/raster_slice.cfg delete mode 100644 cfg/partitioning/raster_slice_1_slice_per_tile.cfg delete mode 100644 cfg/partitioning/rect_slice_classB.cfg delete mode 100644 cfg/partitioning/rect_slice_fixed_size.cfg delete mode 100644 cfg/partitioning/rpr_no_subpic_single_slice_per_subpic.cfg delete mode 100644 cfg/partitioning/subpicture_3_slice_2_tile.cfg delete mode 100644 cfg/partitioning/subpicture_3_slice_2_tile_1_slice_per_subpic.cfg delete mode 100644 cfg/partitioning/subpicture_4_slice_2_hor_subpic.cfg delete mode 100644 cfg/partitioning/subpicture_4_slice_2_tiles_4_subpic.cfg delete mode 100644 cfg/partitioning/subpicture_4_slice_2_ver_subpic.cfg delete mode 100644 cfg/partitioning/subpicture_8_slice_12_tile_2_subpic.cfg delete mode 100644 cfg/per-class/classF.cfg delete mode 100644 cfg/per-class/classH1.cfg delete mode 100644 cfg/per-class/classH2.cfg delete mode 100644 cfg/per-class/classSCC.cfg delete mode 100644 cfg/per-class/formatRGB.cfg delete mode 100644 cfg/per-sequence-HDR/H1_BalloonFestival.cfg delete mode 100644 cfg/per-sequence-HDR/H1_Cosmos1_TreeTrunk.cfg delete mode 100644 cfg/per-sequence-HDR/H1_EBU_Hurdles.cfg delete mode 100644 cfg/per-sequence-HDR/H1_EBU_Starting.cfg delete mode 100644 cfg/per-sequence-HDR/H1_Market.cfg delete mode 100644 cfg/per-sequence-HDR/H1_ShowGirl.cfg delete mode 100644 cfg/per-sequence-HDR/H1_SunRise.cfg delete mode 100644 cfg/per-sequence-HDR/H2_DayStreet.cfg delete mode 100644 cfg/per-sequence-HDR/H2_FlyingBirds2.cfg delete mode 100644 cfg/per-sequence-HDR/H2_PeopleInShoppingCenter.cfg delete mode 100644 cfg/per-sequence-HDR/H2_SunsetBeach2.cfg delete mode 100644 cfg/per-sequence-non-420/ArenaOfValor_444.cfg delete mode 100644 cfg/per-sequence-non-420/ArenaOfValor_RGB.cfg delete mode 100644 cfg/per-sequence-non-420/BasketballScreen_444.cfg delete mode 100644 cfg/per-sequence-non-420/BasketballScreen_RGB.cfg delete mode 100644 cfg/per-sequence-non-420/BirdsInCage_444_10bit.cfg delete mode 100644 cfg/per-sequence-non-420/ChineseEditing_444.cfg delete mode 100644 cfg/per-sequence-non-420/ChineseEditing_RGB.cfg delete mode 100644 cfg/per-sequence-non-420/Console_444.cfg delete mode 100644 cfg/per-sequence-non-420/Console_RGB.cfg delete mode 100644 cfg/per-sequence-non-420/CrowdRun_444_10bit.cfg delete mode 100644 cfg/per-sequence-non-420/Desktop_444.cfg delete mode 100644 cfg/per-sequence-non-420/Desktop_RGB.cfg delete mode 100644 cfg/per-sequence-non-420/DucksAndLegs_RGB_10bit.cfg delete mode 100644 cfg/per-sequence-non-420/EBUGraphics_422_10bit.cfg delete mode 100644 cfg/per-sequence-non-420/EBUHorse_422_10bit.cfg delete mode 100644 cfg/per-sequence-non-420/EBUKidsSoccer_422_10bit.cfg delete mode 100644 cfg/per-sequence-non-420/EBULupoCandlelight_444_10bit.cfg delete mode 100644 cfg/per-sequence-non-420/EBULupoCandlelight_RGB_10bit.cfg delete mode 100644 cfg/per-sequence-non-420/EBURainFruits_444_10bit.cfg delete mode 100644 cfg/per-sequence-non-420/EBURainFruits_RGB_10bit.cfg delete mode 100644 cfg/per-sequence-non-420/EBUWaterRocksClose_422_10bit.cfg delete mode 100644 cfg/per-sequence-non-420/FlyingGraphics_444.cfg delete mode 100644 cfg/per-sequence-non-420/FlyingGraphics_RGB.cfg delete mode 100644 cfg/per-sequence-non-420/GlassHalf_444_10bit.cfg delete mode 100644 cfg/per-sequence-non-420/GlassHalf_RGB.cfg delete mode 100644 cfg/per-sequence-non-420/Kimono_422_10bit.cfg delete mode 100644 cfg/per-sequence-non-420/Kimono_444_10bit.cfg delete mode 100644 cfg/per-sequence-non-420/Kimono_RGB_10bit.cfg delete mode 100644 cfg/per-sequence-non-420/Map_444.cfg delete mode 100644 cfg/per-sequence-non-420/Map_RGB.cfg delete mode 100644 cfg/per-sequence-non-420/MissionControl2_444.cfg delete mode 100644 cfg/per-sequence-non-420/MissionControl2_RGB.cfg delete mode 100644 cfg/per-sequence-non-420/MissionControl3_444.cfg delete mode 100644 cfg/per-sequence-non-420/MissionControl3_RGB.cfg delete mode 100644 cfg/per-sequence-non-420/OldTownCross_RGB_10bit.cfg delete mode 100644 cfg/per-sequence-non-420/ParkScene_RGB_10bit.cfg delete mode 100644 cfg/per-sequence-non-420/Programming_444.cfg delete mode 100644 cfg/per-sequence-non-420/Programming_RGB.cfg delete mode 100644 cfg/per-sequence-non-420/Robot_444.cfg delete mode 100644 cfg/per-sequence-non-420/Robot_RGB.cfg delete mode 100644 cfg/per-sequence-non-420/Seeking_422_10bit.cfg delete mode 100644 cfg/per-sequence-non-420/SlideShow_444.cfg delete mode 100644 cfg/per-sequence-non-420/SlideShow_RGB.cfg delete mode 100644 cfg/per-sequence-non-420/Traffic_422_10bit.cfg delete mode 100644 cfg/per-sequence-non-420/Traffic_444_10bit.cfg delete mode 100644 cfg/per-sequence-non-420/Traffic_RGB_12bit.cfg delete mode 100644 cfg/per-sequence-non-420/VenueVu_444_10bit.cfg delete mode 100644 cfg/per-sequence-non-420/VenueVu_RGB.cfg delete mode 100644 cfg/per-sequence-non-420/WebBrowsing_444.cfg delete mode 100644 cfg/per-sequence-non-420/WebBrowsing_RGB.cfg delete mode 100644 cfg/per-sequence/ArenaOfValor.cfg delete mode 100644 cfg/per-sequence/BQMall.cfg delete mode 100644 cfg/per-sequence/BQSquare.cfg delete mode 100644 cfg/per-sequence/BQTerrace.cfg delete mode 100644 cfg/per-sequence/BasketballDrill.cfg delete mode 100644 cfg/per-sequence/BasketballDrillText.cfg delete mode 100644 cfg/per-sequence/BasketballDrive.cfg delete mode 100644 cfg/per-sequence/BasketballPass.cfg delete mode 100644 cfg/per-sequence/BlowingBubbles.cfg delete mode 100644 cfg/per-sequence/Bubbles_RGB_16bit.cfg delete mode 100644 cfg/per-sequence/CADWaveform_444.cfg delete mode 100644 cfg/per-sequence/CADWaveform_GBR.cfg delete mode 100644 cfg/per-sequence/CADWaveform_RGB.cfg delete mode 100644 cfg/per-sequence/Cactus.cfg delete mode 100644 cfg/per-sequence/Campfire.cfg delete mode 100644 cfg/per-sequence/Cardiac_400_12bit.cfg delete mode 100644 cfg/per-sequence/CatRobot.cfg delete mode 100644 cfg/per-sequence/ChinaSpeed.cfg delete mode 100644 cfg/per-sequence/CrowdRun_RGB_16bit.cfg delete mode 100644 cfg/per-sequence/DaylightRoad2.cfg delete mode 100644 cfg/per-sequence/Doc_444.cfg delete mode 100644 cfg/per-sequence/Doc_RGB.cfg delete mode 100644 cfg/per-sequence/DucksTakeOff_RGB_16bit.cfg delete mode 100644 cfg/per-sequence/EBURainFruits_RGB_10bit+2MSB.cfg delete mode 100644 cfg/per-sequence/EBURainFruits_RGB_10bit+4MSB.cfg delete mode 100644 cfg/per-sequence/EBURainFruits_RGB_10bit+6MSB.cfg delete mode 100644 cfg/per-sequence/FoodMarket4.cfg delete mode 100644 cfg/per-sequence/FourPeople.cfg delete mode 100644 cfg/per-sequence/FruitStall_RGB_16bit.cfg delete mode 100644 cfg/per-sequence/Head_400_16bit.cfg delete mode 100644 cfg/per-sequence/InToTree_RGB_16bit.cfg delete mode 100644 cfg/per-sequence/Johnny.cfg delete mode 100644 cfg/per-sequence/Kimono.cfg delete mode 100644 cfg/per-sequence/Kimono_RGB_10bit+2MSB.cfg delete mode 100644 cfg/per-sequence/Kimono_RGB_10bit+4MSB.cfg delete mode 100644 cfg/per-sequence/Kimono_RGB_10bit+6MSB.cfg delete mode 100644 cfg/per-sequence/KristenAndSara.cfg delete mode 100644 cfg/per-sequence/LongRunShort_400_12bit.cfg delete mode 100644 cfg/per-sequence/Map_GBR.cfg delete mode 100644 cfg/per-sequence/MarketPlace.cfg delete mode 100644 cfg/per-sequence/NebutaFestival_10bit.cfg delete mode 100644 cfg/per-sequence/OldTownCross_RGB_16bit.cfg delete mode 100644 cfg/per-sequence/PCBLayout_444.cfg delete mode 100644 cfg/per-sequence/PCBLayout_GBR.cfg delete mode 100644 cfg/per-sequence/PCBLayout_RGB.cfg delete mode 100644 cfg/per-sequence/ParkJoy_RGB_16bit.cfg delete mode 100644 cfg/per-sequence/ParkRunning3.cfg delete mode 100644 cfg/per-sequence/ParkScene.cfg delete mode 100644 cfg/per-sequence/PartyScene.cfg delete mode 100644 cfg/per-sequence/PeopleOnStreet.cfg delete mode 100644 cfg/per-sequence/Programming_GBR.cfg delete mode 100644 cfg/per-sequence/RaceHorses.cfg delete mode 100644 cfg/per-sequence/RaceHorsesC.cfg delete mode 100644 cfg/per-sequence/RitualDance.cfg delete mode 100644 cfg/per-sequence/SlideEditing.cfg delete mode 100644 cfg/per-sequence/SlideShow.cfg delete mode 100644 cfg/per-sequence/SocialNetworkMap_444.cfg delete mode 100644 cfg/per-sequence/SocialNetworkMap_RGB.cfg delete mode 100644 cfg/per-sequence/SteamLocomotiveTrain_10bit.cfg delete mode 100644 cfg/per-sequence/Tango2.cfg delete mode 100644 cfg/per-sequence/Traffic.cfg delete mode 100644 cfg/per-sequence/TwistTunnel_444.cfg delete mode 100644 cfg/per-sequence/TwistTunnel_GBR.cfg delete mode 100644 cfg/per-sequence/TwistTunnel_RGB.cfg delete mode 100644 cfg/per-sequence/VenueVu_GBR.cfg delete mode 100644 cfg/per-sequence/VideoConferencingDocSharing_444.cfg delete mode 100644 cfg/per-sequence/VideoConferencingDocSharing_GBR.cfg delete mode 100644 cfg/per-sequence/VideoConferencingDocSharing_RGB.cfg delete mode 100644 cfg/per-sequence/Vidyo1.cfg delete mode 100644 cfg/per-sequence/Vidyo3.cfg delete mode 100644 cfg/per-sequence/Vidyo4.cfg delete mode 100644 cfg/per-sequence/WebBrowsing_GBR.cfg delete mode 100644 cfg/per-sequence/Web_444.cfg delete mode 100644 cfg/per-sequence/Web_RGB.cfg delete mode 100644 cfg/per-sequence/WordEditing_444.cfg delete mode 100644 cfg/per-sequence/WordEditing_GBR.cfg delete mode 100644 cfg/per-sequence/WordEditing_RGB.cfg delete mode 100644 cfg/per-sequence/ppt_doc_xls_444.cfg delete mode 100644 cfg/per-sequence/ppt_doc_xls_GBR.cfg delete mode 100644 cfg/per-sequence/ppt_doc_xls_RGB.cfg delete mode 100644 cfg/rpr/scale1.5x.cfg delete mode 100644 cfg/rpr/scale2.0x.cfg delete mode 100644 cfg/scaling_list/sample_scaling_list.cfg delete mode 100644 cfg/scaling_list/sample_scaling_list_file.txt delete mode 100644 cfg/sei_vui/alternative_transfer_characteristics.cfg delete mode 100644 cfg/sei_vui/ambient_viewing_environment.cfg delete mode 100644 cfg/sei_vui/content_colour_volume.cfg delete mode 100644 cfg/sei_vui/content_light_level.cfg delete mode 100644 cfg/sei_vui/equirectangular.cfg delete mode 100644 cfg/sei_vui/film_grain_characterstics.cfg delete mode 100644 cfg/sei_vui/frame_packing.cfg delete mode 100644 cfg/sei_vui/generalized_cubemap_projection.cfg delete mode 100644 cfg/sei_vui/mastering_display_colour_volume.cfg delete mode 100644 cfg/sei_vui/omni_viewport.cfg delete mode 100644 cfg/sei_vui/parameter_sets_inclusion_indication.cfg delete mode 100644 cfg/sei_vui/region_wise_packing.cfg delete mode 100644 cfg/sei_vui/sample_aspect_ratio.cfg delete mode 100644 cfg/sei_vui/sphere_rotation.cfg delete mode 100644 cfg/sei_vui/subpicture_level.cfg delete mode 100644 cfg/sei_vui/timing.cfg delete mode 100644 cfg/sei_vui/vui_HD.cfg delete mode 100644 cfg/sei_vui/vui_UHD_PQ.cfg delete mode 100755 cmake/CMakeBuild/bin/cmake.py delete mode 100755 cmake/CMakeBuild/bin/cmake_docutil.py delete mode 100755 cmake/CMakeBuild/bin/cmakebuild_update.py delete mode 100755 cmake/CMakeBuild/bin/pyhhi/__init__.py delete mode 100755 cmake/CMakeBuild/bin/pyhhi/build/__init__.py delete mode 100644 cmake/CMakeBuild/bin/pyhhi/build/app/__init__.py delete mode 100755 cmake/CMakeBuild/bin/pyhhi/build/app/cmbldup.py delete mode 100755 cmake/CMakeBuild/bin/pyhhi/build/app/cmk.py delete mode 100755 cmake/CMakeBuild/bin/pyhhi/build/app/cmkdocapp.py delete mode 100755 cmake/CMakeBuild/bin/pyhhi/build/cmkdoc.py delete mode 100755 cmake/CMakeBuild/bin/pyhhi/build/cmkfnd.py delete mode 100755 cmake/CMakeBuild/bin/pyhhi/build/cmksupp.py delete mode 100755 cmake/CMakeBuild/bin/pyhhi/build/common/__init__.py delete mode 100755 cmake/CMakeBuild/bin/pyhhi/build/common/android.py delete mode 100755 cmake/CMakeBuild/bin/pyhhi/build/common/bldtools.py delete mode 100755 cmake/CMakeBuild/bin/pyhhi/build/common/cmbldver.py delete mode 100755 cmake/CMakeBuild/bin/pyhhi/build/common/error.py delete mode 100755 cmake/CMakeBuild/bin/pyhhi/build/common/system.py delete mode 100755 cmake/CMakeBuild/bin/pyhhi/build/common/util.py delete mode 100755 cmake/CMakeBuild/bin/pyhhi/build/common/ver.py delete mode 100755 cmake/CMakeBuild/bin/pyhhi/build/vcsutil.py delete mode 100644 cmake/CMakeBuild/cmake/modules/BBuildEnv.cmake delete mode 100644 cmake/CMakeBuild/cmake/modules/BBuildEnvDebug.cmake delete mode 100644 cmake/CMakeBuild/cmake/modules/BBuildEnvLldb.cmake delete mode 100644 cmake/CMakeBuild/cmake/modules/BBuildEnvMingw.cmake delete mode 100644 cmake/CMakeBuild/cmake/modules/BBuildEnvVersion.cmake delete mode 100644 cmake/CMakeBuild/cmake/toolchains/aarch64-linux-gnu-gcc-ubuntu1804.cmake delete mode 100644 cmake/CMakeBuild/cmake/toolchains/i686-w64-mingw32-gcc-posix-ubuntu1604.cmake delete mode 100644 cmake/CMakeBuild/cmake/toolchains/x86_64-w64-mingw32-gcc-posix-ubuntu1604.cmake delete mode 100644 cmake/CMakeBuild/cmake/toolchains/x86_64-w64-mingw32-gcc-posix-ubuntu1804.cmake delete mode 100755 cmake/CMakeBuild/lldb/CMakeBuildLldbExt.py delete mode 100644 cmake/CMakeBuild/lldb/CMakeLists.txt delete mode 100644 cmake/CMakeBuild/lldb/lldbinit-CMakeBuild.in delete mode 100644 cmake/CMakeBuild/lldb/lldbinit_update-in.cmake delete mode 100644 doc/.gitignore delete mode 100644 doc/DTrace for NextSoftware.docx delete mode 100644 doc/DTrace for NextSoftware.pdf delete mode 100644 doc/Doxyfile delete mode 100644 doc/Makefile delete mode 100644 doc/NextSoftware-CommonModel.emf delete mode 100644 doc/NextSoftware-CommonModel.vsd delete mode 100644 doc/NextSoftware-Data Structures.pdf delete mode 100644 doc/NextSoftware-Data Structures.pptx delete mode 100644 doc/README_software-manual.txt delete mode 100644 doc/figures/YUView.png delete mode 100644 doc/figures/gop-structure-example.pdf delete mode 100644 doc/figures/raceHorsesShot2MotionVectors.png delete mode 100644 doc/figures/raceHorsesShot3SkipFlag.png delete mode 100644 doc/jvetdoc.cls delete mode 100644 doc/mainpage.h delete mode 100644 doc/pyuv_format.pdf delete mode 100644 doc/software-manual.pdf delete mode 100644 doc/software-manual.tex delete mode 100644 lldb/CMakeLists.txt delete mode 100644 lldb/NextSoftware.py delete mode 100644 lldb/lldbinit-NextSoftware.in delete mode 100644 lldb/lldbinit_update-in.cmake delete mode 100644 source/App/BitstreamExtractorApp/BitstreamExtractorApp.cpp delete mode 100644 source/App/BitstreamExtractorApp/BitstreamExtractorApp.h delete mode 100644 source/App/BitstreamExtractorApp/BitstreamExtractorAppCfg.cpp delete mode 100644 source/App/BitstreamExtractorApp/BitstreamExtractorAppCfg.h delete mode 100644 source/App/BitstreamExtractorApp/CMakeLists.txt delete mode 100644 source/App/BitstreamExtractorApp/bitstreamextractormain.cpp delete mode 100644 source/App/DecoderAnalyserApp/CMakeLists.txt delete mode 100644 source/App/DecoderApp/CMakeLists.txt delete mode 100644 source/App/DecoderApp/DecApp.cpp delete mode 100644 source/App/DecoderApp/DecApp.h delete mode 100644 source/App/DecoderApp/DecAppCfg.cpp delete mode 100644 source/App/DecoderApp/DecAppCfg.h delete mode 100644 source/App/DecoderApp/decmain.cpp delete mode 100644 source/App/EncoderApp/CMakeLists.txt delete mode 100644 source/App/EncoderApp/EncApp.cpp delete mode 100644 source/App/EncoderApp/EncApp.h delete mode 100644 source/App/EncoderApp/EncAppCfg.cpp delete mode 100644 source/App/EncoderApp/EncAppCfg.h delete mode 100644 source/App/EncoderApp/encmain.cpp delete mode 100644 source/App/Parcat/CMakeLists.txt delete mode 100644 source/App/Parcat/parcat.cpp delete mode 100644 source/App/Parcat/readme.md delete mode 100644 source/App/SEIRemovalApp/CMakeLists.txt delete mode 100644 source/App/SEIRemovalApp/SEIRemovalApp.cpp delete mode 100644 source/App/SEIRemovalApp/SEIRemovalApp.h delete mode 100644 source/App/SEIRemovalApp/SEIRemovalAppCfg.cpp delete mode 100644 source/App/SEIRemovalApp/SEIRemovalAppCfg.h delete mode 100644 source/App/SEIRemovalApp/seiremovalmain.cpp delete mode 100644 source/App/StreamMergeApp/CMakeLists.txt delete mode 100644 source/App/StreamMergeApp/StreamMergeApp.cpp delete mode 100644 source/App/StreamMergeApp/StreamMergeApp.h delete mode 100644 source/App/StreamMergeApp/StreamMergeAppCfg.cpp delete mode 100644 source/App/StreamMergeApp/StreamMergeAppCfg.h delete mode 100644 source/App/StreamMergeApp/StreamMergeMain.cpp delete mode 100644 source/App/utils/BitrateTargeting/ExtractBitrates.cpp delete mode 100644 source/App/utils/BitrateTargeting/ExtractBitrates.h delete mode 100644 source/App/utils/BitrateTargeting/ExtractBitratesMain.cpp delete mode 100644 source/App/utils/BitrateTargeting/GuessLambdaModifiers.cpp delete mode 100644 source/App/utils/BitrateTargeting/GuessLambdaModifiers.h delete mode 100644 source/App/utils/BitrateTargeting/GuessLambdaModifiersMain.cpp delete mode 100644 source/App/utils/BitrateTargeting/QuickStartGuide.pdf delete mode 100644 source/App/utils/BitrateTargeting/RuntimeError.h delete mode 100644 source/App/utils/BitrateTargeting/encode.shl delete mode 100755 source/App/utils/BitrateTargeting/encodeCommand.sh delete mode 100644 source/App/utils/BitrateTargeting/makefile delete mode 100755 source/App/utils/BitrateTargeting/targetBitrates.sh delete mode 100644 source/App/utils/annexBbytecount.cpp delete mode 100644 source/App/utils/convert_NtoMbit_YCbCr.cpp delete mode 100644 source/Lib/CommonAnalyserLib/CMakeLists.txt delete mode 100644 source/Lib/CommonLib/AdaptiveLoopFilter.cpp delete mode 100644 source/Lib/CommonLib/AdaptiveLoopFilter.h delete mode 100644 source/Lib/CommonLib/AffineGradientSearch.cpp delete mode 100644 source/Lib/CommonLib/AffineGradientSearch.h delete mode 100644 source/Lib/CommonLib/AlfParameters.h delete mode 100644 source/Lib/CommonLib/BitStream.cpp delete mode 100644 source/Lib/CommonLib/BitStream.h delete mode 100644 source/Lib/CommonLib/Buffer.cpp delete mode 100644 source/Lib/CommonLib/Buffer.h delete mode 100644 source/Lib/CommonLib/CMakeLists.txt delete mode 100644 source/Lib/CommonLib/CacheModel.cpp delete mode 100644 source/Lib/CommonLib/CacheModel.h delete mode 100644 source/Lib/CommonLib/ChromaFormat.cpp delete mode 100644 source/Lib/CommonLib/ChromaFormat.h delete mode 100644 source/Lib/CommonLib/CodingStatistics.h delete mode 100644 source/Lib/CommonLib/CodingStructure.cpp delete mode 100644 source/Lib/CommonLib/CodingStructure.h delete mode 100644 source/Lib/CommonLib/Common.h delete mode 100644 source/Lib/CommonLib/CommonDef.h delete mode 100644 source/Lib/CommonLib/ContextModelling.cpp delete mode 100644 source/Lib/CommonLib/ContextModelling.h delete mode 100644 source/Lib/CommonLib/Contexts.cpp delete mode 100644 source/Lib/CommonLib/Contexts.h delete mode 100644 source/Lib/CommonLib/CrossCompPrediction.cpp delete mode 100644 source/Lib/CommonLib/CrossCompPrediction.h delete mode 100644 source/Lib/CommonLib/DepQuant.cpp delete mode 100644 source/Lib/CommonLib/DepQuant.h delete mode 100644 source/Lib/CommonLib/HRD.cpp delete mode 100644 source/Lib/CommonLib/HRD.h delete mode 100644 source/Lib/CommonLib/Hash.cpp delete mode 100644 source/Lib/CommonLib/Hash.h delete mode 100644 source/Lib/CommonLib/IbcHashMap.cpp delete mode 100644 source/Lib/CommonLib/IbcHashMap.h delete mode 100644 source/Lib/CommonLib/InterPrediction.cpp delete mode 100644 source/Lib/CommonLib/InterPrediction.h delete mode 100644 source/Lib/CommonLib/InterpolationFilter.cpp delete mode 100644 source/Lib/CommonLib/InterpolationFilter.h delete mode 100644 source/Lib/CommonLib/IntraPrediction.cpp delete mode 100644 source/Lib/CommonLib/IntraPrediction.h delete mode 100644 source/Lib/CommonLib/LoopFilter.cpp delete mode 100644 source/Lib/CommonLib/LoopFilter.h delete mode 100644 source/Lib/CommonLib/MCTS.cpp delete mode 100644 source/Lib/CommonLib/MCTS.h delete mode 100644 source/Lib/CommonLib/MatrixIntraPrediction.cpp delete mode 100644 source/Lib/CommonLib/MatrixIntraPrediction.h delete mode 100644 source/Lib/CommonLib/MipData.h delete mode 100644 source/Lib/CommonLib/MotionInfo.h delete mode 100644 source/Lib/CommonLib/Mv.cpp delete mode 100644 source/Lib/CommonLib/Mv.h delete mode 100644 source/Lib/CommonLib/NAL.h delete mode 100644 source/Lib/CommonLib/ParameterSetManager.cpp delete mode 100644 source/Lib/CommonLib/ParameterSetManager.h delete mode 100644 source/Lib/CommonLib/PicYuvMD5.cpp delete mode 100644 source/Lib/CommonLib/Picture.cpp delete mode 100644 source/Lib/CommonLib/Picture.h delete mode 100644 source/Lib/CommonLib/ProfileLevelTier.cpp delete mode 100644 source/Lib/CommonLib/ProfileLevelTier.h delete mode 100644 source/Lib/CommonLib/Quant.cpp delete mode 100644 source/Lib/CommonLib/Quant.h delete mode 100644 source/Lib/CommonLib/QuantRDOQ.cpp delete mode 100644 source/Lib/CommonLib/QuantRDOQ.h delete mode 100644 source/Lib/CommonLib/RdCost.cpp delete mode 100644 source/Lib/CommonLib/RdCost.h delete mode 100644 source/Lib/CommonLib/RdCostWeightPrediction.cpp delete mode 100644 source/Lib/CommonLib/RdCostWeightPrediction.h delete mode 100644 source/Lib/CommonLib/Reshape.cpp delete mode 100644 source/Lib/CommonLib/Reshape.h delete mode 100644 source/Lib/CommonLib/Rom.cpp delete mode 100644 source/Lib/CommonLib/Rom.h delete mode 100644 source/Lib/CommonLib/RomLFNST.cpp delete mode 100644 source/Lib/CommonLib/RomTr.cpp delete mode 100644 source/Lib/CommonLib/SEI.cpp delete mode 100644 source/Lib/CommonLib/SEI.h delete mode 100644 source/Lib/CommonLib/SampleAdaptiveOffset.cpp delete mode 100644 source/Lib/CommonLib/SampleAdaptiveOffset.h delete mode 100644 source/Lib/CommonLib/Slice.cpp delete mode 100644 source/Lib/CommonLib/Slice.h delete mode 100644 source/Lib/CommonLib/TrQuant.cpp delete mode 100644 source/Lib/CommonLib/TrQuant.h delete mode 100644 source/Lib/CommonLib/TrQuant_EMT.cpp delete mode 100644 source/Lib/CommonLib/TrQuant_EMT.h delete mode 100644 source/Lib/CommonLib/TypeDef.h delete mode 100644 source/Lib/CommonLib/Unit.cpp delete mode 100644 source/Lib/CommonLib/Unit.h delete mode 100644 source/Lib/CommonLib/UnitPartitioner.cpp delete mode 100644 source/Lib/CommonLib/UnitPartitioner.h delete mode 100644 source/Lib/CommonLib/UnitTools.cpp delete mode 100644 source/Lib/CommonLib/UnitTools.h delete mode 100644 source/Lib/CommonLib/WeightPrediction.cpp delete mode 100644 source/Lib/CommonLib/WeightPrediction.h delete mode 100644 source/Lib/CommonLib/dtrace.cpp delete mode 100644 source/Lib/CommonLib/dtrace.h delete mode 100644 source/Lib/CommonLib/dtrace_blockstatistics.cpp delete mode 100644 source/Lib/CommonLib/dtrace_blockstatistics.h delete mode 100644 source/Lib/CommonLib/dtrace_buffer.h delete mode 100644 source/Lib/CommonLib/dtrace_codingstruct.h delete mode 100644 source/Lib/CommonLib/dtrace_next.h delete mode 100644 source/Lib/CommonLib/version.h delete mode 100644 source/Lib/CommonLib/x86/AdaptiveLoopFilterX86.h delete mode 100644 source/Lib/CommonLib/x86/AffineGradientSearchX86.h delete mode 100644 source/Lib/CommonLib/x86/BufferX86.h delete mode 100644 source/Lib/CommonLib/x86/CommonDefX86.cpp delete mode 100644 source/Lib/CommonLib/x86/CommonDefX86.h delete mode 100644 source/Lib/CommonLib/x86/IbcHashMapX86.h delete mode 100644 source/Lib/CommonLib/x86/InitX86.cpp delete mode 100644 source/Lib/CommonLib/x86/InterpolationFilterX86.h delete mode 100644 source/Lib/CommonLib/x86/RdCostX86.h delete mode 100644 source/Lib/CommonLib/x86/avx/AdaptiveLoopFilter_avx.cpp delete mode 100644 source/Lib/CommonLib/x86/avx/AffineGradientSearch_avx.cpp delete mode 100644 source/Lib/CommonLib/x86/avx/Buffer_avx.cpp delete mode 100644 source/Lib/CommonLib/x86/avx/InterpolationFilter_avx.cpp delete mode 100644 source/Lib/CommonLib/x86/avx/RdCost_avx.cpp delete mode 100644 source/Lib/CommonLib/x86/avx2/AdaptiveLoopFilter_avx2.cpp delete mode 100644 source/Lib/CommonLib/x86/avx2/AffineGradientSearch_avx2.cpp delete mode 100644 source/Lib/CommonLib/x86/avx2/Buffer_avx2.cpp delete mode 100644 source/Lib/CommonLib/x86/avx2/InterpolationFilter_avx2.cpp delete mode 100644 source/Lib/CommonLib/x86/avx2/RdCost_avx2.cpp delete mode 100644 source/Lib/CommonLib/x86/sse41/AdaptiveLoopFilter_sse41.cpp delete mode 100644 source/Lib/CommonLib/x86/sse41/AffineGradientSearch_sse41.cpp delete mode 100644 source/Lib/CommonLib/x86/sse41/Buffer_sse41.cpp delete mode 100644 source/Lib/CommonLib/x86/sse41/InterpolationFilter_sse41.cpp delete mode 100644 source/Lib/CommonLib/x86/sse41/RdCost_sse41.cpp delete mode 100644 source/Lib/CommonLib/x86/sse42/IbcHashmap_sse42.cpp delete mode 100644 source/Lib/DecoderAnalyserLib/CMakeLists.txt delete mode 100644 source/Lib/DecoderLib/AnnexBread.cpp delete mode 100644 source/Lib/DecoderLib/AnnexBread.h delete mode 100644 source/Lib/DecoderLib/BinDecoder.cpp delete mode 100644 source/Lib/DecoderLib/BinDecoder.h delete mode 100644 source/Lib/DecoderLib/CABACReader.cpp delete mode 100644 source/Lib/DecoderLib/CABACReader.h delete mode 100644 source/Lib/DecoderLib/CMakeLists.txt delete mode 100644 source/Lib/DecoderLib/DecCu.cpp delete mode 100644 source/Lib/DecoderLib/DecCu.h delete mode 100644 source/Lib/DecoderLib/DecLib.cpp delete mode 100644 source/Lib/DecoderLib/DecLib.h delete mode 100644 source/Lib/DecoderLib/DecSlice.cpp delete mode 100644 source/Lib/DecoderLib/DecSlice.h delete mode 100644 source/Lib/DecoderLib/NALread.cpp delete mode 100644 source/Lib/DecoderLib/NALread.h delete mode 100644 source/Lib/DecoderLib/SEIread.cpp delete mode 100644 source/Lib/DecoderLib/SEIread.h delete mode 100644 source/Lib/DecoderLib/VLCReader.cpp delete mode 100644 source/Lib/DecoderLib/VLCReader.h delete mode 100644 source/Lib/EncoderLib/AQp.cpp delete mode 100644 source/Lib/EncoderLib/AQp.h delete mode 100644 source/Lib/EncoderLib/Analyze.h delete mode 100644 source/Lib/EncoderLib/AnnexBwrite.h delete mode 100644 source/Lib/EncoderLib/BinEncoder.cpp delete mode 100644 source/Lib/EncoderLib/BinEncoder.h delete mode 100644 source/Lib/EncoderLib/CABACWriter.cpp delete mode 100644 source/Lib/EncoderLib/CABACWriter.h delete mode 100644 source/Lib/EncoderLib/CMakeLists.txt delete mode 100644 source/Lib/EncoderLib/EncAdaptiveLoopFilter.cpp delete mode 100644 source/Lib/EncoderLib/EncAdaptiveLoopFilter.h delete mode 100644 source/Lib/EncoderLib/EncCfg.h delete mode 100644 source/Lib/EncoderLib/EncCfgParam.h delete mode 100644 source/Lib/EncoderLib/EncCu.cpp delete mode 100644 source/Lib/EncoderLib/EncCu.h delete mode 100644 source/Lib/EncoderLib/EncGOP.cpp delete mode 100644 source/Lib/EncoderLib/EncGOP.h delete mode 100644 source/Lib/EncoderLib/EncHRD.cpp delete mode 100644 source/Lib/EncoderLib/EncHRD.h delete mode 100644 source/Lib/EncoderLib/EncLib.cpp delete mode 100644 source/Lib/EncoderLib/EncLib.h delete mode 100644 source/Lib/EncoderLib/EncLibCommon.cpp delete mode 100644 source/Lib/EncoderLib/EncLibCommon.h delete mode 100644 source/Lib/EncoderLib/EncModeCtrl.cpp delete mode 100644 source/Lib/EncoderLib/EncModeCtrl.h delete mode 100644 source/Lib/EncoderLib/EncReshape.cpp delete mode 100644 source/Lib/EncoderLib/EncReshape.h delete mode 100644 source/Lib/EncoderLib/EncSampleAdaptiveOffset.cpp delete mode 100644 source/Lib/EncoderLib/EncSampleAdaptiveOffset.h delete mode 100644 source/Lib/EncoderLib/EncSlice.cpp delete mode 100644 source/Lib/EncoderLib/EncSlice.h delete mode 100644 source/Lib/EncoderLib/EncTemporalFilter.cpp delete mode 100644 source/Lib/EncoderLib/EncTemporalFilter.h delete mode 100644 source/Lib/EncoderLib/InterSearch.cpp delete mode 100644 source/Lib/EncoderLib/InterSearch.h delete mode 100644 source/Lib/EncoderLib/IntraSearch.cpp delete mode 100644 source/Lib/EncoderLib/IntraSearch.h delete mode 100644 source/Lib/EncoderLib/NALwrite.cpp delete mode 100644 source/Lib/EncoderLib/NALwrite.h delete mode 100644 source/Lib/EncoderLib/RateCtrl.cpp delete mode 100644 source/Lib/EncoderLib/RateCtrl.h delete mode 100644 source/Lib/EncoderLib/SEIEncoder.cpp delete mode 100644 source/Lib/EncoderLib/SEIEncoder.h delete mode 100644 source/Lib/EncoderLib/SEIwrite.cpp delete mode 100644 source/Lib/EncoderLib/SEIwrite.h delete mode 100644 source/Lib/EncoderLib/VLCWriter.cpp delete mode 100644 source/Lib/EncoderLib/VLCWriter.h delete mode 100644 source/Lib/EncoderLib/WeightPredAnalysis.cpp delete mode 100644 source/Lib/EncoderLib/WeightPredAnalysis.h delete mode 100644 source/Lib/Utilities/CMakeLists.txt delete mode 100644 source/Lib/Utilities/VideoIOYuv.cpp delete mode 100644 source/Lib/Utilities/VideoIOYuv.h delete mode 100644 source/Lib/Utilities/program_options_lite.cpp delete mode 100644 source/Lib/Utilities/program_options_lite.h delete mode 100644 source/Lib/libmd5/MD5.h delete mode 100644 source/Lib/libmd5/libmd5.cpp delete mode 100644 source/Lib/libmd5/libmd5.h delete mode 100644 source/VisualStudio/common.natvis delete mode 100644 source/VisualStudio/static_vector.natvis rename {source/App/DecoderLib => src}/CMakeLists.txt (100%) rename {source/App/DecoderLib => src}/Logger.cpp (100%) rename {source/App/DecoderLib => src}/Logger.h (100%) rename {source/App/DecoderLib => src}/libVTMDecoder.cpp (100%) rename {source/App/DecoderLib => src}/libVTMDecoder.h (100%) create mode 100644 vtm-cmake.patch diff --git a/CMakeLists.txt b/CMakeLists.txt index 4f779baa..0ab5b393 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,159 +1,110 @@ -# 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() - -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() +target_link_libraries( ${LIB_NAME} CommonLib DecoderLib Utilities ${ADDITIONAL_LIBS} ) -# 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() - -# 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 1ec988f8174ada37cda2c8781b5f80fc430cb93e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17023 zcmeIZgLh?Hx<0&P+h)b8*tRORZCe$yV%xSVcEwJ`w(V3ZmEW%JKKFE=KI8lTfO}WQ z*n6$)^*(dXck+3mAOi-D4uAwe0{{RL01SCpU;qdJ5CZ`KpaGykwMFdhTukj;^i@0^ zOr3QZJZx=<3&26C@&KT~_y6zuU#x+qB)LyPg2)pOw3;&t_Y-MD)Ni9y5f47uU;qMSb}DyQ)fYWX{?nNKY7uClG&C_(3#eLAAU{| z!ww!5wL~bgK^PGq7?0|6xd4z=u%|VUg1ZlMje$1xe&c3xNzkqp%hMLvlOI9)2~z1b@9SlH!3|B21*wk*Y6jEu+>bBjYEx_varmj0J58Q7+dWi125q*H_e58)z3>DpW(Bhza~|?u58|6(>bsmn$#af{>|-lx4er z1v;u9x2j%>YV^O3_b8r6xCidD;wswc%xY!6Rt1!mpg5syLP!nAXXNzg_p1MS;xJVIN+@0iDb9sgV0N&rh01E#xa|z>d zTke3vQ64xk;eaz&-^tX*nUUf5=l{*v|Haev-qo_e(81)xL`>iLxMqQA=^?qS6nGBT@(__|(qZ~~ zzlsDkGFtEh_ptw-BR)K-T%^EX+Q0w+d;m0vyS6({Zrm$eAW%u@C!v!I zQk1Nx(vX_hag3=5)-pQBtuvJ1(U*ZOX7nIiNTl;;OfVVs6$mm7ny^TOJLGtwj{0hg zHuBk=r#d>&x-`eSjx}%_T6D(@o4J_LAAHSycYE}?wSU)N*fz=in00V$;b-D6p)PE_ zFJ#Ra+lBeJ;?@fD!|&@Ew~|O6U%tE$6&{at3AsF=`*Bg`^uq<%d#T^r$(7s)8UZfyjkn{mb+8`>fh@Re?K)1*?jK92rFX2B$G44BI-W`8)olqePAM|`aty@QWh zdA@DDQq$=qmQxO*iVf!*QF@vsBP`}q)9!wU3R~|dcig1zvPC4Z64`z&OC)rUp2$Pv zibs1FncwYs$dg$SExsAEpRPAH-BDh(^t|}7z_;dBYtq5Qg@50nxRJJMcB=^n}07#?6|QJ0jqB%Z|SQ1Q^YpEjIzd6OBhnl|%QnQVG)BA4b6ipnF5XMfIW{sIuWr>|?f`}%k+PaMrTYuFOXf8D> zkIEmj+VQL`1xMhFH04#Bbfnsnaw(Q~*iNLzYDm!V72=1zAvax2~1Q0QUYuQ2dKBa-!8iSCH8iLB+ zz}MQ5W0bpW9=e;ntkcMxbRb)^36Cv!#?31Uft^a|;s>NhBPWl+5<+DsYxD#5wLvHy z9-(yK;>Fa(k}(Vw=2)Eg&NPiDZ++JqeLT%BEA;lr&KQsG9RLB=hsv~E7}C_h!jU?W zTxPzx{~1}G_&!am4q(mXTRiu`OK(BTsV(a*Lnv6{l8`lB%{n{m#E)kHN4(l_2wBpp z;soM>H{^dd9zIQyv!RH>P4acdfrtNb#|U3c8umQNoO#qldJbc{z~6*A+#EuC%+tBz z_JrV6QfeSirbcF&BWd0YPD08N@U;b18)saQfcoK3dyk0?ZKunTR1wT zUi^L0`;Uc#*2K@oV73StsmSw{d1XOoxs57;pA9`?NscSOWuSf|*Ul@hRNJ-eOYWPMyFh*8$Z&QKb+~7x!ILPH`SXX_#7*li{CHM4aGyAtuG8mLr^mn#iL4ttT@VIP|n!TwNIRh z5hWD|11>Y5VE|)VZfDix=Dg$R>c<;D$PE6Rm-aj|Gfhepj+iFa8B7!TgSoRX0fK_* zXG4v>BtoDEZVB>!eZ@G~m!1O0i2|&0O^)7bko{ubP)0x1*MKI377{VY-9tykJeo@A z{Gzjcyo?8WYlnVkHWOCtUMcw|gi)`E!@9DS?V_~{L>cPoACySB3+~f_J{Lb{GyO^` zZv1_zp>x{~@EJ8`KVDh+aCJ9a)>hjd z(Ibd+%C`1IWu2O)U>@sK|NI*9G+SmKd4VPNkt6sWpj(hQhwF^=0YNp5CKpk)G!v@W zc)@{sW2sL_4(YWi>uK=^Vpopf2>cs{CJSzWWUr@~37#FfhA z+pcgOsi>p_P0p?ajXkk2%{WEdQ6Hb%@yXro(fZYK8$-D&-J#QKd#=tM0lw^C;tRmg zsnXU?A(@x8BEpA9E?TA=3f-;1*lAzkWUgm;fgZLi7cU0j9?@b7JM~0JF}&Vu!k>Jc zQ`beb*rcwa-p!i}9NW$xrfSo@F2jwd(=ay6HXl{q<#dXq&|>a9L{LB18BnS z;2gIB`7rK9RdDafywJGJQOmJ1|6u-P7Z?bXX!d)4`lZ1Pf_w@CE5mJ!v`>xXJD}RC z`_YCj$zL`}REJ0#km2P+TLbsJa}M$wjxh<4>0)PgVk~IvHQ=30``Dm&l$d@(6K@bD3aiV#f%-W*O{5cWGpy%6Lm7tY*+eEo2y#k5K(!FTJ~ zk@FgmF+bRxp3PDzBq=33-y!mlN z@UE@{&CSNXdUSr{Q`tZp$0G^FXI`sa>z#F$G$RqlOKv0dP+rn00g?g-|9Dw{;{pl0 zL5+^9-LL2qTyz^pD6WGX78H-EYkWgpy|qiOosp?FYo6UoPF#xh>6XLj)?7p z9ONoH(9DQn8tq_24%kNX>0Jk@^Y6i3)c7-tPr@6jo8@8L?lAzoEc6N+`7;{oXGd|L zbvLKY=8KsKC~1Bzcm$Z7CzLIv`uUxrr4lz+mMQLW@BM)K?wqs2!g4f#olYKEN2WT6jjaE3l| z#=yw;2*3KT!|S!NW+5NT5gHjz;%Ih& zQ6U9V-6Pe9mBn1U?yC>iyqp8bneJ@r{mGiqj+3<-s5q=kdvok6gadMWt%p9wlo>j+ zF>+Wox$3mo_Ru(%cXUH4r6+FD6vAJIFpF#t{Y27#|n#a*Tg z6Dfzu_cL3jY^_-ZjCI)>4ytVYMiZu)o{n+g_|67`v1)#z3R;h%J7 zcowVMtRJ$hTt?|BWgfhWzdZ@$*C2ES3Iu7%7Ctc-w5Gy z!(4=!a1-%;5j605Ni9d6?s&3yR=W#I>^=<^5qRBsgy<|Bxp{LTSM4rbCavRBs#Es0 z2pWiK;SBb_lK-+@@B?ai9x1(g$*fEgpXs_Rmk@`2fg<=|NZ|GQ`|H}xmK&elk@b(0 zM5)XpLeeZhtH%Ks-t)%1;RUr{}0LP zblUd>$h@FC5=(JLm7mfw>w9}&DEqDgXYi-)NufX z^z;#RL~(ephOQThun*J^n}cGQ)-MkOAl`TLxv0GbpS$DEZc?|Y6oC07r(NuaN7{f)YeHTB@AllC9p3?R`Zji zzU;le6B3nIE?o}86QGh%e_GXhbD9((zws1Ith?ACd}OTll%&Z5PrC_j>Y|R{Y>s}~ z>WExY6*USp@FiVxT#HJQUP?_VLK@J}JEWE}u$vJ3g3%f2K#lwieLQ4i*`}tg8~IU= zH)$JtWD_^G{L_p=;yt_5E+1rVM1ohZxlx`Jnt4bcB$R7(obrk(D1p)9qyMMg*wFp% zTjT+yKGC(x^xT#vM^~6y^C;kv_-j**z28c^jgUi~jYp(|3RCqHUNx;YgfEzZ72(p^ zLwlE(&@`a#DyT#)g?Uo^bM@w^Ws2aVV~$(PVilW?PsFdWtchy*((g8=4H^ZICPaA7 z&&{h=#?C8!cyWUqN7vC)W-T43+Xy4O>POdawABltQ5<>Uv-<{!)dZ_o=JRkPX^j`s z&$zuyRyaPPffiH+GL6`GqV$o?*jsxANB{&Ajal$=OX;EIFsjR44|1wS_-pRIVjQ0R z@ivl4I4S)ZmF6xaWq6#Ag-@q1PqjG$V#7!|1Om?|&pQKqPy$-QQx&#Z!3V00J#XjJ z!$gGwIevGyvseornnUkD1}J-e{`6!+o-?PIiek+D`FK7WRm=bO)**p$Ef*kR`W!bT zT9CO9eQ}44&Z6e{fs)Lz8)E?a`)%YTc@k$|h7818P9*;QB(+((J3bfpx8`jEkb^>4 z4_~Kg6c6Nxhysi(_kv}ROQ$Jr9ThD@i94EfPfn?Rt3xBDp$lUljlqs6wBepEDOgt) zBpHbtJ5l_PPuTM4h*HAnbIw2g<6ti?l}?vkQ-1`?@T(m&h!M!r$}ty_QD&G$eYJ%5 zOIJIA|K(=W=ndt{Svltwh2JhY0y{wyOoV!vcEg=Rg|8luznhkf;0IP&COy)p@@%T} ziRRix5?i9nUsALAFa_W%Bfr(BP*1bbJzi2Dg&s+$GTRxz#YoojEX2|8s1-smLr!BX z5C?@^fPLYp3bA!y7kcb|4JMD-{)+e^rsGpBWQ*l-I4c}79}5abcc*+ST2Bx)p0SZM z0=jFd+A!-&NB<<1irx6mE-XjV7?!?3P28(3{Yqw?x9Y*fV}x)Qw0i@udmHrentpc6 zHTeoz9P*v^e8=w38cy%`m)%aPT*hwl=?W%vi;bvd@wKLnoBkSaSsc7FYBG)@%gzty zd_qK!58TeX_u zqfDZUg=yzEu-9`X1&zWj7}V8Ku(CmGk<{JNWWBIibDkTBgW9^E6|U0{!C{?{;_UdF z@XvWozn0l$B@K^dk!m5~!T;Fyh+L3f*UC7@bKr?e96QH_TRzzIMq@lc;k`pu;7O06 zqo$;knNeJ`W=qW^ymefC9CDBk9p;3nmD!Lm!t6IqtPMtZRZd(nd6~$p*7?W*bL#M5 zc)?#%{d(Ulo8-mPqC zlp$Mndt{?6_9+O*7VSg9t&dn9-u5G?$onMtLB~BUGEaZoPF{OWwr!A0ru{ZLt#8F~ zVh-B;K&{jwXB5*8R*59YlQsgXU3JVZiKmB#;($>y*$Ml7T4nYXW}UwZd=-pe2LbMj zOGy(SgUYvj*kY82S5RCiWgcR!Z9l9MlCtf<)t^}V3hymk=9Xzqp&~`Ar6j26k7O7y z!jE}$>Bl@F8hmRVbW$lO%qXg;>LqIDC|u+=W!Bpjn`?aNLS>m&3CSQqJUE{(y;Fn= z6*#yKe4J@C>z`KfpG$d&GAHtqw8P{?64!c=>n)JXIx2MSQ;xjtHBtCJS~uc)ssS43 z)Mm!!ezA#h9;sQ=E@lmlPwH@9?{*F`X|Re?ual6xK|Ko4_?Y#$9V57oJmr5SefG$Y z5Ly;g(Qk-`nuC}_jLCCs2x3oTrM6zJa-CBf=QxAAbb;%p{8IgaC#q-K^1Oh{d4;RZ zBYtR#?tFPQhMtwpf&N)XYTxaTWeC2vEO4y?#4R)%;ZvI zEakSV65SZS*S;aPPG50e%pr}tCi)C2rFrw~2cpzREsjltS+P$ghi}hjLmXE*TzCY6 zcr=5gqYQH<-~}lN7#(7_CyspG^5R3Nv&a+>bO~f>`x_Ur0_!dzAl8Z#UuJ@tAZoEj zH?>q{DM~iMC=Z2ckVn>~CnE+wb!9pfVtr@3Z}O6IG@*H?4Vq3-;Xmj;5V?kc>KZ2^$258}JHpF~ z+sVk#5wB4hOzbt93C?J!pR?|SSBarg>6Hf1Tc-Pxt6CNd=Y#d79eLu)UdCD>^*_Da zi@NPk-;VdzK8Yr-1~Ooj&#rZ$tI1#<;J$=4J%t-Zi(Rtumgu&EY?!7Y%_9dJrv$7T z`;p-}#J6O0)9kC`?V$T$YB1*Rc}k!jX?}-fa)m7BW7aUf{_qCxUhp!5E8`gHbGU`l zrwwADJ9{UQ^=r5=kPUgwDE$|uc{iH1_(G@^{e$-`v0L}j3OW01Gg_*#@$McYwXKav zhF)#S3msCkgAo{%gjsjD!0@QK=GRXCaZUNFxjXJ2y*7fAOutj}?slz`6|Siz<5$o0 zgG$1q(#1=LyMt33oADEu?Cgieu|xH79xM>G>RJrOb?%?aTbseDVB6tP*PCd1meS&Q zEli40Sjm1`N+>TF+kO6wT&CJ$haULYp=d*kocZxP!x>lzY*rB3_9?dEn+R^+Fuo~~ zYr6wc^ew)E?n2!3POh5Giad?JbxCYySh(;rF|5(O<*q5D-5d*j0PFm!BJJ;;6Gvr0$j(Lqj_ ze$0`8!sbCj0bJsQQ5SLmrtqr*j3xlPF z_8*KJf)1Y~b;xTa^P$Z?p&RILhz~0!g;3tpZhk?8;N9!;57qkFQD8AJ%90by`b73! zhQ%qVnlIipC994*KL*zbrs7pCo60-)sQLUdD*7fWEnCU? z(i7w6?KRTrBhlZ^cz;=Vy<~>uzeK{BM)~Tt!HJfC;&i>?Ul){j{h_ zu&_iD1C)d$IFGm2G3#6Zqt@3o1-)tZ{9<%O(cKa1vxf;2_uWQkk`6i22M#&59g|(cZ2*;Ru%`DVWHY7>-BGx2nQ7v;e z)gbZ5G34u{#7#o?X!plH`xH_nL&$&T5igkn6;{A z)oXneW-89}Z0+fT2z(+eUg7!MZnSZ8U7&^q00`v)0Ng*i(b>h*#?)Ee(#1l|%*@o- zkv;4T%-!=jWW|uV3o%o%_PUvQl3jmaJd` zK+;nT?aV7Ll>-IeTq?CcwLoX<`}uB!PO-?$`Aayv-`gE?)7`$%gcBZJ4!li{dM`<_ zFlu>{#4fM<8kfJG4S)W%mzsLV>J6uP>hDj*_c`LNtz)#|*@sE;4Pnjeq{DWblK0^3 zJbStYtXmI?AFuP;gbf=>LgXjCeCzZa`b7}&^cp9xD+956MJHB&dI^+whoyB=i-?NHAz{nRM>K&moG(TVqi5{o|A7IDPlOJ zh^Ux>h`iDqLON-VRjf>oiIw+0BjHE3X#!8EvGUd)t0s|1HE355I*QO$5!M=ClCzo+ z4!EJ;G4-mY@ez=43VBIIEeNP+&W#T0rj#0OIKKNi+yYA*?Hmw~? zjiav32{-PbyX&nq%}Wc~o-wfNP3V}P4f|(8HY?pPzHWNPb16{2KpKSSj8$)Nz4K^|dJS&ja_RR>%w*`$_qFfHpxKC2sH{HB0z#a-{IHY|`bDHZC zC~SHSVSK$}q;$J7%jNhsZSBDRKtLP@ir`3W-8TG|$Zm!BEVz15Q~gyCT`=!Tze{0^N~u!x-GWT#@V6+A7|ANtW~BH7qm~Ja z3es%CPbpD!I|b`DnkXYvMrVYRqq$#ihGf9X#@76~8Q!|6e6zL^0Aov-Wh^*8Y?*aT zma>NWBGcx0gf$ww>y7Fsicv56t&MT2;+0MW8(vtvcFa%}!tqYpeI=n{9JRqopRtNs zA)y*y<_)AX9TJdALt9zl-m|L%H`w)Yh1r;see8A)VZkdrJR;;nqE0(17hrb)kuc1< z%bEVSFh9okjTrTx(+YZI#U#ckj~UUH;%`6lBfc(WSk~+`M~bZKv7B{z4~pbexf^yv zX`L9Fbp^43PlBJxRUITs8Udf4j=#5E`*OA^?#{1bLBwk1X>^DbY?~FX8C@j7UPRN; zHMl82Sla|FL|fDQS4lnLc_V(4F<3M4r>nM}T)g1@SOq8|Rzi3?iZQ=nyI=10R7qNc z)=Mp#$j_I9=ZTFh*_Arvfg^I4@xc__V9tY3Xi>2MF$qUSZ=TXp9}p zvNBF`-J}CMk@h!G6xf#ooQ8G62)@N}fRyogwglZvY=YBS+s$NYQP_hb^BXzOFA197 zQUElagG_iHrl_X9sSd7pzCztnPXBm%zvAhHRb z=QolGm`CzN^Z!9&531mPYX@}_+X_VpRb&DOKeoStY3 zRRk)O_Mnl??li#_Q7WJ*%|SF889=e;a5*L_I(R$0LLgkA*gtCgKSf>cZy?SQd7{-- zwFx;}r2|{Ec%K(A25er#VW{}+(B$*LXr{l>MIQI>61tR0R3@E)?SxXTV+9H^>2W7= zfIt&*VU7$H0BikkirEJr7!?0;BcN9*qEvlA+Y4pOn}KGLiB#L_kI{qbZ}M3 z^|wa6ONGmR*L4xG!oaeE%;2{gh~X!ufc5B?hynELn(USQi7&r-LHria0WzL}$6A{5 z8&VDlx9lI9u|wWk>3=HNpH`L#CC>9RkNdnJ2#JrEB?_Se>1S-6BB)Mc{mxxPW?+{O zQ9#05Mxp2QYk!9SJO>*z7#@Rez<-Z&!~Qv0z8uAnnP*1I;e9yyPLsWN{?JhJ;sPpKF#^TufhD^;EX=y6=y`;BtD zhXouDYz<3As3WhKXYt&g@U5sEMc4x)T!RUDe$Fnd9=*K^s%N*pNV%@UAYHL7UQE*A zo_%we)o4ko{QSZ8c91f+EhX_}WfE%rU^y{N2ky=0Io|jq-7iGwulk#k#xl`fS9kGB zg@iEy2Nt*S^{nhe304T_lqo~O8mo+P4%DA@JfcbRdO0q3LJ-IVd_A%^JBf7l;G#16 zW$fw;&YV|~WjPl=rcn$TWJrGV3$&bbXPT@jO%++dae-GaFHyyi6))*0cz8l8ek8sj zarEH7zl-!|C6`{PDelP|G^@5+WxaPXU%2hM2GwG>=F+b$xz-7qJ4!uz#Fi)#5Qb`3V5Yj$}lp|AHC89sM}X)^BB zzs$x}i=9FV6_Vs^(G;Zcjz2H*3iLfv6aq9B8<=mEunqODELwCMMA>9;cK6}1j&gA8 z1=X=)#v$f0NGxJMAh{M#wqFd^^~e}nViw?5VfuIvDzW)3$eHh>C#mlA4*B}4u_c=f zjU;ePd{}-TCv83>5jI)Z=GIVSqJWC^cB-Rk$1U5lKiz)UG&DMq*Az)x=QS@hbxkS$myK_IbT8C)T-Pt{-;!afdVHI|O~0fSuU3A!nlEaqiI(Ji(Db#ENw zP&b?V<4gGGvm)Hho@rg#=3O6J#O8w5UT2b@n`#XMN{6>md-W9`DZSq*#Bxl(wRya6 z6+zP-AA3%^>6Llq^@)?H6C}L%H{NcZc(4ZDIbJ-IvJNk)c$8?WObz{r2B~>Tzu!cY zxwnq3=Vv)m?Mp9My7zXBOfkMNlsQNxoxu%iqpeSJ3+4)a8uxcv|CQWy+vtsN1ek_6 z8GZ-GdH%O$fJ@YY%n8U7dV#;903+Ohfkz5X_72XB#`aF8|BBxJzpyso$vZef*FKO5 zJLD?$Tp&&_syN)4%zs53okUgPpzRz~!qV`xaZ##Wgc3tqnES_oyyN@WoRl|BzS;KO}aRSbifAZ&y}|FjxAk8X#~47ZHlc{17hHG&Puw@x>+_mi^KFo z^qMQTDVvv%*3=9HV`O33fon}khO(Dv#h|aQDxn2K&EdLR`6}=1q0CeB{GfeKEOz0ne8J#t!HFjj*E7|vefhSQ8ZE0Rr?(T2V=IgA{=O-+p zLYUSG3Q{y*?;dpN1j9)o97&jMxxZ6p64ygT@o~b<=)B+GIpcfkdt`)=rvC_9^4;2# zBE~elWqP=}s?qPd>7p|q4HP5YQGO3G|22K(_j9MTw2|&}gvVh(069-oP$^qpEUqqTOM5ew5 z>qFQ;!GThYK`Fh_sL1S4qWV+gtz=2JWk%3O`ShH6qqAjIm>s5o%w>&xRv0b*SOx?# ze6Qhn78tcZ87d|02dFT#?Wp$W&iK1A_O=;f3qbFf*-iuVUN45hlq?GN*6WaiW4ArmL-v?sbe_^2_0)c_|PD2bu6Y8y~ zmNklTx$}$!n!l8}C@6BGxB}92#=5BJjYfGPm-Uq+VBeMlEAg=qplgqZG8m0Ydm=O` zmN%lF6E?dBmXyqAMQ3%cNG4|-iz|WaJx?{eTsY)EMA+=l@mMz4QZGTD1?3G6A5uA1 zfHDPXX}A^Q`OWk_2$a==+Le33BUfXLQ0c3lCv&}8n6D(Ad8Vg49?jUvjS<(lay&2V z6tszXn@jBC{?m=uU<0z76oRsV4cCLa)6(8sLTHqDnX*`S#;4YgE1CWLVszWIDD)nu z8#m?{iebNqLO7H=z6|v>!=Kqc*Nt_pz$)93EiW^lJfujuQ_=0yS~=qOYS=Z-bQZ}^j@t#vK+ zW62l&;sUY@w4qwmrTE8qqOiTQDpqv|iwDVZ>)lQ_Mltfa0}7f&!9rfyEcLp8yteJm z@MzxzN#N6UjE~om5P*^c_EWZT{emJC`jG<_x{i&DepZlDd{;n_#1u${0RlnYs%14; zT;s9dp}z2o`~(|Lo^)oH*`5=jrWrs9*%ImPReXQa`#4|hu8fKUrjuc`RYC+$Q;iTq z?oR4}Ck(qq#s^XGf;kUNp+n^uV6qeDJ8kR)mVhbx2dubZ;Ri& z1MG$(j}xkl0mwU!j+ejv<{hm}`GKZIG5!nD9%%mUC_tw1|AQXa$cvrV0DSox1U)D-~FwV>oPoGlU>Px-05+51AZu-%nl#-SK)v57&0N|998T^JICO5MNqV14L0Cs4cV3hv{zZvVwEbbDh zyMrnOapm#fkSS1LDnPx*HL{Of+3a{L-X4{M!NHVm;h^iY#esyS5G#T-2j#vblq#4E zX7(Uj!f1FL`&;BgEeyhu5b~{tZIHnUjVSE!!b14Xy#?x@B*CJHCxRt|yZ7jN5vhR4 zRud^%J&og)5z?f>8G0tr;RiY%GFnruXkzK7$XF{7lb^M_z#ylLYzPX)F`UI`n`R^N zhKs4TFlK&yMh`Z2>_8jP?&x5YRhj{@p zaS&N-<<&BXH^|Z+XnY2jVOWKCzlu+5qPhsV^go09;1_nbhS1c)*D@U3Q+2&P^wzbc zBoL z7ywdJB=LG&oU;7&)VVWEc6l*DmW(!C9JU^hIl7(V`@WUW>{7DOuthS1)`Cd`4Mt7b zJAZP96sq8^0m%HFw6GRxF~btG{)|z*8k?<_ReRj@Lsk)4t1nny&RRK>KLvKrhqJ?m zn3LYL`l%Cx(5Gt@vBw{P{3Z>0G3A?%&%t$(NAY9E*W+@e-)WLs3ysRFM|RVxl^xy_ zBxY;j8}%3#A0^1Tlgf$U5q^01Ri)#J;WTi`BB1g{WU># zwzumH(6!p~p^;f;qt3qX*B0i9DiXY6r#pPzYTq&_?>SYk*Y{=#?q7u_xi2KdfTQBhMGcke#Xuvk_KcEYy)^9)PhO$VR1nCDn^qh2}p#t35xnFQ<&P@_iDaFNMu6o%FL&s-WQ3$H) z_{?v{EfR1P`E0B2e5&Jhb5l(|29Ez2a|+r`ux@^&!Q{3h7{RypuCeZi{c5!IOqi1} z8OD(x6lBo`g;NqmH;TX^O%y|O4@-=}jUnni|Fm9dn5P2TJlK!8SVi#}JIAP*RBF^( zso=UbD+x4Anv&>hf)XMzC`c^V<3mpre_7u2GR9F6H8&-BPI7$QTe9!tG>)ABu~Ho# zxnndhB=cQV`13IyjGkbTN7m!8TuSR$?b>bYJ5PMabOd?sT?AcQpT#wjBs@53M8JsY z$}?`ncbhsVqdR$03J|o1Y@0760fWF0s=w)Sf0)alH(-~81G^mg-^r$-gTw!EO`yvD zb!92{*{w0bcOfkcV0Tl>&$*0%iVemUjQHCkAh+;YGZVlieh@MWEYTMjv(qs>E9Z`n z{q`O0<(plOb~ZsDl<6c*ZVaU-r1+|I`Www>sw?p*UN|b*4^3=!W1o<3@qWFat$CgG z76!(lguqmG3b~9IKsN-a1%FINP_;VK4oLdpYj~z5)!KYJ6WC|Op6)}vjnk*15WOy# z_Vi_(%rB{_f%z0J_Fy#LU`pB|8x#7cdQ#zV@?Z)E*qC&baB2kvKZ%Frvf4SxH4g0$ ze?Cop2)~Eq_8)Q8csn7Y8N|7hwOCb>fX7L$>LNj0hWGNKmcGTb4R_-aQV`lXO!2~% z0A7!fQYvz}6(rLF^uX8fCeQk(ezpL8i2#uyHzf;=?*I>a7l2wPhz%GigF7ucwV8wt zp-{ntrUGNrre@9?Cdlrx+KZyc2l%;XBkf$5dN&Y0MhvUn60KZ!!_|}_tEp05Fo@LX z_`D^-5E<7Egq`k^mK`3W((+|_5k|K7#NYvf_qrO}vtX_p9!A8HdbVeqBwIn8S`(Jl zxM6+qEjhsusG_5swLSh{!BFa}YsZyKLi&LbTsi3MJd`FnJ4SxVtK`)61Z^-htFP(T z2nKjskxMsf4QVSPu9q)8$k9*BpRM?_V<}y@OS3;Vj9;%k>jOLgpQ|JYC_T_;`}Z04 ze+-d7zW*lQUP0zR0sb@5_Yc9}-|fJVkbg`2{j1=AWKqB4GZ6C?WX6nDB3|@xO}y)t&yQcpAyS z#Q)-4|0}{@J-L4(=#%|Xfxq+X{uSpx4R(K`08M!G0Kk8l@BT~tFJ_cK0W6vRqZ+^0 z>|5g4!*Z)7IfmR*ff2;eyb^`?&2;eXS0N{atFu;*&An^O? F{{gWtylMad diff --git a/doc/DTrace for NextSoftware.pdf b/doc/DTrace for NextSoftware.pdf deleted file mode 100644 index 4b2a0fe813ab0c918eead3ceb79e54744a18dac3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 310980 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