781 lines
17 KiB
Makefile
781 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} # -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 \
|
||
|
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
|