]> sourceware.org Git - newlib-cygwin.git/blame - winsup/utils/Makefile.in
deal with endian-ness in mach-o non-scattered relocs.
[newlib-cygwin.git] / winsup / utils / Makefile.in
CommitLineData
1fd5e000 1# Makefile for Cygwin utilities
4d7c0b51 2# Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
be822de2 3# 2005, 2006, 2007, 2008, 2009, 2010 Red Hat, Inc.
1fd5e000
CF
4
5# This file is part of Cygwin.
6
7# This software is a copyrighted work licensed under the terms of the
8# Cygwin license. Please consult the file "CYGWIN_LICENSE" for
9# details.
10
11SHELL:=@SHELL@
12
13srcdir:=@srcdir@
14VPATH:=@srcdir@
15prefix:=@prefix@
16exec_prefix:=@exec_prefix@
17
18bindir:=@bindir@
1fd5e000
CF
19program_transform_name:=@program_transform_name@
20
9ddd929f
CF
21override INSTALL:=@INSTALL@
22override INSTALL_PROGRAM:=@INSTALL_PROGRAM@
23override INSTALL_DATA:=@INSTALL_DATA@
1fd5e000
CF
24
25EXEEXT:=@EXEEXT@
26EXEEXT_FOR_BUILD:=@EXEEXT_FOR_BUILD@
27
28CC:=@CC@
29CC_FOR_TARGET:=$(CC)
92311ab5 30CXX:=@CXX@
ce475802 31CXX_FOR_TARGET:=$(CXX)
1fd5e000
CF
32
33CFLAGS:=@CFLAGS@
2c2473bc 34CXXFLAGS:=@CXXFLAGS@
67763c0c 35override CXXFLAGS+=-fno-exceptions -fno-rtti -DHAVE_DECL_GETOPT=0
1fd5e000
CF
36
37include $(srcdir)/../Makefile.common
38
1fd5e000
CF
39.SUFFIXES:
40.NOEXPORT:
68d2dd03
BD
41.PHONY: all install clean realclean warn_dumper warn_cygcheck_zlib
42
43ALL_LDLIBS := -lnetapi32 -ladvapi32
b2e53678 44ALL_LDFLAGS := -static-libgcc -Wl,--enable-auto-import -B$(newlib_build)/libc -B$(w32api_lib) $(LDFLAGS) $(ALL_LDLIBS)
68d2dd03
BD
45ALL_DEP_LDLIBS := $(cygwin_build)/libcygwin.a ${patsubst -l%,\
46 $(w32api_lib)/lib%.a,$(ALL_LDLIBS) -lkernel32 -luser32}
47
48MINGW_LIB := $(mingw_build)/libmingw32.a
49MINGW_LDLIBS := $(ALL_LDLIBS) $(MINGW_LIB)
50MINGW_DEP_LDLIBS := $(ALL_DEP_LDLIBS) $(MINGW_LIB)
fd49ac27 51MINGW_CXX := ${srcdir}/mingw ${CXX} -I${updir}
68d2dd03
BD
52
53# List all binaries to be linked in Cygwin mode. Each binary on this list
54# must have a corresponding .o of the same name.
c769bdf5 55CYGWIN_BINS := ${addsuffix .exe,cygpath getconf getfacl ldd locale kill mkgroup \
1b79b381 56 mkpasswd mount passwd ps regtool setfacl setmetamode ssp tzset umount}
68d2dd03
BD
57
58# List all binaries to be linked in MinGW mode. Each binary on this list
59# must have a corresponding .o of the same name.
cea37699 60MINGW_BINS := ${addsuffix .exe,cygcheck cygwin-console-helper ldh strace}
68d2dd03
BD
61
62# List all objects to be compiled in MinGW mode. Any object not on this
63# list will will be compiled in Cygwin mode implicitly, so there is no
64# need for a CYGWIN_OBJS.
2e13058e 65MINGW_OBJS := bloda.o cygcheck.o dump_setup.o ldh.o path.o strace.o
68d2dd03
BD
66
67# If a binary should link in any objects besides the .o with the same
68# name as the binary, then list those here.
69strace.exe: path.o
70cygcheck.exe: bloda.o path.o dump_setup.o
71
1e497ebd
CV
72path-mount.o: path.cc
73 $(CXX) -c $(CXXFLAGS) -DFSTAB_ONLY -I$(updir) $< -o $@
74mount.exe: path-mount.o
75
68d2dd03 76# Provide any necessary per-target variable overrides.
e3e942ac 77cygcheck.exe: MINGW_LDFLAGS += -lntdll
71148bfc 78cygpath.exe: ALL_LDFLAGS += -lcygwin -luserenv -lntdll
73f2ecd1 79cygpath.exe: CXXFLAGS += -fno-threadsafe-statics
185ad82d 80ps.exe: ALL_LDFLAGS += -lcygwin -lpsapi -lntdll
02a7f96e 81strace.exe: MINGW_LDFLAGS += -lntdll
68d2dd03 82
086dc27f
CF
83ldd.exe: ALL_LDFLAGS += -lpsapi
84
2e13058e
CF
85ldh.exe: MINGW_LDLIBS :=
86ldh.exe: MINGW_LDFLAGS := -nostdlib -lkernel32
87
68d2dd03
BD
88# Check for dumper's requirements and enable it if found.
89LIBICONV := @libiconv@
90libbfd := ${shell $(CC) -B$(bupdir2)/bfd/ --print-file-name=libbfd.a}
91libintl := ${shell $(CC) -B$(bupdir2)/intl/ --print-file-name=libintl.a}
8f8977bb
CF
92bfdlink := $(shell ${CC} -xc /dev/null -o /dev/null -c -B${bupdir2}/bfd/ -include bfd.h 2>&1)
93build_dumper := ${shell test -r $(libbfd) -a -r $(libintl) -a -n "$(LIBICONV)" -a -z "${bfdlink}" && echo 1}
68d2dd03
BD
94ifdef build_dumper
95CYGWIN_BINS += dumper.exe
96dumper.o module_info.o parse_pe.o: CXXFLAGS += -I$(bupdir2)/bfd -I$(updir1)/include
97dumper.o parse_pe.o: dumper.h
98dumper.exe: module_info.o parse_pe.o
228f0b11 99dumper.exe: ALL_LDFLAGS += ${libbfd} ${libintl} -L$(bupdir1)/libiberty $(LIBICONV) -liberty -lz
2fac517d 100else
68d2dd03 101all: warn_dumper
2fac517d
CF
102endif
103
68d2dd03 104# Check for availability of a MinGW libz and enable for cygcheck.
fd49ac27 105libz:=${shell x=$$(${MINGW_CXX} --print-file-name=libz.a); cd $$(dirname $$x); dir=$$(pwd); case "$$dir" in *mingw*) echo $$dir/libz.a ;; esac}
68d2dd03
BD
106ifdef libz
107zlib_h := -include ${patsubst %/lib/mingw/libz.a,%/include/zlib.h,${patsubst %/lib/libz.a,%/include/zlib.h,$(libz)}}
108zconf_h := ${patsubst %/zlib.h,%/zconf.h,$(zlib_h)}
109dump_setup.o: MINGW_CXXFLAGS += $(zconf_h) $(zlib_h)
e3e942ac 110cygcheck.exe: MINGW_LDFLAGS += $(libz)
ce475802 111else
68d2dd03 112all: warn_cygcheck_zlib
ce475802
CF
113endif
114
68d2dd03 115all: Makefile $(CYGWIN_BINS) $(MINGW_BINS)
0ad10c0f 116
59fb00ae
BD
117# test harness support (note: the "MINGW_BINS +=" should come after the
118# "all:" above so that the testsuite is not run for "make" but only
119# "make check".)
120MINGW_BINS += testsuite.exe
121MINGW_OBJS += path-testsuite.o testsuite.o
122testsuite.exe: path-testsuite.o
123path-testsuite.cc: path.cc ; @test -L $@ || ln -sf ${filter %.cc,$^} $@
124path-testsuite.o: MINGW_CXXFLAGS += -DTESTSUITE
125# this is necessary because this .c lives in the build dir instead of src
126path-testsuite.o: MINGW_CXX := ${patsubst -I.,-I$(utils_source),$(MINGW_CXX)}
127path-testsuite.cc path.cc testsuite.cc: testsuite.h
128check: testsuite.exe ; $(<D)/$(<F)
129
130# the rest of this file contains generic rules
131
68d2dd03
BD
132# how to compile a MinGW object
133$(MINGW_OBJS): %.o: %.cc
2fac517d 134ifdef VERBOSE
b07b167e 135 $(MINGW_CXX) $c -o $(@D)/$(basename $@)$o $(MINGW_CXXFLAGS) $<
2fac517d 136else
68d2dd03
BD
137 @echo $(MINGW_CXX) $c $(MINGW_CXXFLAGS) ... $(*F).cc;\
138 $(MINGW_CXX) $c -o $(@D)/$(basename $@)$o $(MINGW_CXXFLAGS) $<
d0d51791
CF
139endif
140
68d2dd03
BD
141# how to link a MinGW binary
142$(MINGW_BINS): %.exe: %.o
64b94981 143ifdef VERBOSE
fd49ac27 144 $(MINGW_CXX) $(MINGW_CXXFLAGS) -o $@ ${filter %.o,$^} -B$(mingw_build)/ $(MINGW_LDFLAGS)
64b94981 145else
fd49ac27
CF
146 @echo $(MINGW_CXX) -o $@ ${filter %.o,$^} ${filter-out -B%, $(MINGW_CXXFLAGS) $(MINGW_LDFLAGS)};\
147 $(MINGW_CXX) $(MINGW_CXXFLAGS) -o $@ ${filter %.o,$^} -B$(mingw_build)/ $(MINGW_LDFLAGS)
64b94981
DK
148endif
149
68d2dd03 150# how to link a Cygwin binary
9401a0f8 151$(CYGWIN_BINS): %.exe: %.o
ad466e2f 152ifdef VERBOSE
68d2dd03 153 $(CXX) -o $@ ${filter %.o,$^} -B$(cygwin_build)/ $(ALL_LDFLAGS)
ad466e2f 154else
68d2dd03
BD
155 @echo $(CXX) -o $@ ${filter %.o,$^} ... ${filter-out -B%, $(ALL_LDFLAGS)};\
156 $(CXX) -o $@ ${filter %.o,$^} -B$(cygwin_build)/ $(ALL_LDFLAGS)
ad466e2f
CF
157endif
158
68d2dd03 159# note: how to compile a Cygwin object is covered by the pattern rule in Makefile.common
ad466e2f 160
68d2dd03
BD
161# these dependencies ensure that the required in-tree libs are built first
162$(MINGW_BINS): $(MINGW_DEP_LDLIBS)
163$(CYGWIN_BINS): $(ALL_DEP_LDLIBS)
c49fa762 164
1fd5e000 165clean:
59fb00ae 166 rm -f *.o $(CYGWIN_BINS) $(MINGW_BINS) path-testsuite.cc testsuite.exe
1fd5e000
CF
167
168realclean: clean
68d2dd03 169 rm -f Makefile config.cache
1fd5e000
CF
170
171install: all
99fe2b78 172 $(SHELL) $(updir1)/mkinstalldirs $(DESTDIR)$(bindir)
92108f4e 173 for i in $(CYGWIN_BINS) ${filter-out testsuite.exe,$(MINGW_BINS)} ; do \
1fd5e000 174 n=`echo $$i | sed '$(program_transform_name)'`; \
99fe2b78 175 $(INSTALL_PROGRAM) $$i $(DESTDIR)$(bindir)/$$n; \
1fd5e000
CF
176 done
177
178$(cygwin_build)/libcygwin.a: $(cygwin_build)/Makefile
179 @$(MAKE) -C $(@D) $(@F)
180
68d2dd03 181$(MINGW_LIB): $(mingw_build)/Makefile
1fd5e000
CF
182 @$(MAKE) -C $(@D) $(@F)
183
0715614b 184warn_dumper:
8f8977bb
CF
185 @echo '*** Not building dumper.exe since some required libraries or'
186 @echo '*** or headers are missing. Potential candidates are:'
187 @echo '*** bfd.h, libbfd.a, libiconv.a, or libintl.a'
10e1fce6 188 @echo '*** If you need this program, check out the naked-bfd and naked-intl'
e3e942ac 189 @echo '*** sources from sourceware.org. Then, configure and build these'
10e1fce6 190 @echo '*** libraries. Otherwise, you can safely ignore this warning.'
0715614b 191
68d2dd03
BD
192warn_cygcheck_zlib:
193 @echo '*** Building cygcheck without package content checking due to missing mingw libz.a.'
This page took 0.263304 seconds and 5 git commands to generate.