Fix the MS-Windows build broken by 2011-01-17T19:01:01Z!eggert@cs.ucla.edu and emacs-23/2010-05-21T19:51:48Z!acm@muc.de.

lib/makefile.w32-in:
 lib/getopt_.h: New files.
 src/s/ms-w32.h (HAVE_MKTIME): Remove.
 src/makefile.w32-in (LOCAL_FLAGS): Add -I../lib.
 (GNULIB): New variable.
 (LIBS): Add $(GNULIB).
 $(TEMACS): Depend on $(GNULIB).
 <top-level>: Fix font-lock disrupted by a lone `"'.
 src/makefile.w32-in (LOCAL_FLAGS): Add -I../lib.
 (GETOPTOBJS, GETOPTDEPS): Remove targets.
 (MOVEMAILOBJS): Replace $(GETOPTOBJS) with ../lib/$(BLD)/libgnu.$(A).
 ($(BLD)/movemail.exe): Depend on ../lib/getopt.h.
 (ECLIENTOBJS, ETAGSOBJ, CTAGSOBJ, EBROWSEOBJ): Replace getopt.o
 and getopt1.o with ../lib/$(BLD)/libgnu.$(A).
 (clean): Don't remove getopt.h.
 (getopt.h, $(BLD)/getopt.$(O), $(BLD)/getopt1.$(O)): Remove targets.
 ($(BLD)/ctags.$(O), $(BLD)/etags.$(O)): Replace getopt.h with
 $(EMACS_ROOT)/lib/getopt.h.
 nt/makefile.w32-in (all-other-dirs-nmake, all-other-dirs-gmake)
 (bootstrap-nmake, bootstrap-gmake, bootstrap-clean-nmake)
 (bootstrap-clean-gmake, clean-other-dirs-nmake)
 (clean-other-dirs-gmake, cleanall-other-dirs-nmake)
 (cleanall-other-dirs-gmake, distclean-other-dirs-nmake)
 (distclean-other-dirs-gmake, maintainer-clean-other-dirs-nmake)
 (maintainer-clean-other-dirs-gmake): Recurse into ../lib as well.
 nt/configure.bat: Create lib/makefile.
 nt/config.nt (HAVE_MKTIME, BROKEN_MKTIME): Remove.
 (HAVE_ATTRIBUTE_ALIGNED, HAVE_C99_STRTOLD, HAVE_DECL_GETENV)
 (HAVE_DECL_LOCALTIME_R, HAVE_WCHAR_T, PACKAGE, VERSION, inline)
 (_GL_UNUSED, _UNUSED_PARAMETER_): Add definitions, for gnulib.
This commit is contained in:
Eli Zaretskii 2011-01-29 14:36:11 +02:00
parent 497a1925ec
commit f915f0f7c8
14 changed files with 591 additions and 49 deletions

View file

@ -1,3 +1,8 @@
2011-01-29 Eli Zaretskii <eliz@gnu.org>
* lib/makefile.w32-in:
* lib/getopt_.h: New files.
2011-01-28 Paul Eggert <eggert@cs.ucla.edu>
improve fix for MS-DOS file name clash

View file

@ -1,3 +1,22 @@
2011-01-29 Eli Zaretskii <eliz@gnu.org>
* makefile.w32-in (LOCAL_FLAGS): Add -I../lib.
(GETOPTOBJS, GETOPTDEPS): Remove targets.
(MOVEMAILOBJS): Replace $(GETOPTOBJS) with ../lib/$(BLD)/libgnu.$(A).
($(BLD)/movemail.exe): Depend on ../lib/getopt.h.
(ECLIENTOBJS, ETAGSOBJ, CTAGSOBJ, EBROWSEOBJ): Replace getopt.o
and getopt1.o with ../lib/$(BLD)/libgnu.$(A).
(clean): Don't remove getopt.h.
(getopt.h, $(BLD)/getopt.$(O), $(BLD)/getopt1.$(O)): Remove targets.
($(BLD)/ctags.$(O), $(BLD)/etags.$(O)): Replace getopt.h with
$(EMACS_ROOT)/lib/getopt.h.
2011-01-28 Chong Yidong <cyd@stupidchicken.com>
* ntlib.c (setregid): New stub, renamed from setegid.
* ntlib.h: Update prototype.
2011-01-25 Chong Yidong <cyd@stupidchicken.com>
* movemail.c (main): Use setregid instead of setegid, which is

View file

@ -24,8 +24,8 @@ ALL = make-docfile hexl ctags etags movemail ebrowse emacsclient
VERSION = 24.0.50
LOCAL_FLAGS = -DWINDOWSNT -DDOS_NT -DSTDC_HEADERS=1 -DNO_LDAV=1 \
-DNO_ARCHIVES=1 -DHAVE_CONFIG_H=1 -I../nt/inc \
-I../src
-DNO_ARCHIVES=1 -DHAVE_CONFIG_H=1 -I../lib \
-I../nt/inc -I../src
LIBS = $(BASE_LIBS) $(ADVAPI32)
@ -50,22 +50,19 @@ 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)
GETOPTDEPS = $(GETOPTOBJS) getopt.h
MOVEMAILOBJS = $(BLD)/movemail.$(O) \
$(BLD)/pop.$(O) \
$(BLD)/ntlib.$(O) \
$(GETOPTOBJS)
../lib/$(BLD)/libgnu.$(A) \
$(BLD)/ntlib.$(O)
$(BLD)/movemail.exe: $(MOVEMAILOBJS) getopt.h
$(BLD)/movemail.exe: $(MOVEMAILOBJS) ../lib/getopt.h
# put wsock32.lib before $(LIBS) to ensure we don't link to ws2_32.lib
$(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(MOVEMAILOBJS) $(WSOCK32) $(LIBS)
ECLIENT_CFLAGS = -DHAVE_GETCWD -DHAVE_STRERROR -DVERSION="\"$(VERSION)\""
ECLIENTOBJS = $(BLD)/emacsclient.$(O) \
$(BLD)/getopt.$(O) \
$(BLD)/getopt1.$(O) \
$(BLD)/ntlib.$(O)
$(BLD)/ntlib.$(O) \
../lib/$(BLD)/libgnu.$(A)
CLIENTRES = ../nt/$(BLD)/emacsclient.res
$(CLIENTRES): ../nt/emacsclient.rc
@ -86,8 +83,7 @@ $(BLD)/emacsclient.$(O): emacsclient.c makefile.w32-in
$(CC) $(CFLAGS) $(ECLIENT_CFLAGS) $(CC_OUT)$@ emacsclient.c
ETAGSOBJ = $(BLD)/etags.$(O) \
$(BLD)/getopt.$(O) \
$(BLD)/getopt1.$(O) \
../lib/$(BLD)/libgnu.$(A) \
$(BLD)/ntlib.$(O) \
$(BLD)/regex.$(O)
@ -96,8 +92,7 @@ $(BLD)/etags.exe: $(ETAGSOBJ)
EBROWSEOBJ = $(BLD)/ebrowse.$(O) \
$(BLD)/getopt.$(O) \
$(BLD)/getopt1.$(O) \
../lib/$(BLD)/libgnu.$(A) \
$(BLD)/ntlib.$(O)
$(BLD)/ebrowse.exe: $(EBROWSEOBJ)
@ -112,8 +107,7 @@ $(BLD)/etags.$(O): etags.c
$(CC) $(CFLAGS) $(ETAGS_CFLAGS) $(CC_OUT)$@ etags.c
CTAGSOBJ = $(BLD)/ctags.$(O) \
$(BLD)/getopt.$(O) \
$(BLD)/getopt1.$(O) \
../lib/$(BLD)/libgnu.$(A) \
$(BLD)/ntlib.$(O) \
$(BLD)/regex.$(O)
@ -340,7 +334,6 @@ install: $(INSTALL_FILES)
clean:
- $(DEL) DOC* $(COMPILER_TEMP_FILES)
- $(DEL) ctags.c
- $(DEL) getopt.h
- $(DEL_TREE) $(OBJDIR)
- $(DEL) stamp_BLD
- $(DEL) echolisp.tmp
@ -365,9 +358,6 @@ cleanall: clean
echo $(CONFIG_H) has changed. Re-run configure.bat.
exit -1
getopt.h: getopt_.h
$(CP) $(ALL_DEPS) $@
### TAGS ###
TAGS: $(BLD)/etags.exe *.c *.h
@ -392,7 +382,7 @@ $(BLD)/ctags.$(O) : \
$(EMACS_ROOT)/src/m/intel386.h \
$(EMACS_ROOT)/lib-src/../src/config.h \
$(SRC)/ntlib.h \
$(SRC)/getopt.h
$(EMACS_ROOT)/lib/getopt.h
$(BLD)/emacsclient.$(O) : \
$(SRC)/emacsclient.c \
@ -407,7 +397,7 @@ $(BLD)/etags.$(O) : \
$(EMACS_ROOT)/src/m/intel386.h \
$(EMACS_ROOT)/lib-src/../src/config.h \
$(SRC)/ntlib.h \
$(SRC)/getopt.h
$(EMACS_ROOT)/lib/getopt.h
$(BLD)/fakemail.$(O) : \
$(SRC)/fakemail.c \
@ -424,21 +414,6 @@ $(BLD)/getdate.$(O) : \
$(EMACS_ROOT)/src/config.h \
$(MSTOOLS_SYS)/types.h
$(BLD)/getopt.$(O) : \
$(SRC)/getopt.c \
$(EMACS_ROOT)/src/s/ms-w32.h \
$(EMACS_ROOT)/src/m/intel386.h \
$(EMACS_ROOT)/src/config.h \
$(SRC)/ntlib.h \
$(SRC)/getopt.h
$(BLD)/getopt1.$(O) : \
$(SRC)/getopt1.c \
$(EMACS_ROOT)/src/s/ms-w32.h \
$(EMACS_ROOT)/src/m/intel386.h \
$(EMACS_ROOT)/src/config.h \
$(SRC)/getopt.h
$(BLD)/hexl.$(O) : \
$(SRC)/hexl.c
@ -500,7 +475,7 @@ $(BLD)/timer.$(O) : \
#
$(BLD)/make-docfile.$(O) $(BLD)/hexl.$(O) $(BLD)/fakemail.$(O): stamp_BLD
$(BLD)/test-distrib.$(O) $(GETOPTOBJS) $(MOVEMAILOBJS): stamp_BLD
$(BLD)/test-distrib.$(O) $(MOVEMAILOBJS): stamp_BLD
$(BLD)/emacsclient.$(O) $(BLD)/etags.$(O) $(BLD)/regex.$(O): stamp_BLD

View file

@ -143,7 +143,7 @@ setuid (unsigned uid)
}
int
setegid (unsigned gid)
setregid (unsigned rgid, unsigned gid)
{
return 0;
}

View file

@ -38,7 +38,7 @@ unsigned getuid (void);
unsigned getegid (void);
unsigned getgid (void);
int setuid (unsigned uid);
int setegid (unsigned gid);
int setregid (unsigned rgid, unsigned gid);
char * getpass (const char * prompt);
int fchown (int fd, unsigned uid, unsigned gid);

280
lib/getopt_.h Normal file
View file

@ -0,0 +1,280 @@
/* Declarations for getopt.
Copyright (C) 1989-1994, 1996-1999, 2001, 2003-2007, 2009-2011 Free Software
Foundation, Inc.
This file is part of the GNU C Library.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#ifndef _GL_GETOPT_H
#if __GNUC__ >= 3
#pragma GCC system_header
#endif
/* The include_next requires a split double-inclusion guard. We must
also inform the replacement unistd.h to not recursively use
<getopt.h>; our definitions will be present soon enough. */
#if HAVE_GETOPT_H
# define _GL_SYSTEM_GETOPT
# ifndef __GNUC__
# include <next_getopt.h>
# else
# include_next <getopt.h>
# endif
# undef _GL_SYSTEM_GETOPT
#endif
#ifndef _GL_GETOPT_H
#ifndef __need_getopt
# define _GL_GETOPT_H 1
#endif
/* Standalone applications should #define __GETOPT_PREFIX to an
identifier that prefixes the external functions and variables
defined in this header. When this happens, include the
headers that might declare getopt so that they will not cause
confusion if included after this file (if the system had <getopt.h>,
we have already included it). Then systematically rename
identifiers so that they do not collide with the system functions
and variables. Renaming avoids problems with some compilers and
linkers. */
#if defined __GETOPT_PREFIX && !defined __need_getopt
# if !HAVE_GETOPT_H
# include <stdlib.h>
# include <stdio.h>
# include <unistd.h>
# endif
# undef __need_getopt
# undef getopt
# undef getopt_long
# undef getopt_long_only
# undef optarg
# undef opterr
# undef optind
# undef optopt
# undef option
# define __GETOPT_CONCAT(x, y) x ## y
# define __GETOPT_XCONCAT(x, y) __GETOPT_CONCAT (x, y)
# define __GETOPT_ID(y) __GETOPT_XCONCAT (__GETOPT_PREFIX, y)
# define getopt __GETOPT_ID (getopt)
# define getopt_long __GETOPT_ID (getopt_long)
# define getopt_long_only __GETOPT_ID (getopt_long_only)
# define optarg __GETOPT_ID (optarg)
# define opterr __GETOPT_ID (opterr)
# define optind __GETOPT_ID (optind)
# define optopt __GETOPT_ID (optopt)
# define option __GETOPT_ID (option)
# define _getopt_internal __GETOPT_ID (getopt_internal)
#endif
/* Standalone applications get correct prototypes for getopt_long and
getopt_long_only; they declare "char **argv". libc uses prototypes
with "char *const *argv" that are incorrect because getopt_long and
getopt_long_only can permute argv; this is required for backward
compatibility (e.g., for LSB 2.0.1).
This used to be `#if defined __GETOPT_PREFIX && !defined __need_getopt',
but it caused redefinition warnings if both unistd.h and getopt.h were
included, since unistd.h includes getopt.h having previously defined
__need_getopt.
The only place where __getopt_argv_const is used is in definitions
of getopt_long and getopt_long_only below, but these are visible
only if __need_getopt is not defined, so it is quite safe to rewrite
the conditional as follows:
*/
#if !defined __need_getopt
# if defined __GETOPT_PREFIX
# define __getopt_argv_const /* empty */
# else
# define __getopt_argv_const const
# endif
#endif
/* If __GNU_LIBRARY__ is not already defined, either we are being used
standalone, or this is the first header included in the source file.
If we are being used with glibc, we need to include <features.h>, but
that does not exist if we are standalone. So: if __GNU_LIBRARY__ is
not defined, include <ctype.h>, which will pull in <features.h> for us
if it's from glibc. (Why ctype.h? It's guaranteed to exist and it
doesn't flood the namespace with stuff the way some other headers do.) */
#if !defined __GNU_LIBRARY__
# include <ctype.h>
#endif
#ifndef __THROW
# ifndef __GNUC_PREREQ
# define __GNUC_PREREQ(maj, min) (0)
# endif
# if defined __cplusplus && __GNUC_PREREQ (2,8)
# define __THROW throw ()
# else
# define __THROW
# endif
#endif
/* The definition of _GL_ARG_NONNULL is copied here. */
/* A C macro for declaring that specific arguments must not be NULL.
Copyright (C) 2009-2011 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published
by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools
that the values passed as arguments n, ..., m must be non-NULL pointers.
n = 1 stands for the first argument, n = 2 for the second argument etc. */
#ifndef _GL_ARG_NONNULL
# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3
# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params))
# else
# define _GL_ARG_NONNULL(params)
# endif
#endif
#ifdef __cplusplus
extern "C" {
#endif
/* For communication from `getopt' to the caller.
When `getopt' finds an option that takes an argument,
the argument value is returned here.
Also, when `ordering' is RETURN_IN_ORDER,
each non-option ARGV-element is returned here. */
extern char *optarg;
/* Index in ARGV of the next element to be scanned.
This is used for communication to and from the caller
and for communication between successive calls to `getopt'.
On entry to `getopt', zero means this is the first call; initialize.
When `getopt' returns -1, this is the index of the first of the
non-option elements that the caller should itself scan.
Otherwise, `optind' communicates from one call to the next
how much of ARGV has been scanned so far. */
extern int optind;
/* Callers store zero here to inhibit the error message `getopt' prints
for unrecognized options. */
extern int opterr;
/* Set to an option character which was unrecognized. */
extern int optopt;
#ifndef __need_getopt
/* Describe the long-named options requested by the application.
The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
of `struct option' terminated by an element containing a name which is
zero.
The field `has_arg' is:
no_argument (or 0) if the option does not take an argument,
required_argument (or 1) if the option requires an argument,
optional_argument (or 2) if the option takes an optional argument.
If the field `flag' is not NULL, it points to a variable that is set
to the value given in the field `val' when the option is found, but
left unchanged if the option is not found.
To have a long-named option do something other than set an `int' to
a compiled-in constant, such as set a value from `optarg', set the
option's `flag' field to zero and its `val' field to a nonzero
value (the equivalent single-letter option character, if there is
one). For long options that have a zero `flag' field, `getopt'
returns the contents of the `val' field. */
struct option
{
const char *name;
/* has_arg can't be an enum because some compilers complain about
type mismatches in all the code that assumes it is an int. */
int has_arg;
int *flag;
int val;
};
/* Names for the values of the `has_arg' field of `struct option'. */
# define no_argument 0
# define required_argument 1
# define optional_argument 2
#endif /* need getopt */
/* Get definitions and prototypes for functions to process the
arguments in ARGV (ARGC of them, minus the program name) for
options given in OPTS.
Return the option character from OPTS just read. Return -1 when
there are no more options. For unrecognized options, or options
missing arguments, `optopt' is set to the option letter, and '?' is
returned.
The OPTS string is a list of characters which are recognized option
letters, optionally followed by colons, specifying that that letter
takes an argument, to be placed in `optarg'.
If a letter in OPTS is followed by two colons, its argument is
optional. This behavior is specific to the GNU `getopt'.
The argument `--' causes premature termination of argument
scanning, explicitly telling `getopt' that there are no more
options.
If OPTS begins with `-', then non-option arguments are treated as
arguments to the option '\1'. This behavior is specific to the GNU
`getopt'. If OPTS begins with `+', or POSIXLY_CORRECT is set in
the environment, then do not permute arguments. */
extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
__THROW _GL_ARG_NONNULL ((2, 3));
#ifndef __need_getopt
extern int getopt_long (int ___argc, char *__getopt_argv_const *___argv,
const char *__shortopts,
const struct option *__longopts, int *__longind)
__THROW _GL_ARG_NONNULL ((2, 3));
extern int getopt_long_only (int ___argc, char *__getopt_argv_const *___argv,
const char *__shortopts,
const struct option *__longopts, int *__longind)
__THROW _GL_ARG_NONNULL ((2, 3));
#endif
#ifdef __cplusplus
}
#endif
/* Make sure we later can get all the definitions and declarations. */
#undef __need_getopt
#endif /* getopt.h */
#endif /* getopt.h */

