# Makefile.in for the winsup/mingw directory. # Copyright (c) 1995, 1996, 1997, 1998 Cygnus Solutions # 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 2 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # This makefile requires GNU make. PACKAGE = mingw-runtime VERSION = 3.5 CYGRELEASE = 1 VPATH = @srcdir@ srcdir = @srcdir@ objdir = . host_alias = @host_alias@ build_alias = @build_alias@ target_alias = @target_alias@ prefix = @prefix@ conf_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@ ifneq (,$(findstring cygwin,$(target_alias))) inst_bindir:=$(tooldir)/bin inst_includedir:=$(tooldir)/include/mingw inst_libdir:=$(tooldir)/lib/mingw inst_docdir:=$(tooldir)/doc/mingw-runtime else inst_bindir:=$(bindir) inst_includedir:=$(includedir) inst_libdir:=$(libdir) inst_docdir:=$(prefix)/doc/mingw-runtime endif # The Mingw headers are installed under a subdirectory of # $(tooldir)/include when configuring in Cygwin. HEADER_SUBDIR = @HEADER_SUBDIR@ SHELL = /bin/sh INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ mkinstalldirs = $(SHELL) @MKINSTALLDIRS@ CC := @CC@ override CC := ${filter-out -L% -B%,${shell echo $(CC) | sed -e 's%\(-isystem\|-iwithprefixbefore\) *[^ ]*\( \|$$\)% %g'}} # FIXME: Which is it, CC or CC_FOR_TARGET? CC_FOR_TARGET = $(CC) AS_FOR_TARGET = $(AS) CFLAGS = @CFLAGS@ CXXFLAGS = @CXXFLAGS@ # compiling with Cygwin? MNO_CYGWIN = @MNO_CYGWIN@ ifdef MNO_CYGWIN subdirforlib=/mingw else libdir= endif # Either crtdll (CRT_ID 1) or msvcrt (CRT_ID 2). RUNTIME = @RUNTIME@ CRT_ID = @CRT_ID@ # Needed for threading dll. THREAD_DLL = @THREAD_DLL@ THREAD_DLL_VERSION = 10 THREAD_DLL_NAME = $(THREAD_DLL)$(THREAD_DLL_VERSION).dll # Various libraries. LIBM_A=@LIBM_A@ W32API_INCLUDE = @W32API_INCLUDE@ INCLUDES+= -I$(srcdir)/include \ -I$(srcdir)/../include \ -nostdinc \ -iwithprefixbefore include ALL_CFLAGS = $(CFLAGS) $(W32API_INCLUDE) $(INCLUDES) $(MNO_CYGWIN) ALL_CXXFLAGS = $(CXXFLAGS) $(W32API_INCLUDE) $(INCLUDES) -nostdinc++ $(MNO_CYGWIN) AS = @AS@ AR = @AR@ LD = @LD@ AR_FLAGS = rcv RANLIB = @RANLIB@ DLLTOOL = @DLLTOOL@ DLLTOOLFLAGS = DLLTOOL_FOR_TARGET = $(DLLTOOL) DLLTOOL_FLAGS = --as $(AS_FOR_TARGET) DLLWRAP = @DLLWRAP@ DLLWRAP_FOR_TARGET = $(DLLWRAP) DLLWRAP_FLAGS = --dlltool $(DLLTOOL) --as $(AS) --driver-name $(CC) TAR = tar TARFLAGS = z TARFILEEXT = .tar.gz SUBDIRS := @SUBDIRS@ FLAGS_TO_PASS:=\ AS="$(AS)" \ CC="$(CC)" \ CFLAGS="$(CFLAGS) $(CFLAGS_COMMON) $(CFLAGS_CONFIG)" \ CXXFLAGS="$(CXXFLAGS) $(CFLAGS_COMMON) $(CFLAGS_CONFIG)" \ EXE_LDFLAGS="$(EXE_LDFLAGS)" \ AR="$(AR)" \ RANLIB="$(RANLIB)" \ LD="$(LD)" \ DLLTOOL="$(DLLTOOL)" \ exec_prefix="$(exec_prefix)" \ bindir="$(bindir)" \ libdir="$(libdir)" \ tooldir="$(tooldir)" \ datadir="$(datadir)" \ infodir="$(infodir)" \ includedir="$(includedir)" \ inst_bindir="$(inst_bindir)" \ inst_includedir="$(inst_includedir)" \ inst_libdir="$(inst_libdir)" \ inst_docdir="$(inst_docdir)" \ prefix="$(prefix)" \ target_alias="$(target_alias)" \ TAR="$(TAR)" \ TARFLAGS="$(TARFLAGS)" \ TARFILEEXT="$(TARFILEEXT)" CRT0S = crt1.o dllcrt1.o crt2.o dllcrt2.o CRT_noglob.o crtmt.o crtst.o \ CRT_fp8.o CRT_fp10.o txtmode.o binmode.o MINGW_OBJS = CRTglob.o CRTfmode.o CRTinit.o dllmain.o gccmain.o \ main.o crtst.o mthr_stub.o CRT_fp10.o txtmode.o \ pseudo-reloc.o pseudo-reloc-list.o MOLD_OBJS = isascii.o iscsym.o iscsymf.o toascii.o \ strcasecmp.o strncasecmp.o wcscmpi.o LIBS = libcrtdll.a \ libmsvcrt.a libmsvcrtd.a \ libmsvcr70.a libmsvcr70d.a \ libmsvcr71.a libmsvcr71d.a \ libmingw32.a \ libcoldname.a \ libmoldname.a libmoldnamed.a \ $(LIBM_A) \ libmingwthrd.a DLLS = $(THREAD_DLL_NAME) INSTDOCS = CONTRIBUTORS \ DISCLAIMER \ README SRCDIST_FILES = CRT_noglob.c CRTfmode.c CRTglob.c CRTinit.c ChangeLog \ Makefile.in README TODO config.guess config.sub configure configure.in \ crt1.c crtdll.def crtmt.c crtst.c dllcrt1.c dllmain.c \ gccmain.c init.c install-sh jamfile main.c mkinstalldirs \ moldname.def.in msvcrt.def.in \ mthr.c mthr_init.c mthr_stub.c readme.txt \ isascii.c iscsym.c iscsymf.c toascii.c \ strcasecmp.c strncasecmp.c wcscmpi.c \ CRT_fp8.c CRT_fp10.c test_headers.c txtmode.c binmode.c pseudo-reloc.c \ pseudo-reloc-list.c \ DISCLAIMER CONTRIBUTORS all_dlls_host = @all_dlls_host@ install_dlls_host = @install_dlls_host@ all: $(CRT0S) $(LIBS) $(all_dlls_host) @$(MAKE) subdirs DO=$@ $(FLAGS_TO_PASS) all_dlls_host: $(DLLS) install_dlls_host: for i in $(DLLS); do \ $(INSTALL_PROGRAM) $$i $(inst_bindir)/$$i ; \ done _libm_dummy.o: rm -f _libm_dummy.c echo "static int __mingw_libm_dummy;" > _libm_dummy.c $(CC) -c $(ALL_CFLAGS) _libm_dummy.c rm -f _libm_dummy.c libm.a: _libm_dummy.o $(AR) rc $@ _libm_dummy.o $(RANLIB) $@ libmingwthrd.a: crtmt.o mingwthrd.def $(DLLTOOL) $(DLLTOOL_FLAGS) --dllname $(THREAD_DLL_NAME) \ --def mingwthrd.def --output-lib $@ $(AR) $(ARFLAGS) $@ crtmt.o $(RANLIB) $@ # Using dllwrap would be so much easier, but Cygnus top-level configure # Makefile.in etc don't pass the right variables yet. xx_$(THREAD_DLL_NAME) xx_mingwthrd.def: mthr.o mthr_init.o $(DLLWRAP) $(DLLWRAP_FLAGS) -o $(THREAD_DLL_NAME) \ --output-def mingwthrd.def \ mthr.o mthr_init.o DLL_OFILES = mthr.o mthr_init.o DLL_CC_STUFF = -B./ -mdll $(MNO_CYGWIN) -Wl,--image-base,0x6FBC0000 \ -Wl,--entry,_DllMainCRTStartup@12 \ $(DLL_OFILES) \ -Lmingwex DLL_DLLTOOL_STUFF = --as=$(AS) --dllname $(THREAD_DLL_NAME) \ --def mingwthrd.def \ --base-file mingwthrd.base --output-exp mingwthrd.exp $(THREAD_DLL_NAME) mingwthrd.def: $(DLL_OFILES) Makefile $(SUBDIRS) $(DLLTOOL) --as $(AS) --output-def mingwthrd.def $(DLL_OFILES) $(CC) -Wl,--base-file=mingwthrd.base $(DLL_CC_STUFF) \ -o mingwthrd_dummy.exe $(DLLTOOL) $(DLL_DLLTOOL_STUFF) $(CC) -Wl,--base-file=mingwthrd.base mingwthrd.exp $(DLL_CC_STUFF) \ -o mingwthrd_dummy.exe $(DLLTOOL) $(DLL_DLLTOOL_STUFF) $(CC) mingwthrd.exp -o $(THREAD_DLL_NAME) $(DLL_CC_STUFF) rm -f mingwthrd_dummy.exe libmingw32.a: $(MINGW_OBJS) $(AR) rc $@ $(MINGW_OBJS) $(RANLIB) $@ msvcrt.def msvcrtd.def \ msvcr70.def msvcr70d.def \ msvcr71.def msvcr71d.def \ : msvcrt.def.in $(CC) -DRUNTIME=$(basename $(notdir $@)) \ -D__$(basename $(notdir $@))__=1 \ -D__MSVCRT__ -C -E -P \ -xc-header $? > $@ moldname-crtdll.def: moldname.def.in $(CC) -DRUNTIME=crtdll \ -D__FILENAME__=moldname-crtdll.def \ -D__CRTDLL__ -C -E -P \ -xc-header $? > $@ moldname-msvcrt.def: moldname.def.in $(CC) -DRUNTIME=msvcrt \ -D__FILENAME__=moldname-msvcrt.def \ -D__MSVCRT__ -C -E -P \ -xc-header $? > $@ libcoldname.a: moldname-crtdll.def $(MOLD_OBJS) $(DLLTOOL) --as $(AS) -k -U \ --dllname crtdll.dll \ --def moldname-crtdll.def \ --output-lib $@ $(AR) rc $@ $(MOLD_OBJS) $(RANLIB) $@ libmoldname.a: moldname-msvcrt.def $(MOLD_OBJS) $(DLLTOOL) --as $(AS) -k -U \ --dllname msvcrt.dll \ --def moldname-msvcrt.def \ --output-lib $@ $(AR) rc $@ $(MOLD_OBJS) $(RANLIB) $@ libmoldnamed.a: moldname-msvcrt.def $(MOLD_OBJS) $(DLLTOOL) --as $(AS) -k -U \ --dllname msvcrtd.dll \ --def moldname-msvcrt.def \ --output-lib $@ $(AR) rc $@ $(MOLD_OBJS) $(RANLIB) $@ # The special rules are necessary. crt1.o dllcrt1.o: $(CC) -c -D__CRTDLL__ -U__MSVCRT__ $(ALL_CFLAGS) $< -o $@ crt2.o dllcrt2.o: $(CC) -c -D__MSVCRT__ -U__CRTDLL__ $(ALL_CFLAGS) $< -o $@ TEST_H_OPTIONS = $(ALL_CFLAGS) -Wall -W -Wsystem-headers -c \ $(srcdir)/test_headers.c -o test_headers.o .PHONY: test_headers test_headers: @echo "Testing runtime headers..." @for lang in c c++ objective-c ; do \ echo "$$lang ..."; \ $(CC) -x$$lang $(TEST_H_OPTIONS) ; \ echo "$$lang -ansi"; \ $(CC) -x$$lang -ansi $(TEST_H_OPTIONS) ; \ done # specify -std=xx only for C @for std in gnu89 gnu99 c89 c99 ; do \ echo "std = $$std"; \ $(CC) -std=$$std $(TEST_H_OPTIONS) ; \ done @rm -f test_headers.o clean: -rm -f *.o *.a *~ core a.out mingwthrd.def mingwthrd.base mingwthrd.exp -rm -f $(THREAD_DLL_NAME) mingwthrd_dummy.exe -rm -f moldname-*.def @$(MAKE) subdirs DO=$@ $(FLAGS_TO_PASS) distclean: clean @$(MAKE) subdirs DO=$@ $(FLAGS_TO_PASS) -rm -f config.cache config.status config.log -rm -f Makefile ifdef SNAPDATE distdir=$(PACKAGE)-$(VERSION)-$(SNAPDATE) else ifneq (,$(findstring cygwin, $(target_alias))) distdir=$(PACKAGE)-$(VERSION)-$(CYGRELEASE) else distdir=$(PACKAGE)-$(VERSION) endif endif ifneq (,$(findstring cygwin, $(target_alias))) TARFLAGS = j TARFILEEXT = .tar.bz2 endif ifneq (,$(findstring mingw, $(target_alias))) dist_prefix = else dist_prefix = $(conf_prefix) endif dist: srcdist bindist srcdist: rm -rf $(distdir) mkdir $(distdir) chmod 755 $(distdir) for i in $(SRCDIST_FILES); do \ cp -p $(srcdir)/$$i $(distdir)/$$i ; \ done for i in $(SUBDIRS); do \ (cd $$i; $(MAKE) distdir=../$(distdir) dist); \ done #FIXME this needs to be done with SUBDIRS and Makefiles. mkdir $(distdir)/include mkdir $(distdir)/include/sys cp $(srcdir)/include/*.h $(distdir)/include/ cp $(srcdir)/include/sys/*.h $(distdir)/include/sys/ #end FIXME rm -f $(distdir)-src.tar.gz $(TAR) $(TARFLAGS)cf $(distdir)-src$(TARFILEEXT) $(distdir) bindist: rm -rf $(distdir) mkdir $(distdir) chmod 755 $(distdir) $(MAKE) install prefix=$(shell pwd)/$(distdir)$(dist_prefix) rm -f $(distdir).tar.gz cd $(distdir); \ $(TAR) $(TARFLAGS)cf ../$(distdir)$(TARFILEEXT) * snapshot: make dist SNAPDATE=$(shell date '+%Y%m%d') info: info-html: install-info: info install-dirs: $(mkinstalldirs) $(inst_bindir) $(mkinstalldirs) $(inst_includedir) $(mkinstalldirs) $(inst_libdir) $(mkinstalldirs) $(inst_docdir) install: all install-dirs $(install_dlls_host) for i in $(LIBS); do \ $(INSTALL_DATA) $$i $(inst_libdir)/$$i ; \ done for i in $(CRT0S); do \ $(INSTALL_DATA) $$i $(inst_libdir)/$$i ; \ done for i in $(INSTDOCS); do \ $(INSTALL_DATA) $(srcdir)/$$i $(inst_docdir)/$$i ; \ done for sub in . sys ; do \ dstdir=$(inst_includedir)/$$sub ; \ $(mkinstalldirs) $$dstdir ; \ for i in $(srcdir)/include/$$sub/*.h ; do \ $(INSTALL_DATA) $$i $$dstdir/`basename $$i` ; \ done ; \ done @$(MAKE) subdirs DO=$@ $(FLAGS_TO_PASS) subdirs: $(SUBDIRS) @true # The . is here because SUBDIRS may be empty . $(SUBDIRS): force @if [ -d ./$@ ]; then \ echo "Making $(DO) in $@..." ; \ if (rootme=`pwd`/ ; export rootme ; \ rootsrc=`cd $(srcdir); pwd`/ ; export rootsrc ; \ cd ./$@; \ $(MAKE) $(FLAGS_TO_PASS) $(DO)) ; then true ; \ else exit 1 ; fi ; \ else true ; fi ; \ force: # # Dependancies # libcrtdll.a: crtdll.def libmsvcrt.a: msvcrt.def libmsvcrtd.a: msvcrtd.def CRT_noglob.o: CRT_noglob.c CRTfmode.o: CRTfmode.c CRTglob.o: CRTglob.c CRTinit.o: CRTinit.c crt1.o: crt1.c init.c crt2.o: crt1.c init.c crtmt.o: crtmt.c crtst.o: crtst.c ctype_old.o: ctype_old.c dllcrt1.o: dllcrt1.c dllcrt2.o: dllcrt1.c dllmain.o: dllmain.c main.o: main.c oldnames.o: oldnames.c string_old.o: string_old.c CRT_fp8.o: CRT_fp8.c CRT_fp10.o: CRT_fp10.c Makefile: Makefile.in config.status configure $(SHELL) config.status config.status: configure $(SHELL) config.status --recheck .SUFFIXES: .y $(SUFFIXES) .cc .def .a lib%.a:%.def $(DLLTOOL) --as=$(AS) -k --dllname $*.dll --output-lib lib$*.a --def $< .c.o: $(CC) -c $(ALL_CFLAGS) $< -o $@