From c9b9466b37bb24f59dc42cbf4e8f14d072018220 Mon Sep 17 00:00:00 2001 From: CleverMouse Date: Wed, 19 Jan 2011 19:08:46 +0000 Subject: [PATCH] Makefile: support for NASM compilation git-svn-id: svn://kolibrios.org@1752 a494cfbc-eb01-0410-851d-a64ba20cac60 --- data/eng/Makefile | 11 +++++++++-- data/eng/Makefile.copy | 6 ++++++ data/eng/Makefile.nasm | 13 +++++++++++++ data/eng/demos/aclock | Bin 1206 -> 0 bytes data/eng/games/c4 | Bin 3578 -> 0 bytes data/rus/Makefile | 33 ++++++++++++++++++++------------- data/rus/Makefile.copy | 6 ++++++ data/rus/Makefile.nasm | 13 +++++++++++++ data/rus/demos/aclock | Bin 1206 -> 0 bytes data/rus/games/c4 | Bin 3578 -> 0 bytes 10 files changed, 67 insertions(+), 15 deletions(-) create mode 100644 data/eng/Makefile.copy create mode 100644 data/eng/Makefile.nasm delete mode 100644 data/eng/demos/aclock delete mode 100644 data/eng/games/c4 create mode 100644 data/rus/Makefile.copy create mode 100644 data/rus/Makefile.nasm delete mode 100644 data/rus/demos/aclock delete mode 100644 data/rus/games/c4 diff --git a/data/eng/Makefile b/data/eng/Makefile index 6a766ac0fa..3199660e18 100644 --- a/data/eng/Makefile +++ b/data/eng/Makefile @@ -164,6 +164,13 @@ FASM_PROGRAMS:=\ network/zeroconf:NETWORK/ZEROCONF:$(PROGS)/network/zeroconf/trunk/zeroconf.asm \ # end of list +# The list of all NASM programs with one main NASM file. +# Format of an item is exactly the same as in the previous list. +NASM_PROGRAMS:=\ + demos/aclock:DEMOS/ACLOCK:$(PROGS)/demos/aclock/trunk/aclock.asm \ + games/c4:GAMES/C4:$(PROGS)/games/c4/trunk/c4.asm \ +# end of list + # The list of files which should be copied from somewhere. # Format of an item is exactly the same as in the previous list. COPY_FILES:=\ @@ -198,7 +205,7 @@ OTHER_FILES:=asciivju:ASCIIVJU autorun.dat:AUTORUN.DAT \ vmode:VMODE \ 3d/3dsheart:3D/3DSHEART 3d/3dspiral:3D/3DSPIRAL 3d/cubeline:3D/CUBELINE \ 3d/flatwav:3D/FLATWAV 3d/gears:3D/GEARS 3d/house.3ds:3D/HOUSE.3DS \ - demos/aclock:DEMOS/ACLOCK demos/ak47.lif:DEMOS/AK47.LIF \ + demos/ak47.lif:DEMOS/AK47.LIF \ demos/barge.lif:DEMOS/BARGE.LIF demos/life2:DEMOS/LIFE2 \ demos/relay.lif:DEMOS/RELAY.LIF demos/rpento.lif:DEMOS/RPENTO.LIF \ demos/use_mb:DEMOS/USE_MB demos/web:DEMOS/WEB \ @@ -214,7 +221,7 @@ OTHER_FILES:=asciivju:ASCIIVJU autorun.dat:AUTORUN.DAT \ File|Managers/kfm_keys.txt:File|Managers/KFM_KEYS.TXT \ fonts/bold.chr:FONTS/BOLD.CHR fonts/char2.mt:FONTS/CHAR2.MT \ fonts/char.mt:FONTS/CHAR.MT \ - games/bnc:GAMES/BNC games/c4:GAMES/C4 \ + games/bnc:GAMES/BNC \ games/checkers:GAMES/CHECKERS games/clicks:GAMES/CLICKS \ games/FindNumbers:GAMES/FindNumbers games/gomoku:GAMES/GOMOKU \ games/klavisha:GAMES/KLAVISHA games/kosilka:GAMES/KOSILKA \ diff --git a/data/eng/Makefile.copy b/data/eng/Makefile.copy new file mode 100644 index 0000000000..538ecb4ef6 --- /dev/null +++ b/data/eng/Makefile.copy @@ -0,0 +1,6 @@ +# This is similar to Makefile.fasm, look there for comments. +define copy_meta_rule +$(1): $(2) Makefile.copy $$(call respace,$$(addsuffix .dir,$(3))) + cp $$< "$$@" +endef +$(foreach f,$(COPY_FILES),$(eval $(call copy_meta_rule,$(fbinary),$(fsource),$(binarydir)))) diff --git a/data/eng/Makefile.nasm b/data/eng/Makefile.nasm new file mode 100644 index 0000000000..18066de385 --- /dev/null +++ b/data/eng/Makefile.nasm @@ -0,0 +1,13 @@ +# This is similar to Makefile.fasm, look there for comments. +define nasm_meta_rule +.deps/$(4).Po: $(2) Makefile.nasm .deps/.dir + nasm -I$$(dir $(2)) -o "$(1)" -M $$< > .deps/$(4).Tpo 2>/dev/null; if [ $$$$? -eq 0 ]; \ + then sed 's|\(.*\):|\1 .deps/$(4).Po:|' .deps/$(4).Tpo > .deps/$(4).Po; fi + rm -f .deps/$(4).Tpo +$(1): $(2) Makefile.nasm $$(call respace,$$(addsuffix .dir,$(3))) + nasm -I$$(dir $(2)) -o "$$@" $$< + kpack --nologo "$$@" +-include .deps/$(4).Po +endef + +$(foreach f,$(NASM_PROGRAMS),$(eval $(call nasm_meta_rule,$(fbinary),$(fsource),$(binarydir),$(progname)))) diff --git a/data/eng/demos/aclock b/data/eng/demos/aclock deleted file mode 100644 index cf5b8ddd88bb4bf14c660c3a811bb0210cae7313..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1206 zcmV;n1WEf#P(w@m1^@s-00001Mv*2LLXK;4&&M{}4FNtG1>^0(^p?IH4?*s=$9OC5 zNkK=|+CQ}9M$O`@7%f6>gNkOS2Ux$*L5>o;%>&(k!rzb~DAO(B$}d)zaBqA|H2JiP zxK1t8acDPzU6UrP=wg8;WTfalUJLS^G|U`v69kS>*$D8b@Tx&O?S4lvZ?>s>`lF2f z6C(}{|MkGpwT|=@qTC|~+H{|dW$aXW^!3D_zE_@p@fYoF-sAvKXbJ^wq#H-6#eFYQ z`TU!Qf`3}iN{sohRdt8bCBdIqoSJ691OX!=t=BN1IVC|6TFD#Ug_oD0_g^Q{w=t@a zn`*6Xu#lF-dt52$kLTgKSc3W&Elv!raw{h<9!bpB9ZRsdU2iYc=AG8KS)%xic<@2B zf$4$(jog?2t>Lb=@+qPxc{wZ50ILwfhE~EE3|wx4AD35;?}m|K-JJYw-3ygaeTgq{BzhD)iH%pNx%T7^C_n)U77Eaoo z6C6dlKUdtp;*}pkX#o*ZYhx2HGn+~h;5zv-o^nOq*_sWbG4#h3bAi~2mm??}+ zq*d7n@)N*-em#L?PzK`i&)lv;i+@aOYC4?dtK?L>#^Z-g*{Z(6K6YH#6V-AUT}Fc> zu-%VhZO8Rso`z6HlLDN!9~hoOL{1|H0PR+QqhX)R#US1s@vMW+ilej9#QjMp&Ips~ zAOn!SM0ULhM6NzVH&O@Yxz+I9Gf{AESnk{6Ttg=wPhmxlf*USr3H(nEH9 z+M0!MPE`!TULS{=CV^HGv;H?jF(01>bQ83xu%R%{{k!?aL^{x5y=vttIM_^5E~;=E zH4zjBOcPM-R=3nrOsCzYVJ;{N9G2w!2jJsNe#7V5*Hb9VWvMN1Xk{$1IrAOi>%S|= zsN?zAnP!rlm*i5<#dW%`y-Gum0xf-|028b{0_l?S>kLI*V{w@j%Rqw3eux1ZW*R|y z+NySNdhUb!W&A0K$7j=0Gq(cIMme1!>Rwh+73~07#X|k42?Q3H{y2M9rgu_^(&5sk zX7m*HWX`U-kk{%&hX)@MpE%or%C?TPg$fI1P9JA`KJ%0t3u_D=LBOM2$kIGf`$^Sd zBQX~C3Q6Pp9I|^hzVg#KF=_aI;G>)dI!Ab1?>*TL!G7aYpQk!{k32^KpM!jZgc|Y U80rkEBociEi5>s|AOHXW0GldG6951J diff --git a/data/eng/games/c4 b/data/eng/games/c4 deleted file mode 100644 index d626e37371962c9a7eaeebdabfd4b1ef6415b3a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3578 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 ACIA2c diff --git a/data/rus/Makefile b/data/rus/Makefile index 967e3f3686..da4ea0b13a 100644 --- a/data/rus/Makefile +++ b/data/rus/Makefile @@ -164,6 +164,13 @@ FASM_PROGRAMS:=\ network/zeroconf:NETWORK/ZEROCONF:$(PROGS)/network/zeroconf/trunk/zeroconf.asm \ # end of list +# The list of all NASM programs with one main NASM file. +# Format of an item is exactly the same as in the previous list. +NASM_PROGRAMS:=\ + demos/aclock:DEMOS/ACLOCK:$(PROGS)/demos/aclock/trunk/aclock.asm \ + games/c4:GAMES/C4:$(PROGS)/games/c4/trunk/c4.asm \ +# end of list + # The list of files which should be copied from somewhere. # Format of an item is exactly the same as in the previous list. COPY_FILES:=\ @@ -198,7 +205,7 @@ OTHER_FILES:=asciivju:ASCIIVJU autorun.dat:AUTORUN.DAT \ vmode:VMODE \ 3d/3dsheart:3D/3DSHEART 3d/3dspiral:3D/3DSPIRAL 3d/cubeline:3D/CUBELINE \ 3d/flatwav:3D/FLATWAV 3d/gears:3D/GEARS 3d/house.3ds:3D/HOUSE.3DS \ - demos/aclock:DEMOS/ACLOCK demos/ak47.lif:DEMOS/AK47.LIF \ + demos/ak47.lif:DEMOS/AK47.LIF \ demos/barge.lif:DEMOS/BARGE.LIF demos/life2:DEMOS/LIFE2 \ demos/relay.lif:DEMOS/RELAY.LIF demos/rpento.lif:DEMOS/RPENTO.LIF \ demos/use_mb:DEMOS/USE_MB demos/web:DEMOS/WEB \ @@ -215,7 +222,7 @@ OTHER_FILES:=asciivju:ASCIIVJU autorun.dat:AUTORUN.DAT \ fonts/bold.chr:FONTS/BOLD.CHR fonts/char2.mt:FONTS/CHAR2.MT \ fonts/char.mt:FONTS/CHAR.MT \ games/appdata.dat:GAMES/APPDATA.DAT games/ataka:GAMES/ATAKA \ - games/basekurs.kla:GAMES/BASEKURS.KLA games/bnc:GAMES/BNC games/c4:GAMES/C4 \ + games/basekurs.kla:GAMES/BASEKURS.KLA games/bnc:GAMES/BNC \ games/checkers:GAMES/CHECKERS games/clicks:GAMES/CLICKS \ games/FindNumbers:GAMES/FindNumbers games/gomoku:GAMES/GOMOKU \ games/klavisha:GAMES/KLAVISHA games/kosilka:GAMES/KOSILKA \ @@ -249,9 +256,10 @@ fimage=$(call respace,$(call imagepart,$(f))) fsource=$(call respace,$(call sourcepart,$(f))) # Define targets for image file. -# Join lists $(FASM_PROGRAMS), $(COPY_FILES) and $(OTHER_FILES); -# for each item in the united list call fbinary. -targets:=$(foreach f,$(COPY_FILES) $(FASM_PROGRAMS) $(OTHER_FILES),$(fbinary)) +# Join all the lists above. +targets_full:=$(COPY_FILES) $(FASM_PROGRAMS) $(NASM_PROGRAMS) $(OTHER_FILES) +# For each item in the united list call fbinary. +targets:=$(foreach f,$(targets_full),$(fbinary)) # Define a command for copying a file inside the image. # mcopy_command is a macro with two parameters, @@ -271,7 +279,7 @@ define newline endef -mcopy_all_items:=$(foreach f,$(FASM_PROGRAMS) $(COPY_FILES) $(OTHER_FILES),$(mcopy_item_command)$(newline)) +mcopy_all_items:=$(foreach f,$(targets_full),$(mcopy_item_command)$(newline)) # The main goal: image. $(BUILD_DIR)/kolibri.img: $(BUILD_DIR)/.dir \ @@ -314,14 +322,13 @@ File\ Managers/.dir: # FASM black magic goes to Makefile.fasm. include Makefile.fasm -# Rule for copying files is simpler, but similar to previous. -define copy_meta_rule -$(1): $(2) Makefile $$(call respace,$$(addsuffix .dir,$(3))) - cp $$< "$$@" -endef -$(foreach f,$(COPY_FILES),$(eval $(call copy_meta_rule,$(fbinary),$(fsource),$(binarydir)))) +# Similar for NASM. +include Makefile.nasm -# Special rules for copying sysfuncr.txt. +# Similar for copying files. +include Makefile.copy + +# Special rules for copying sysfuncr.txt - it isn't directly included in the image. docpak: $(DOCDIR)SYSFUNCR.TXT $(wildcard $(DOCDIR)*) $(DOCDIR)SYSFUNCR.TXT: $(KERNEL)/docs/sysfuncr.txt cp $(KERNEL)/docs/sysfuncr.txt $(DOCDIR)SYSFUNCR.TXT diff --git a/data/rus/Makefile.copy b/data/rus/Makefile.copy new file mode 100644 index 0000000000..538ecb4ef6 --- /dev/null +++ b/data/rus/Makefile.copy @@ -0,0 +1,6 @@ +# This is similar to Makefile.fasm, look there for comments. +define copy_meta_rule +$(1): $(2) Makefile.copy $$(call respace,$$(addsuffix .dir,$(3))) + cp $$< "$$@" +endef +$(foreach f,$(COPY_FILES),$(eval $(call copy_meta_rule,$(fbinary),$(fsource),$(binarydir)))) diff --git a/data/rus/Makefile.nasm b/data/rus/Makefile.nasm new file mode 100644 index 0000000000..18066de385 --- /dev/null +++ b/data/rus/Makefile.nasm @@ -0,0 +1,13 @@ +# This is similar to Makefile.fasm, look there for comments. +define nasm_meta_rule +.deps/$(4).Po: $(2) Makefile.nasm .deps/.dir + nasm -I$$(dir $(2)) -o "$(1)" -M $$< > .deps/$(4).Tpo 2>/dev/null; if [ $$$$? -eq 0 ]; \ + then sed 's|\(.*\):|\1 .deps/$(4).Po:|' .deps/$(4).Tpo > .deps/$(4).Po; fi + rm -f .deps/$(4).Tpo +$(1): $(2) Makefile.nasm $$(call respace,$$(addsuffix .dir,$(3))) + nasm -I$$(dir $(2)) -o "$$@" $$< + kpack --nologo "$$@" +-include .deps/$(4).Po +endef + +$(foreach f,$(NASM_PROGRAMS),$(eval $(call nasm_meta_rule,$(fbinary),$(fsource),$(binarydir),$(progname)))) diff --git a/data/rus/demos/aclock b/data/rus/demos/aclock deleted file mode 100644 index cf5b8ddd88bb4bf14c660c3a811bb0210cae7313..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1206 zcmV;n1WEf#P(w@m1^@s-00001Mv*2LLXK;4&&M{}4FNtG1>^0(^p?IH4?*s=$9OC5 zNkK=|+CQ}9M$O`@7%f6>gNkOS2Ux$*L5>o;%>&(k!rzb~DAO(B$}d)zaBqA|H2JiP zxK1t8acDPzU6UrP=wg8;WTfalUJLS^G|U`v69kS>*$D8b@Tx&O?S4lvZ?>s>`lF2f z6C(}{|MkGpwT|=@qTC|~+H{|dW$aXW^!3D_zE_@p@fYoF-sAvKXbJ^wq#H-6#eFYQ z`TU!Qf`3}iN{sohRdt8bCBdIqoSJ691OX!=t=BN1IVC|6TFD#Ug_oD0_g^Q{w=t@a zn`*6Xu#lF-dt52$kLTgKSc3W&Elv!raw{h<9!bpB9ZRsdU2iYc=AG8KS)%xic<@2B zf$4$(jog?2t>Lb=@+qPxc{wZ50ILwfhE~EE3|wx4AD35;?}m|K-JJYw-3ygaeTgq{BzhD)iH%pNx%T7^C_n)U77Eaoo z6C6dlKUdtp;*}pkX#o*ZYhx2HGn+~h;5zv-o^nOq*_sWbG4#h3bAi~2mm??}+ zq*d7n@)N*-em#L?PzK`i&)lv;i+@aOYC4?dtK?L>#^Z-g*{Z(6K6YH#6V-AUT}Fc> zu-%VhZO8Rso`z6HlLDN!9~hoOL{1|H0PR+QqhX)R#US1s@vMW+ilej9#QjMp&Ips~ zAOn!SM0ULhM6NzVH&O@Yxz+I9Gf{AESnk{6Ttg=wPhmxlf*USr3H(nEH9 z+M0!MPE`!TULS{=CV^HGv;H?jF(01>bQ83xu%R%{{k!?aL^{x5y=vttIM_^5E~;=E zH4zjBOcPM-R=3nrOsCzYVJ;{N9G2w!2jJsNe#7V5*Hb9VWvMN1Xk{$1IrAOi>%S|= zsN?zAnP!rlm*i5<#dW%`y-Gum0xf-|028b{0_l?S>kLI*V{w@j%Rqw3eux1ZW*R|y z+NySNdhUb!W&A0K$7j=0Gq(cIMme1!>Rwh+73~07#X|k42?Q3H{y2M9rgu_^(&5sk zX7m*HWX`U-kk{%&hX)@MpE%or%C?TPg$fI1P9JA`KJ%0t3u_D=LBOM2$kIGf`$^Sd zBQX~C3Q6Pp9I|^hzVg#KF=_aI;G>)dI!Ab1?>*TL!G7aYpQk!{k32^KpM!jZgc|Y U80rkEBociEi5>s|AOHXW0GldG6951J diff --git a/data/rus/games/c4 b/data/rus/games/c4 deleted file mode 100644 index d626e37371962c9a7eaeebdabfd4b1ef6415b3a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3578 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 ACIA2c