154
lib/makefile.w32-in Normal file
View file

@ -0,0 +1,154 @@
# -*- Makefile -*- for GNU Emacs on the Microsoft W32 API.
# Copyright (C) 2011 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
# GNU Emacs is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# GNU Emacs is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
ALL = gnulib
.PHONY: $(ALL)
LOCAL_FLAGS = -DHAVE_CONFIG_H=1 -I. -I../nt/inc -I../src
LIBS =
GNULIBOBJS = $(BLD)/dtoastr.$(O) $(BLD)/getopt.$(O) $(BLD)/getopt1.$(O)
#
# Build the library
#
$(BLD)/libgnu.$(A): $(GNULIBOBJS)
- $(DEL) $@
$(AR) $(AR_OUT)$@ $(ALL_DEPS)
gnulib: stamp_BLD $(BLD)/libgnu.$(A)
#
# Build everything
#
all: stamp_BLD $(ALL)
### TAGS ###
TAGS:
../lib-src/$(BLD)/etags.exe *.c *.h
### DEPENDENCIES ###
EMACS_ROOT = ..
SRC = .
$(BLD)/dtoastr.$(O) : \
$(SRC)/dtoastr.c \
$(SRC)/ftoastr.c \
$(SRC)/ftoastr.h \
$(SRC)/intprops.h \
$(EMACS_ROOT)/src/config.h
$(BLD)/getopt.$(O) : \
$(SRC)/getopt.c \
$(SRC)/getopt.h \
$(SRC)/getopt_int.h \
$(EMACS_ROOT)/src/s/ms-w32.h \
$(EMACS_ROOT)/src/m/intel386.h \
$(EMACS_ROOT)/src/config.h
$(BLD)/getopt1.$(O) : \
$(SRC)/getopt1.c \
$(SRC)/getopt.h \
$(SRC)/getopt_int.h \
$(EMACS_ROOT)/src/s/ms-w32.h \
$(EMACS_ROOT)/src/m/intel386.h \
$(EMACS_ROOT)/src/config.h
# The following dependencies are for supporting parallel builds, where
# we must make sure $(BLD) exists before any compilation starts.
#
$(BLD)/dtoastr.$(O) $(BLD)/getopt.$(O) $(BLD)/getopt1.$(O): stamp_BLD
#
# Headers we would preprocess if we could.
#
getopt.h: getopt_.h
$(CP) $(ALL_DEPS) $@
#
# Maintenance
#
clean:
- $(DEL) $(COMPILER_TEMP_FILES)
- $(DEL) getopt.h
- $(DEL_TREE) $(OBJDIR)
- $(DEL) stamp_BLD
distclean: cleanall
- $(DEL) TAGS
- $(DEL) Makefile
maintainer-clean: distclean
- $(DEL) getopt_.h
cleanall: clean
- $(DEL_TREE) obj
- $(DEL_TREE) obj-spd
- $(DEL_TREE) oo
- $(DEL_TREE) oo-spd
# A dummy target to force other targets to be evaluated.
doit:
getopt_.h: getopt.in.h $(ARG_NONNULL_H)
$(MAKE) $(MFLAGS) getopt_.h-$(SHELLTYPE)
getopt_.h-CMD: doit
@echo getopt.in.h or $(ARG_NONNULL_H) is newer than getopt_.h.
@echo Run "$(MAKETYPE) getopt_h" in the lib/ subdirectory.
@echo You will need GNU Sed to be installed.
exit -1
getopt_.h-SH: doit
@echo getopt.in.h or $(ARG_NONNULL_H) is newer than getopt_.h.
@echo Run '"$(MAKETYPE) getopt_h"' in the lib/ subdirectory.
@echo You will need GNU Sed to be installed.
exit -1
# Generating getopt_.h from getopt.in.h.
#
# To avoid requiring all end users to install Sed, we have below
# a maintainer-only target that produces getopt_.h from getopt.in.h.
# For easier maintenance, all the strings that replace the @FOO@
# placeholder are defined as Make macros below.
HAVE_GETOPT_H = HAVE_GETOPT_H
INCLUDE_NEXT = include_next
PRAGMA_SYSTEM_HEADER = \#pragma GCC system_header
PRAGMA_COLUMNS =
NEXT_GETOPT_H = <getopt.h>
ARG_NONNULL_H = ../arg-nonnull.h
getopt_h:
- $(DEL) getopt_.h-t getopt_.h
sed -e "s!@HAVE_GETOPT_H@!$(HAVE_GETOPT_H)!g" \
-e "s!@INCLUDE_NEXT@!$(INCLUDE_NEXT)!g" \
-e "s!@PRAGMA_SYSTEM_HEADER@!$(PRAGMA_SYSTEM_HEADER)!g" \
-e "s!@PRAGMA_COLUMNS@!$(PRAGMA_COLUMNS)!g" \
-e "s!@NEXT_GETOPT_H@!$(NEXT_GETOPT_H)!g" \
-e "/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)" \
-e "/^\# include_next/i # ifndef __GNUC__" \
-e "/^\# include_next/i # include <next_getopt.h>" \
-e "/^\# include_next/i # else" \
-e "/^\# include_next/a # endif" \
< getopt.in.h > getopt_.h-t
$(CP) getopt_.h-t getopt_.h
- $(DEL) getopt_.h-t

