tree: b60c4a2ca0e095c5c771853409818a6f920054b4 [path history] [tgz]
  1. testdata/
  2. BUILD.gn
  3. compiler.py
  4. compiler_test.py
  5. config.py
  6. graph.py
  7. modularize.py
  8. modulemap.py
  9. modulemap_test.py
  10. no_modules.cc
  11. no_modules_compile_command.sh
  12. OWNERS
  13. platforms.py
  14. README.md
  15. render.py
build/modules/modularize/README.md

What is modularize

Modularize is a tool named after clang's modularize tool to allow you to modularize a platform.

How do I use it?

If you want to create a new platform, you will want to do the following. If you want to update an existing platform, you can either follow the instructions below, or replace the -C <directory> with --all to update all platforms (strongly recommended to do this at least once before submitting).

  1. Create a gn output directory for said platform with the following values set:
    • target_os = "<platform's os>"
    • target_cpu = "<platform's cpu>"
    • use_clang_modules = true (required because of libcxx's generated directories)
  2. Run modularize.py -C out/<directory> --cache (--cache is strongly recommended, --no-cache should only be used if you've modified compiler.py or modulemap.py. Caching reduces the runtime from minutes to ~1 second).
  3. Check if it works (don't forget to set use_autogenerated_modules = true in your args.gn)
  4. If it doesn't work, you can modify config.py to add any customization, then go back to step 2.

For example, if you want to create a linux-arm64 configuration, you would create or reuse an output directory with the following args.gn:

target_os = "linux"
target_cpu = "arm64"
use_clang_modules = true