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

Reply via email to