source: trunk/testapp/common.mak@ 21613

Last change on this file since 21613 was 21613, checked in by dmik, 14 years ago

testapp/common.mak: Improved run- and debug- targets, added ipmd-, idbug-, d- and r- prefixes. See make help for details.

File size: 2.7 KB
Line 
1ifndef ODIN
2$(error ODIN variable must be set)
3else
4ifeq ($(shell ls $(ODIN)/include/odin.h),)
5$(error $(ODIN) does not contain include/odin.h)
6endif
7endif
8
9.PHONY: default
10
11default: all
12
13ODIN_DOS = $(subst /,\,$(ODIN))
14
15DEFINES += -D__WIN32OS2__ -D__i386__ -DSTRICT -D_POSIX_SOURCE \
16 -D_POSIX_C_SOURCE=200112 -D_EMX_SOURCE -D_XOPEN_SOURCE=600 \
17 -D_SVID_SOURCE
18
19INCLUDES += -I$(ODIN)/include -I$(ODIN)/include/win
20
21CFLAGS += $(DEFINES) $(INCLUDES) -g -DDEBUG -L$(ODIN)/lib/Debug -lkernel32.lib
22
23WRC = $(ODIN)/tools/wrc/bin/Release/wrc.exe
24
25ODIN_FLAVOR := Debug
26
27ifneq ($(RELEASE)$(REL),)
28ODIN_FLAVOR := Release
29endif
30
31RUN_SHELL =
32DEBUG_SHELL = ipmd
33
34run-%: %
35 @echo [Running $<$(if $($<_ARGS), $($<_ARGS)) (shell=$(RUN_SHELL),flavor=$(ODIN_FLAVOR))]
36 @echo.
37 @cmd /c "set BEGINLIBPATH=$(ODIN_DOS)\bin\$(ODIN_FLAVOR);$(ODIN_DOS)\bin;%BEGINLIBPATH% && $(RUN_SHELL) $< $($<_ARGS)"
38 @echo.
39
40debug-%: RUN_SHELL = $(DEBUG_SHELL)
41debug-%: run-%
42 @rem dummy, needed for the pattern rule to work...
43
44debug: RUN_SHELL = $(DEBUG_SHELL)
45debug: run
46
47ipmd-%: RUN_SHELL = ipmd
48ipmd-%: run-%
49 @rem dummy, needed for the pattern rule to work...
50
51ipmd: RUN_SHELL = ipmd
52ipmd: run
53
54idbug-%: RUN_SHELL = idbug
55idbug-%: run-%
56 @rem dummy, needed for the pattern rule to work...
57
58idbug: RUN_SHELL = idbug
59idbug: run
60
61r-%: ODIN_FLAVOR = Release
62r-%: %
63 @rem dummy, needed for the pattern rule to work...
64
65d-%: ODIN_FLAVOR = Debug
66d-%: %
67 @rem dummy, needed for the pattern rule to work...
68
69help:
70 @echo.
71 @echo Targets:
72 @echo run-EXE Run EXE in normal shell (default: cmd, RUN_SHELL overrides)
73 @echo debug-EXE Run EXE in debug shell (default: ipmd, DEBUG_SHELL overrides)
74 @echo ipmd-EXE Run EXE in IPMD shell
75 @echo idbug-EXE Run EXE in IDBUG shell
76 @echo.
77 @echo Flavors:
78 @echo d-TARGET Run against debug Odin libraries (default)
79 @echo r-TARGET Run against release Odin libraries (RELEASE=1 makes it default)
80 @echo.
81
82%.exe: %.c
83 gcc $^ -Zomf -Zmap -Zlinker /PM:VIO -o $@ $(CFLAGS) $(foreach src, $^, $(CFLAGS.$(src))) $(CFLAGS.$@)
84
85%.exe:
86 gcc $^ -Zomf -Zmap -Zlinker /PM:VIO -o $@ $(CFLAGS) $(foreach src, $^, $(CFLAGS.$(src))) $(CFLAGS.$@)
87
88%.s: %.c
89 gcc $< -S -Zomf -o $@ $(CFLAGS)
90
91%.s: %.rc
92 $(WRC) -s $(DEFINES) $(INCLUDES) $< -o $@
93
94CLEAN = *.exe *.map *.log
95
96clean::
97 -rm $(CLEAN)
98
99define run-with-args-gen
100.PHONY: run-$(1)-$(2) run-$(1)-$(3)
101run-$(1)-$(2): $(1)
102 @make -s run-$(1) $(1)_ARGS=$($(1)_ARGS.$(2))
103run-$(1)-$(3):: run-$(1)-$(2)
104debug-$(1)-$(2): $(1)
105 @make -s debug-$(1) $(1)_ARGS=$($(1)_ARGS.$(2))
106endef
107
108run-with-args = $(foreach i, $(2), $(eval $(call run-with-args-gen,$(1),$(i),$(3))))run-$(1)-$(3)
Note: See TracBrowser for help on using the repository browser.