Subversion Repositories Kolibri OS

Rev

Rev 2363 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2363 Rev 2816
Line 26... Line 26...
26
# $(2) = name of main source file.
26
# $(2) = name of main source file.
27
# $(3) = folder of binary file - without spaces.
27
# $(3) = folder of binary file - without spaces.
28
# $(4) = name of program - without path and extension,
28
# $(4) = name of program - without path and extension,
29
define fasm_meta_rule
29
define fasm_meta_rule
30
$(1): $(2) Makefile.fasm .deps/.dir $$(call respace,$$(addsuffix .dir,$(3)))
30
$(1): $(2) Makefile.fasm .deps/.dir $$(call respace,$$(addsuffix .dir,$(3)))
31
	fasm -m 65536 $$< "$$@" -s .deps/$(4).fas
31
	tmpfile=`mktemp --tmpdir build.XXXXXXXX` && \
32
	prepsrc .deps/$(4).fas /dev/null
32
	(fasm -m 65536 "$$<" "$$@" -s $$$$tmpfile && \
33
	prepsrc .deps/$(4).fas /dev/stdout | \
33
	fasmdep -e $$$$tmpfile > .deps/$(4).Po && \
34
	perl -n -e 's|\\|/|g;s| |\\ |g;push @a,$$$$1 if/^;include\\ \x27(.*?)\x27/;' \
34
	rm $$$$tmpfile) || (rm $$$$tmpfile; false)
35
	-e 'END{$$$$a=join " \\\n ",@a;print q`$(1): `,"$$$$a\n$$$$a:\n"}' > .deps/$(4).Po
-
 
36
	kpack --nologo "$$@"
35
	kpack --nologo "$$@"
37
-include .deps/$(4).Po
36
-include .deps/$(4).Po
38
endef
37
endef
Line -... Line 38...
-
 
38
 
-
 
39
define fasm_nokpack_meta_rule
-
 
40
$(1): $(2) Makefile.fasm .deps/.dir $$(call respace,$$(addsuffix .dir,$(3)))
-
 
41
	tmpfile=`mktemp --tmpdir build.XXXXXXXX` && \
-
 
42
	(fasm -m 65536 "$$<" "$$@" -s $$$$tmpfile && \
-
 
43
	fasmdep -e $$$$tmpfile > .deps/$(4).Po && \
-
 
44
	rm $$$$tmpfile) || (rm $$$$tmpfile; false)
-
 
45
-include .deps/$(4).Po
-
 
46
endef
39
 
47
 
40
progname=$(call respace,$(basename $(notdir $(call binarypart,$(f)))))
48
progname=$(call respace,$(basename $(notdir $(call binarypart,$(f)))))
41
binarydir=$(subst ./,,$(dir $(call binarypart,$(f))))
49
binarydir=$(subst ./,,$(dir $(call binarypart,$(f))))
-
 
50
$(foreach f,$(FASM_PROGRAMS) $(FASM_PROGRAMS_CD) $(SKIN_SOURCES),$(eval $(call fasm_meta_rule,$(fbinary),$(fsource),$(binarydir),$(progname))))
Line 42... Line 51...
42
$(foreach f,$(FASM_PROGRAMS) $(FASM_PROGRAMS_CD),$(eval $(call fasm_meta_rule,$(fbinary),$(fsource),$(binarydir),$(progname))))
51
$(foreach f,$(FASM_NOKPACK_PROGRAMS),$(eval $(call fasm_nokpack_meta_rule,$(fbinary),$(fsource),$(binarydir),$(progname))))
43
 
52
 
44
# Rule for the kernel differs: it uses kerpack instead of kpack.
53
# Rule for the kernel differs: it uses kerpack instead of kpack.
45
kernel.mnt: $(KERNEL)/kernel.asm Makefile.fasm .deps/.dir
54
kernel.mnt: $(KERNEL)/kernel.asm Makefile.fasm .deps/.dir
46
	fasm -m 65536 $< "$@" -s .deps/kernel.fas
55
	tmpfile=`mktemp --tmpdir build.XXXXXXXX` && \
47
	prepsrc .deps/kernel.fas /dev/null
-
 
48
	prepsrc .deps/kernel.fas /dev/stdout | \
56
	(fasm -m 65536 "$<" "$@" -s $$tmpfile && \
49
	perl -n -e 's|\\|/|g;s| |\\ |g;push @a,$$1 if/^;include\\ \x27(.*?)\x27/;' \
-
 
50
	-e 'END{$$a=join " \\\n ",@a;print "$@: $$a\n$$a:\n"}' > .deps/kernel.Po
57
	fasmdep -e $$tmpfile > .deps/kernel.Po && \