summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <cgf@redhat.com>2008-07-30 06:07:42 +0000
committerChristopher Faylor <cgf@redhat.com>2008-07-30 06:07:42 +0000
commit6c7c874768c23b2d46189ad3ef235082aa7fa72f (patch)
treef80e7928f32d79203f2b51fe4485848be24a9b54
parentd39bd4daf2daa2e102a947be37d0d9bacdce60e7 (diff)
downloadgdb-6c7c874768c23b2d46189ad3ef235082aa7fa72f.tar.gz
* Makefile.in: Link cygcheck with -lntdll even without mingw-zlib.
-rw-r--r--winsup/utils/ChangeLog4
-rw-r--r--winsup/utils/Makefile.in180
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.'