e56f4d7fc4
* Makefile.in: Create library versions of automode.o, textmode.o, and binmode.o for easier use on command line. Create libpthread.a, libm.a, and libc.a with subsets of exports found in libcygwin.a.
281 lines
8.5 KiB
Makefile
281 lines
8.5 KiB
Makefile
# Makefile.in for Cygwin.
|
|
# Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001 Red Hat, Inc.
|
|
#
|
|
# 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.
|
|
|
|
# This makefile requires GNU make.
|
|
|
|
SHELL:=@SHELL@
|
|
srcdir:=@srcdir@
|
|
objdir:=.
|
|
|
|
CONFIG_DIR:=$(srcdir)/config/@CONFIG_DIR@
|
|
VPATH:=$(srcdir):$(CONFIG_DIR):$(srcdir)/regex:$(srcdir)/regexp:$(srcdir)/lib
|
|
|
|
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@
|
|
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@
|
|
|
|
INSTALL:=@INSTALL@
|
|
INSTALL_PROGRAM:=@INSTALL_PROGRAM@
|
|
|
|
#
|
|
# --enable options from configure
|
|
#
|
|
MT_SAFE:=@MT_SAFE@
|
|
DEFS:=@DEFS@
|
|
|
|
CC:=@CC@
|
|
# FIXME: Which is it, CC or CC_FOR_TARGET?
|
|
CC_FOR_TARGET:=$(CC)
|
|
CFLAGS:=@CFLAGS@
|
|
CFLAGS+=-MMD -fbuiltin
|
|
CXX:=@CXX@
|
|
CXXFLAGS:=@CXXFLAGS@
|
|
|
|
# For linking mount, etc. crt0.o isn't accessable in a fresh build.
|
|
EXE_LDFLAGS:=@EXE_LDFLAGS@
|
|
|
|
AR:=@AR@
|
|
AR_FLAGS:=qv
|
|
RANLIB:=@RANLIB@
|
|
LD:=@LD@
|
|
DLLTOOL:=@DLLTOOL@
|
|
WINDRES:=@WINDRES@
|
|
AS:=@AS@
|
|
NM:=@NM@
|
|
LDSCRIPT:=cygwin.sc
|
|
|
|
#
|
|
# Include common definitions for winsup directory
|
|
#
|
|
include $(srcdir)/../Makefile.common
|
|
|
|
INSTALL_DATA:=$(SHELL) $(updir1)/install-sh -c
|
|
|
|
@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 new-cygwin.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
|
|
LIB_NAME:=libcygwin.a
|
|
DEF_FILE:=cygwin.def
|
|
DLL_ENTRY:=@DLL_ENTRY@
|
|
|
|
LIBGMON_A:=libgmon.a
|
|
GMON_START:=gcrt0.o
|
|
|
|
# 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_DLL_OFILES:=${addsuffix .o,${basename ${notdir ${wildcard $(CONFIG_DIR)/*.c}}}}
|
|
|
|
EXTRA_OFILES=$(bupdir1)/libiberty/random.o $(bupdir1)/libiberty/strsignal.o
|
|
|
|
MALLOC_OFILES=@MALLOC_OFILES@
|
|
|
|
DLL_IMPORTS:=$(w32api_lib)/libkernel32.a
|
|
|
|
DLL_OFILES:=assert.o autoload.o cygheap.o dcrt0.o debug.o delqueue.o dir.o \
|
|
dlfcn.o dll_init.o dtable.o environ.o errno.o exceptions.o exec.o \
|
|
external.o fcntl.o fhandler.o fhandler_clipboard.o fhandler_console.o \
|
|
fhandler_disk_file.o fhandler_dsp.o fhandler_floppy.o fhandler_mem.o \
|
|
fhandler_random.o fhandler_raw.o fhandler_serial.o fhandler_socket.o \
|
|
fhandler_tape.o fhandler_termios.o fhandler_tty.o fhandler_windows.o \
|
|
fhandler_zero.o fork.o glob.o grp.o heap.o init.o ioctl.o localtime.o \
|
|
malloc.o miscfuncs.o mmap.o net.o ntea.o passwd.o path.o pinfo.o pipe.o \
|
|
poll.o pthread.o regcomp.o regerror.o regexec.o regfree.o registry.o \
|
|
resource.o scandir.o sched.o sec_acl.o sec_helper.o security.o \
|
|
select.o shared.o shortcut.o signal.o sigproc.o smallprint.o spawn.o \
|
|
strace.o strsep.o sync.o syscalls.o sysconf.o syslog.o termios.o \
|
|
thread.o times.o tty.o uinfo.o uname.o v8_regexp.o v8_regerror.o \
|
|
v8_regsub.o wait.o wincap.o window.o \
|
|
$(EXTRA_DLL_OFILES) $(EXTRA_OFILES) $(MALLOC_OFILES) $(MT_SAFE_OBJECTS)
|
|
|
|
GMON_OFILES:=gmon.o mcount.o profil.o
|
|
|
|
OBSOLETE_FUNCTIONS:=regcomp regerror regexec regfree regsub
|
|
NEW_FUNCTIONS:=regcomp posix_regcomp \
|
|
regerror posix_regerror \
|
|
regexec posix_regexec \
|
|
regfree posix_regfree
|
|
|
|
PWD:=${shell pwd}
|
|
SUBLIBS:=libpthread.a $(PWD)/libm.a libc.a
|
|
EXTRALIBS:=libautomode.a libbinmode.a libtextmode.a
|
|
INSTOBJS:=automode.o binmode.o textmode.o
|
|
TARGET_LIBS:=$(LIB_NAME) $(SUBLIBS) $(GMON_START) $(LIBGMON_A) $(SUBLIBS) $(INSTOBJS) $(EXTRALIBS)
|
|
.PHONY: all force dll_ofiles install all_target install_target all_host install_host \
|
|
install install_target install-libs install-headers
|
|
|
|
.SUFFIXES:
|
|
.SUFFIXES: .c .cc .def .a .o .d
|
|
|
|
all_host=@all_host@
|
|
install_host=@install_host@
|
|
|
|
all: all_target $(all_host)
|
|
|
|
all_target: $(TARGET_LIBS)
|
|
|
|
all_host: new-$(LIB_NAME) cygrun.exe
|
|
|
|
force:
|
|
|
|
install: install-libs install-headers install-man $(install_host) $(install_target)
|
|
|
|
install-libs: $(TARGET_LIBS)
|
|
$(INSTALL_DATA) new-$(DLL_NAME) $(bindir)/$(DLL_NAME); \
|
|
for i in $^; do \
|
|
$(INSTALL_DATA) $$i $(tooldir)/lib/$$i ; \
|
|
done
|
|
|
|
install-headers:
|
|
cd $(srcdir); \
|
|
for sub in `find include -name '[a-z]*' -type d -print | sort`; do \
|
|
for i in $$sub/*.h ; do \
|
|
$(INSTALL_DATA) $$i $(tooldir)/$$sub/`basename $$i` ; \
|
|
done ; \
|
|
done ; \
|
|
$(INSTALL_DATA) regex/regex.h $(tooldir)/include/regex.h
|
|
|
|
install-man:
|
|
cd $(srcdir); \
|
|
for i in `find . -type f -name '*.2'`; do \
|
|
$(INSTALL_DATA) $$i $(tooldir)/man/man2/`basename $$i` ; \
|
|
done; \
|
|
for i in `find . -type f -name '*.3'`; do \
|
|
$(INSTALL_DATA) $$i $(tooldir)/man/man3/`basename $$i` ; \
|
|
done; \
|
|
for i in `find . -type f -name '*.5'`; do \
|
|
$(INSTALL_DATA) $$i $(tooldir)/man/man5/`basename $$i` ; \
|
|
done; \
|
|
for i in `find . -type f -name '*.7'`; do \
|
|
$(INSTALL_DATA) $$i $(tooldir)/man/man7/`basename $$i` ; \
|
|
done
|
|
|
|
install_host:
|
|
|
|
clean:
|
|
-rm -f *.o *.dll *.a *.exp junk *.base version.cc regexp/*.o winver_stamp *.exe *.d *stamp* *_magic.h
|
|
|
|
maintainer-clean realclean: clean
|
|
@echo "This command is intended for maintainers to use;"
|
|
@echo "it deletes files that may require special tools to rebuild."
|
|
-rm -fr configure
|
|
|
|
|
|
# Rule to build cygwin.dll
|
|
new-$(DLL_NAME): $(LDSCRIPT) $(DLL_OFILES) $(DEF_FILE) $(DLL_IMPORTS) $(LIBC) $(LIBM) Makefile winver_stamp
|
|
$(CXX) $(CXXFLAGS) -nostdlib -Wl,-T$(firstword $^) -Wl,--out-implib,cygdll.a -shared -o $@ \
|
|
-e $(DLL_ENTRY) $(DEF_FILE) $(DLL_OFILES) version.o winver.o \
|
|
$(DLL_IMPORTS) $(MALLOC_OBJ) $(LIBM) $(LIBC) \
|
|
-lstdc++ -lgcc -lshell32 -luuid
|
|
|
|
# Rule to build libcygwin.a
|
|
$(LIB_NAME): rmsym newsym new-$(DLL_NAME) $(LIBCOS)
|
|
/bin/sh ${word 1,$^} ./cygdll.a "$(NM)" "$(AR)" "$(RANLIB)" $(OBSOLETE_FUNCTIONS) || exit 0
|
|
/bin/sh ${word 2,$^} ./cygdll.a "$(AS)" "$(AR)" "$(RANLIB)" $(NEW_FUNCTIONS) || exit 0
|
|
(echo create $(LIB_NAME); echo addmod $(LIBCOS); echo addlib cygdll.a; echo save) | $(AR) -M
|
|
|
|
# Rule to make stub library used by testsuite
|
|
# dependency set to $(LIB_NAME) to accommodate make -j2.
|
|
# Otherwise dlltool gets confused. cgf (11-16-2000)
|
|
new-$(LIB_NAME): $(LIB_NAME)
|
|
$(DLLTOOL) --as=$(AS) --dllname new-$(DLL_NAME) --def $(DEF_FILE) --output-lib new-templib.a
|
|
$(AR) rcv new-templib.a $(LIBCOS)
|
|
mv new-templib.a new-$(LIB_NAME)
|
|
|
|
dll_ofiles: $(DLL_OFILES)
|
|
|
|
$(LIBGMON_A): $(GMON_OFILES) $(GMON_START)
|
|
$(AR) rcv $(LIBGMON_A) $(GMON_OFILES)
|
|
|
|
version.cc winver.o: winver_stamp
|
|
@ :
|
|
|
|
shared_info_magic.h: cygmagic shared_info.h
|
|
/bin/sh ${word 1,$^} $@ "$(CC)" ${word 2,$^} MOUNT_MAGIC 'class mount_info' SHARED_MAGIC 'class shared_info'
|
|
|
|
child_info_magic.h: cygmagic child_info.h
|
|
/bin/sh ${word 1,$^} $@ "$(CC)" ${word 2,$^} CHILD_INFO_MAGIC 'class child_info'
|
|
|
|
dcrt0.o sigproc.o: child_info_magic.h
|
|
|
|
shared.o: shared_info_magic.h
|
|
|
|
libpthread.a: speclib cygwin.def pthread.o thread.o
|
|
/bin/sh ${word 1, $^} $@ "${NM}" "${DLLTOOL}" ${wordlist 2, 99, $^}
|
|
|
|
$(PWD)/libm.a: speclib cygwin.def $(LIBM)
|
|
/bin/sh ${word 1, $^} $@ "${NM}" "${DLLTOOL}" ${wordlist 2, 99, $^}
|
|
|
|
$(PWD)/libc.a: speclib cygwin.def $(PWD)/libm.a libpthread.a
|
|
/bin/sh ${word 1, $^} -v $@ "${NM}" "${DLLTOOL}" ${wordlist 2, 99, $^}
|
|
|
|
lib%.a: %.o
|
|
$(AR) cru $@ $?
|
|
|
|
winver_stamp: mkvers.sh include/cygwin/version.h winver.rc $(DLL_OFILES)
|
|
@echo "Making version.o and winver.o";\
|
|
$(SHELL) ${word 1,$^} ${word 2,$^} ${word 3,$^} $(WINDRES) && \
|
|
$(COMPILE_CXX) -o version.o version.cc && \
|
|
touch $@
|
|
|
|
cygrun.exe : cygrun.o $(LIB_NAME) $(w32api_lib)/libuser32.a \
|
|
$(w32api_lib)/libshell32.a $(w32api_lib)/libkernel32.a
|
|
$(CC) -nodefaultlibs -o $@ $^
|
|
|
|
Makefile: cygwin.din
|
|
|
|
$(DEF_FILE): cygwin.din config.status
|
|
$(SHELL) config.status
|
|
|
|
winsup.h: config.h
|
|
|
|
deps:=${wildcard *.d}
|
|
ifneq (,$(deps))
|
|
include $(deps)
|
|
endif
|