diff options
author | Karoly Lorentey <lorentey@elte.hu> | 2007-01-01 17:38:32 +0000 |
---|---|---|
committer | Karoly Lorentey <lorentey@elte.hu> | 2007-01-01 17:38:32 +0000 |
commit | 65e86587ab836aaa86b12ce30b219bcb4fcbaa06 (patch) | |
tree | 7e13feee7387635f52df3613cf1bba4414781aab /lib-src | |
parent | 8c778e28bcf16b4baef6400a124ec2403941e940 (diff) | |
parent | 1fc8c92b50100da709c94a0faa47deed5603634f (diff) | |
download | emacs-65e86587ab836aaa86b12ce30b219bcb4fcbaa06.tar.gz |
Merged from emacs@sv.gnu.org.
Patches applied:
* emacs@sv.gnu.org/emacs--devo--0--patch-536
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-537
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-538
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-539
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-540
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-541
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-542
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-543
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-544
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-545
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-546
Update from erc--emacs--22
* emacs@sv.gnu.org/emacs--devo--0--patch-547
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-548
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-549
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-550
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-551
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-552
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-553
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-554
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-555
erc-iswitchb: Temporarily enable iswitchb mode
* emacs@sv.gnu.org/emacs--devo--0--patch-556
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-557
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-558
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-559
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-560
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-561
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-562
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-563
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-564
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-565
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-566
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-567
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-568
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-569
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-570
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-571
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-572
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-573
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-574
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-575
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-576
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-577
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-578
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-579
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-580
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-581
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-582
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-583
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-584
Fix admin/quick-install-emacs to work with recent versions of autoconf
* emacs@sv.gnu.org/gnus--rel--5.10--patch-171
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-172
Merge from emacs--devo--0
* emacs@sv.gnu.org/gnus--rel--5.10--patch-173
Merge from emacs--devo--0
* emacs@sv.gnu.org/gnus--rel--5.10--patch-174
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-175
Update from CVS: lisp/legacy-gnus-agent.el: Add Copyright notice.
* emacs@sv.gnu.org/gnus--rel--5.10--patch-176
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-177
Merge from emacs--devo--0
* emacs@sv.gnu.org/gnus--rel--5.10--patch-178
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-179
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-180
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-181
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-182
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-183
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-184
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-185
Merge from emacs--devo--0
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-590
Diffstat (limited to 'lib-src')
-rw-r--r-- | lib-src/.gitignore | 1 | ||||
-rw-r--r-- | lib-src/ChangeLog | 76 | ||||
-rw-r--r-- | lib-src/emacsclient.c | 127 | ||||
-rw-r--r-- | lib-src/etags.c | 19 | ||||
-rw-r--r-- | lib-src/makefile.w32-in | 48 |
5 files changed, 203 insertions, 68 deletions
diff --git a/lib-src/.gitignore b/lib-src/.gitignore index faf263e740d..157ce12c972 100644 --- a/lib-src/.gitignore +++ b/lib-src/.gitignore @@ -24,3 +24,4 @@ makefile blessmail *-spd *.pdb +stamp_BLD diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog index 8de03606271..76a0dcf1b9e 100644 --- a/lib-src/ChangeLog +++ b/lib-src/ChangeLog @@ -1,3 +1,48 @@ +2006-12-28 Francesco Potort,Al(B <pot@gnu.org> + + * etags.c (readline): When creating a relative file name from a + #line directive, leave the file name alone. The previous + behaviour was to make it relative to the tags file directory, + under the hypothesis that the #line directive file name was + relative to the directory of the tagged file. That hypothesis is + wrong with Cpp and Lex. + (Makefile_targets): Do not include spaces in tag names. + +2006-12-22 Eli Zaretskii <eliz@gnu.org> + + * makefile.w32-in (make-docfile, ctags, etags, ebrowse, hexl) + (movemail, fakemail, sorted-doc, digest-doc, emacsclient) + (test-distrib, $(DOC), all): depend on stamp_BLD instead of $(BLD). + ($(BLD)/make-docfile.$(O) $(BLD)/hexl.$(O) $(BLD)/fakemail.$(O)) + ($(BLD)/sorted-doc.$(O) $(BLD)/digest-doc.$(O)) + ($(BLD)/test-distrib.$(O) $(GETOPTOBJS) $(MOVEMAILOBJS)) + ($(BLD)/emacsclient.$(O) $(BLD)/etags.$(O) $(BLD)/regex.$(O)) + ($(BLD)/ebrowse.$(O) $(BLD)/ctags.$(O)): Depend on stamp_BLD. + (clean): Delete stamp_BLD. + +2006-12-20 Francesco Potort,Al(B <pot@gnu.org> + + * etags.c (C_entries): DEFUN names were longer by one: corrected. + +2006-12-18 Juanma Barranquero <lekktu@gmail.com> + + * emacsclient.c [WINDOWSNT] (set_fg, get_wc): New variables. + [WINDOWSNT] (w32_find_emacs_process, w32_give_focus): New functions. + (main) [WINDOWSNT]: Remove code to release the focus; call + w32_give_focus instead. + +2006-12-15 Juanma Barranquero <lekktu@gmail.com> + + * emacsclient.c (w32_execvp): New function; wrapper for `execvp'. + (execvp) [WINDOWSNT]: Redefine to `w32_execvp'. + (fail): Remove Windows-specific fix (subsumed into w32_execvp). + Suggestions and comment by Eli Zaretskii. + +2006-12-06 Christoph Conrad <christoph.conrad@gmx.de> + + * makefile.w32-in ($(BLD)/emacsclient.exe, $(BLD)/emacsclientw.exe): + Use $(USER32) for compatibility with Visual Studio .NET 2003. + 2006-11-30 Juanma Barranquero <lekktu@gmail.com> * emacsclient.c (emacs_pid): New variable. @@ -14,11 +59,11 @@ (set_tcp_socket): Make the message for non-local connections informational rather than an error. -2006-11-28 Kevin Ryde <user42@zip.com.au> (tiny change) +2006-11-28 Kevin Ryde <user42@zip.com.au> * etags.c (readline): Check for double quote after #line. -2006-11-28 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> (tiny change) +2006-11-28 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> * etags.c (readline): sscanf could in principle return 2. @@ -50,8 +95,8 @@ 2006-11-24 Michael Mauger <mmaug@yahoo.com> - * emacsclient.c (file_name_absolute_p) [WINDOWSNT]: Support - absolute file names with forward slashes. + * emacsclient.c (file_name_absolute_p) [WINDOWSNT]: Support absolute + file names with forward slashes. 2006-11-23 Juanma Barranquero <lekktu@gmail.com> @@ -442,10 +487,9 @@ 2005-07-13 Ken Raeburn <raeburn@gnu.org> - * pop.c: Don't include des.h (or variants thereof); krb.h will do - it. - (sendline): Add the \r\n to the line in a temporary buffer, and - write it all at once. + * pop.c: Don't include des.h (or variants thereof); krb.h will do it. + (sendline): Add the \r\n to the line in a temporary buffer, and write + it all at once. 2005-07-04 Lute Kamstra <lute@gnu.org> @@ -485,10 +529,9 @@ 2005-02-04 Andreas Schwab <schwab@suse.de> - * movemail.c (fatal): Accept third parameter and pass down to - error. - (pfatal_with_name): Pass error string as format parameter instead - of as part of format string. + * movemail.c (fatal): Accept third parameter and pass down to error. + (pfatal_with_name): Pass error string as format parameter instead of + as part of format string. (pfatal_and_delete): Likewise. (main): Adjust call to fatal. (xmalloc): Likewise. @@ -499,8 +542,7 @@ 2004-12-26 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> - * make-docfile.c: Include stdlib.h even if WINDOWSNT is not - defined. + * make-docfile.c: Include stdlib.h even if WINDOWSNT is not defined. 2004-12-15 Andreas Schwab <schwab@suse.de> @@ -566,8 +608,7 @@ 2004-05-10 Thien-Thi Nguyen <ttn@gnu.org> - * test-distrib.c (main): For failing cases, exit with - `EXIT_FAILURE'. + * test-distrib.c (main): For failing cases, exit with `EXIT_FAILURE'. 2004-05-08 Jason Rumney <jasonr@gnu.org> @@ -740,8 +781,7 @@ 2003-04-27 Oliver Scholz <alkibiades@gmx.de> - * update-game-score.c (read_scores): Fix corruption of scores on - read. + * update-game-score.c (read_scores): Fix corruption of scores on read. 2003-04-12 Stefan Monnier <monnier@cs.yale.edu> diff --git a/lib-src/emacsclient.c b/lib-src/emacsclient.c index 64a0e00d5b9..f765f02b426 100644 --- a/lib-src/emacsclient.c +++ b/lib-src/emacsclient.c @@ -301,16 +301,15 @@ get_current_dir_name () /* Message functions. */ #ifdef WINDOWSNT -/* I first tried to check for STDOUT. The check did not work, - I get a valid handle also in nonconsole apps. - Instead I test for console title, which seems to work. */ int -w32_window_app() +w32_window_app () { static int window_app = -1; char szTitle[MAX_PATH]; if (window_app < 0) + /* Checking for STDOUT does not work; it's a valid handle also in + nonconsole apps. Testing for the console title seems to work. */ window_app = (GetConsoleTitleA (szTitle, MAX_PATH) == 0); return window_app; @@ -488,9 +487,7 @@ fail (void) if (alternate_editor) { int i = optind - 1; -#ifdef WINDOWSNT - main_argv[i] = (char *)alternate_editor; -#endif + execvp (alternate_editor, main_argv + i); message (TRUE, "%s: error executing alternate editor \"%s\"\n", progname, alternate_editor); @@ -683,7 +680,7 @@ file_name_absolute_p (filename) } #ifdef WINDOWSNT -/* Wrapper to make WSACleanup a cdecl, as required by atexit(). */ +/* Wrapper to make WSACleanup a cdecl, as required by atexit. */ void __cdecl close_winsock () { @@ -707,10 +704,47 @@ initialize_sockets () #endif /* WINDOWSNT */ +#ifdef WINDOWSNT + +/* + execvp wrapper for Windows. Quotes arguments with embedded spaces. + + This is necessary due to the broken implementation of exec* routines in + the Microsoft libraries: they concatenate the arguments together without + quoting special characters, and pass the result to CreateProcess, with + predictably bad results. By contrast, Posix execvp passes the arguments + directly into the argv array of the child process. +*/ +int +w32_execvp (path, argv) + char *path; + char **argv; +{ + int i; + + /* Required to allow a .BAT script as alternate editor. */ + argv[0] = (char *) alternate_editor; + + for (i = 0; argv[i]; i++) + if (strchr (argv[i], ' ')) + { + char *quoted = alloca (strlen (argv[i]) + 3); + sprintf (quoted, "\"%s\"", argv[i]); + argv[i] = quoted; + } + + return execvp (path, argv); +} + +#undef execvp +#define execvp w32_execvp + +#endif /* WINDOWSNT */ + /* * Read the information needed to set up a TCP comm channel with * the Emacs server: host, port, pid and authentication string. -*/ + */ int get_server_config (server, authentication) struct sockaddr_in *server; @@ -1145,6 +1179,62 @@ set_socket () exit (EXIT_FAILURE); } +#ifdef WINDOWSNT +FARPROC set_fg; /* Pointer to AllowSetForegroundWindow. */ +FARPROC get_wc; /* Pointer to RealGetWindowClassA. */ + +BOOL CALLBACK +w32_find_emacs_process (hWnd, lParam) + HWND hWnd; + LPARAM lParam; +{ + DWORD pid; + char class[6]; + + /* Reject any window not of class "Emacs". */ + if (! get_wc (hWnd, class, sizeof (class)) + || strcmp (class, "Emacs")) + return TRUE; + + /* We only need the process id, not the thread id. */ + (void) GetWindowThreadProcessId (hWnd, &pid); + + /* Not the one we're looking for. */ + if (pid != (DWORD) emacs_pid) return TRUE; + + /* OK, let's raise it. */ + set_fg (emacs_pid); + + /* Stop enumeration. */ + return FALSE; +} + +/* + * Search for a window of class "Emacs" and owned by a process with + * process id = emacs_pid. If found, allow it to grab the focus. + */ +void +w32_give_focus () +{ + HMODULE hUser32; + + /* It should'nt happen when dealing with TCP sockets. */ + if (!emacs_pid) return; + + if (!(hUser32 = LoadLibrary ("user32.dll"))) return; + + /* Modern Windows restrict which processes can set the foreground window. + emacsclient can allow Emacs to grab the focus by calling the function + AllowSetForegroundWindow. Unfortunately, older Windows (W95, W98 and + NT) lack this function, so we have to check its availability. */ + if ((set_fg = GetProcAddress (hUser32, "AllowSetForegroundWindow")) + && (get_wc = GetProcAddress (hUser32, "RealGetWindowClassA"))) + EnumWindows (w32_find_emacs_process, (LPARAM) 0); + + FreeLibrary (hUser32); +} +#endif + int main (argc, argv) int argc; @@ -1184,24 +1274,7 @@ main (argc, argv) } #ifdef WINDOWSNT - /* - Modern Windows restrict which processes can set the foreground window. - emacsclient can allow Emacs to grab the focus by calling the function - AllowSetForegroundWindow(). Unfortunately, older Windows (W95, W98 - and NT) lack this function, so we have to check its availability. - */ - if (emacs_pid) - { - HMODULE hUser32; - - if (hUser32 = LoadLibrary ("user32.dll")) - { - FARPROC set_fg; - if (set_fg = GetProcAddress (hUser32, "AllowSetForegroundWindow")) - set_fg (emacs_pid); - FreeLibrary (hUser32); - } - } + w32_give_focus (); #endif /* First of all, send our version number for verification. */ diff --git a/lib-src/etags.c b/lib-src/etags.c index 26dac368b4d..c4f7fdc4d69 100644 --- a/lib-src/etags.c +++ b/lib-src/etags.c @@ -41,7 +41,7 @@ * configuration file containing regexp definitions for etags. */ -char pot_etags_version[] = "@(#) pot revision number is $Revision: 3.61 $"; +char pot_etags_version[] = "@(#) pot revision number is 17.25"; #define TRUE 1 #define FALSE 0 @@ -3163,7 +3163,7 @@ static void make_C_tag (isfun) bool isfun; { - /* This function should never be called when token.valid is FALSE, but + /* This function is never called when token.valid is FALSE, but we must protect against invalid input or internal errors. */ if (!DEBUG && !token.valid) return; @@ -3493,7 +3493,6 @@ C_entries (c_ext, inf) off += 1; len -= 1; } - len = toklen; linebuffer_setlen (&token_name, len); strncpy (token_name.buffer, newlb.buffer + off, len); @@ -4687,8 +4686,16 @@ Makefile_targets (inf) while (*bp != '\0' && *bp != '=' && *bp != ':') bp++; if (*bp == ':' || (globals && *bp == '=')) - make_tag (lb.buffer, bp - lb.buffer, TRUE, - lb.buffer, bp - lb.buffer + 1, lineno, linecharno); + { + /* We should detect if there is more than one tag, but we do not. + We just skip initial and final spaces. */ + char * namestart = skip_spaces (lb.buffer); + while (--bp > namestart) + if (!notinname (*bp)) + break; + make_tag (namestart, bp - namestart + 1, TRUE, + lb.buffer, bp - lb.buffer + 2, lineno, linecharno); + } } } @@ -6278,7 +6285,7 @@ readline (lbp, stream) name = lbp->buffer + start; *endp = '\0'; canonicalize_filename (name); /* for DOS */ - taggedabsname = absolute_filename (name, curfdp->infabsdir); + taggedabsname = absolute_filename (name, tagfiledir); if (filename_is_absolute (name) || filename_is_absolute (curfdp->infname)) taggedfname = savestr (taggedabsname); diff --git a/lib-src/makefile.w32-in b/lib-src/makefile.w32-in index 7f3fc12ac1e..bc998e710d7 100644 --- a/lib-src/makefile.w32-in +++ b/lib-src/makefile.w32-in @@ -24,7 +24,7 @@ ALL = make-docfile hexl ctags etags movemail ebrowse sorted-doc digest-doc emacs .PHONY: $(ALL) -VERSION = 22.0.91 +VERSION = 22.0.92 LOCAL_FLAGS = -DWINDOWSNT -DDOS_NT -DSTDC_HEADERS=1 -DNO_LDAV=1 \ -DNO_ARCHIVES=1 -DHAVE_CONFIG_H=1 -I../nt/inc \ @@ -45,18 +45,18 @@ $(BLD)/digest-doc.exe: $(BLD)/digest-doc.$(O) $(BLD)/test-distrib.exe: $(BLD)/test-distrib.$(O) $(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(BLD)/test-distrib.$(O) $(LIBS) -make-docfile: $(BLD) $(BLD)/make-docfile.exe -ctags: $(BLD) $(BLD)/ctags.exe -etags: $(BLD) $(BLD)/etags.exe -ebrowse: $(BLD) $(BLD)/ebrowse.exe -hexl: $(BLD) $(BLD)/hexl.exe -movemail: $(BLD) $(BLD)/movemail.exe -fakemail: $(BLD) $(BLD)/fakemail.exe -sorted-doc: $(BLD) $(BLD)/sorted-doc.exe -digest-doc: $(BLD) $(BLD)/digest-doc.exe -emacsclient: $(BLD) $(BLD)/emacsclient.exe $(BLD)/emacsclientw.exe - -test-distrib: $(BLD) $(BLD)/test-distrib.exe +make-docfile: stamp_BLD $(BLD)/make-docfile.exe +ctags: stamp_BLD $(BLD)/ctags.exe +etags: stamp_BLD $(BLD)/etags.exe +ebrowse: stamp_BLD $(BLD)/ebrowse.exe +hexl: stamp_BLD $(BLD)/hexl.exe +movemail: stamp_BLD $(BLD)/movemail.exe +fakemail: stamp_BLD $(BLD)/fakemail.exe +sorted-doc: stamp_BLD $(BLD)/sorted-doc.exe +digest-doc: stamp_BLD $(BLD)/digest-doc.exe +emacsclient: stamp_BLD $(BLD)/emacsclient.exe $(BLD)/emacsclientw.exe + +test-distrib: stamp_BLD $(BLD)/test-distrib.exe "$(BLD)/test-distrib.exe" "$(SRC)/testfile" GETOPTOBJS = $(BLD)/getopt.$(O) $(BLD)/getopt1.$(O) @@ -82,11 +82,11 @@ $(TRES): ../nt/emacs.rc $(BLD)/emacsclient.exe: $(ECLIENTOBJS) # put wsock32.lib before $(LIBS) to ensure we don't link to ws2_32.lib - $(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(ECLIENTOBJS) $(WSOCK32) $(LIBS) + $(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(ECLIENTOBJS) $(WSOCK32) $(USER32) $(LIBS) $(BLD)/emacsclientw.exe: $(ECLIENTOBJS) $(TRES) # put wsock32.lib before $(LIBS) to ensure we don't link to ws2_32.lib - $(LINK) $(LINK_OUT)$@ $(TRES) -mwindows $(LINK_FLAGS) $(ECLIENTOBJS) $(WSOCK32) $(LIBS) + $(LINK) $(LINK_OUT)$@ $(TRES) -mwindows $(LINK_FLAGS) $(ECLIENTOBJS) $(WSOCK32) $(USER32) $(LIBS) # emacsclient.$(O) depends on makefile.w32-in because makefile.w32-in # can be edited to define VERSION string, which is part of ECLIENT_CFLAGS. @@ -285,7 +285,7 @@ lisp2 = \ - $(DEL) temacs.exe DOC = DOC -$(DOC): $(BLD) $(BLD)/make-docfile.exe ../src/$(BLD)/temacs.exe $(lisp1) $(lisp2) +$(DOC): stamp_BLD $(BLD)/make-docfile.exe ../src/$(BLD)/temacs.exe $(lisp1) $(lisp2) - $(DEL) $(DOC) "$(THISDIR)/$(BLD)/make-docfile" -o $(DOC) -d ../src $(obj) "$(THISDIR)/$(BLD)/make-docfile" -a $(DOC) -d ../src $(lisp1) @@ -301,7 +301,7 @@ $(DOC): $(BLD) $(BLD)/make-docfile.exe ../src/$(BLD)/temacs.exe $(lisp1) $(lisp # # Build the executables # -all: $(BLD) $(ALL) $(DOC) +all: stamp_BLD $(ALL) $(DOC) # # Assuming INSTALL_DIR is defined, build and install emacs in it. @@ -329,6 +329,7 @@ clean: - $(DEL) ctags.c - $(DEL) getopt.h - $(DEL_TREE) $(OBJDIR) + - $(DEL) stamp_BLD cleanall: clean - $(DEL_TREE) obj @@ -482,3 +483,16 @@ $(BLD)/timer.$(O) : \ $(EMACS_ROOT)/src/s/ms-w32.h \ $(EMACS_ROOT)/src/m/intel386.h \ $(EMACS_ROOT)/lib-src/../src/config.h + +# The following dependencies are for supporting parallel builds, where +# we must make sure $(BLD) exists before any compilation starts. +# +$(BLD)/make-docfile.$(O) $(BLD)/hexl.$(O) $(BLD)/fakemail.$(O): stamp_BLD + +$(BLD)/sorted-doc.$(O) $(BLD)/digest-doc.$(O): stamp_BLD + +$(BLD)/test-distrib.$(O) $(GETOPTOBJS) $(MOVEMAILOBJS): stamp_BLD + +$(BLD)/emacsclient.$(O) $(BLD)/etags.$(O) $(BLD)/regex.$(O): stamp_BLD + +$(BLD)/ebrowse.$(O) $(BLD)/ctags.$(O): stamp_BLD |