View file

@ -1,3 +1,20 @@
2011-01-29 Eli Zaretskii <eliz@gnu.org>
* makefile.w32-in (all-other-dirs-nmake, all-other-dirs-gmake)
(bootstrap-nmake, bootstrap-gmake, bootstrap-clean-nmake)
(bootstrap-clean-gmake, clean-other-dirs-nmake)
(clean-other-dirs-gmake, cleanall-other-dirs-nmake)
(cleanall-other-dirs-gmake, distclean-other-dirs-nmake)
(distclean-other-dirs-gmake, maintainer-clean-other-dirs-nmake)
(maintainer-clean-other-dirs-gmake): Recurse into ../lib as well.
* configure.bat: Create lib/makefile.
* config.nt (HAVE_MKTIME, BROKEN_MKTIME): Remove.
(HAVE_ATTRIBUTE_ALIGNED, HAVE_C99_STRTOLD, HAVE_DECL_GETENV)
(HAVE_DECL_LOCALTIME_R, HAVE_WCHAR_T, PACKAGE, VERSION, inline)
(_GL_UNUSED, _UNUSED_PARAMETER_): Add definitions, for gnulib.
2011-01-07 Eli Zaretskii <eliz@gnu.org>
* config.nt (HAVE___BUILTIN_UNWIND_INIT) [GCC >= 2.8]: Define.

