Ãvar ArnfjÃrà Bjarmason wrote: > Change the Makefile so that the "Platform specific tweaks" section > comes before the assignments to LIB_H and LIB_OBJS. Currently the Makefile is structured like this: A. default target B. basics 1. basic configuration section a. -include GIT-VERSION-FILE and recipe to generate it b. uname_S := $(shell uname -s) and similar variables c. user-facing compilation variables: CFLAGS, LDFLAGS, STRIP d. user-facing paths: prefix, bindir_relative, etc e. program names: CC, AR, etc 2. basic cflags and ldflags (almost configurable) 3. main list of program targets: SCRIPTS, PROGRAMS, TEST_PROGRAMS, BUILT_INS, OTHER_PROGRAMS, BINDIR_PROGRAMS 4. defaults for SHELL_PATH, PERL_PATH, PYTHON_PATH 5. main list of library targets: LIB_FILE, XDIFF_LIB, LIB_H, LIB_OBJS, BUILTIN_OBJS 6. GITLIBS, EXTLIBS for the linker command line 7. platform-specific tweaks 8. -include config.mak, config.mak.autogen C. preparations 1. handling of the various NO_THIS_OR_THAT options. This affects BASIC_CFLAGS, COMPAT_CFLAGS, COMPAT_OBJS, PROGRAMS, EXTLIBS, LIB_OBJ, LIB_H, etc 2. machinery for non-noisy build 3. shell-quoted and C-quoted variables 4. ALL_CFLAGS, ALL_LDFLAGS D. main build rules 1. all:: targets for the main build, subdirs 2. shell sanity check 3. building the git binary and built-ins 4. scripts and gitweb 5. autoconf 6. building objects: a. %.o: %.c rule, header deps, dependency checking b. target-specific -D flags 7. building non-builtins, remote-curl 8. libs 9. subdirs E. GIT-CFLAGS, GIT-BUILD-OPTIONS, GIT-GUI-VARS F. bin-wrappers G. tests H. installation rules I. maintainer's dist rules, check-doc, coverage, etc This patch proposes moving A5 (main list of library targets) after A8 (end of configuration). > In the ab/i18n series I only want to build gettext.o (by adding it to > LIB_OBJS) if NO_GETTEXT is unset. It's not possible to do that without > an ugly hack if we haven't applied our platform specific tweaks before > LIB_{H,OBJS} gets assigned to. > > See <201008140002.40587.j6t@xxxxxxxx> (subject: "[PATCH] Do not build > i18n on Windows.") for Johannes's original report, and my follow-up in > <AANLkTiku5R+idX-C8f0AcCikBLmfEb5ZEhdft+CSRzU0@xxxxxxxxxxxxxx> where I > suggested that the problem be solved in the manner of this patch. This doesn't motivate the patch all all to me. Is changing the list of LIB_OBJS in section C1 really an ugly hack? It is where configuration-specific things go and how BLK_SHA1, PROGRAM_OBJS, etc work already. That said, I can see another reason to move A3 and A5 lower down in the makefile. Namely, they don't seem to have anything obvious to do with configuration. Including the basic list of objects that high up may make the makefile easier to read straight through, but I don't think anyone is reading it straight through. So I wouldn't have anything against moving both A3 and A5 to right before C1, I just think it needs different motivation. Sensible? Jonathan -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html