# Makefile for Cygwin utilities # Copyright 1996, 1997, 1998, 1999, 2000 Cygnus Solutions. # 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@ etcdir:=$(exec_prefix)/etc program_transform_name:=@program_transform_name@ INSTALL:=@INSTALL@ INSTALL_PROGRAM:=@INSTALL_PROGRAM@ 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@ -fno-exceptions -fno-rtti include $(srcdir)/../Makefile.common MINGW_INCLUDES:=$(MINGW_INCLUDES) $(cygwin_include) $(w32api_include) libbfd:=${shell $(CC) -L$(bupdir2)/bfd --print-file-name=libbfd.a} libintl:=${shell $(CC) -L$(bupdir2)/intl --print-file-name=libintl.a} build_dumper:=${shell test -r $(libbfd) && test -r ${libintl} && echo 1} DUMPER_INCLUDES:=-I$(bupdir2)/bfd -I$(updir1)/include MINGW_CXXFLAGS:=${filter-out $(newlib_source)/%,$(CXXFLAGS)} -mno-cygwin $(MINGW_INCLUDES) MINGW_CFLAGS:=-mno-cygwin $(MINGW_INCLUDES) libcygwin:=$(cygwin_build)/libcygwin.a libuser32:=$(w32api_lib)/libuser32.a libkernel32:=$(w32api_lib)/libkernel32.a ALL_DEP_LDLIBS:=$(libcygwin) $(w32api_lib)/libnetapi32.a \ $(w32api_lib)/libadvapi32.a $(w32api_lib)/libkernel32.a \ $(w32api_lib)/libuser32.a ALL_LDLIBS:=${patsubst $(w32api_lib)/lib%.a,-l%,\ ${filter-out $(libuser32),\ ${filter-out $(libkernel32),\ ${filter-out $(libcygwin), $(ALL_DEP_LDLIBS)}}}} MINGW_LIB:=$(mingw_build)/libmingw32.a DUMPER_LIB:=${libbfd} ${libintl} -L$(bupdir1)/libiberty -liberty MINGW_LDLIBS:=$(ALL_LDLIBS) $(MINGW_LIB) MINGW_DEP_LDLIBS:=${ALL_DEP_LDLIBS} ${MINGW_LIB} ALL_LDFLAGS:=-B$(newlib_build)/libc/ -B$(newlib_build)/libm/ -B$(w32api_lib)/ \ $(LDFLAGS) $(ALL_LDLIBS) MINGW_LDFLAGS:=$(ALL_LDFLAGS) $(MINGW_LIB) DUMPER_LDFLAGS:=$(ALL_LDFLAGS) $(DUMPER_LIB) PROGS:=mount$(EXEEXT) umount$(EXEEXT) ps$(EXEEXT) kill$(EXEEXT) \ mkpasswd$(EXEEXT) mkgroup$(EXEEXT) cygpath$(EXEEXT) cygcheck$(EXEEXT) \ passwd$(EXEEXT) getfacl$(EXEEXT) setfacl$(EXEEXT) strace$(EXEEXT) \ regtool$(EXEEXT) ssp$(EXEEXT) CLEAN_PROGS:=$(PROGS) ifdef build_dumper PROGS+=dumper$(EXEEXT) else PROGS:=warn_dumper $(PROGS) CLEAN_PROGS+=dumper.exe endif .SUFFIXES: .NOEXPORT: .PHONY: all install clean realclean warn_dumper all: Makefile $(PROGS) strace.exe: strace.cc mingw_getopt.o $(MINGW_DEP_LDLIBS) ifdef VERBOSE $(CXX) $(MINGW_CXXFLAGS) -o $@ ${wordlist 1,2,$^} -B$(mingw_build)/ $(MINGW_LDFLAGS) else @echo $(CXX) -o $@ ${wordlist 1,2,$^} ${filter-out -B%, $(MINGW_CXXFLAGS) $(MINGW_LDFLAGS)};\ $(CXX) $(MINGW_CXXFLAGS) -o $@ ${wordlist 1,2,$^} -B$(mingw_build)/ $(MINGW_LDFLAGS) endif dumper.o: dumper.cc dumper.h ifdef VERBOSE $(COMPILE_CXX) $c -o $@ $(DUMPER_INCLUDES) ${firstword $^} else @echo $(CXX) $c $(CFLAGS) $(DUMPER_INCLUDES) ... $(basename $@).cc;\ $(COMPILE_CXX) $c -o $(@D)/$(basename $@)$o $(DUMPER_INCLUDES) $< endif module_info.o: module_info.cc ifdef VERBOSE $(COMPILE_CXX) $c -o $@ $(DUMPER_INCLUDES) ${firstword $^} else @echo $(CXX) $c $(CFLAGS) $(DUMPER_INCLUDES) ... $(basename $@).cc;\ $(COMPILE_CXX) $c -o $(@D)/$(basename $@)$o $(DUMPER_INCLUDES) $< endif parse_pe.o: parse_pe.cc dumper.h ifdef VERBOSE $(COMPILE_CXX) $c -o $@ $(DUMPER_INCLUDES) ${firstword $^} else @echo $(CXX) $c $(CFLAGS) $(DUMPER_INCLUDES) ... $(basename $@).cc;\ $(COMPILE_CXX) $c -o $(@D)/$(basename $@)$o $(DUMPER_INCLUDES) $< endif mingw_getopt.o: $(cygwin_source)/lib/getopt.c ifdef VERBOSE ${filter-out -I$(newlib_source)/%,$(COMPILE_CC)} $c -o $(@D)/$(basename $@)$o $(MINGW_CFLAGS) $< else @echo $(CC) $c -o $(@D)/$(basename $@)$o $(MINGW_CFLAGS) ... $^;\ ${filter-out -I$(newlib_source)/%,$(COMPILE_CC)} $c -o $(@D)/$(basename $@)$o $(MINGW_CFLAGS) $< endif clean: rm -f *.o $(CLEAN_PROGS) realclean: clean rm -f Makefile config.cache install: all $(SHELL) $(updir1)/mkinstalldirs $(bindir) $(etcdir) for i in $(PROGS) ; 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_build)/libmingw32.a: $(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 sources.redhat.com. Then, configure and build these' @echo '*** libraries. Otherwise, you can safely ignore this warning.' dumper.exe: module_info.o parse_pe.o dumper.o $(ALL_DEP_LDLIBS) ifdef VERBOSE $(CXX) -o $@ ${wordlist 1,3,$^} -B$(cygwin_build)/ $(DUMPER_LDFLAGS) else @echo $(CXX) -o $@ ${wordlist 1,3,$^} ${filter-out -B%, $(DUMPER_LDFLAGS)};\ $(CXX) -o $@ ${wordlist 1,3,$^} -B$(cygwin_build)/ $(DUMPER_LDFLAGS) endif %.exe: %.o $(ALL_DEP_LDLIBS) ifdef VERBOSE $(CXX) -o $@ ${firstword $^} -B$(cygwin_build)/ $(ALL_LDFLAGS) else @echo $(CXX) -o $@ ${firstword $^} ${filter-out -B%, $(ALL_LDFLAGS)};\ $(CXX) -o $@ ${firstword $^} -B$(cygwin_build)/ $(ALL_LDFLAGS) endif