View file

@ -224,7 +224,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#undef HAVE_SETSID
#undef HAVE_FPATHCONF
#undef HAVE_SELECT
#undef HAVE_MKTIME
#undef HAVE_EUIDACCESS
#undef HAVE_GETPAGESIZE
#undef HAVE_GET_CURRENT_DIR_NAME
@ -273,6 +272,67 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
/* Define to 1 if you have the `getopt_long_only' function. */
#undef HAVE_GETOPT_LONG_ONLY
/* Preprocessor macros needed for gnulib imports. */
/* Define to 1 if GCC-style __attribute__ ((__aligned__ (expr))) works. */
#ifdef __GNUC__
#define HAVE_ATTRIBUTE_ALIGNED 1
#else
#undef HAVE_ATTRIBUTE_ALIGNED
#endif
/* Define to 1 if strtold conforms to C99. */
#ifdef __GNUC__
#define HAVE_C99_STRTOLD 1
#else
#undef HAVE_C99_STRTOLD
#endif
/* Define to 1 if you have the declaration of `getenv', and to 0 if you don't.
*/
#define HAVE_DECL_GETENV 1
/* Define to 1 if you have the declaration of `localtime_r', and to 0 if you
don't. */
#undef HAVE_DECL_LOCALTIME_R
/* Define to 1 if you have the `localtime_r' function. */
#undef HAVE_LOCALTIME_R
/* Define if you have the 'wchar_t' type. */
#define HAVE_WCHAR_T 1
/* Name of package */
#define PACKAGE "emacs"
/* FIXME: This is defined by the various makefile.w32-in files for
now. Revisit if/when VERSION from config.h is used by any
Makefile.in files. */
#if 0
/* Version number of package */
#define VERSION "24.0.50"
#endif
/* Define to `__inline__' or `__inline' if that's what the C compiler
calls it, or to nothing if 'inline' is not supported under any name. */
#ifndef __cplusplus
#undef inline
#endif
/* Define as a marker that can be attached to declarations that might not
be used. This helps to reduce warnings, such as from
GCC -Wunused-parameter. */
#if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
# define _GL_UNUSED __attribute__ ((__unused__))
#else
# define _GL_UNUSED
#endif
/* The name _UNUSED_PARAMETER_ is an earlier spelling, although the name
is a misnomer outside of parameter lists. */
#define _UNUSED_PARAMETER_ _GL_UNUSED
/* End of gnulib-related stuff. */
/* If using GNU, then support inline function declarations. */
#ifdef __GNUC__
#define INLINE __inline__
@ -344,11 +404,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#define RE_TRANSLATE_P(TBL) (XFASTINT (TBL) != 0)
#endif
/* Avoid link-time collision with system mktime if we will use our own. */
#if ! HAVE_MKTIME || BROKEN_MKTIME
#define mktime emacs_mktime
#endif
#define my_strftime nstrftime /* for strftime.c */
#ifndef WINDOWSNT

