README revision 1422
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinThis is documentation of the Makefile system used in this tree.
c92c50783e4e93699f2a42643b8f200b9b719c87Automatic Updater
75c0816e8295e180f4bc7f10db3d0d880383bc1cMark AndrewsGeneral Overview:
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein-----------------
4a14ce5ba00ab7bc55c99ffdcf59c7a4ab902721Automatic UpdaterThis tree builds hundreds of open source modules that are each released
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinseparately and delivered as source in separate tarballs. These modules
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinare organized in subdirectories based on the X.Org module list, though
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinmodules from other sources are included as appropriate. For instance,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinthe application xterm is built in open-src/app/xterm, while the fontconfig
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinlibrary is in open-src/lib/fontconfig.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinIn this tree, the term "module" is used for a specific set of source built
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeingenerally from a single tarball from upstream, such as xterm or fontconfig.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinThe directories grouping these together are referred to as "module type"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeindirectories - app, lib, font, etc. Each module is thus found in a
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinsubdirectory of the form open-src/<module type>/<module> . Various flags
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox Usercan be set at either the individual module level or for all modules of a
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinmodule type.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinFor each module, at build time the tarball is unpacked to a directory named
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein"unpacked-src", patches applied for post-release bug fixes or customizations,
e21a2904f02a03fa06b6db04d348f65fe9c67b2bMark Andrewsand then the build is run. Since those subdirectories can be competely
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinrecreated from the source tarball and patches, rebuilding the tree or running
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein"make clobber" simply removes them entirely and recreates them.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinTo allow building both 32-bit and 64-bit versions in the same build,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinand building both sparc and x86 versions in the same tree, the objects are
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinthen built in subdirectories named build-amd64, build-i386, build-sparc,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinand build-sparcv9 in each modules' directory. "make clean" or "make clobber"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinsimply removes these build directories entirely, and lets the next build
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinrecreate them as needed.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinNote that some modules, especially the fonts, use different build-* patterns
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinfor the variants they build, and thus trying to have both sparc & x86
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinplatforms building in the same directory at the same time will likely fail
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinas they stomp on each other in those directories. Running one build then
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinthe other should work.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinYou should be able to run make commands in any module directory or
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinmodule-type directory, though since most of the intermodule dependencies
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinare not declared, many modules will break unless you've done a full-tree
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinbuild at some point to populate the proto area with the bits needed.
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User
c92c50783e4e93699f2a42643b8f200b9b719c87Automatic Updater
75c0816e8295e180f4bc7f10db3d0d880383bc1cMark Andrews=============================================================================
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinMake targets you can build in each module:
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein------------------------------------------
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinFor most of these you can append _32 or _64 to do just the 32-bit or 64-bit
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinversions of the targets, while the version listed here repeats for all build
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeintypes set in the BUILD_TYPES variable. These are defined in the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinopen-src/common/Makefile.inc file, though open-src/<module type>/Makefile.inc
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox Usermay add additional rules needed for modules of that type.
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox Usermake clean
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User Completely removes build-* directories.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox Usermake clobber
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User Completely removes build-* & unpacked-src directories.
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox Usermake source
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User Creates unpacked-src directories by unpacking sources from tarball
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User and applying patches.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinmake configure
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews Runs GNU autoconf script or similar configuration steps if
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein needed, including autoreconf or delibtoolize if variables are set.
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User (Runs make source first if needed, and creates build-* directory
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User if needed.)
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox Usermake build
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User Compile the software into the binaries that get installed.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein (Runs make configure first if needed.)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinmake install
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Install files into the proto area where make_release_packages
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein will pull them from to make packages and where other parts of
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User the build will use them. (Runs make build first if needed.)
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinmake all (or just "make" with no arguments)
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User equivalent to make build for most modules
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinmake debug
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User same as make all, but with compiler optimization flags changed
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User to "-g". (Note that if you haven't done a make clean first,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein doesn't force a recompile, so running make debug in a directory
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein you already built non-debug may not actually build debug versions.)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinmake debug-install
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein same as make install, but with compiler optimization flags changed
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein to "-g". (See warning on make debug about doing a make clean first.)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinmake download
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User If open-src/tarballs does not contain the tarball needed for this
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User module, download it from $(SOURCE_URL). (See "Building from git"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein section below if MODULE_VERSION=git.)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox Usermake regen-patches
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User Create a directory new/ containing patches generated against the
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User current tarball. Useful when updating to a new version and patches
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User still apply, but you want to get rid of warnings about patch fuzz
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User and line offsets.
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinmake git-update
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User See "Building from git" section below.
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinmake manifest
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Run the make install rules with DESTDIR set to a temporary directory,
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User and then generate a pkg manifest in pkg/manifests/$(MODULE_PKGNAME).mf
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User that includes all the installed files. If a manifest already exists
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User there, this merges changes with the existing manifest so that you can
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater update when upgrading to a new upstream release.
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater=============================================================================
dba3c818ae00b10388d31703e86a28415db398acTinderbox User
dba3c818ae00b10388d31703e86a28415db398acTinderbox UserMake targets you can build in parent directories:
dba3c818ae00b10388d31703e86a28415db398acTinderbox User-------------------------------------------------
dba3c818ae00b10388d31703e86a28415db398acTinderbox User
dba3c818ae00b10388d31703e86a28415db398acTinderbox UserIn the top-level open-src directory, or any of the module type directories,
dba3c818ae00b10388d31703e86a28415db398acTinderbox Useryou can run these make commands to run the appropriate targets for all modules
dba3c818ae00b10388d31703e86a28415db398acTinderbox Userin that directory. The Makefiles at each level all include the same rules
dba3c818ae00b10388d31703e86a28415db398acTinderbox Userfrom open-src/common/Makefile.subdirs to define these.
dba3c818ae00b10388d31703e86a28415db398acTinderbox User
dba3c818ae00b10388d31703e86a28415db398acTinderbox Usermake all
dba3c818ae00b10388d31703e86a28415db398acTinderbox User Run make all in all subdirectories.
dba3c818ae00b10388d31703e86a28415db398acTinderbox User
dba3c818ae00b10388d31703e86a28415db398acTinderbox Usermake clean
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater Run make clean in all subdirectories.
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updatermake clobber
dba3c818ae00b10388d31703e86a28415db398acTinderbox User Run make clobber in all subdirectories.
dba3c818ae00b10388d31703e86a28415db398acTinderbox User
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updatermake World
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater Run make clobber in all subdirectories, then make all in all subdirs.
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater
dba3c818ae00b10388d31703e86a28415db398acTinderbox Usermake install
dba3c818ae00b10388d31703e86a28415db398acTinderbox User Run make install in all subdirectories.
dba3c818ae00b10388d31703e86a28415db398acTinderbox User
dba3c818ae00b10388d31703e86a28415db398acTinderbox Usermake download
dba3c818ae00b10388d31703e86a28415db398acTinderbox User Run make download in all subdirectories.
dba3c818ae00b10388d31703e86a28415db398acTinderbox User
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updatermake source
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User Run make source in all subdirectories.
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox Usermake git-update
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User Run make git-update in all subdirectories.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinmake debug-build
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews Run make debug-build in all subdirectories.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox Usermake debug-install
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Run make debug-install in all subdirectories.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews=============================================================================
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinVariables that can be set in the Makefile for each module:
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein----------------------------------------------------------
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox UserRequired for all modules:
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinMODULE_NAME
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - Name of the module being built - usually the same as the name of the
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User directory it's being built in and the tarball used for the sources.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinMODULE_VERSION
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User - Version of the source to use, used by default in the tarball name and
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein source directory unpacked from it. Also exported to the package
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein attributes as __version:$(MODULE_NAME)__ for use in package manifests.
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User - Special values:
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User "git" - see "Building from git" below
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein "src" - used when there is no upstream tarball, only local sources
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox UserRequired for some modules:
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox UserMODULE_STABILITY
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - Interface Stability to list in attributes section of man page
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User * Required if SUNTOUCHED_MANPAGES is not empty
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox UserLIBNAME
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User - Name of library built in this module
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein * Required for lib modules if SUNTOUCHED_MANPAGES is not empty
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User or if *.spec files are being used to set library versioning information.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinOptional, default is empty:
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinSOURCE_UNCOMPRESS
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - Command to use to uncompress tarball, if not bzcat
a1ad6695ed6f988406cf155aa26376f84f73bcb9Automatic Updater
dba3c818ae00b10388d31703e86a28415db398acTinderbox UserSOURCE_PATCHES
a1ad6695ed6f988406cf155aa26376f84f73bcb9Automatic Updater - Patches to apply to the sources after unpacking the tarball
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater Entries can be either a simple file name or filename,flags
dba3c818ae00b10388d31703e86a28415db398acTinderbox User to specify flags to be passed to gpatch. The flags argument
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater is most commonly used to specify -p1 to ignore the a/ & b/ path
dba3c818ae00b10388d31703e86a28415db398acTinderbox User prefixes in git-generated patch files - if no flags are specified,
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater -p0 is passed to treat paths as relative to the top of $(SOURCE_DIR).
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinADDITIONAL_SOURCE_DIR
dba3c818ae00b10388d31703e86a28415db398acTinderbox User - Directory containing additional source files to be linked into the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein source directory by the default_source rule.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
dba3c818ae00b10388d31703e86a28415db398acTinderbox UserCLONE_SRC
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - If set to "yes", causes the build directory creation to make links for
dba3c818ae00b10388d31703e86a28415db398acTinderbox User all the files in the source directory into each build directory.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinSUNTOUCHED_MANPAGES
dba3c818ae00b10388d31703e86a28415db398acTinderbox User - Man pages to add Solaris attributes section and other common Solaris
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein man page conventions to, via the open-src/common/suntouch-manpages.pl
dba3c818ae00b10388d31703e86a28415db398acTinderbox User script.
dba3c818ae00b10388d31703e86a28415db398acTinderbox User
dba3c818ae00b10388d31703e86a28415db398acTinderbox UserMODULE_SUNTOUCH_MAN_FLAGS
7208386cd37a2092c70eddf80cf29519b16c4c80Mark Andrews - Additional flags to pass to open-src/common/suntouch-manpages.pl, such as
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein -p /usr/bin to add a path of /usr/bin to the command in the synopsis.
507151045be68c671ffd4e2f37e17cdfa0376fc4Automatic Updater Available flags are:
507151045be68c671ffd4e2f37e17cdfa0376fc4Automatic Updater -a '{attribute, value}, ...' - entries for Attributes section table
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein -l libname - add library line to synopsis
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews -p path - add path to command in synopsis
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinMODULE_ARC_CASES
dba3c818ae00b10388d31703e86a28415db398acTinderbox User - ARC cases that covered this module, both for future reference by engineers
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein and for publication in opensolaris.arc_url metadata attributes in packages.
dba3c818ae00b10388d31703e86a28415db398acTinderbox User Must be in the format "ARC/year/case", such as "PSARC/2004/187".
dba3c818ae00b10388d31703e86a28415db398acTinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinMODULE_DESC
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - description of the module to be used in license notices or package metadata
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein It should be short, specific, concise text, identifying the technology
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein covered by the associated license(s). It should fit naturally in the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein sentence "This package may contain XXX." For example, "XXX" might be
dba3c818ae00b10388d31703e86a28415db398acTinderbox User "the xset command" or "bzip2 compression software." When appropriate,
dba3c818ae00b10388d31703e86a28415db398acTinderbox User this may begin with "portions of" or another, more specific qualifying
dba3c818ae00b10388d31703e86a28415db398acTinderbox User clause.
dba3c818ae00b10388d31703e86a28415db398acTinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinMODULE_LICENSE_DESC
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - description of software covered by a particular license notice, overrides
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein MODULE_DESC if set.
dba3c818ae00b10388d31703e86a28415db398acTinderbox User
71c66a876ecca77923638d3f94cc0783152b2f03Mark AndrewsMODULE_LICENSE_PREPEND, MODULE_LICENSE_APPEND
dba3c818ae00b10388d31703e86a28415db398acTinderbox User - Files to be added to the beginning or end of LICENSE_FILE when generating
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein the license notice placed in the package.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinORACLE_COPYRIGHT_YEARS
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - If an Oracle copyright notice should be added to a package to reflect
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Oracle's modifications, then this should be the year string to include,
dba3c818ae00b10388d31703e86a28415db398acTinderbox User usually in the form "first, last", as in "1970, 2038". May be a single
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater year if modifications were all made in the same year.
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic UpdaterORACLE_TPNO
dba3c818ae00b10388d31703e86a28415db398acTinderbox User - Third party license tracking number from Oracle's licensing database.
dba3c818ae00b10388d31703e86a28415db398acTinderbox User
dba3c818ae00b10388d31703e86a28415db398acTinderbox UserFIX_PC_FILES
dba3c818ae00b10388d31703e86a28415db398acTinderbox User - Names of pkgconfig .pc or .pc.in files in the module, which will be
dba3c818ae00b10388d31703e86a28415db398acTinderbox User "fixed" to add required -R flags for linking libraries with and remove
dba3c818ae00b10388d31703e86a28415db398acTinderbox User unnecessary Requires.privates lines from.
dba3c818ae00b10388d31703e86a28415db398acTinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinMODULE_SOURCE_DEPS, MODULE_CONFIGURE_DEPS,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinMODULE_BUILD_DEPS, MODULE_INSTALL_DEPS
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews - Makefile targets/rules that the default_* rules list as dependencies
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark AndrewsMODULE_ADD_SOURCE_TARGETS, MODULE_ADD_CONFIGURE_TARGETS,
71c66a876ecca77923638d3f94cc0783152b2f03Mark AndrewsMODULE_ADD_BUILD_TARGETS, MODULE_ADD_INSTALL_TARGETS
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews - Additional targets/rules run by "make source", "make configure", etc.
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews in addition to default_* if *_TARGETS is not overridden. Run for each
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews build type.
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark AndrewsMODULE_CONFIG_OPTS
922312472e2e05ebc64993d465999c5351b83036Automatic Updater - Additional arguments passed to configure script by default_config rule
922312472e2e05ebc64993d465999c5351b83036Automatic Updater
922312472e2e05ebc64993d465999c5351b83036Automatic UpdaterMODULE_CONFIG_ENV
28b3569d6248168e6c00caab951521cc8141a49dAutomatic Updater - Additional environment variables passed to configure script
28b3569d6248168e6c00caab951521cc8141a49dAutomatic Updater by default_config rule
28b3569d6248168e6c00caab951521cc8141a49dAutomatic Updater
71c66a876ecca77923638d3f94cc0783152b2f03Mark AndrewsMODULE_CFLAGS
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews - C Compiler flags passed to configure via CFLAGS variable by
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews default_config rule.
2cbb4ab75757fbb656997a82c14ca07db37d481aAutomatic Updater
2cbb4ab75757fbb656997a82c14ca07db37d481aAutomatic UpdaterMODULE_CXXFLAGS
2cbb4ab75757fbb656997a82c14ca07db37d481aAutomatic Updater - C++ Compiler flags passed to configure via CXXFLAGS variable by
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updater default_config rule.
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updater
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic UpdaterMODULE_CPPFLAGS
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews - C preprocessor flags (-I & -D) passed to configure via CPPFLAGS
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews variable by default_config rule.
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews
71c66a876ecca77923638d3f94cc0783152b2f03Mark AndrewsMODULE_DEBUG_FLAGS
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews - C Compiler flags passed to configure via CFLAGS variable by
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews default_config rule when building debug versions (such as via "make debug")
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark AndrewsMODULE_LDFLAGS
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews - Linker flags passed to configure via LDFLAGS variable by default_config
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews rule.
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark AndrewsUSE_DEFAULT_CONFIG_CPPFLAGS
e2e4d321999340802f77adaacd19c797d04b4b95Automatic Updater - If set to "no", don't pass the normal set of -I flags in CPPFLAGS
e2e4d321999340802f77adaacd19c797d04b4b95Automatic Updater to configure script in default_config rule. MODULE_CPPFLAGS and
e2e4d321999340802f77adaacd19c797d04b4b95Automatic Updater MODTYPE_CPPFLAGS will still be passed.
0c6ada0a814f3c5417daa1654129bc2af56ed504Automatic Updater
0c6ada0a814f3c5417daa1654129bc2af56ed504Automatic UpdaterUSE_DEFAULT_CONFIG_LDFLAGS
0c6ada0a814f3c5417daa1654129bc2af56ed504Automatic Updater - If set to "no", don't pass the normal set of linker flags in LDFLAGS
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews to configure script in default_config rule. MODULE_LDFLAGS and
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews MODTYPE_LDFLAGS will still be passed.
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews
71c66a876ecca77923638d3f94cc0783152b2f03Mark AndrewsUSE_DEFAULT_CONFIG_ENV
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews - If set to "no", don't pass the normal set of default environment variables
9b469e3c59015b1a4899c9d8395168126fe094fdAutomatic Updater to configure script in default_config rule. MODULE_CONFIG_ENV and
9b469e3c59015b1a4899c9d8395168126fe094fdAutomatic Updater MODTYPE_CONFIG_ENG will still be passed.
9b469e3c59015b1a4899c9d8395168126fe094fdAutomatic Updater
9b469e3c59015b1a4899c9d8395168126fe094fdAutomatic UpdaterAUTORECONF
9b469e3c59015b1a4899c9d8395168126fe094fdAutomatic Updater - If set to "yes", the default_source rule will run autoreconf in the source
9b469e3c59015b1a4899c9d8395168126fe094fdAutomatic Updater directory, to regenerate autoconf/automake/libtool created files after
e2e4d321999340802f77adaacd19c797d04b4b95Automatic Updater patches have been applied to the *.ac/*.am/*.in source files.
e2e4d321999340802f77adaacd19c797d04b4b95Automatic Updater
e2e4d321999340802f77adaacd19c797d04b4b95Automatic UpdaterDELIBTOOLIZE
e2e4d321999340802f77adaacd19c797d04b4b95Automatic Updater - If set to "yes", the default_config rule will run the script
e2e4d321999340802f77adaacd19c797d04b4b95Automatic Updater open-src/common/delibtoolize.pl to remove libtool calls from Makefiles
e2e4d321999340802f77adaacd19c797d04b4b95Automatic Updater after running configure.
e2e4d321999340802f77adaacd19c797d04b4b95Automatic Updater
fdd80e9a55c70b36a3bf3e409b86897301c44ff8Automatic UpdaterMODULE_LD_OPTIONS
fdd80e9a55c70b36a3bf3e409b86897301c44ff8Automatic Updater - Additional options passed via LD_OPTIONS environment variable to
fdd80e9a55c70b36a3bf3e409b86897301c44ff8Automatic Updater force options to be used by ld, regardless of options passed by
e2e4d321999340802f77adaacd19c797d04b4b95Automatic Updater libtool/compiler etc. Used by default_build & default_install rules.
e2e4d321999340802f77adaacd19c797d04b4b95Automatic Updater
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark AndrewsMODULE_BUILD_ENV
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - Additional environment variables passed when calling make
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein by default_build & default_install rules
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinMODULE_MAKEFLAGS
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - Additional command line arguments passed when calling make
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein by default_build & default_install
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinMODULE_BUILD_MAKEFLAGS
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - Additional command line arguments passed when calling make
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein by default_build
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinMODULE_INSTALL_MAKEFLAGS
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - Additional command line arguments passed when calling make
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein by default_install
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinMODULE_X11_BINCOMPAT_LINKS
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinMODULE_X11_LIBCOMPAT_LINKS
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - For binaries previously delivered in /usr/X11/bin or libraries previously
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein delivered in /usr/X11/lib (or their /usr/openwin predecessors), set these
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein to the basenames of files to link from each of those directories to
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein /usr/lib & /usr/bin. For libraries, be sure to include both the .so and
the .so.* names, if both are still delivered.
Optional, with non-empty default:
* Important, for these, to override the default values, you must not only
set the variable, but set another variable <variable>_SET=yes before the
Makefile.inc is included to prevent the default from being set. For
example:
SOURCE_URL=http://fontconfig.org/release/$(SOURCE_TARBALL_NAME)
SOURCE_URL_SET=yes
MODULE_PKGNAME
- IPS/pkg(5) package name that this module is shipped in. Used in
attributes section of man page, when generating manifests, and for
delivering license and other metadata from the build to the package.
Default: $(MODTYPE_PKGHIER)/$(MODULE_NAME), translated to lowercase
MODULE_PKGCLASS
- IPS/pkg(5) package classification that the package should be listed
under in the Package Manager GUI. Must be one of the values defined
by the GUI, which are listed in src/gui/data/opensolaris.org.sections
in the pkg gate. Published in package metadata as the info.classification
tag for the package.
Default: System/X11
UPSTREAM
- Name of the upstream source of this module, or "NONE"
Published in package metadata as the info.upstream tag for the package.
Default: X.Org Foundation
UPSTREAM_URL
- URL of the web site of the upstream source of this module
Published in package metadata as the info.upstream_url tag for the package.
Default: http://www.x.org/
MODULE_COMPILER
- Compiler to use, either "suncc" or "gcc".
Default: $(DEFAULT_COMPILER) setting in common/Makefile.init,
which is set to suncc in the master sources.
MODULE_MAKE
- make command to use, either "$(MAKE)" or "$(GNUMAKE)".
Default: "$(MAKE)" (which is assumed to be Solaris make, not GNU).
MODULE_PREFIX
- Prefix to install files under, passed to configure scripts via --prefix.
Default: $(X11_DIR) (aka /usr).
MODULE_DOC_DIR
- Directory to install documentation under
Default: $(MODTYPE_DOC_DIR) if it is set, otherwise
$(MODULE_PREFIX)/share/doc/$(MODULE_NAME)
SOURCE_DIRNAME
- Directory that will be created when the source tarball is unpacked.
Default: $(MODULE_NAME)-$(MODULE_VERSION)
SOURCE_TARBALL_NAME
- Name of tarball file under open-src/tarballs directory for this module.
Set to "NONE" if there is no upstream tarball.
Default: $(SOURCE_DIRNAME).tar.bz2
SOURCE_TARBALL_DIR
- For X.Org sources, what directory the source tarball & git repo is in
on freedesktop.org - usually the same as the module type directory in
this tree.
Default: $(MODTYPE)
SOURCE_URL
- URL to download the SOURCE_TARBALL from when running "make download"
Published in package metadata as the info.source_url tag for the package.
Default: $(XORG_RELEASES_URL)/$(SOURCE_TARBALL_DIR)/$(SOURCE_TARBALL_NAME)
GIT_URL
- URL to check out the current sources via the git code manager if
MODULE_VERSION is set to "git" - see "Building from git" below
Default: $(XORG_GIT_URL)/$(SOURCE_TARBALL_DIR)/$(MODULE_NAME).git
BUILD_TYPES
- What type of output to build for this module - usually the word-size of
the binaries built (32 and/or 64), but may be set to any string if other
distinctions are useful. For most modules that don't build binaries,
(fonts, proto headers, docs, etc.) it's set to 32 for simplicity.
For each value xx in this list, a build_xx directory will be made and
the source_xx, configure_xx, build_xx and install_xx rules run.
Default: 32
SOURCE_TARGETS, CONFIGURE_TARGETS, BUILD_TARGETS, INSTALL_TARGETS
- Makefile targets/rules to run for "make source", "make configure",
"make build", and "make install"
Defaults: default_source, default_configure, default_build, default_install
The *_TARGETS may be appended to by setting the MODTYPE_ADD_*_TARGETS
and/or MODULE_ADD_*_TARGETS variables.
AUTOCONF_TARGET
- File created by running the default_configure rule. If this file exists,
make will not run the default_configure rule - if it does not exist, it
will be run.
Default: $(SOURCE_DIR)/Makefile
LICENSE_FILE
- File containing copyright & license information for this module.
Will be copied to $(MODULE_PKG_METADATA_DIR) and added as a license
action to the package.
File is looked for first in module directory, if not found there,
in top-level source directory (SOURCE_DIR).
Default: COPYING
MODULE_LICENSE
- Name of the license. See the "license" attribute in pkg(5) for details.
Must be unique for each license aggregated into a package, so if two
upstream modules with different license texts are delivered into the
same package, they cannot both have the license name "MIT License", which
is why our default string includes the package name to disambiguate.
The value "Oracle" is a special case, indicating that Oracle owns all the
IP in a module, and can choose to release under the license terms of its
choice, while others building from this source tree will be using under
the MIT license terms that Oracle has offered the sources under.
The license used in this case depends on the LICENSE_CHOICE setting
in open-src/common/Makefile.options.
Default: MIT License ($(MODULE_NAME))
MODULE_MTLEVEL
- For modules in the lib directory, Multi-thread safety level to list in
attributes section of SUNTOUCHED_MANPAGES
Default: See XInitThreads(3X11)
=============================================================================
Variables that can be set in the Makefile.inc for each module type:
-------------------------------------------------------------------
Some settings are common to most, if not all of the modules of a given
type. For those, these variables can be set in
open-src/<module_type>/Makefile.inc - they have the same meanings and uses
as the MODULE_* versions documented above, and appear in commands before
the MODULE_* versions - the general pattern is
foo=<tree-wide-defaults> $(MODTYPE_foo) $(MODULE_foo)
Required for all module types:
MODTYPE
- Name of the directory for this module type, usually the same as the
directory for the module type in X.Org's source trees.
Optional, default is empty:
- MODTYPE_SUNTOUCH_MAN_FLAGS
- MODTYPE_DESC
- MODTYPE_SOURCE_DEPS
- MODTYPE_CONFIGURE_DEPS
- MODTYPE_BUILD_DEPS
- MODTYPE_INSTALL_DEPS
- MODTYPE_ADD_SOURCE_TARGETS
- MODTYPE_ADD_CONFIGURE_TARGETS
- MODTYPE_ADD_BUILD_TARGETS
- MODTYPE_ADD_INSTALL_TARGETS
- MODTYPE_CONFIG_OPTS
- MODTYPE_CONFIG_ENV
- MODTYPE_CFLAGS
- MODTYPE_CXXFLAGS
- MODTYPE_CPPFLAGS
- MODTYPE_DEBUG_FLAGS
- MODTYPE_LDFLAGS
- MODTYPE_LD_OPTIONS
- MODTYPE_BUILD_ENV
- MODTYPE_MAKEFLAGS
- MODTYPE_BUILD_MAKEFLAGS
- MODTYPE_INSTALL_MAKEFLAGS
Optional, with non-empty default:
[See note in module variable section about setting _SET variables to override]
- MODTYPE_COMPILER
- MODTYPE_DOC_DIR
- MODTYPE_MAKE
- MODTYPE_PREFIX
=============================================================================
Setting per-platform variables:
-------------------------------
open-src/common/Makefile.init defines $MACH to be either sparc or i386
for the platform being built. You can reference this variable in the
names of other variables to set different values for each platform.
For instance, to build only 64-bit on SPARC, but both 32-bit and 64-bit
on x86/x64, you can do:
BUILD_TYPES_sparc=64
BUILD_TYPES_i386=32 64
BUILD_TYPES=$(BUILD_TYPES_$(MACH))
BUILD_TYPES_SET=yes
=============================================================================
Setting builder/distro variables:
---------------------------------
"make setup" in the top-level directory of the X gate (i.e. the parent of
this open-src disrectory) makes a open-src/common/Makefile.options symlink
to one of the Makefile.options.* files to set variables for options that
differ depending on who is building, such as distro branding, licensing,
and network access.
To force a specific configuration, specify X_BUILD_OPTIONS when running
"make setup", such as:
make setup X_BUILD_OPTIONS=opensolaris
Otherwise it will strip the last two components of the output of domainname,
lowercase them and look for a matching file - for instance, if building on
a machine with a domainname of it.SFBay.Sun.COM, make setup will check for
a file named Makefile.options.sun.com.
If X_BUILD_OPTIONS is not found, and a domainname match is not found, then
Makefile.options.opensolaris as a final fallback.
Required settings in Makefile.options.*:
DISTRO_NAME
- String used when a reference to the distro name is needed. Mostly used
in man pages at the moment, such as open-src/xserver/xorg/sun-manpage.patch
VENDOR_NAME
- Vendor name string reported by the X server in the log & protocol.
The vendor name needs to include "X.Org Foundation" for software
like cairo that does strstr on VendorName to detect servers built
from the X.Org source tree for bug workarounds/compatibility tweaks,
or for xdpyinfo to convert the vendor version integer to a human-friendly
string.
VENDOR_SUPPORT_URL
- URL printed by the X server for Xorg -version, in the Xorg.0.log, and
in crash messages, for where to get help or check you have the latest
version.
Optional, with empty default:
GPL_CHOICE_FILE
- file containing a notice prepended to package license notices for modules
containing GPL licensed sources, for builders who wish to specify choice
of licenses in modules that are dual-licensed or "GPLv2 or later".
PKG_BRANDING_TRANSFORMS
- name of a file in pkg/transforms that is added to the list passed to
pkgmogrify when building packages, for setting distribution-specific
metadata.
TARBALL_ARCHIVE
- url for a mirror site containing all the upstream tarballs needed during
the build - can be any protocol supported by wget. If not set, then
"make download" will wget directly from the upstream sites on the internet.
Optional, with non-empty default:
* Important, for these, to override the default values, you must not only
set the variable, but set another variable <variable>_SET=yes before the
Makefile.inc is included to prevent the default from being set.
LICENSE_CHOICE
- For modules with MODULE_LICENSE="Oracle", this controls which license
terms are published in the package. This must be set to "Oracle" for
builds done for Oracle Solaris. If not set, it defaults to "open",
which is the value that all others must use, unless they have obtained
special permission from Oracle to license the sources under something
other than the standard MIT license terms used for X11 software.
Default: open
XORG_RELEASES_URL & SF_DOWNLOADS_URL
- urls for X.Org & sourceforge mirrors to download tarballs from
FDO_GIT_URL & XORG_GIT_URL
- url for git repositories hosted on freedesktop.org, including
X.Org, Mesa, pixman, etc. - defaults to anonymous git over http, can
change to use another protocol if needed
=============================================================================
Tools for developers to use:
Some tools to ease development are available in the util/build-tools
directory of the tree.
find-build-errors - looks for a log/buildit-XW file (or another file you
specify on the command line) and tries to isolate out just the
build errors for easier reading than the raw build logs.
If you did buildit -p, also shows packaging errors.
xmake - when you change one file in a large module like xserver and just
want to rebuild in that subdirectory of the build-<platform>
tree, running xmake will attempt to run make or gmake in that
directory with the same flags and environment variables that would
be passed from running make in the module make directory
xmake can also be used in higher level directories of the tree
where it will call dmake with the correct options for parallel
builds.
=============================================================================
Building from git:
For debugging and development purposes, such as working on the merge of
a X.org release still in development, you can choose to to check out a
the upstream sources from a the git repository instead of a tarball.
You must *NOT* check in to the master gate a module using this feature,
since this would produce a build that's not reproducible and changing
unexpectedly.
To use this, set MODULE_VERSION to "git" in a module's Makefile.
To check out a branch other than master, add GIT_BRANCH="branch-name".
Once you've done this "make download" will clone the git repo initially, and
"make git-update" will update an existing repo. The clone will be located
in the $(MODULE_NAME)-git subdirectory in the module directory, and the
"make source" command will copy it instead of unpacking a tarball.
=============================================================================
Known deficiencies (aka TODO):
Things we should fix someday, but haven't had time to do yet, include:
- Builds are slower than they could be. Things we might be able to do to
speed them up include:
- Using a cache of configure script results shared among all the
components in the tree
- Profiling the builds to see where bottlenecks are
- There aren't dependency relationships listed in most of the module
makefiles - you can't bringover the tree and just cd open-src/xserver/xorg
and make, because it won't find many of the dependencies - pretty much you
have to run ./buildit at the toplevel first to build the entire tree and then
go to work on the module you care about. It would be cool if it would do
this for you (like I believe the ON tree does), though tracking down all the
dependencies will probably take a while - getting them done for xserver/xorg
first would be most useful.
=============================================================================
Copyright (c) 2008, 2014, Oracle and/or its affiliates. All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice (including the next
paragraph) shall be included in all copies or substantial portions of the
Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.