libc/winsup/cygwin/Makefile.in
Mark Geisert 7f32efbf73 POSIX Asynchronous I/O support: other files
Updates to misc files to integrate AIO into the Cygwin source tree.
Much of it has to be done when adding any new syscalls.  There are
some updates to limits.h for AIO-specific limits.  And some doc mods.
2018-07-25 09:36:24 +02:00

796 lines
18 KiB
Makefile

# Makefile.in for Cygwin.
#
# This file is part of Cygwin.
#
# This software is a copyrighted work licensed under the terms of the
# Cygwin license. Please consult the file "CYGWIN_LICENSE" for
# details.
# configure_input: @configure_input@
# This makefile requires GNU make.
srcdir:=@srcdir@
target_builddir:=@target_builddir@
winsup_srcdir:=@winsup_srcdir@
configure_args=@configure_args@
export CC:=@CC@
export CXX:=@CXX@
CFLAGS?=@CFLAGS@
CXXFLAGS?=@CXXFLAGS@
include ${srcdir}/../Makefile.common
# environment variables used by ccwrap
export CCWRAP_HEADERS:=. ${srcdir}
export CCWRAP_SYSTEM_HEADERS:=@cygwin_headers@ @newlib_headers@
export CCWRAP_DIRAFTER_HEADERS:=@windows_headers@
VPATH+=$(srcdir)/regex $(srcdir)/lib $(srcdir)/libc $(srcdir)/math
target_cpu:=@target_cpu@
target_alias:=@target_alias@
build_alias:=@build_alias@
host_alias:=@host_alias@
prefix:=@prefix@
program_transform_name:=@program_transform_name@
exec_prefix:=@exec_prefix@
bindir:=@bindir@
libdir:=@libdir@
mandir:=@mandir@
sysconfdir:=@sysconfdir@
datarootdir:=@datarootdir@
ifeq ($(target_alias),$(host_alias))
ifeq ($(build_alias),$(host_alias))
tooldir:=$(exec_prefix)
else
tooldir:=$(exec_prefix)/$(target_alias)
endif
else
tooldir:=$(exec_prefix)/$(target_alias)
endif
datadir:=@datadir@
infodir:=@infodir@
includedir:=@includedir@
override INSTALL:=@INSTALL@
override INSTALL_PROGRAM:=@INSTALL_PROGRAM@
override INSTALL_DATA:=@INSTALL_DATA@
WINDOWS_LIBDIR:=@windows_libdir@
cygserver_blddir:=${target_builddir}/winsup/cygserver
LIBSERVER:=${cygserver_blddir}/libcygserver.a
LIBC:=$(newlib_build)/libc/libc.a
LIBM:=$(newlib_build)/libm/libm.a
CRT0:=$(cygwin_build)/crt0.o
#
# --enable options from configure
#
MT_SAFE:=@MT_SAFE@
CCEXTRA=
COMMON_CFLAGS=-MMD ${$(*F)_CFLAGS} -Werror -fmerge-constants -ftracer $(CCEXTRA)
ifeq ($(target_cpu),x86_64)
COMMON_CFLAGS+=-mcmodel=small
endif
COMPILE.cc+=${COMMON_CFLAGS} -std=gnu++98
COMPILE.c+=${COMMON_CFLAGS}
AR:=@AR@
AR_FLAGS:=qv
RANLIB:=@RANLIB@
LD:=@LD@
DLLTOOL:=@DLLTOOL@
WINDRES:=@WINDRES@
AS:=@AS@
NM:=@NM@
OBJCOPY:=@OBJCOPY@
OBJDUMP:=@OBJDUMP@
STRIP:=@STRIP@
LDSCRIPT:=cygwin.sc
MKDIRP:=$(INSTALL) -m 755 -d
@SET_MAKE@
# Setup the testing framework, if you have one
EXPECT = `if [ -f $${rootme}/../../expect/expect$(EXEEXT) ] ; then \
echo $${rootme}/../../expect/expect$(EXEEXT) ; \
else echo expect ; fi`
RUNTEST = `if [ -f $${srcdir}/../dejagnu/runtest ] ; then \
echo $${srcdir}/../dejagnu/runtest ; \
else echo runtest; fi`
RUNTESTFLAGS =
# Parameters used in building the cygwin.dll.
# We build as cygwin0.dll and rename at install time to overcome
# native rebuilding issues (we don't want the build tools to see a partially
# built cygwin.dll and attempt to use it instead of the old one).
DLL_NAME:=@DLL_NAME@
TEST_DLL_NAME:=${patsubst %1.dll,%0.dll,@DLL_NAME@}
TEST_LIB_NAME:=libcygwin0.a
STATIC_LIB_NAME:=libcygwin_s.a
DIN_FILE=@DIN_FILE@ common.din
DEF_FILE:=cygwin.def
TLSOFFSETS_H:=@TLSOFFSETS_H@
DLL_ENTRY:=@DLL_ENTRY@
LIBGMON_A:=libgmon.a
CYGWIN_START:=crt0.o
GMON_START:=gcrt0.o
toolopts:=--cpu=${target_cpu} --ar=${AR} --as=${AS} --nm=${NM} --objcopy=${OBJCOPY}
speclib=\
${srcdir}/speclib ${toolopts} \
--exclude='cygwin' \
--exclude='(?i:dll)' \
--exclude='reloc' \
--exclude='^main$$' \
--exclude='^_main$$' \
$^
# Some things want these from libc, but they have their own static
# data which apps can get to, which is a pain in the dll, so we
# include them directly into the library.
LIBCOS:=${sort ${addsuffix .o,${basename ${notdir ${wildcard $(srcdir)/lib/*.c}}}} \
${addsuffix .o,${basename ${notdir ${wildcard $(srcdir)/lib/*.cc}}}}}
# Build all source files in the config directory
EXTRA_OFILES:=
MALLOC_OFILES:=malloc.o
DLL_IMPORTS:=${shell $(CC) -print-file-name=w32api/libkernel32.a} ${shell $(CC) -print-file-name=w32api/libntdll.a}
MT_SAFE_OBJECTS:=
#
MATH_OFILES:= \
acoshl.o \
acosl.o \
asinhl.o \
asinl.o \
atan2l.o \
atanhl.o \
atanl.o \
cabsl.o \
cacosl.o \
cargl.o \
casinl.o \
catanl.o \
cbrtl.o \
ccosl.o \
ceill.o \
cephes_emath.o \
cexpl.o \
cimagl.o \
clog10l.o \
clogl.o \
conjl.o \
copysignl.o \
coshl.o \
cosl.o \
cosl_internal.o \
cossin.o \
cpowl.o \
cprojl.o \
creall.o \
csinl.o \
csqrtl.o \
ctanl.o \
erfl.o \
exp10l.o \
exp2l.o \
expl.o \
expm1l.o \
fabsl.o \
fdiml.o \
finite.o \
floorl.o \
fmal.o \
fmaxl.o \
fminl.o \
fmodl.o \
frexpl.o \
ilogbl.o \
internal_logl.o \
isinf.o \
isnan.o \
ldexpl.o \
lgammal.o \
llrint.o \
llrintf.o \
llrintl.o \
llroundl.o \
log10l.o \
log1pl.o \
log2l.o \
logbl.o \
logl.o \
lrint.o \
lrintf.o \
lrintl.o \
lroundl.o \
modfl.o \
nanl.o \
nearbyint.o \
nearbyintf.o \
nearbyintl.o \
nextafterl.o \
nexttoward.o \
nexttowardf.o \
pow10l.o \
powil.o \
powl.o \
remainder.o \
remainderf.o \
remainderl.o \
remquol.o \
rint.o \
rintf.o \
rintl.o \
roundl.o \
scalbl.o \
scalbnl.o \
sinhl.o \
sinl.o \
sinl_internal.o \
sqrtl.o \
tanhl.o \
tanl.o \
tgammal.o \
truncl.o
DLL_OFILES:= \
advapi32.o \
aio.o \
arc4random_stir.o \
assert.o \
autoload.o \
base64.o \
bsdlib.o \
ctype.o \
cxx.o \
cygheap.o \
cygthread.o \
cygtls.o \
cygwait.o \
cygxdr.o \
dcrt0.o \
debug.o \
devices.o \
dir.o \
dlfcn.o \
dll_init.o \
dtable.o \
environ.o \
errno.o \
exceptions.o \
exec.o \
external.o \
fcntl.o \
fenv.o \
fhandler.o \
fhandler_clipboard.o \
fhandler_console.o \
fhandler_dev.o \
fhandler_disk_file.o \
fhandler_dsp.o \
fhandler_fifo.o \
fhandler_floppy.o \
fhandler_netdrive.o \
fhandler_nodevice.o \
fhandler_proc.o \
fhandler_process.o \
fhandler_procnet.o \
fhandler_procsys.o \
fhandler_procsysvipc.o \
fhandler_random.o \
fhandler_raw.o \
fhandler_registry.o \
fhandler_serial.o \
fhandler_socket.o \
fhandler_socket_inet.o \
fhandler_socket_local.o \
fhandler_socket_unix.o \
fhandler_tape.o \
fhandler_termios.o \
fhandler_tty.o \
fhandler_virtual.o \
fhandler_windows.o \
fhandler_zero.o \
flock.o \
fnmatch.o \
fork.o \
fts.o \
ftw.o \
getentropy.o \
getopt.o \
glob.o \
glob_pattern_p.o \
globals.o \
grp.o \
heap.o \
hookapi.o \
inet_addr.o \
inet_network.o \
init.o \
ioctl.o \
ipc.o \
kernel32.o \
ldap.o \
libstdcxx_wrapper.o \
loadavg.o \
localtime.o \
lsearch.o \
malloc_wrapper.o \
minires-os-if.o \
minires.o \
miscfuncs.o \
mktemp.o \
mmap.o \
msg.o \
msgcat.o \
mount.o \
net.o \
netdb.o \
nfs.o \
nftw.o \
nlsfuncs.o \
ntea.o \
passwd.o \
path.o \
pinfo.o \
pipe.o \
poll.o \
posix_ipc.o \
pseudo-reloc.o \
pthread.o \
quotactl.o \
random.o \
regcomp.o \
regerror.o \
regexec.o \
regfree.o \
registry.o \
resource.o \
rexec.o \
rcmd.o \
scandir.o \
sched.o \
sec_acl.o \
sec_auth.o \
sec_helper.o \
sec_posixacl.o \
security.o \
select.o \
sem.o \
setlsapwd.o \
shared.o \
shm.o \
sigfe.o \
signal.o \
sigproc.o \
smallprint.o \
spawn.o \
strace.o \
strfmon.o \
strfuncs.o \
strptime.o \
strsep.o \
strsig.o \
sync.o \
syscalls.o \
sysconf.o \
syslog.o \
termios.o \
thread.o \
timer.o \
times.o \
tls_pbuf.o \
tty.o \
uinfo.o \
uname.o \
wait.o \
wincap.o \
window.o \
winf.o \
xsique.o \
$(EXTRA_OFILES) \
$(MALLOC_OFILES) \
$(MATH_OFILES) \
$(MT_SAFE_OBJECTS)
EXCLUDE_STATIC_OFILES:=$(addprefix --exclude=,\
cygtls.o \
dcrt0.o \
exceptions.o \
fork.o \
signal.o \
spawn.o \
)
VERSION_OFILES:=version.o winver.o
ifdef PREPROCESS
override DLL_OFILES:=$(patsubst %.o,%_E,${DLL_OFILES})
override EXCLUDE_STATIC_OFILES:=$(patsubst %.o,%_E,${EXCLUDE_STATIC_OFILES})
override EXTRA_OFILES=$(patsubst %.o,%_E,${DLL_OFILES}))
override MALLOC_OFILES:=$(patsubst %.o,%.E,${MALLOC_OFILES})
endif #PREPROCESS
ifeq ($(target_cpu),x86_64)
# Needed by mcountFunc.S to choose the right code path and symbol names
ASFLAGS:=-D_WIN64
endif
GMON_OFILES:=gmon.o mcount.o profil.o mcountFunc.o
NEW_FUNCTIONS:=$(addprefix --replace=,\
atexit= \
timezone= \
__xdrrec_getrec= \
__xdrrec_setnonblock= \
xdr_array= \
xdr_bool= \
xdr_bytes= \
xdr_char= \
xdr_double= \
xdr_enum= \
xdr_float= \
xdr_free= \
xdr_hyper= \
xdr_int= \
xdr_int16_t= \
xdr_int32_t= \
xdr_int64_t= \
xdr_int8_t= \
xdr_long= \
xdr_longlong_t= \
xdr_netobj= \
xdr_opaque= \
xdr_pointer= \
xdr_reference= \
xdr_short= \
xdr_sizeof= \
xdr_string= \
xdr_u_char= \
xdr_u_hyper= \
xdr_u_int= \
xdr_u_int16_t= \
xdr_u_int32_t= \
xdr_u_int64_t= \
xdr_u_int8_t= \
xdr_u_long= \
xdr_u_longlong_t= \
xdr_u_short= \
xdr_uint16_t= \
xdr_uint32_t= \
xdr_uint64_t= \
xdr_uint8_t= \
xdr_union= \
xdr_vector= \
xdr_void= \
xdr_wrapstring= \
xdrmem_create= \
xdrrec_create= \
xdrrec_endofrecord= \
xdrrec_eof= \
xdrrec_skiprecord= \
xdrstdio_create= \
)
ifeq ($(target_cpu),x86_64)
NEW_FUNCTIONS+=
else
NEW_FUNCTIONS+=$(addprefix --replace=,\
acl=_acl32 \
aclcheck=_aclcheck32 \
aclfrommode=_aclfrommode32 \
aclfrompbits=_aclfrompbits32 \
aclfromtext=_aclfromtext32 \
aclsort=_aclsort32 \
acltomode=_acltomode32 \
acltopbits=_acltopbits32 \
acltotext=_acltotext32 \
chown=_chown32 \
facl=_facl32 \
fchown=_fchown32 \
fcntl=_fcntl64 \
fdopen=_fdopen64 \
fgetpos=_fgetpos64 \
fopen=_fopen64 \
freopen=_freopen64 \
fseeko=_fseeko64 \
fsetpos=_fsetpos64 \
fstat=_fstat64 \
ftello=_ftello64 \
ftruncate=_ftruncate64 \
getegid=_getegid32 \
geteuid=_geteuid32 \
getgid=_getgid32 \
getgrent=_getgrent32 \
getgrgid=_getgrgid32 \
getgrnam=_getgrnam32 \
getgroups=_getgroups32 \
getpwuid=_getpwuid32 \
getpwuid_r=_getpwuid_r32 \
getuid=_getuid32 \
initgroups=_initgroups32 \
lchown=_lchown32 \
lseek=_lseek64 \
lstat=_lstat64 \
mknod=_mknod32 \
mmap=_mmap64 \
open=_open64 \
setegid=_setegid32 \
seteuid=_seteuid32 \
setgid=_setgid32 \
setgroups=_setgroups32 \
setregid=_setregid32 \
setreuid=_setreuid32 \
setuid=_setuid32 \
stat=_stat64 \
tmpfile=_tmpfile64 \
truncate=_truncate64 \
)
endif
API_VER:=$(srcdir)/include/cygwin/version.h
LIB_NAME:=libcygwin.a
SUBLIBS:=libpthread.a libutil.a ${CURDIR}/libm.a ${CURDIR}/libc.a libdl.a libresolv.a librt.a libacl.a libssp.a
EXTRALIBS:=libautomode.a libbinmode.a libtextmode.a libtextreadmode.a
INSTOBJS:=automode.o binmode.o textmode.o textreadmode.o
TARGET_LIBS:=$(LIB_NAME) $(CYGWIN_START) $(GMON_START) $(LIBGMON_A) $(SUBLIBS) $(INSTOBJS) $(EXTRALIBS)
ifneq "${filter -O%,$(CFLAGS)}" ""
dtable_CFLAGS:=-fcheck-new
localtime_CFLAGS:=-fwrapv
malloc_CFLAGS:=-O3
sync_CFLAGS:=-O3
ifeq ($(target_cpu),i686)
# on x86, exceptions.cc must be compiled with a frame-pointer as it uses RtlCaptureContext()
exceptions_CFLAGS:=-fno-omit-frame-pointer
endif
endif
fhandler_proc_CFLAGS+=-DUSERNAME="\"$(USER)\"" -DHOSTNAME="\"$(HOSTNAME)\""
fhandler_proc_CFLAGS+=-DGCC_VERSION="\"`$(CC) -v 2>&1 | tail -n 1`\""
_cygwin_crt0_common_STDINCFLAGS:=yes
libstdcxx_wrapper_STDINCFLAGS:=yes
cxx_STDINCFLAGS:=yes
.PHONY: all force dll_ofiles install all_target install_target all_host \
install_host install install-libs install-headers \
clean distclean realclean maintainer-clean
all_host=@all_host@
install_host=@install_host@
all: all_target $(all_host)
all_target: $(TARGET_LIBS)
all_host: $(TEST_LIB_NAME)
force:
install: install-libs install-headers install-man install-ldif install_target \
$(install_host) $(install_target)
uninstall: uninstall-libs uninstall-headers uninstall-man
install-libs: $(TARGET_LIBS)
@$(MKDIRP) $(DESTDIR)$(bindir)
$(INSTALL_PROGRAM) $(TEST_DLL_NAME) $(DESTDIR)$(bindir)/$(DLL_NAME); \
for i in $^; do \
$(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/lib/`basename $$i` ; \
done
cd $(DESTDIR)$(tooldir)/lib && ln -sf libcygwin.a libg.a
install-headers:
cd $(srcdir); \
for sub in `find include -name '[a-z]*' -type d -print | sort`; do \
$(MKDIRP) $(DESTDIR)$(tooldir)/$$sub; \
for i in $$sub/*.h ; do \
$(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/$$sub/`basename $$i` ; \
done ; \
done ; \
install-man:
@$(MKDIRP) $(DESTDIR)$(mandir)/man2 $(DESTDIR)$(mandir)/man3 $(DESTDIR)$(mandir)/man5 $(DESTDIR)$(mandir)/man7
cd $(srcdir); \
for i in `find . -type f ! -path './release/*' -name '*.2'`; do \
$(INSTALL_DATA) $$i $(DESTDIR)$(mandir)/man2/`basename $$i` ; \
done; \
for i in `find . -type f ! -path './release/*' -name '*.3'`; do \
$(INSTALL_DATA) $$i $(DESTDIR)$(mandir)/man3/`basename $$i` ; \
done; \
for i in `find . -type f ! -path './release/*' -name '*.5'`; do \
$(INSTALL_DATA) $$i $(DESTDIR)$(mandir)/man5/`basename $$i` ; \
done; \
for i in `find . -type f ! -path './release/*' -name '*.7'`; do \
$(INSTALL_DATA) $$i $(DESTDIR)$(mandir)/man7/`basename $$i` ; \
done
install-ldif:
@$(MKDIRP) $(DESTDIR)$(datarootdir)/cygwin
$(INSTALL_DATA) $(srcdir)/cygwin.ldif $(DESTDIR)$(datarootdir)/cygwin
install_target:
install_host:
uninstall-libs: $(TARGET_LIBS)
rm -f $(bindir)/$(DLL_NAME); \
for i in $^; do \
rm -f $(tooldir)/lib/$$i ; \
done
uninstall-headers:
cd $(srcdir); \
for sub in `find include -name '[a-z]*' -type d -print | sort`; do \
for i in $$sub/*.h ; do \
rm -f $(tooldir)/$$sub/`basename $$i` ; \
done ; \
done ; \
uninstall-man:
cd $(srcdir); \
for i in `find . -type f -name '*.2'`; do \
rm -f $(DESTDIR)$(mandir)/man2/`basename $$i` ; \
done; \
for i in `find . -type f -name '*.3'`; do \
rm -f $(DESTDIR)$(mandir)/man3/`basename $$i` ; \
done; \
for i in `find . -type f -name '*.5'`; do \
rm -f $(DESTDIR)$(mandir)/man5/`basename $$i` ; \
done; \
for i in `find . -type f -name '*.7'`; do \
rm -f $(DESTDIR)$(mandir)/man7/`basename $$i` ; \
done
clean distclean realclean:
-rm -f *.o *.dll *.dbg *.a *.exp junk *.base version.cc *.exe *.d *stamp* *_magic.h sigfe.s cygwin.def globals.h
-@$(MAKE) -C ${cygserver_blddir} libclean
maintainer-clean: clean
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
-rm -fr configure
-rm -f $(srcdir)/$(TLSOFFSETS_H) $(srcdir)/devices.cc
# Rule to build LDSCRIPT
$(LDSCRIPT): $(LDSCRIPT).in
$(CC) -E - -P < $^ -o $@
# Rule to build cygwin.dll
$(TEST_DLL_NAME): $(LDSCRIPT) dllfixdbg $(DLL_OFILES) $(LIBSERVER) $(LIBC) $(LIBM) $(API_VER) Makefile $(VERSION_OFILES)
$(CXX) $(CXXFLAGS) \
-mno-use-libstdc-wrappers -L${WINDOWS_LIBDIR} \
-Wl,--gc-sections $(nostdlib) -Wl,-T$(firstword $^) -static \
-Wl,--heap=0 -Wl,--out-implib,cygdll.a -shared -o $@ \
-e $(DLL_ENTRY) $(DEF_FILE) $(DLL_OFILES) $(VERSION_OFILES) \
$(MALLOC_OBJ) $(LIBSERVER) $(LIBM) $(LIBC) \
-lgcc $(DLL_IMPORTS) -Wl,-Map,cygwin.map
@$(word 2,$^) $(OBJDUMP) $(OBJCOPY) $@ ${patsubst %0.dll,%1.dbg,$@}
@ln -f $@ new-$(DLL_NAME)
# Rule to build libcygwin.a
$(LIB_NAME): $(DEF_FILE) $(LIBCOS) | $(TEST_DLL_NAME)
${srcdir}/mkimport ${toolopts} ${NEW_FUNCTIONS} $@ cygdll.a $(wordlist 2,99,$^)
${STATIC_LIB_NAME}: mkstatic ${TEST_DLL_NAME}
perl -d $< -x ${EXCLUDE_STATIC_OFILES} --library=${LIBC} --library=${LIBM} --ar=${AR} $@ cygwin.map
# Rule to make stub library used by testsuite
# dependency set to $(LIB_NAME) to accommodate make -j2.
$(TEST_LIB_NAME): $(LIB_NAME)
perl -p -e 'BEGIN{binmode(STDIN); binmode(STDOUT);}; s/cygwin1/cygwin0/g' < $? > $@
$(LIBSERVER): ${cygserver_blddir}/Makefile
$(MAKE) -C ${cygserver_blddir} libcygserver.a
${cygserver_blddir}/Makefile:
/bin/mkdir -p ${@D}
cd ${@D} && exec /bin/sh $(dir ${srcdir})/cygserver/configure ${configure_args}
dll_ofiles: $(DLL_OFILES)
$(LIBGMON_A): $(GMON_OFILES) $(GMON_START)
$(AR) rcv $(LIBGMON_A) $(GMON_OFILES)
globals.h: mkglobals_h globals.cc
$^ > $@
${DLL_OFILES} ${LIBCOS}: globals.h $(srcdir)/$(TLSOFFSETS_H)
shared_info_magic.h: cygmagic shared_info.h
/bin/sh $(word 1,$^) $@ "${COMPILE.cc} -E -x c++" $(word 2,$^) SHARED_MAGIC 'class shared_info' USER_MAGIC 'class user_info'
child_info_magic.h: cygmagic child_info.h
/bin/sh $(word 1,$^) $@ "${COMPILE.cc} -E -x c++" $(word 2,$^) CHILD_INFO_MAGIC 'class child_info'
dcrt0.o sigproc.o: child_info_magic.h
shared.o: shared_info_magic.h
$(srcdir)/devices.cc: gendevices devices.in devices.h
${wordlist 1,2,$^} $@
${CURDIR}/libc.a: ${LIB_NAME} ${CURDIR}/libm.a libpthread.a libutil.a
${speclib} -v ${@F}
${CURDIR}/libm.a: ${LIB_NAME} $(LIBM) $(MATH_OFILES)
${speclib} ${@F}
libpthread.a: ${LIB_NAME} pthread.o thread.o
${speclib} ${@F}
libutil.a: ${LIB_NAME} bsdlib.o
${speclib} ${@F}
libdl.a: ${LIB_NAME} dlfcn.o
${speclib} ${@F}
libresolv.a: ${LIB_NAME} minires.o
${speclib} ${@F}
librt.a: ${LIB_NAME} posix_ipc.o
${speclib} ${@F}
libacl.a: ${LIB_NAME} sec_posixacl.o
${speclib} ${@F}
libssp.a: ${LIB_NAME} $(newlib_build)/libc/ssp/lib.a
${speclib} ${@F}
${EXTRALIBS}: lib%.a: %.o
$(AR) cru $@ $?
winver.o: mkvers.sh include/cygwin/version.h winver.rc $(DLL_OFILES)
@echo "Making version.cc and winver.o";\
/bin/sh ${word 1,$^} ${word 2,$^} ${word 3,$^} $(WINDRES) ${CFLAGS} $(addprefix -I,${CCWRAP_SYSTEM_HEADERS} ${CCWRAP_DIRAFTER_HEADERS})
version.cc: winver.o
Makefile: ${srcdir}/Makefile.in
/bin/sh ./config.status
$(DEF_FILE): gendef $(srcdir)/$(TLSOFFSETS_H) $(DIN_FILE)
$(word 1,$^) --cpu=${target_cpu} --output-def=$@ --tlsoffsets=$(word 2,$^) $(wordlist 3,99,$^)
$(srcdir)/$(TLSOFFSETS_H): gentls_offsets cygtls.h
$^ $@ $(target_cpu) $(COMPILE.cc) -c || rm $@
sigfe.s: $(DEF_FILE)
@[ -s $@ ] || \
{ rm -f $(DEF_FILE); $(MAKE) -s -j1 $(DEF_FILE); }; \
[ -s $@ ] && touch $@
sigfe.o: sigfe.s $(srcdir)/$(TLSOFFSETS_H)
$(CC) ${CFLAGS} -c -o $@ $<
ctags: CTAGS
tags: CTAGS
CTAGS:
-cd $(srcdir) && \
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q \
--regex-C++='/EXPORT_ALIAS *\([a-zA-Z0-9_]*, *([a-zA-Z0-9_]*)\)/\1/' \
--regex-C++='/__ASMNAME *\("([a-zA-Z0-9_]+)"\)/\1/' \
@newlib_headers@ .
deps:=${wildcard *.d}
ifneq (,$(deps))
include $(deps)
endif
%: RCS/%,v