View file

@ -679,6 +679,7 @@ if exist config.tmp del config.tmp
copy /b config.settings+%MAKECMD%.defs+..\nt\makefile.w32-in ..\nt\makefile
if exist ..\admin\unidata copy /b config.settings+%MAKECMD%.defs+..\admin\unidata\makefile.w32-in ..\admin\unidata\makefile
copy /b config.settings+%MAKECMD%.defs+..\lib-src\makefile.w32-in ..\lib-src\makefile
copy /b config.settings+%MAKECMD%.defs+..\lib\makefile.w32-in ..\lib\makefile
copy /b config.settings+%MAKECMD%.defs+..\src\makefile.w32-in ..\src\makefile
copy /b config.settings+%MAKECMD%.defs+..\doc\emacs\makefile.w32-in ..\doc\emacs\makefile
copy /b config.settings+%MAKECMD%.defs+..\doc\misc\makefile.w32-in ..\doc\misc\makefile

View file

@ -92,6 +92,8 @@ $(BLD)/addpm.$(O) $(BLD)/ddeclient.$(O) $(BLD)/runemacs.$(O) $(BLD)/cmdproxy.$(O
all: which-sh stamp_BLD $(ALL) $(CLIENTRES) maybe-bootstrap all-other-dirs-$(MAKETYPE)
all-other-dirs-nmake: addsection
cd ..\lib
$(MAKE) $(MFLAGS) all
cd ..\lib-src
$(MAKE) $(MFLAGS) all
cd ..\src
@ -103,6 +105,7 @@ all-other-dirs-nmake: addsection
cd ..\nt
all-other-dirs-gmake: addsection
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib all
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib-src all
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src all
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lisp all
@ -158,6 +161,8 @@ bootstrap-nmake: addsection cmdproxy
$(MAKE) $(MFLAGS) clean
cd ..\lib-src
$(MAKE) $(MFLAGS) clean
cd ..\lib
$(MAKE) $(MFLAGS) clean
cd ..\src
$(MAKE) $(MFLAGS) bootstrap
$(MAKE) $(MFLAGS) bootstrap-clean
@ -173,6 +178,7 @@ bootstrap-gmake: addsection cmdproxy
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lisp bootstrap-clean
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src clean
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib-src clean
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib clean
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src bootstrap
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src bootstrap-clean
$(CP) $(BLD)/cmdproxy.exe ../bin
@ -184,11 +190,14 @@ bootstrap-clean: bootstrap-clean-$(MAKETYPE)
bootstrap-clean-nmake:
cd ..\src
$(MAKE) $(MFLAGS) bootstrap-clean
cd ..\lib
$(MAKE) $(MFLAGS) clean
cd ..\lisp
$(MAKE) $(MFLAGS) bootstrap-clean
bootstrap-clean-gmake:
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src bootstrap-clean
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib clean
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lisp bootstrap-clean
$(INSTALL_DIR):
@ -297,6 +306,8 @@ clean: clean-other-dirs-$(MAKETYPE)
- $(DEL) ../etc/DOC ../etc/DOC-X
clean-other-dirs-nmake:
cd ..\lib
$(MAKE) $(MFLAGS) clean
cd ..\lib-src
$(MAKE) $(MFLAGS) clean
cd ..\src
@ -314,6 +325,7 @@ clean-other-dirs-nmake:
cd ..\nt
clean-other-dirs-gmake:
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib clean
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib-src clean
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src clean
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../leim clean
@ -323,6 +335,8 @@ clean-other-dirs-gmake:
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../doc/lispref clean
cleanall-other-dirs-nmake:
cd ..\lib
$(MAKE) $(MFLAGS) cleanall
cd ..\lib-src
$(MAKE) $(MFLAGS) cleanall
cd ..\src
@ -330,6 +344,7 @@ cleanall-other-dirs-nmake:
cd ..\nt
cleanall-other-dirs-gmake:
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib cleanall
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib-src cleanall
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src cleanall
@ -355,6 +370,8 @@ top-distclean:
distclean: distclean-other-dirs-$(MAKETYPE) top-distclean
distclean-other-dirs-nmake:
cd ..\lib
$(MAKE) $(MFLAGS) distclean
cd ..\lib-src
$(MAKE) $(MFLAGS) distclean
cd ..\src
@ -374,6 +391,7 @@ distclean-other-dirs-nmake:
cd ..\nt
distclean-other-dirs-gmake:
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib distclean
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib-src distclean
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src distclean
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lisp distclean
@ -386,6 +404,8 @@ distclean-other-dirs-gmake:
maintainer-clean: maintainer-clean-other-dirs-$(MAKETYPE) top-distclean
maintainer-clean-other-dirs-nmake:
cd ..\lib
$(MAKE) $(MFLAGS) maintainer-clean
cd ..\lib-src
$(MAKE) $(MFLAGS) maintainer-clean
cd ..\src
@ -405,6 +425,7 @@ maintainer-clean-other-dirs-nmake:
cd ..\nt
maintainer-clean-other-dirs-gmake:
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib maintainer-clean
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lib-src maintainer-clean
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../src maintainer-clean
$(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lisp maintainer-clean
@ -424,6 +445,7 @@ TAGS-gmake: frc
../lib-src/$(BLD)/etags $(CURDIR)/*.c
$(MAKE) $(MFLAGS) -C ../src TAGS TAGS-LISP
$(MAKE) $(MFLAGS) -C ../lib-src TAGS
$(MAKE) $(MFLAGS) -C ../lib TAGS
TAGS-nmake:
echo This target is not supported with NMake

View file

@ -1,3 +1,13 @@
2011-01-29 Eli Zaretskii <eliz@gnu.org>
* s/ms-w32.h (HAVE_MKTIME): Remove.
* makefile.w32-in (LOCAL_FLAGS): Add -I../lib.
(GNULIB): New variable.
(LIBS): Add $(GNULIB).
$(TEMACS): Depend on $(GNULIB).
<top-level>: Fix font-lock disrupted by a lone `"'.
2011-01-29 Jan Djärv <jan.h.d@swipnet.se>
* nsselect.m (ns_string_from_pasteboard): Get length of string

View file

@ -28,7 +28,7 @@ EMACSLOADPATH=$(CURDIR)/../lisp
# HAVE_CONFIG_H is required by some generic gnu sources stuck into
# the emacs source tree.
#
LOCAL_FLAGS = -Demacs=1 -DHAVE_CONFIG_H -I../nt/inc -DHAVE_NTGUI=1 $(EMACS_EXTRA_C_FLAGS)
LOCAL_FLAGS = -Demacs=1 -DHAVE_CONFIG_H -I../lib -I../nt/inc -DHAVE_NTGUI=1 $(EMACS_EXTRA_C_FLAGS)
SRC = .
EMACS = $(BLD)/emacs.exe
@ -40,6 +40,7 @@ TLIB2 = $(BLD)/temacs2.$(A)
TOBJ = $(BLD)/firstfile.$(O)
TRES = $(BLD)/emacs.res
TLASTLIB = $(BLD)/lastfile.$(A)
GNULIB = ../lib/$(BLD)/libgnu.$(A)
DOC = $(OBJDIR)/etc/DOC-X
@ -140,6 +141,7 @@ LIBS = $(TLIB0) \
$(TLIB1) \
$(TLIB2) \
$(TLASTLIB) \
$(GNULIB) \
$(WINMM) \
$(ADVAPI32) \
$(GDI32) \
@ -174,7 +176,7 @@ $(EMACS): $(DOC) $(TEMACS)
#
temacs: stamp_BLD $(TEMACS)
$(TEMACS): $(TLIB0) $(TLIB1) $(TLIB2) $(TLASTLIB) $(TOBJ) $(TRES) \
../nt/$(BLD)/addsection.exe
../nt/$(BLD)/addsection.exe $(GNULIB)
$(LINK) $(LINK_OUT)$(TEMACS_TMP) $(FULL_LINK_FLAGS) $(TOBJ) $(TRES) $(LIBS)
"../nt/$(BLD)/addsection" "$(TEMACS_TMP)" "$(TEMACS)" EMHEAP 21
@ -192,6 +194,9 @@ make-buildobj-CMD:
echo $(OBJ2) \>> buildobj.h
echo ^">> buildobj.h
# "
# The above line is here to countermand the single quote
# on the last "echo" command above, wrt font-lock.
make-buildobj-SH:
echo '#define BUILDOBJ $(DQUOTE)\' > buildobj.h
echo $(OBJ0) '\' >> buildobj.h

View file

@ -150,7 +150,6 @@ struct sigaction {
#undef HAVE_SETSID
#undef HAVE_FPATHCONF
#define HAVE_SELECT 1
#define HAVE_MKTIME 1
#undef HAVE_EUIDACCESS
#define HAVE_GETPAGESIZE 1
#define HAVE_TZSET 1