Hello,
Please review this one. I missed a few updates to the dir changes in edk2/master near the bottom. I have looked through all the feedback from the mail threads below and updated this RFC to V3. http://thread.gmane.org/gmane.comp.bios.edk2.devel/12364 http://thread.gmane.org/gmane.comp.bios.edk2.devel/12754 Please let me know if I missed any feedback and if there is new feedback on this revised proposal for the directory structure or the directory names. I have setup a branch with this directory structure in this proposal to help with the review. I have verified that I can build some platforms in this branch using the PACKAGES_PATH settings shown below. https://github.com/mdkinney/edk2/tree/NewDirStruct_V3 ============== Updates in V3: ============== * IntelFspPkg -> Silicon/Intel * IntelFspWrapperPkg -> Silicon/Intel * IntelFsp2Pkg -> Silicon/Intel * IntelFsp2WrapperPkg -> Silicon/Intel * CorebootModulePkg -> Driver * EmulatorPkg -> Platform/Common * Nt32Pkg -> Platform/Common Merge into EmulatorPkg in future * UnixPkg -> Deprecated Next step is a request to delete * BeagleBoardPkg -> Platform/BeagleBoard * Omap35xxPkg -> Silicon/TexasInstruments * IntelSiliconPkg -> Silicon/Intel ============== ============== Updates in V2: ============== * IntelFrameworkModulePkg -> Deprecated * IntelFrameworkPkg -> Deprecated * IntelFspPkg -> Deprecated * IntelFspWrapperPkg -> Deprecated * PerformancePkg -> Deprecated * CorebootPayloadPkg -> Platform * EmbeddedPkg -> Driver * ArmPlatformPkg/ArmJunoPkg -> Silicon/Arm/ArmJunoPkg * ArmPlatformPkg/ArmVExpressPkg -> Silicon/Arm/ ArmVExpressPkg * Change Drivers to Driver so no top level directories are plural. * Remove Vendor directory from Silicon and Platform to reduce directory depth * Add Platform/Common directory for non-vendor specific platform packages * Add Silicon/Common directory for non-vendor specific packages of CPU/Chipset/SoC drivers * Keep Vendor directory in Driver. Non-vendor specific packages of drivers are flat just below Driver. Provides area to migrate non-vendor specific drivers from Core over time ============== <proposal> # EDK II - Proposal to organize packages into directories There have been some discussions about organizing packages into directories. Below is a proposal for a top level directory structure and a mapping of the packages from edk2/master. Where applicable, vendor specific directories can be added. The PACKAGES_PATH feature documented in the link below is used to support this proposed directory structure with no source file changes. An example of setting PACKAGES_PATH in a windows environment is also shown below and I have verified that platforms can be built using this proposal. https://github.com/tianocore/tianocore.github.io/wiki/Multiple_Workspace # Top Level Directory Structure (Listed Alphabetically) ``` edk2 Application Applications and application support libraries BaseTools EDK II build tools/scripts Conf EDK II build configuration files Core Platform agnostic packages for core FW services Deprecated Packages that may be removed from edk2/master Driver EDK II Drivers (no platform assumptions) <Package1> Non-Vendor specific EDK II drivers <Package2> Non-Vendor specific EDK II drivers . . . Vendor Vendor specific EDK II drivers <VendorA> <VendorB> Platform Platforms used to validate edk2/master features Arm ARM specific platform packages BeagleBoard Beagle Board specific platform packages Common Non-vendor specific platform packages Intel Intel specific platform packages <VendorM> <VendorM> specific platform packages <VendorN> <VendorN> specific platform packages Silicon CPU/Chipset/SoC packages Arm Arm specific CPU/Chipset/SoC drivers Common Non-vendor specific CPU/Chipset/SoC drivers Intel Intel specific CPU/Chipset/SoC drivers TexasInstruments Texas Instruments specific <VendorX> <VendorX> specific CPU/Chipset/SoC drivers <VendorY> <VendorY> specific CPU/Chipset/SoC drivers ``` # Mapping packages from edk2/master into proposed directory structure ``` edk2 Application AppPkg ShellPkg StdLib StdLibPrivateInternalFiles Core CryptoPkg MdeModulePkg MdePkg SecurityPkg SourceLevelDebugPkg Deprecated EdkCompatibilityPkg EdkShellBinPkg EdkShellPkg FatBinPkg IntelFrameworkModulePkg IntelFrameworkPkg PerformancePkg ShellBinPkg UnixPkg Driver CorebootModulePkg EmbeddedPkg FatPkg NetworkPkg OptionRomPkg Vendor Platform Arm ArmPlatformPkg ArmVirtPkg BeagleBoard BeagleBoardPkg Common CorebootPayloadPkg DuetPkg EmulatorPkg Nt32Pkg OvmfPkg Intel QuarkPlatformPkg Vlv2TbltDevicePkg Silicon Arm ArmPkg ArmJunoPkg ArmVExpressPkg Common PcAtChipsetPkg UefiCpuPkg Intel IntelFsp2Pkg IntelFsp2WrapperPkg IntelFspPkg IntelFspWrapperPkg IntelSiliconPkg QuarkSocPkg Vlv2DeviceRefCodePkg TexasInstruments Omap35xxPkg ``` # Setting PACKAGES_PATH to support builds using proposed directory structure ``` set PACKAGES_PATH=%PACKAGES_PATH%;%WORKSPACE%\edk2\Core set PACKAGES_PATH=%PACKAGES_PATH%;%WORKSPACE%\edk2\Driver set PACKAGES_PATH=%PACKAGES_PATH%;%WORKSPACE%\edk2\Silicon\Arm set PACKAGES_PATH=%PACKAGES_PATH%;%WORKSPACE%\edk2\Silicon\Common set PACKAGES_PATH=%PACKAGES_PATH%;%WORKSPACE%\edk2\Silicon\Intel set PACKAGES_PATH=%PACKAGES_PATH%;%WORKSPACE%\edk2\Silicon\TexasIntruments set PACKAGES_PATH=%PACKAGES_PATH%;%WORKSPACE%\edk2\Platform\Arm set PACKAGES_PATH=%PACKAGES_PATH%;%WORKSPACE%\edk2\Platform\BeagleBoard set PACKAGES_PATH=%PACKAGES_PATH%;%WORKSPACE%\edk2\Platform\Common set PACKAGES_PATH=%PACKAGES_PATH%;%WORKSPACE%\edk2\Platform\Intel set PACKAGES_PATH=%PACKAGES_PATH%;%WORKSPACE%\edk2\Application set PACKAGES_PATH=%PACKAGES_PATH%;%WORKSPACE%\edk2\Deprecated set PACKAGES_PATH=%PACKAGES_PATH%;%WORKSPACE%\edk2 ``` </proposal> Best regards, Mike _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel