]>
Commit | Line | Data |
---|---|---|
1fd5e000 | 1 | # Makefile for Cygwin utilities |
4d7c0b51 | 2 | # Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, |
64b94981 | 3 | # 2005, 2006, 2007 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 | ||
11 | SHELL:=@SHELL@ | |
12 | ||
13 | srcdir:=@srcdir@ | |
14 | VPATH:=@srcdir@ | |
15 | prefix:=@prefix@ | |
16 | exec_prefix:=@exec_prefix@ | |
17 | ||
18 | bindir:=@bindir@ | |
1fd5e000 CF |
19 | program_transform_name:=@program_transform_name@ |
20 | ||
9ddd929f CF |
21 | override INSTALL:=@INSTALL@ |
22 | override INSTALL_PROGRAM:=@INSTALL_PROGRAM@ | |
23 | override INSTALL_DATA:=@INSTALL_DATA@ | |
1fd5e000 CF |
24 | |
25 | EXEEXT:=@EXEEXT@ | |
26 | EXEEXT_FOR_BUILD:=@EXEEXT_FOR_BUILD@ | |
27 | ||
28 | CC:=@CC@ | |
29 | CC_FOR_TARGET:=$(CC) | |
92311ab5 | 30 | CXX:=@CXX@ |
ce475802 | 31 | CXX_FOR_TARGET:=$(CXX) |
1fd5e000 CF |
32 | |
33 | CFLAGS:=@CFLAGS@ | |
2c2473bc | 34 | CXXFLAGS:=@CXXFLAGS@ |
67763c0c | 35 | override CXXFLAGS+=-fno-exceptions -fno-rtti -DHAVE_DECL_GETOPT=0 |
1fd5e000 CF |
36 | |
37 | include $(srcdir)/../Makefile.common | |
38 | ||
7c03f799 | 39 | LIBICONV:=@libiconv@ |
67763c0c CF |
40 | libbfd:=${shell $(CC) -B$(bupdir2)/bfd/ --print-file-name=libbfd.a} |
41 | libintl:=${shell $(CC) -B$(bupdir2)/intl/ --print-file-name=libintl.a} | |
7c03f799 | 42 | build_dumper:=${shell test -r $(libbfd) -a -r $(libintl) -a -n "$(LIBICONV)" && echo 1} |
0715614b | 43 | |
3a256354 CF |
44 | 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} |
45 | zlib_h:=-include ${patsubst %/lib/mingw/libz.a,%/include/zlib.h,${patsubst %/lib/libz.a,%/include/zlib.h,$(libz)}} | |
46 | zconf_h:=${patsubst %/zlib.h,%/zconf.h,$(zlib_h)} | |
47 | ifeq "${libz}" "" | |
d31c5928 CF |
48 | zlib_h:= |
49 | zconf_h:= | |
50 | libz:= | |
51 | endif | |
52 | ||
0ad10c0f CF |
53 | DUMPER_INCLUDES:=-I$(bupdir2)/bfd -I$(updir1)/include |
54 | ||
1fd5e000 CF |
55 | libcygwin:=$(cygwin_build)/libcygwin.a |
56 | libuser32:=$(w32api_lib)/libuser32.a | |
57 | libkernel32:=$(w32api_lib)/libkernel32.a | |
58 | ALL_DEP_LDLIBS:=$(libcygwin) $(w32api_lib)/libnetapi32.a \ | |
59 | $(w32api_lib)/libadvapi32.a $(w32api_lib)/libkernel32.a \ | |
60 | $(w32api_lib)/libuser32.a | |
61 | ||
62 | ALL_LDLIBS:=${patsubst $(w32api_lib)/lib%.a,-l%,\ | |
63 | ${filter-out $(libuser32),\ | |
64 | ${filter-out $(libkernel32),\ | |
65 | ${filter-out $(libcygwin), $(ALL_DEP_LDLIBS)}}}} | |
66 | ||
67 | MINGW_LIB:=$(mingw_build)/libmingw32.a | |
212ed5e0 | 68 | DUMPER_LIB:=${libbfd} ${libintl} -L$(bupdir1)/libiberty $(LIBICONV) -liberty |
b07b167e | 69 | MINGW_LDLIBS:=${filter-out $(libcygwin),$(ALL_LDLIBS) $(MINGW_LIB)} |
72ac8b4f | 70 | MINGW_DEP_LDLIBS:=${ALL_DEP_LDLIBS} ${MINGW_LIB} |
92005b4c | 71 | ALL_LDFLAGS:=-B$(newlib_build)/libc -B$(w32api_lib) $(LDFLAGS) $(ALL_LDLIBS) |
eedc36cb | 72 | DUMPER_LDFLAGS:=$(ALL_LDFLAGS) $(DUMPER_LIB) |
b07b167e | 73 | MINGW_CXX:=${patsubst %/cygwin/include,%/mingw/include,${filter-out -I$(newlib_source)/%,$(COMPILE_CXX)}} -I$(updir) |
1fd5e000 | 74 | |
ae21eea6 | 75 | PROGS:= cygcheck.exe cygpath.exe getfacl.exe kill.exe mkgroup.exe \ |
a9f20457 | 76 | mkpasswd.exe mount.exe passwd.exe ps.exe regtool.exe setfacl.exe \ |
e60e8d3b | 77 | setmetamode.exe ssp.exe strace.exe umount.exe ipcrm.exe ipcs.exe |
0715614b | 78 | |
1b38471e | 79 | CLEAN_PROGS:=$(PROGS) |
fa10472e | 80 | ifndef build_dumper |
0715614b | 81 | PROGS:=warn_dumper $(PROGS) |
fa10472e CF |
82 | else |
83 | PROGS+=dumper$(EXEEXT) | |
1b38471e | 84 | CLEAN_PROGS+=dumper.exe |
0715614b | 85 | endif |
1fd5e000 | 86 | |
1fd5e000 CF |
87 | .SUFFIXES: |
88 | .NOEXPORT: | |
89 | ||
0715614b | 90 | .PHONY: all install clean realclean warn_dumper |
1fd5e000 CF |
91 | |
92 | all: Makefile $(PROGS) | |
93 | ||
4a6890e7 | 94 | strace.exe: strace.o path.o $(MINGW_DEP_LDLIBS) |
1fd5e000 | 95 | ifdef VERBOSE |
704d8c32 | 96 | $(CXX) $(MINGW_CXXFLAGS) -o $@ ${wordlist 1,2,$^} -B$(mingw_build)/ $(MINGW_LDFLAGS) |
1fd5e000 | 97 | else |
ce475802 | 98 | @echo $(CXX) -o $@ ${wordlist 1,2,$^} ${filter-out -B%, $(MINGW_CXXFLAGS) $(MINGW_LDFLAGS)};\ |
704d8c32 | 99 | $(CXX) $(MINGW_CXXFLAGS) -o $@ ${wordlist 1,2,$^} -B$(mingw_build)/ $(MINGW_LDFLAGS) |
1fd5e000 CF |
100 | endif |
101 | ||
64b94981 | 102 | cygcheck.exe: cygcheck.o bloda.o path.o dump_setup.o $(MINGW_DEP_LDLIBS) |
d31c5928 | 103 | ifeq "$(libz)" "" |
3a256354 | 104 | @echo '*** Building cygcheck without package content checking due to missing mingw libz.a.' |
d31c5928 | 105 | endif |
2fac517d | 106 | ifdef VERBOSE |
ec62ba95 | 107 | $(CXX) $(MINGW_CXXFLAGS) -o $@ ${wordlist 1,4,$^} -B$(mingw_build)/ $(MINGW_LDFLAGS) $(libz) |
2fac517d | 108 | else |
ec62ba95 BD |
109 | @echo $(CXX) -o $@ ${wordlist 1,4,$^} ${filter-out -B%, $(MINGW_CXXFLAGS) $(MINGW_LDFLAGS)} $(libz);\ |
110 | $(CXX) $(MINGW_CXXFLAGS) -o $@ ${wordlist 1,4,$^} -B$(mingw_build)/ $(MINGW_LDFLAGS) $(libz) | |
2fac517d CF |
111 | endif |
112 | ||
0ad10c0f | 113 | dumper.o: dumper.cc dumper.h |
ce475802 | 114 | ifdef VERBOSE |
5dec13e1 | 115 | ${filter-out -nostdinc,$(COMPILE_CXX)} $c -o $@ $(DUMPER_INCLUDES) ${firstword $^} |
ce475802 | 116 | else |
a239df7f | 117 | @echo $(CXX) $c $(CFLAGS) $(DUMPER_INCLUDES) ... $(basename $@).cc;\ |
5dec13e1 | 118 | ${filter-out -nostdinc,$(COMPILE_CXX)} $c -o $(@D)/$(basename $@)$o $(DUMPER_INCLUDES) $< |
ce475802 CF |
119 | endif |
120 | ||
0ad10c0f | 121 | module_info.o: module_info.cc |
ce475802 | 122 | ifdef VERBOSE |
5dec13e1 | 123 | ${filter-out -nostdinc,$(COMPILE_CXX)} $c -o $@ $(DUMPER_INCLUDES) ${firstword $^} |
ce475802 | 124 | else |
a239df7f | 125 | @echo $(CXX) $c $(CFLAGS) $(DUMPER_INCLUDES) ... $(basename $@).cc;\ |
5dec13e1 | 126 | ${filter-out -nostdinc,$(COMPILE_CXX)} $c -o $(@D)/$(basename $@)$o $(DUMPER_INCLUDES) $< |
ce475802 | 127 | endif |
0ad10c0f CF |
128 | |
129 | parse_pe.o: parse_pe.cc dumper.h | |
ce475802 | 130 | ifdef VERBOSE |
5dec13e1 | 131 | ${filter-out -nostdinc,$(COMPILE_CXX)} $c -o $@ $(DUMPER_INCLUDES) ${firstword $^} |
ce475802 | 132 | else |
a239df7f | 133 | @echo $(CXX) $c $(CFLAGS) $(DUMPER_INCLUDES) ... $(basename $@).cc;\ |
5dec13e1 | 134 | ${filter-out -nostdinc,$(COMPILE_CXX)} $c -o $(@D)/$(basename $@)$o $(DUMPER_INCLUDES) $< |
ce475802 | 135 | endif |
0ad10c0f | 136 | |
2fac517d CF |
137 | path.o: path.cc |
138 | ifdef VERBOSE | |
b07b167e | 139 | $(MINGW_CXX) $c -o $(@D)/$(basename $@)$o $(MINGW_CXXFLAGS) $< |
2fac517d | 140 | else |
b07b167e CF |
141 | @echo $(MINGW_CXX) $c -o $(@D)/$(basename $@)$o $(MINGW_CXXFLAGS) ... $^;\ |
142 | ${MINGW_CXX} $c -o $(@D)/$(basename $@)$o $(MINGW_CXXFLAGS) $< | |
2fac517d CF |
143 | endif |
144 | ||
d0d51791 CF |
145 | dump_setup.o: dump_setup.cc |
146 | ifdef VERBOSE | |
b07b167e | 147 | $(MINGW_CXX) $(zconf_h) $(zlib_h) $c -o $(@D)/$(basename $@)$o $(MINGW_CXXFLAGS) $< |
d0d51791 | 148 | else |
b07b167e CF |
149 | @echo $(MINGW_CXX) $c -o $(@D)/$(basename $@)$o $(MINGW_CXXFLAGS) ... $^;\ |
150 | $(MINGW_CXX) $(zconf_h) $(zlib_h) $c -o $(@D)/$(basename $@)$o $(MINGW_CXXFLAGS) $< | |
d0d51791 CF |
151 | endif |
152 | ||
64b94981 DK |
153 | bloda.o: bloda.cc |
154 | ifdef VERBOSE | |
155 | ${MINGW_CXX} $c -o $(@D)/$(basename $@)$o $(MINGW_CXXFLAGS) -I$(updir) $< | |
156 | else | |
157 | @echo $(MINGW_CXX) $c -o $(@D)/$(basename $@)$o $(MINGW_CXXFLAGS) ... $^;\ | |
158 | ${MINGW_CXX} $c -o $(@D)/$(basename $@)$o $(MINGW_CXXFLAGS) -I$(updir) $< | |
159 | endif | |
160 | ||
ad466e2f CF |
161 | cygcheck.o: cygcheck.cc |
162 | ifdef VERBOSE | |
bd79b736 | 163 | ${MINGW_CXX} $c -o $(@D)/$(basename $@)$o $(MINGW_CXXFLAGS) -I$(updir) $< |
ad466e2f | 164 | else |
bd79b736 CF |
165 | @echo $(MINGW_CXX) $c -o $(@D)/$(basename $@)$o $(MINGW_CXXFLAGS) ... $^;\ |
166 | ${MINGW_CXX} $c -o $(@D)/$(basename $@)$o $(MINGW_CXXFLAGS) -I$(updir) $< | |
ad466e2f CF |
167 | endif |
168 | ||
169 | strace.o: strace.cc | |
170 | ifdef VERBOSE | |
b07b167e | 171 | $(MINGW_CXX) $c -o $(@D)/$(basename $@)$o $(MINGW_CXXFLAGS) -I$(updir) $< |
ad466e2f | 172 | else |
b07b167e CF |
173 | @echo $(MINGW_CXX) $c -o $(@D)/$(basename $@)$o $(MINGW_CXXFLAGS) ... $^;\ |
174 | $(MINGW_CXX) $c -o $(@D)/$(basename $@)$o $(MINGW_CXXFLAGS) -I$(updir) $< | |
ad466e2f CF |
175 | endif |
176 | ||
5c8891e9 | 177 | kill.exe: kill.o |
c49fa762 CF |
178 | ifdef VERBOSE |
179 | $(CXX) -o $@ $^ -B$(cygwin_build)/ $(ALL_LDFLAGS) $(KILL_LIB) | |
180 | else | |
181 | @echo $(CXX) -o $@ $^ ${filter-out -B%, $(ALL_LDFLAGS)};\ | |
182 | $(CXX) -o $@ $^ -B$(cygwin_build)/ $(ALL_LDFLAGS) $(KILL_LIB) | |
183 | endif | |
184 | ||
1fd5e000 | 185 | clean: |
1b38471e | 186 | rm -f *.o $(CLEAN_PROGS) |
1fd5e000 CF |
187 | |
188 | realclean: clean | |
189 | rm -f Makefile config.cache | |
190 | ||
191 | install: all | |
14a4d598 | 192 | $(SHELL) $(updir1)/mkinstalldirs $(bindir) |
1fd5e000 CF |
193 | for i in $(PROGS) ; do \ |
194 | n=`echo $$i | sed '$(program_transform_name)'`; \ | |
195 | $(INSTALL_PROGRAM) $$i $(bindir)/$$n; \ | |
196 | done | |
197 | ||
198 | $(cygwin_build)/libcygwin.a: $(cygwin_build)/Makefile | |
199 | @$(MAKE) -C $(@D) $(@F) | |
200 | ||
201 | $(mingw_build)/libmingw32.a: $(mingw_build)/Makefile | |
202 | @$(MAKE) -C $(@D) $(@F) | |
203 | ||
0715614b | 204 | warn_dumper: |
10e1fce6 CF |
205 | @echo '*** Not building dumper.exe since some required libraries are' |
206 | @echo '*** missing: libbfd.a and libintl.a.' | |
207 | @echo '*** If you need this program, check out the naked-bfd and naked-intl' | |
208 | @echo '*** sources from sources.redhat.com. Then, configure and build these' | |
209 | @echo '*** libraries. Otherwise, you can safely ignore this warning.' | |
0715614b | 210 | |
0ad10c0f CF |
211 | dumper.exe: module_info.o parse_pe.o dumper.o $(ALL_DEP_LDLIBS) |
212 | ifdef VERBOSE | |
ce475802 | 213 | $(CXX) -o $@ ${wordlist 1,3,$^} -B$(cygwin_build)/ $(DUMPER_LDFLAGS) |
0ad10c0f | 214 | else |
ce475802 CF |
215 | @echo $(CXX) -o $@ ${wordlist 1,3,$^} ${filter-out -B%, $(DUMPER_LDFLAGS)};\ |
216 | $(CXX) -o $@ ${wordlist 1,3,$^} -B$(cygwin_build)/ $(DUMPER_LDFLAGS) | |
0ad10c0f CF |
217 | endif |
218 | ||
2dba45f4 CV |
219 | cygpath.exe: cygpath.o $(ALL_DEP_LDLIBS) |
220 | ifdef VERBOSE | |
221 | $(CXX) -o $@ ${firstword $^} -B$(cygwin_build)/ $(ALL_LDFLAGS) -lntdll | |
222 | else | |
56ec0f9c CF |
223 | @echo $(CXX) -o $@ ${firstword $^} ${filter-out -B%, $(ALL_LDFLAGS) -lntdll};\ |
224 | $(CXX) -o $@ ${firstword $^} -B$(cygwin_build)/ $(ALL_LDFLAGS) -lntdll | |
2dba45f4 CV |
225 | endif |
226 | ||
1fd5e000 CF |
227 | %.exe: %.o $(ALL_DEP_LDLIBS) |
228 | ifdef VERBOSE | |
f6f88b66 | 229 | $(CXX) -o $@ ${firstword $^} -B$(cygwin_build)/ $(ALL_LDFLAGS) |
1fd5e000 | 230 | else |
f6f88b66 | 231 | @echo $(CXX) -o $@ ${firstword $^} ... ${filter-out -B%, $(ALL_LDFLAGS)};\ |
ce475802 | 232 | $(CXX) -o $@ ${firstword $^} -B$(cygwin_build)/ $(ALL_LDFLAGS) |
1fd5e000 | 233 | endif |