author Mike Hommey <>
Thu, 03 Jul 2014 07:15:31 +0900
changeset 192038 ce1c57e03b885eedfbe58a191e5306b17b04fc65
parent 171243 54bf6247cc5f68821f48470cbd9538c4d7cb2b4a
child 225119 43f1f9eef449ef029ab5b2d54552e3de4203c2a6
permissions -rw-r--r--
Bug 762358 - Re-run configure when mozconfig changed in a significant way. r=gps This adds a format option to mach environment and uses it in to create a .mozconfig.json in the objdir, containing all the relevant data from mozconfig. If the mozconfig doesn't change in a way that alters that data, we still skip configure. At the same time, use mach environment in place of mozconfig2configure and mozconfig2client-mk, which makes us now have only one mozconfig reader. Also, in the mozconfig reader, keep track of environment variables (as opposed to shell variables), so that changes such as a variable that was exported not being exported anymore is spotted. At the opposite, in order for irrelevant environment variable changes not to incur in re-running configure, only a set of environment variables are stored when they are unmodified. Otherwise, changes such as using a different terminal window, or even rebooting, would trigger reconfigures. Finally, make mach environment emit both MOZ_OBJDIR and OBJDIR for, and cleanup some objdir-related things in At the same time, make the mozconfig reader take MOZ_OBJDIR from the environment if it is defined there and not in the mozconfig.

/* List of defines generated by configure. Included with preprocessor flag,
 * -include, to avoid long list of -D defines on the compile command-line.
 * Do not edit.



 * The c99 defining the limit macros (UINT32_MAX for example), says:
 *   C++ implementations should define these macros only when
 *   __STDC_LIMIT_MACROS is defined before <stdint.h> is included.
 * The same also occurs with __STDC_CONSTANT_MACROS for the constant macros
 * (INT8_C for example) used to specify a literal constant of the proper type,
 * and with __STDC_FORMAT_MACROS for the format macros (PRId32 for example) used
 * with the fprintf function family.
#if !defined(__STDC_FORMAT_MACROS)

 * Force-include Char16.h in order to define PRUnichar as char16_t everywhere.
 * Note that this should be the first #include to make sure that prtypes.h does
 * not attempt to define PRUnichar.  This includes the following hunspell-specific
 * includes.
 * We don't use this to build elfhack and elf-dynstr-gc since those builds happen
 * during the export tier.  Also, disable this when building assembly files too.
#if !defined(ELFHACK_BUILD) && !defined(__ASSEMBLER__)
#include "mozilla/Char16.h"

 * Force-include hunspell_alloc_hooks.h and hunspell_fopen_hooks.h for hunspell,
 * so that we don't need to modify them directly.
 * HUNSPELL_STATIC is defined in extensions/spellcheck/hunspell/src/,
 * unless --enable-system-hunspell is defined.
#if defined(HUNSPELL_STATIC)
#include "hunspell_alloc_hooks.h"
#include "hunspell_fopen_hooks.h"

 * Force-include sdkdecls.h for building the chromium sandbox code.
 * CHROMIUM_SANDBOX_BUILD is defined in security/sandbox/
 * Note that this include path relies on the LOCAL_INCLUDES in that file.
#if defined(CHROMIUM_SANDBOX_BUILD) && defined(XP_WIN)
#include "base/shim/sdkdecls.h"

#endif /* _MOZILLA_CONFIG_H_ */