]> git.sur5r.net Git - bacula/bacula/blob - bacula/src/win32/Makefile.rules
Update win32 README
[bacula/bacula] / bacula / src / win32 / Makefile.rules
1 #
2 # Makefile for win32 bacula executables
3 # Using MinGW cross-compiler on GNU/Linux
4 #
5 #  Written by Robert Nelson, June 2006
6 #
7
8 define clean_obj
9         $(ECHO_CMD)rm -f $(1) $(patsubst %.o,%.d,$(filter-out %.res,$(1)))
10 endef
11
12 define clean_exe
13         $(ECHO_CMD)rm -f $(1) $(addsuffix .dbg,$(basename $(1)))
14 endef
15
16 define checkdir
17         @if [ ! -e $(dir $(1)) ]; then mkdir $(dir $(1)); fi
18 endef
19
20 define makedep
21         @echo "Generating dependencies for $<"
22         $(call checkdir,$@)
23         $(ECHO_CMD)$(CXX) -MM $(CPPFLAGS) $< > $@.$$$$; \
24         sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
25         rm -f $@.$$$$
26 endef
27
28 define link_conapp
29         @echo "Linking $@"
30         $(call checkdir,$@)
31         $(ECHO_CMD)$(CXX) $(CFLAGS) $(LDFLAGS) -mconsole $^ $(1) -o $@
32         $(makedbg)
33 endef
34
35 define link_winapp
36         @echo "Linking $@"
37         $(call checkdir,$@)
38         $(ECHO_CMD)$(CXX) $(CFLAGS) $(LDFLAGS) -mwindows $^ $(1) -o $@
39         $(makedbg)
40 endef
41
42 define makedbg
43         @echo "Stripping debug info from $@"
44         $(call checkdir,$@)
45         $(ECHO_CMD)$(OBJCPY) --only-keep-debug $@ $(addsuffix .dbg,$(basename $@)) ; \
46         $(OBJCPY) --strip-debug $@ ; \
47         $(OBJCPY) --add-gnu-debuglink=$(addsuffix .dbg,$(basename $@)) $@
48 endef
49
50 $(OBJDIR)/%.o: %.c
51         @echo "Compiling $<"
52         $(call checkdir, $@)
53         $(ECHO_CMD)$(CXX) $(CFLAGS) -c $< -o $@
54
55 $(OBJDIR)/%.o: %.cpp
56         @echo "Compiling $<"
57         $(call checkdir, $@)
58         $(ECHO_CMD)$(CXX) $(CFLAGS) -c $< -o $@
59
60 $(OBJDIR)/%.res: %.rc
61         @echo "Compiling $<"
62         $(call checkdir, $@)
63         $(ECHO_CMD)$(WINDRES) -O coff $< -o $@
64
65 $(OBJDIR)/%.d: %.c
66         $(makedep)
67
68 $(OBJDIR)/%.d: %.cpp
69         $(makedep)
70
71 ifneq ($(MAKECMDGOALS),clean)
72 include $(patsubst %.o,%.d,$(filter-out %.res,$(ALL_OBJS)))
73 endif