8 How MXE builds its package
Timothy Gu edited this page 2014-02-20 16:30:06 -08:00

MXE is a set of Makefiles that is used to mimic a mini Linux distribution.

Building packages

When a person runs make or gmake, MXE does the following things:

  1. It checks whether the requirements are met. If successful, it touches a file in usr/installed to prevent MXE from chacking that every time you run (g)make.
  2. It parses index.html to get a list of available packages.
  3. It includes all the Makefiles in src/.
  4. It solves dependency of packages to find the deepest depended package.
  5. It starts building the most deeply dependended package.
  6. It downloads the $($(PKG)_FILE) and checks it against $($(PKG)_CHECKSUM). The activities are logged in log/$(PKG)-download. If $($(PKG)_FILE) already exists in pkg/, it will directly check the SHA-1, and, if they don't match, delete the current copy and download it.
  7. From this point on, all activities are logged in log/$(PKG), or, if that causes confusion, log/$(PKG)-$(TARGET).
  8. It extracts the tarball or zip file using the appropriate command.
  9. It applies any patch that matches src/$(PKG)-*.patch.
  10. It calls macro specified in the package Makefile.
    1. If $(PKG)_BUILD_$(TARGET) macro exists, then it will call that macro.
    2. If it doesn't, then it calls $(PKG)_BUILD macro to build the package.
    3. Sometimes, it will also build a test program to make sure that the library works.
  11. It touches an empty file in usr/$(TARGET)/installed/ with the name of the package, signifying that the package is built successfully.
  12. It continues to build the next package (goto 6).