mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-02-03 13:00:39 +08:00
183e5f0a15
The simple newlib hypotl for real long double architectures is too simple at this point. It's implemented as a real call to sqrtl(x^2+y^2). This has a fatal tendency to overflow for big input numbers. Hypotl isn't supposed to do that if the result would still be valid in range of long double. Given the complexity of implementing hypotl for various architectures, we just take the hypotl function from Mingw-w64, which is in the public domain. Even though this hypotl is an architecture-independent implementation, we can't use it for newlib yet, unfortunately, because it requires logbl under the hood. Logbl is yet another function missing in newlib for real long double architectures. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
782 lines
17 KiB
Makefile
782 lines
17 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@
|
|
|
|
CC:=@CC@
|
|
CXX:=@CXX@
|
|
|
|
CFLAGS?=@CFLAGS@
|
|
CXXFLAGS?=@CXXFLAGS@
|
|
INCLUDES?=@INCLUDES@
|
|
|
|
include ${srcdir}/../Makefile.common
|
|
|
|
VPATH+=$(srcdir)/regex $(srcdir)/lib $(srcdir)/libc $(srcdir)/math $(srcdir)/tzcode
|
|
|
|
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@
|
|
|
|
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
|
|
#
|
|
CCEXTRA=
|
|
COMMON_CFLAGS=-MMD ${$(*F)_CFLAGS} -Wimplicit-fallthrough=5 -Werror -fmerge-constants -ftracer $(CCEXTRA)
|
|
ifeq ($(target_cpu),x86_64)
|
|
COMMON_CFLAGS+=-mcmodel=small
|
|
endif
|
|
COMPILE.cc+=${COMMON_CFLAGS} -fno-threadsafe-statics # -std=gnu++14
|
|
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
|
|
|
|
# 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:=cygwin1.dll
|
|
TEST_DLL_NAME:=${patsubst %1.dll,%0.dll,$(DLL_NAME)}
|
|
TEST_LIB_NAME:=libcygwin0.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}
|
|
|
|
#
|
|
LIBC_OFILES:= \
|
|
arc4random_stir.o \
|
|
base64.o \
|
|
bsdlib.o \
|
|
call_once.o \
|
|
cnd.o \
|
|
fnmatch.o \
|
|
fts.o \
|
|
ftw.o \
|
|
getentropy.o \
|
|
getopt.o \
|
|
inet_addr.o \
|
|
inet_network.o \
|
|
minires-os-if.o \
|
|
minires.o \
|
|
msgcat.o \
|
|
mtx.o \
|
|
nftw.o \
|
|
rcmd.o \
|
|
rexec.o \
|
|
strfmon.o \
|
|
strptime.o \
|
|
thrd.o \
|
|
tss.o \
|
|
xsique.o
|
|
|
|
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 \
|
|
hypotl.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 \
|
|
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
|
|
|
|
TZCODE_OFILES:=localtime.o
|
|
|
|
DLL_OFILES:= \
|
|
advapi32.o \
|
|
aio.o \
|
|
assert.o \
|
|
autoload.o \
|
|
clock.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_cygdrive.o \
|
|
fhandler_dev.o \
|
|
fhandler_disk_file.o \
|
|
fhandler_dsp.o \
|
|
fhandler_fifo.o \
|
|
fhandler_floppy.o \
|
|
fhandler_netdrive.o \
|
|
fhandler_nodevice.o \
|
|
fhandler_pipe.o \
|
|
fhandler_proc.o \
|
|
fhandler_process.o \
|
|
fhandler_process_fd.o \
|
|
fhandler_procnet.o \
|
|
fhandler_procsys.o \
|
|
fhandler_procsysvipc.o \
|
|
fhandler_random.o \
|
|
fhandler_raw.o \
|
|
fhandler_registry.o \
|
|
fhandler_serial.o \
|
|
fhandler_signalfd.o \
|
|
fhandler_socket.o \
|
|
fhandler_socket_inet.o \
|
|
fhandler_socket_local.o \
|
|
fhandler_socket_unix.o \
|
|
fhandler_tape.o \
|
|
fhandler_termios.o \
|
|
fhandler_timerfd.o \
|
|
fhandler_tty.o \
|
|
fhandler_virtual.o \
|
|
fhandler_windows.o \
|
|
fhandler_zero.o \
|
|
flock.o \
|
|
fork.o \
|
|
forkable.o \
|
|
glob.o \
|
|
glob_pattern_p.o \
|
|
globals.o \
|
|
grp.o \
|
|
heap.o \
|
|
hookapi.o \
|
|
init.o \
|
|
ioctl.o \
|
|
ipc.o \
|
|
kernel32.o \
|
|
ldap.o \
|
|
libstdcxx_wrapper.o \
|
|
loadavg.o \
|
|
lsearch.o \
|
|
malloc_wrapper.o \
|
|
miscfuncs.o \
|
|
mktemp.o \
|
|
mmap.o \
|
|
mmap_alloc.o \
|
|
msg.o \
|
|
mount.o \
|
|
net.o \
|
|
netdb.o \
|
|
nfs.o \
|
|
nlsfuncs.o \
|
|
ntea.o \
|
|
passwd.o \
|
|
path.o \
|
|
pinfo.o \
|
|
poll.o \
|
|
posix_ipc.o \
|
|
posix_timer.o \
|
|
pseudo-reloc.o \
|
|
pthread.o \
|
|
quotactl.o \
|
|
random.o \
|
|
regcomp.o \
|
|
regerror.o \
|
|
regexec.o \
|
|
regfree.o \
|
|
registry.o \
|
|
resource.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 \
|
|
strfuncs.o \
|
|
strsep.o \
|
|
strsig.o \
|
|
sync.o \
|
|
syscalls.o \
|
|
sysconf.o \
|
|
syslog.o \
|
|
termios.o \
|
|
thread.o \
|
|
timerfd.o \
|
|
times.o \
|
|
tls_pbuf.o \
|
|
tty.o \
|
|
uinfo.o \
|
|
uname.o \
|
|
wait.o \
|
|
wincap.o \
|
|
window.o \
|
|
winf.o \
|
|
$(EXTRA_OFILES) \
|
|
$(MALLOC_OFILES) \
|
|
$(LIBC_OFILES) \
|
|
$(MATH_OFILES) \
|
|
$(TZCODE_OFILES)
|
|
|
|
VERSION_OFILES:=version.o winver.o
|
|
|
|
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= \
|
|
uname=uname_x \
|
|
__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
|
|
# required since gcc 9.x
|
|
exec_CFLAGS:=-fno-builtin-execve
|
|
|
|
fhandler_proc_CFLAGS+=-DUSERNAME="\"$(USER)\"" -DHOSTNAME="\"$(HOSTNAME)\""
|
|
fhandler_proc_CFLAGS+=-DGCC_VERSION="\"`$(CC) -v 2>&1 | tail -n 1`\""
|
|
|
|
.PHONY: all force dll_ofiles install \
|
|
install install-libs install-headers \
|
|
clean distclean realclean maintainer-clean
|
|
|
|
all: $(TARGET_LIBS) $(TEST_LIB_NAME)
|
|
|
|
force:
|
|
|
|
install: install-libs install-headers install-man install-ldif
|
|
|
|
uninstall: uninstall-libs uninstall-headers uninstall-man
|
|
|
|
install-libs: $(TARGET_LIBS)
|
|
@$(MKDIRP) $(DESTDIR)$(bindir) $(DESTDIR)$(tooldir)/lib
|
|
$(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
|
|
|
|
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 cygwin.map cygwin.sc \
|
|
globals.h localtime.patched.c
|
|
-@$(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 \
|
|
-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,$^)
|
|
|
|
# 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
|
|
|
|
dll_ofiles: $(DLL_OFILES)
|
|
|
|
$(LIBGMON_A): $(GMON_OFILES)
|
|
$(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/bash $(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/bash $(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
|
|
|
|
localtime.patched.c: tzcode/localtime.c tzcode/localtime.c.patch
|
|
patch -u -o localtime.patched.c \
|
|
$(srcdir)/tzcode/localtime.c \
|
|
$(srcdir)/tzcode/localtime.c.patch
|
|
|
|
localtime.o: tzcode/localtime_wrapper.c localtime.patched.c
|
|
$(CC) $(CXXFLAGS) ${COMMON_CFLAGS} ${localtime_CFLAGS} \
|
|
-I$(target_builddir)/winsup/cygwin \
|
|
-I$(srcdir) -I$(srcdir)/tzcode -c -o $@ $<
|
|
|
|
$(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 call_once.o cnd.o mtx.o \
|
|
thrd.o tss.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 $@ $?
|
|
|
|
# Every time we touch a source file, the version info has to be rebuilt
|
|
# to maintain a correct build date, especially in uname release output
|
|
find_src_files = $(wildcard $(dir)/*.[chS]) $(wildcard $(dir)/*.cc)
|
|
src_files := $(foreach dir,$(VPATH),$(find_src_files))
|
|
|
|
# mkvers.sh creates version.cc in the first place, winver.o always
|
|
# second, so version.cc is always older than winver.o
|
|
version.cc: mkvers.sh include/cygwin/version.h winver.rc $(src_files)
|
|
@echo "Making version.cc and winver.o";\
|
|
export CC="${CC}";\
|
|
/bin/sh ${word 1,$^} ${word 2,$^} ${word 3,$^} $(WINDRES) ${CFLAGS} -I${srcdir}/include
|
|
$(VERSION_OFILES): version.cc
|
|
|
|
$(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) || 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/' \
|
|
.
|
|
|
|
deps:=${wildcard *.d}
|
|
ifneq (,$(deps))
|
|
include $(deps)
|
|
endif
|
|
|
|
%: RCS/%,v
|