1 |
|
---|
2 |
|
---|
3 | # Generate compilation rule for a c file
|
---|
4 | define def_compile_c
|
---|
5 | $$.$(call OBJFILE,$(1)): $(1) | $(dir $$.$(call OBJFILE,$(1)))
|
---|
6 | $$(call DO.COMPILE.c,$(.TCF) $(.TCF.$(1)))
|
---|
7 | endef
|
---|
8 |
|
---|
9 | # Generate compilation rule for a S file
|
---|
10 | define def_compile_S
|
---|
11 | $$.$(call OBJFILE,$(1)): $(1) | $(dir $$.$(call OBJFILE,$(1)))
|
---|
12 | $$(call DO.COMPILE.s,$(.TSF) $(.TSF.$(1)))
|
---|
13 | endef
|
---|
14 |
|
---|
15 | # Generate compilation rule for an asm files
|
---|
16 | define def_compile_asm
|
---|
17 | $$.$(call OBJFILE,$(1)): $(1) | $(dir $$.$(call OBJFILE,$(1)))
|
---|
18 | $$(call DO.COMPILE.asm,$(.TAF) $(.TAF.$(1)))
|
---|
19 | endef
|
---|
20 |
|
---|
21 | # Linking rule for an EXE.
|
---|
22 | define def_link_exe
|
---|
23 | $$.$(.TARG): $(.OBJS) $(.DEPS)
|
---|
24 | $$(call DO.LINK.exe,$(.TLDF))
|
---|
25 | endef
|
---|
26 |
|
---|
27 | # Linking rule for a DLL.
|
---|
28 | define def_link_dll
|
---|
29 | $$.$(.TARG): $(.OBJS) $(.DEPS) $(.TDEF)
|
---|
30 | $$(call DO.LINK.dll,$(.TLDF))
|
---|
31 | endef
|
---|
32 |
|
---|
33 | # generic rule for building libs.
|
---|
34 | define def_lib
|
---|
35 | $$.$(.TARG): $(.OBJS) $(.DEPS)
|
---|
36 | $$(DO.LIBRARY)
|
---|
37 | endef
|
---|
38 |
|
---|
39 | # The rule for building an archive with lot's of arguments.
|
---|
40 | define def_lib_ar
|
---|
41 | $$.$(.TARG): $(.OBJS) $(.DEPS)
|
---|
42 | echo "CREATE $$(@F)" > $$@.ar-script
|
---|
43 | $(foreach x, $(filter %.o, $(sort $(.OBJS) $(.DEPS))), $(call def_lib_ar_addmod))
|
---|
44 | echo "SAVE" >> $$@.ar-script
|
---|
45 | echo "END" >> $$@.ar-script
|
---|
46 | rm -f $$(@F) $$@
|
---|
47 | ar -M < $$@.ar-script
|
---|
48 | mv $$(@F) $$@
|
---|
49 |
|
---|
50 | endef
|
---|
51 |
|
---|
52 | # defined used by def_lib_ar to add a module to the script file. (blank line is imporant!)
|
---|
53 | ifdef KMK_VERSION
|
---|
54 | define def_lib_ar_addmod
|
---|
55 | @kmk_builtin_append $$@.ar-script "ADDMOD $(x)"
|
---|
56 |
|
---|
57 | endef
|
---|
58 | else
|
---|
59 | define def_lib_ar_addmod
|
---|
60 | echo "ADDMOD $(x)" >> $$@.ar-script
|
---|
61 |
|
---|
62 | endef
|
---|
63 | endif
|
---|
64 |
|
---|
65 | # The rule for building an archive with imports
|
---|
66 | define def_implib
|
---|
67 | $$.$(.TARG): $(.IMPS) $(.OBJS) $(.DEPS)
|
---|
68 | $$(call DO.IMPLIB)
|
---|
69 | endef
|
---|
70 |
|
---|