diff options
author | Christopher Faylor <cgf@redhat.com> | 2008-07-30 06:07:42 +0000 |
---|---|---|
committer | Christopher Faylor <cgf@redhat.com> | 2008-07-30 06:07:42 +0000 |
commit | 6c7c874768c23b2d46189ad3ef235082aa7fa72f (patch) | |
tree | f80e7928f32d79203f2b51fe4485848be24a9b54 | |
parent | d39bd4daf2daa2e102a947be37d0d9bacdce60e7 (diff) | |
download | gdb-6c7c874768c23b2d46189ad3ef235082aa7fa72f.tar.gz |
* Makefile.in: Link cygcheck with -lntdll even without mingw-zlib.
-rw-r--r-- | winsup/utils/ChangeLog | 4 | ||||
-rw-r--r-- | winsup/utils/Makefile.in | 180 |
2 files changed, 184 insertions, 0 deletions
diff --git a/winsup/utils/ChangeLog b/winsup/utils/ChangeLog index 2581bfedb9e..7eea85465bc 100644 --- a/winsup/utils/ChangeLog +++ b/winsup/utils/ChangeLog @@ -1,3 +1,7 @@ +2008-07-30 Yaakov Selkowitz <yselkowitz@users.sourceforge.net> + + * Makefile.in: Link cygcheck with -lntdll even without mingw-zlib. + 2008-07-27 Christopher Faylor <me+cygwin@cgf.cx> * cygcheck.cc (load_cygwin): Free the cygwin dll after we're done with diff --git a/winsup/utils/Makefile.in b/winsup/utils/Makefile.in new file mode 100644 index 00000000000..c8dd4c39d06 --- /dev/null +++ b/winsup/utils/Makefile.in @@ -0,0 +1,180 @@ +# Makefile for Cygwin utilities +# Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006, 2007, 2008 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. + +SHELL:=@SHELL@ + +srcdir:=@srcdir@ +VPATH:=@srcdir@ +prefix:=@prefix@ +exec_prefix:=@exec_prefix@ + +bindir:=@bindir@ +program_transform_name:=@program_transform_name@ + +override INSTALL:=@INSTALL@ +override INSTALL_PROGRAM:=@INSTALL_PROGRAM@ +override INSTALL_DATA:=@INSTALL_DATA@ + +EXEEXT:=@EXEEXT@ +EXEEXT_FOR_BUILD:=@EXEEXT_FOR_BUILD@ + +CC:=@CC@ +CC_FOR_TARGET:=$(CC) +CXX:=@CXX@ +CXX_FOR_TARGET:=$(CXX) + +CFLAGS:=@CFLAGS@ +CXXFLAGS:=@CXXFLAGS@ +override CXXFLAGS+=-fno-exceptions -fno-rtti -DHAVE_DECL_GETOPT=0 + +include $(srcdir)/../Makefile.common + +.SUFFIXES: +.NOEXPORT: +.PHONY: all install clean realclean warn_dumper warn_cygcheck_zlib + +ALL_LDLIBS := -lnetapi32 -ladvapi32 +ALL_LDFLAGS := -B$(newlib_build)/libc -B$(w32api_lib) $(LDFLAGS) $(ALL_LDLIBS) +ALL_DEP_LDLIBS := $(cygwin_build)/libcygwin.a ${patsubst -l%,\ + $(w32api_lib)/lib%.a,$(ALL_LDLIBS) -lkernel32 -luser32} + +MINGW_LIB := $(mingw_build)/libmingw32.a +MINGW_LDLIBS := $(ALL_LDLIBS) $(MINGW_LIB) +MINGW_DEP_LDLIBS := $(ALL_DEP_LDLIBS) $(MINGW_LIB) +MINGW_CXX := ${patsubst %/cygwin/include,%/mingw/include,\ + ${filter-out -I$(newlib_source)/%,$(COMPILE_CXX)}} -I$(updir) + +# List all binaries to be linked in Cygwin mode. Each binary on this list +# must have a corresponding .o of the same name. +CYGWIN_BINS := ${addsuffix .exe,cygpath getfacl kill mkgroup \ + mkpasswd mount passwd ps regtool setfacl setmetamode ssp umount} + +# List all binaries to be linked in MinGW mode. Each binary on this list +# must have a corresponding .o of the same name. +MINGW_BINS := ${addsuffix .exe,strace cygcheck} + +# List all objects to be compiled in MinGW mode. Any object not on this +# list will will be compiled in Cygwin mode implicitly, so there is no +# need for a CYGWIN_OBJS. +MINGW_OBJS := bloda.o cygcheck.o dump_setup.o path.o strace.o + +# If a binary should link in any objects besides the .o with the same +# name as the binary, then list those here. +strace.exe: path.o +cygcheck.exe: bloda.o path.o dump_setup.o + +# Provide any necessary per-target variable overrides. +cygcheck.exe: MINGW_LDFLAGS += -lntdll +cygpath.exe: ALL_LDFLAGS += -lntdll + +# Check for dumper's requirements and enable it if found. +LIBICONV := @libiconv@ +libbfd := ${shell $(CC) -B$(bupdir2)/bfd/ --print-file-name=libbfd.a} +libintl := ${shell $(CC) -B$(bupdir2)/intl/ --print-file-name=libintl.a} +build_dumper := ${shell test -r $(libbfd) -a -r $(libintl) -a -n "$(LIBICONV)" && echo 1} +ifdef build_dumper +CYGWIN_BINS += dumper.exe +dumper.o module_info.o parse_pe.o: CXXFLAGS += -I$(bupdir2)/bfd -I$(updir1)/include +dumper.o parse_pe.o: dumper.h +dumper.exe: module_info.o parse_pe.o +dumper.exe: ALL_LDFLAGS += ${libbfd} ${libintl} -L$(bupdir1)/libiberty $(LIBICONV) -liberty +else +all: warn_dumper +endif + +# Check for availability of a MinGW libz and enable for cygcheck. +libz:=${shell x=$$($(CC) -mno-cygwin --print-file-name=libz.a); cd $$(dirname $$x); dir=$$(pwd); case "$$dir" in *mingw*) echo $$dir/libz.a ;; esac} +ifdef libz +zlib_h := -include ${patsubst %/lib/mingw/libz.a,%/include/zlib.h,${patsubst %/lib/libz.a,%/include/zlib.h,$(libz)}} +zconf_h := ${patsubst %/zlib.h,%/zconf.h,$(zlib_h)} +dump_setup.o: MINGW_CXXFLAGS += $(zconf_h) $(zlib_h) +cygcheck.exe: MINGW_LDFLAGS += $(libz) +else +all: warn_cygcheck_zlib +endif + +all: Makefile $(CYGWIN_BINS) $(MINGW_BINS) + +# test harness support (note: the "MINGW_BINS +=" should come after the +# "all:" above so that the testsuite is not run for "make" but only +# "make check".) +MINGW_BINS += testsuite.exe +MINGW_OBJS += path-testsuite.o testsuite.o +testsuite.exe: path-testsuite.o +path-testsuite.cc: path.cc ; @test -L $@ || ln -sf ${filter %.cc,$^} $@ +path-testsuite.o: MINGW_CXXFLAGS += -DTESTSUITE +# this is necessary because this .c lives in the build dir instead of src +path-testsuite.o: MINGW_CXX := ${patsubst -I.,-I$(utils_source),$(MINGW_CXX)} +path-testsuite.cc path.cc testsuite.cc: testsuite.h +check: testsuite.exe ; $(<D)/$(<F) + +# the rest of this file contains generic rules + +# how to compile a MinGW object +$(MINGW_OBJS): %.o: %.cc +ifdef VERBOSE + $(MINGW_CXX) $c -o $(@D)/$(basename $@)$o $(MINGW_CXXFLAGS) $< +else + @echo $(MINGW_CXX) $c $(MINGW_CXXFLAGS) ... $(*F).cc;\ + $(MINGW_CXX) $c -o $(@D)/$(basename $@)$o $(MINGW_CXXFLAGS) $< +endif + +# how to link a MinGW binary +$(MINGW_BINS): %.exe: %.o +ifdef VERBOSE + $(CXX) $(MINGW_CXXFLAGS) -o $@ ${filter %.o,$^} -B$(mingw_build)/ $(MINGW_LDFLAGS) +else + @echo $(CXX) -o $@ ${filter %.o,$^} ${filter-out -B%, $(MINGW_CXXFLAGS) $(MINGW_LDFLAGS)};\ + $(CXX) $(MINGW_CXXFLAGS) -o $@ ${filter %.o,$^} -B$(mingw_build)/ $(MINGW_LDFLAGS) +endif + +# how to link a Cygwin binary +$(CYGWIN_BINS): %.exe: %.o +ifdef VERBOSE + $(CXX) -o $@ ${filter %.o,$^} -B$(cygwin_build)/ $(ALL_LDFLAGS) +else + @echo $(CXX) -o $@ ${filter %.o,$^} ... ${filter-out -B%, $(ALL_LDFLAGS)};\ + $(CXX) -o $@ ${filter %.o,$^} -B$(cygwin_build)/ $(ALL_LDFLAGS) +endif + +# note: how to compile a Cygwin object is covered by the pattern rule in Makefile.common + +# these dependencies ensure that the required in-tree libs are built first +$(MINGW_BINS): $(MINGW_DEP_LDLIBS) +$(CYGWIN_BINS): $(ALL_DEP_LDLIBS) + +clean: + rm -f *.o $(CYGWIN_BINS) $(MINGW_BINS) path-testsuite.cc testsuite.exe + +realclean: clean + rm -f Makefile config.cache + +install: all + $(SHELL) $(updir1)/mkinstalldirs $(bindir) + for i in $(CYGWIN_BINS) ${filter-out testsuite.exe,$(MINGW_BINS)} ; do \ + n=`echo $$i | sed '$(program_transform_name)'`; \ + $(INSTALL_PROGRAM) $$i $(bindir)/$$n; \ + done + +$(cygwin_build)/libcygwin.a: $(cygwin_build)/Makefile + @$(MAKE) -C $(@D) $(@F) + +$(MINGW_LIB): $(mingw_build)/Makefile + @$(MAKE) -C $(@D) $(@F) + +warn_dumper: + @echo '*** Not building dumper.exe since some required libraries are' + @echo '*** missing: libbfd.a and libintl.a.' + @echo '*** If you need this program, check out the naked-bfd and naked-intl' + @echo '*** sources from sourceware.org. Then, configure and build these' + @echo '*** libraries. Otherwise, you can safely ignore this warning.' + +warn_cygcheck_zlib: + @echo '*** Building cygcheck without package content checking due to missing mingw libz.a.' |