Changeset 380 for trunk/kBuild/footer.kmk
- Timestamp:
- Dec 18, 2005, 2:52:47 PM (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kBuild/footer.kmk
r353 r380 47 47 _DEPFILES := 48 48 49 # included dependency files. 50 _DEPFILES_INCLUDED := 51 52 49 53 # All kind of output files except for _OBJS and _DEPFILES. 50 54 # Compiling or linking definition outputting other things that $@ and any … … 63 67 _SYSMODS := 64 68 _INSTALLS := 69 _INSTALLS_DIRS := 65 70 _OTHERS := 66 _DIRS := $(PATH_TARGET)/ 71 _DIRS := $(PATH_TARGET)/ $(PATH_TARGET) 67 72 _IMPORT_LIBS := 68 73 … … 366 371 $(foreach sdk, $(_SDKS), $(eval $(value def_sdks_include_one))) 367 372 373 368 374 # 369 375 # Object processing. 370 376 # 371 377 372 ## Generates the '::' rule for building all objects of a source file. 378 ## wrapper the compile command dependency check. 379 ifndef NO_COMPILE_CMDS_DEPS 380 _DEP_COMPILE_CMDS = $(if $(subst $(strip $($(target)_$(source)_CMDS_PREV_)),,$(strip $($(target)_$(source)_CMDS_))),FORCE,) 381 else 382 _DEP_COMPILE_CMDS = 383 endif 384 385 ## Generates the rules for building a specific object, and the '::' aliases 386 # for building a source file. 373 387 # @param $(obj) The object file. 374 define def_target_obj_rule 388 define def_target_source_rule 389 $(obj) $($(target)_$(source)_OUTPUT_): \ 390 $($(target)_$(source)_DEPEND_) \ 391 $(_DEP_COMPILE_CMDS) \ 392 | \ 393 $($(target)_$(source)_DEPORD_) 394 $(call MSG_L1,Creating $$@) 395 $(RM) -f $(dep) $(out) $($(target)_$(source)_OUTPUT_) 396 $(custom_pre) 397 398 $($(target)_$(source)_CMDS_) 399 400 $(custom_post) 401 ifndef NO_COMPILE_CMDS_DEPS 402 @$(APPEND) "$(dep)" 403 @$(APPEND) "$(dep)" 'define $(target)_$(source)_CMDS_PREV_' 404 @$(APPEND) "$(dep)" '$(subst $(NL),'$(NL)$(TAB)@$(APPEND) "$(dep)" ',$($(target)_$(source)_CMDS_))' 405 @$(APPEND) "$(dep)" 'endef' 406 endif 407 375 408 $(basename $(notdir $(obj))).o:: 376 409 + $$(MAKE) -B -f $$(MAKEFILE) $(obj) … … 378 411 + $$(MAKE) -B -f $$(MAKEFILE) $(obj) 379 412 endef 413 414 415 ## wrapper the link command dependency check. 416 ifndef NO_COMPILE_CMDS_DEPS 417 _DEP_LINK_CMDS = $(if $(subst $(strip $($(target)_CMDS_PREV_)),,$(strip $($(target)_CMDS_))),FORCE,) 418 else 419 _DEP_LINK_CMDS = 420 endif 421 422 ## Generate the link rule for a target. 423 # @param $(target) The normalized target name. 424 # @param $(dirdep) Directories we depend upon begin created before linking. 425 # @param $(dep) The name of the dependency file. 426 # @param $(out) 427 # @param $($(target)_OUTPUT_) Output files from the link. 428 # @param $($(target)_DEPEND_) Dependencies. 429 # @param $($(target)_DEPORD_) Dependencies which should only affect build order. 430 # @param $($(target)_CMDS_) The link commands. 431 # @param $($(target)_CMDS_PREV_) The link commands from the previous run. 432 define def_link_rule 433 $(out) $($(target)_OUTPUT_): \ 434 $($(target)_DEPEND_) \ 435 $(_DEP_LINK_CMDS) \ 436 | \ 437 $($(target)_DEPORD_) 438 $(call MSG_L1,Creating $$@) 439 $(RM) -f $(dep) $($(target)_OUTPUT_) 440 $(custom_pre) 441 442 $($(target)_CMDS_) 443 444 $(custom_post) 445 ifndef NO_LINK_CMDS_DEP 446 @$(APPEND) "$(dep)" 'define $(target)_CMDS_PREV_' 447 @$(APPEND) "$(dep)" '$(subst $(NL),'$(NL)$(TAB)@$(APPEND) "$(dep)" ',$($(target)_CMDS_))' 448 @$(APPEND) "$(dep)" 'endef' 449 endif 450 451 $(basename $(notdir $(out))):: 452 + $$(MAKE) -B -f $$(MAKEFILE) $(out) 453 endef 454 455 456 ## Generate the link & lib install rule 457 # @param $(target) Normalized target name. 458 # @param $(out) The build target. 459 # @param $(INSTARGET_$(target)) The installation targets. 460 # @param $(mode) The file mode (optional) 461 define def_link_install_rule 462 $(INSTARGET_$(target)) : $(out) | $(call DIRDEP,$(dir $(INSTARGET_$(target)))) 463 $(INSTALL) $$(if $(mode),-m $(mode)) $(out) $$@ 464 endef 465 380 466 381 467 … … 628 714 $(SUFF_OBJ)) 629 715 obj := $(outbase)$(objsuff) 630 dep := $(outbase)$(SUFF_DEP)631 716 deps := \ 632 717 $($(target)_$(source)_DEPS)\ … … 645 730 $($(target)_DEPS.$(bld_trg_cpu)) 646 731 732 # dependencies 733 dep := $(obj)$(SUFF_DEP) 734 ifndef NO_COMPILE_DEPS 735 _DEPFILES_INCLUDED += $(dep) 736 $(if $(wildcard $(dep)),$(eval include $(dep))) 737 endif 647 738 648 739 #$ (warning dbg: target=$(target) source=$(source) tool=$(tool) obj=$(obj) dep=$(dep) flags=$(flags) defs=$(defs) incs=$(incs) dirdep=$(dirdep) outbase=$(outbase) objsuff=$(objsuff) deps=$(deps)) 649 ifndef TOOL_$(tool)_COMPILE_$(type) 740 ifndef TOOL_$(tool)_COMPILE_$(type)_CMDS 650 741 $(warning kBuild: tools: \ 651 742 1 $($(target)_$(source)_$(type)TOOL.$(bld_trg)) \ … … 665 756 15 $(TOOL.$(bld_trg)) \ 666 757 16 $(TOOL) ) 667 $(error kBuild: TOOL_$(tool)_COMPILE_$(type) is not defined. source=$(source) target=$(target) ) 668 endif 669 670 # generate the rules 671 $(eval $(TOOL_$(tool)_COMPILE_$(type))) 672 673 $(eval $(def_target_obj_rule)) 674 758 $(error kBuild: TOOL_$(tool)_COMPILE_$(type)_CMDS is not defined. source=$(source) target=$(target) ) 759 endif 760 761 # call the tool 762 $(target)_$(source)_CMDS_ := $(TOOL_$(tool)_COMPILE_$(type)_CMDS) 763 $(target)_$(source)_OUTPUT_ := $(TOOL_$(tool)_COMPILE_$(type)_OUTPUT) 764 $(target)_$(source)_DEPEND_ := $(TOOL_$(tool)_COMPILE_$(type)_DEPEND) $(deps) $(source) 765 $(target)_$(source)_DEPORD_ := $(TOOL_$(tool)_COMPILE_$(type)_DEPORD) $(dirdep) 766 767 # generate the compile rule. 768 $(eval $(def_target_source_rule)) 769 770 _OUT_FILES += $($(target)_$(source)_OUTPUT_) 675 771 $(target)_OBJS_ += $(obj) 676 _DEPFILES += $(dep)677 772 678 773 endef … … 697 792 ,$(eval $(value def_target_source_c_cpp_asm)) ) 698 793 699 endef700 701 ## Generate the link & lib install rule702 # @param $(target) Normalized target name.703 # @param $(out) The build target.704 # @param $(INSTARGET_$(target)) The installation targets.705 define def_link_install_rule706 $(INSTARGET_$(target)) : $(out) | $(call DIRDEP,$(dir $(INSTARGET_$(target))))707 $(RM) -f $$@708 $(CP) $(out) $$@709 794 endef 710 795 … … 804 889 deps := $($(target)_DEPS) 805 890 806 lib := $(out) 807 libsuff := $(suff) 808 $(eval $(TOOL_$(tool)_LINK_LIBRARY)) 891 # dependency file 892 dep := $(out)$(SUFF_DEP) 893 ifndef NO_LINK_CMDS_DEP 894 _DEPFILES_INCLUDED += $(dep) 895 $(if $(wildcard $(dep)),$(eval include $(dep))) 896 endif 897 898 # check that the tool is defined. 899 ifndef TOOL_$(tool)_LINK_LIBRARY_CMDS 900 $(warning kBuild: tools: \ 901 1 $($(target)_$(source)TOOL.$(bld_trg)) \ 902 2 $($(target)_$(source)TOOL) \ 903 3 $($(target)_TOOL.$(bld_trg)) \ 904 4 $($(target)_TOOL) \ 905 5 $($(source)TOOL) \ 906 6 $($(source)TOOL.$(bld_trg)) \ 907 7 $(TOOL.$(bld_trg)) \ 908 8 $(TOOL) ) 909 $(error kBuild: TOOL_$(tool)_LINK_LIBRARY_CMDS isn't defined! target=$(target) ) 910 endif 911 912 # call the tool 913 $(target)_CMDS_ := $(TOOL_$(tool)_LINK_LIBRARY_CMDS) 914 $(target)_OUTPUT_ := $(TOOL_$(tool)_LINK_LIBRARY_OUTPUT) 915 $(target)_DEPEND_ := $(TOOL_$(tool)_LINK_LIBRARY_DEPEND) $(deps) $(objs) 916 $(target)_DEPORD_ := $(TOOL_$(tool)_LINK_LIBRARY_DEPORD) $(dirdep) 917 918 # generate the link rule. 919 $(eval $(def_link_rule)) 809 920 810 921 # installing and globals 811 922 definst := $(PATH_LIB) 812 typevar := _LIBS923 typevar := _LIBS 813 924 $(eval $(value def_target_install_pluss)) 814 925 endef 815 926 816 927 # Process libraries 928 mode := 0644 817 929 $(foreach target, $(LIBRARIES) $(LIBRARIES.$(BUILD_TARGET)), $(eval $(value def_lib))) 818 930 … … 829 941 # @param $(definst) The default _INST value. 830 942 # @param $(typevar) The name of the variable with all the root targets of its type. 831 define def_link_ prolog943 define def_link_common 832 944 # basics 833 945 bld_type := $(firstword $($(target)_BLD_TYPE) $(BUILD_TYPE)) … … 989 1101 endif # NOINST 990 1102 991 endef 992 993 994 ## 995 # Typical link epilog. 996 # 997 # @param $(target) Normalized target name. 998 # @param $(out) The output file. 999 define def_link_epilog 1000 1001 _INSTALLS += $(INSTARGET_$(target)) 1002 _OBJS += $($(target)_OBJS_) 1003 _OUT_FILES += $(out) 1004 _CLEAN_FILES += $($(target)_CLEAN) 1005 1006 endef 1007 1008 1009 # 1010 # BLDPROGS 1011 # 1012 1013 ## Build program (one). 1014 # @param $(target) Normalized target (program) name. 1015 define def_bldprog 1016 1017 # set NOINST if not forced installation. 1018 ifndef $(target)_INST 1019 $(target)_NOINST := 1 1020 endif 1021 1022 # prolog 1023 $(eval $(value def_link_prolog)) 1024 1025 # body 1026 ifndef TOOL_$(tool)_LINK_PROGRAM 1027 $(warning kBuild: tools: \ 1028 1 $($(target)_$(source)TOOL.$(bld_trg)) \ 1029 2 $($(target)_$(source)TOOL) \ 1030 3 $($(target)_TOOL.$(bld_trg)) \ 1031 4 $($(target)_TOOL) \ 1032 5 $(TOOL.$(bld_trg)) \ 1033 6 $(TOOL) ) 1034 $(error kBuild: TOOL_$(tool)_LINK_PROGRAM is not defined. target=$(target) ) 1035 endif 1036 $(eval $(TOOL_$(tool)_LINK_PROGRAM)) 1037 1038 # epilog 1039 $(eval $(value def_link_epilog)) 1040 1041 endef 1042 1043 # Process build programs. 1044 EXT := EXE 1045 EXTPRE := HOST 1046 definst := $(PATH_BIN) 1047 typevar := _BLDPROGS 1048 bld_trg_base_var := PLATFORM 1049 $(foreach target, $(BLDPROGS) $(BLDPROGS.$(BUILD_PLATFORM)), $(eval $(value def_bldprog))) 1050 1051 1052 1053 # 1054 # DLLS 1055 # 1056 1057 ## DLL (one). 1058 # @param $(target) Normalized target (program) name. 1059 define def_dll 1060 1061 # prolog 1062 $(eval $(value def_link_prolog)) 1063 1064 # body 1065 ifndef TOOL_$(tool)_LINK_DLL 1103 # dependency file 1104 dep := $(outbase)$(SUFF_DEP) 1105 ifndef NO_LINK_CMDS_DEP 1106 _DEPFILES_INCLUDED += $(dep) 1107 $(if $(wildcard $(dep)),$(eval include $(dep))) 1108 endif 1109 1110 # check that the tool is defined. 1111 ifndef TOOL_$(tool)_$(tool_do)_CMDS 1066 1112 $(warning kBuild: tools: \ 1067 1113 1 $($(target)_$(source)TOOL.$(bld_trg)) \ … … 1073 1119 7 $(TOOL.$(bld_trg)) \ 1074 1120 8 $(TOOL) ) 1075 $(error kBuild: TOOL_$(tool)_LINK_DLL is not defined. target=$(target) ) 1076 endif 1077 $(eval $(TOOL_$(tool)_LINK_DLL)) 1078 1079 # epilog 1080 $(eval $(value def_link_epilog)) 1081 1082 endef 1121 $(error kBuild: TOOL_$(tool)_$(tool_do)_CMDS isn't defined! target=$(target) ) 1122 endif 1123 1124 # call the tool 1125 $(target)_CMDS_ := $(TOOL_$(tool)_$(tool_do)_CMDS) 1126 $(target)_OUTPUT_ := $(TOOL_$(tool)_$(tool_do)_OUTPUT) 1127 $(target)_DEPEND_ := $(TOOL_$(tool)_$(tool_do)_DEPEND) $(deps) $(objs) 1128 $(target)_DEPORD_ := $(TOOL_$(tool)_$(tool_do)_DEPORD) $(dirdep) 1129 1130 # generate the link rule. 1131 $(eval $(def_link_rule)) 1132 1133 1134 # Update globals. 1135 _OBJS += $($(target)_OBJS_) 1136 _OUT_FILES += $($(target)_OUTPUT_) $(out) 1137 _CLEAN_FILES += $($(target)_CLEAN) 1138 _INSTALLS += $(INSTARGET_$(target)) 1139 1140 endef 1141 1142 1143 # 1144 # BLDPROGS 1145 # 1146 1147 ## Build program (one). 1148 # @param $(target) Normalized target (program) name. 1149 define def_bldprog 1150 1151 # set NOINST if not forced installation. 1152 ifndef $(target)_INST 1153 $(target)_NOINST := 1 1154 endif 1155 1156 # do the usual stuff. 1157 $(eval $(value def_link_common)) 1158 1159 endef 1160 1161 # Process build programs. 1162 EXT := EXE 1163 EXTPRE := HOST 1164 tool_do := LINK_PROGRAM 1165 definst := $(PATH_BIN) 1166 typevar := _BLDPROGS 1167 mode := 0755 1168 bld_trg_base_var := PLATFORM 1169 $(foreach target, $(BLDPROGS) $(BLDPROGS.$(BUILD_PLATFORM)), $(eval $(value def_bldprog))) 1170 1171 1172 1173 # 1174 # DLLS 1175 # 1083 1176 1084 1177 # Process dlls 1085 1178 EXT := DLL 1086 1179 EXTPRE := 1180 tool_do := LINK_DLL 1087 1181 definst := $(PATH_DLL) 1088 1182 typevar := _DLLS 1183 mode := 0755 1089 1184 bld_trg_base_var := TARGET 1090 $(foreach target, $(DLLS) $(DLLS.$(BUILD_TARGET)), $(eval $(value def_dll))) 1091 1185 $(foreach target, $(DLLS) $(DLLS.$(BUILD_TARGET)), $(eval $(value def_link_common))) 1092 1186 1093 1187 … … 1100 1194 $(foreach target, $(IMPORT_LIBS) $(IMPORT_LIBS.$(BUILD_TARGET)), $(eval $(value def_lib))) 1101 1195 else 1102 $(foreach target, $(IMPORT_LIBS) $(IMPORT_LIBS.$(BUILD_TARGET)), $(eval $(value def_ dll)))1196 $(foreach target, $(IMPORT_LIBS) $(IMPORT_LIBS.$(BUILD_TARGET)), $(eval $(value def_link_common))) 1103 1197 endif 1104 1198 $(foreach target, $(IMPORT_LIBS) $(IMPORT_LIBS.$(BUILD_TARGET)), \ … … 1109 1203 # PROGRAMS 1110 1204 # 1111 1112 ## Program (one).1113 # @param $(target) Normalized target (program) name.1114 define def_program1115 1116 # prolog1117 $(eval $(value def_link_prolog))1118 1119 # body1120 ifndef TOOL_$(tool)_LINK_PROGRAM1121 $(warning kBuild: tools: \1122 1 $($(target)_$(source)TOOL.$(bld_trg)) \1123 2 $($(target)_$(source)TOOL) \1124 3 $($(target)_TOOL.$(bld_trg)) \1125 4 $($(target)_TOOL) \1126 5 $($(source)TOOL) \1127 6 $($(source)TOOL.$(bld_trg)) \1128 7 $(TOOL.$(bld_trg)) \1129 8 $(TOOL) )1130 $(error kBuild: TOOL_$(tool)_LINK_PROGRAM is not defined. target=$(target) )1131 endif1132 $(eval $(TOOL_$(tool)_LINK_PROGRAM))1133 1134 # epilog1135 $(eval $(value def_link_epilog))1136 1137 endef1138 1205 1139 1206 # Process programs 1140 1207 EXT := EXE 1141 1208 EXTPRE := 1209 tool_do := LINK_PROGRAM 1142 1210 definst := $(PATH_BIN) 1143 1211 typevar := _PROGRAMS 1212 mode := 0755 1144 1213 bld_trg_base_var := TARGET 1145 $(foreach target, $(PROGRAMS) $(PROGRAMS.$(BUILD_TARGET)), $(eval $(value def_ program)))1214 $(foreach target, $(PROGRAMS) $(PROGRAMS.$(BUILD_TARGET)), $(eval $(value def_link_common))) 1146 1215 1147 1216 … … 1150 1219 # SYSMODS 1151 1220 # 1152 1153 ## System module (one).1154 # @param $(target) Normalized target (program) name.1155 define def_sysmod1156 1157 # prolog1158 $(eval $(value def_link_prolog))1159 1160 # body1161 ifndef TOOL_$(tool)_LINK_SYSMOD1162 $(warning kBuild: tools: \1163 1 $($(target)_$(source)TOOL.$(bld_trg)) \1164 2 $($(target)_$(source)TOOL) \1165 3 $($(target)_TOOL.$(bld_trg)) \1166 4 $($(target)_TOOL) \1167 5 $($(source)TOOL) \1168 6 $($(source)TOOL.$(bld_trg)) \1169 7 $(TOOL.$(bld_trg)) \1170 8 $(TOOL) )1171 $(error kBuild: TOOL_$(tool)_LINK_SYSMOD is not defined. target=$(target) )1172 endif1173 $(eval $(TOOL_$(tool)_LINK_SYSMOD))1174 1175 # epilog1176 $(eval $(value def_link_epilog))1177 1178 endef1179 1221 1180 1222 # Process sysmods 1181 1223 EXT := SYS 1182 1224 EXTPRE := 1225 tool_do := LINK_SYSMOD 1183 1226 definst := $(PATH_SYS) 1184 1227 typevar := _SYSMODS 1228 mode := 0644 1185 1229 bld_trg_base_var := TARGET 1186 $(foreach target, $(SYSMODS) $(SYSMODS.$(BUILD_TARGET)), $(eval $(value def_ sysmod)))1230 $(foreach target, $(SYSMODS) $(SYSMODS.$(BUILD_TARGET)), $(eval $(value def_link_common))) 1187 1231 1188 1232 … … 1201 1245 # the install rule 1202 1246 $(insdst) : $(srcsrc) | $(call DIRDEP,$(dir $(insdst))) 1203 $$( RM) -f $$@1247 $$(if $$(filter $(INSTALL),$(inscmd)),,$$(RM) -f $$@) 1204 1248 $(inscmd) 1205 1249 endef … … 1226 1270 # _INST 1227 1271 ifdef $(srcsrc)_INST 1228 inst = $(srcsrc)_INST1272 inst := $(patsubst %/,%,$($(srcsrc)_INST))/$(dir $(srcdst)) 1229 1273 else 1230 1274 ifdef $(target)_INST 1231 inst = $(target)_INST1232 else 1233 inst =1275 inst := $(patsubst %/,%,$($(target)_INST))/$(dir $(srcdst)) 1276 else 1277 inst := $(dir $(srcdst)) 1234 1278 endif 1235 1279 endif 1236 1280 1237 1281 # calc target 1238 insdst := $(call $(instfun),$(srcdst),$(target),$( $(inst)),$(PATH_INS))1282 insdst := $(call $(instfun),$(srcdst),$(target),$(inst),$(PATH_INS)) 1239 1283 #$(warning instfun=$(instfun) srcdst=$(srcdst) target=$(target) srcdst=$(srcsrc) inst=$(inst) => insdst=$(insdst)) 1240 1284 … … 1246 1290 inscmd := $(call $(target)_INSTALLER,$(srcsrc),$(insdst),$(target)) 1247 1291 else 1248 inscmd := $$( CP) $(srcsrc) $(insdst)1292 inscmd := $$(INSTALL) $(srcsrc) $(insdst) 1249 1293 endif 1250 1294 endif … … 1262 1306 $(insdst) : | $(call DIRDEP,$(dir $(insdst))) 1263 1307 $$(RM) -f $$@ 1264 $$(LN_SYMLINK) $(s rcsrc) $(insdst)1308 $$(LN_SYMLINK) $(symdst) $(insdst) 1265 1309 endef 1266 1310 … … 1269 1313 1270 1314 # deal with '=>' in the source file name. 1271 s rcdst := $(subst =>, ,$(src))1272 s rcsrc := $(firstword $(srcdst))1273 s rcdst := $(word $(words $(srcdst)),$(srcdst))1315 symdst := $(subst =>, ,$(src)) 1316 symlnk := $(firstword $(symdst)) 1317 symdst := $(word $(words $(symdst)),$(symdst)) 1274 1318 1275 1319 # _INSTFUN 1276 ifdef $(s rcsrc)_INSTFUN1277 instfun := $(s rcsrc)_INSTFUN1320 ifdef $(symlnk)_INSTFUN 1321 instfun := $(symlnk)_INSTFUN 1278 1322 else 1279 1323 ifdef $(target)_INSTFUN … … 1285 1329 1286 1330 # _INST 1287 ifdef $(s rcsrc)_INST1288 inst = $(srcsrc)_INST1331 ifdef $(symlnk)_INST 1332 inst := $(patsubst %/,%,$($(symlnk)_INST))/$(dir $(symlnk)) 1289 1333 else 1290 1334 ifdef $(target)_INST 1291 inst = $(target)_INST1292 else 1293 inst =1335 inst := $(patsubst %/,%,$($(target)_INST))/$(dir $(symlnk)) 1336 else 1337 inst := $(dir $(symlnk)) 1294 1338 endif 1295 1339 endif 1296 1340 1297 1341 # calc target 1298 insdst := $(call $(instfun),$(s rcdst),$(target),$(inst),$(PATH_INS))1299 #$(warning s rcsrc=$(srcsrc) srcdst=$(srcdst) insdst=$(insdst))1342 insdst := $(call $(instfun),$(symlnk),$(target),$(inst),$(PATH_INS)) 1343 #$(warning symlnk=$(symlnk) symdst=$(symdst) insdst=$(insdst) instfun=$(instfun) inst='$(inst)') 1300 1344 1301 1345 # generate the rule (need double evaluation here) … … 1304 1348 INSTARGET_$(target) += $(insdst) 1305 1349 endef 1350 1351 1352 ## generate the install rule 1353 define def_install_directory_rule 1354 # the install rule 1355 $(insdst): 1356 $(INSTALL) -d \ 1357 $(if $(uid),-o $(uid))\ 1358 $(if $(gid),-g $(gid))\ 1359 $(if $(mode),-m $(mode))\ 1360 $(insdst) 1361 1362 .NOTPARALLEL: $(insdst) 1363 endef 1364 1365 1366 ## create one directory 1367 define def_install_directory 1368 1369 # _INST 1370 ifdef $(directory)_INST 1371 inst := $(PATH_INS)/$(patsubst %/,%,$($(directory)_INST)) 1372 else 1373 ifdef $(target)_INST 1374 inst := $(PATH_INS)/$(patsubst %/,%,$($(target)_INST)) 1375 else 1376 inst := $(PATH_INS) 1377 endif 1378 endif 1379 1380 mode := $(firstword \ 1381 $($(target)_$(directory)_MODE.$(bld_trg)) \ 1382 $($(target)_$(directory)_MODE) \ 1383 $($(directory)_MODE.$(bld_trg)) \ 1384 $($(directory)_MODE) \ 1385 $($(target)_MODE.$(bld_trg)) \ 1386 $($(target)_MODE)) 1387 uid := $(firstword \ 1388 $($(target)_$(directory)_UID.$(bld_trg)) \ 1389 $($(target)_$(directory)_UID) \ 1390 $($(directory)_UID.$(bld_trg)) \ 1391 $($(directory)_UID) \ 1392 $($(target)_UID.$(bld_trg)) \ 1393 $($(target)_UID)) 1394 gid := $(firstword \ 1395 $($(target)_$(directory)_GID.$(bld_trg)) \ 1396 $($(target)_$(directory)_GID) \ 1397 $($(directory)_GID.$(bld_trg)) \ 1398 $($(directory)_GID) \ 1399 $($(target)_GID.$(bld_trg)) \ 1400 $($(target)_GID)) 1401 1402 insdst := $(inst)/$(directory)/ 1403 #$(warning directory=$(directory) inst=$(inst) insdst=$(insdst) mode=$(mode) gid=$(gid) uid=$(uid)) 1404 1405 # generate the rule (need double evaluation here) 1406 $(eval $(def_install_directory_rule)) 1407 1408 INSTARGET_DIRS_$(target) += $(insdst) 1409 endef 1410 1306 1411 1307 1412 ## process one install target. … … 1313 1418 1314 1419 INSTARGET_$(target) := 1420 INSTARGET_DIRS_$(target) := 1421 1422 $(foreach directory,$($(target)_DIRS) $($(target)_DIRS.$(bld_trg)) $($(target)_DIRS.$(bld_trg_arch)) $($(target)_DIRS.$(bld_trg_cpu)) $($(target)_DIRS.$(bld_type)), \ 1423 $(eval $(value def_install_directory))) 1424 1315 1425 $(foreach src,$($(target)_SOURCES) $($(target)_SOURCES.$(bld_trg)) $($(target)_SOURCES.$(bld_trg_arch)) $($(target)_SOURCES.$(bld_trg_cpu)) $($(target)_SOURCES.$(bld_type)), \ 1316 1426 $(eval $(value def_install_src))) … … 1319 1429 $(eval $(value def_install_symlink))) 1320 1430 1321 _INSTALLS += $(INSTARGET_$(target)) 1431 _INSTALLS += $(INSTARGET_$(target)) $($(target)_GOALS) 1432 _INSTALLS_DIRS += $(INSTARGET_DIRS_$(target)) 1322 1433 endef 1323 1434 … … 1342 1453 # 1343 1454 _DIR_ALL := $(sort $(addsuffix /,$(patsubst %/,%,$(_DIRS))) $(dir $(_OUT_FILES) $(_OBJS) $(_INSTALLS))) 1455 $(foreach directory,$(_INSTALLS_DIRS), $(eval _DIR_ALL := $(filter-out $(directory),$(_DIR_ALL)))) 1456 1344 1457 1345 1458 define def_mkdir_rule … … 1363 1476 # 1364 1477 do-clean: 1365 $(RM) -f $(_OUT_FILES) $(_OBJS) $(_DEPFILES) $(_ CLEAN_FILES) $(OTHER_CLEAN)1478 $(RM) -f $(_OUT_FILES) $(_OBJS) $(_DEPFILES) $(_DEPFILES_INCLUDED) $(_CLEAN_FILES) $(OTHER_CLEAN) 1366 1479 1367 1480 … … 1435 1548 $(foreach makefile,$(MAKEFILES_AFTER_$(PASS)) $(MAKEFILES_AFTER_$(PASS).$(BUILD_TARGET)) ,$(eval $(def_pass_makefile))) 1436 1549 1437 ifdef KBUILD_SAFE_PARALLEL L1550 ifdef KBUILD_SAFE_PARALLEL 1438 1551 .NOTPARALLEL: pass_$(pass) pass_$(pass)_before pass_$(pass)_after pass_$(pass)_this 1439 1552 .PHONY: pass_$(pass) pass_$(pass)_before pass_$(pass)_after pass_$(pass)_this pass_$(pass)_doit … … 1466 1579 # @param $(prev_pass) The previous pass name. 1467 1580 define def_pass_order 1468 ifdef KBUILD_SAFE_PARALLEL L1581 ifdef KBUILD_SAFE_PARALLEL 1469 1582 .NOTPARALLEL: pass_$(pass)_order 1470 1583 .PHONY: pass_$(pass)_order … … 1501 1614 + $(MAKE) -f $(firstword $(MAKEFILE_LIST)) all_recursive 1502 1615 1616 # @todo make this a non-default pass! 1503 1617 uninstall: 1504 1618 $(RM) -f $(_INSTALLS) 1619 1620 install: pass_installs 1505 1621 1506 1622 # misc shortcuts. 1507 targets: bldprogs libraries dlls programs sysmods others install 1623 targets: bldprogs libraries dlls programs sysmods others installs 1508 1624 objects: $(_OBJS) 1509 1625 bldprogs: $(_BLDPROGS) … … 1513 1629 sysmods: $(_SYSMODS) 1514 1630 others: $(_OTHERS) 1515 install :$(_INSTALLS)1631 installs: $(_INSTALLS_DIRS) $(_INSTALLS) 1516 1632 1517 1633 … … 1532 1648 @$(ECHO) " TARGET_$(target)=$(TARGET_$(target))" $(NLTAB)\ 1533 1649 @$(ECHO) " INSTARGET_$(target)=$(INSTARGET_$(target))" $(NLTAB)\ 1534 $(foreach prop,$(PROPS_SINGLE) $(PROPS_ACCUMULATE) OBJS_ , \1650 $(foreach prop,$(PROPS_SINGLE) $(PROPS_ACCUMULATE) OBJS_ CLEAN, \ 1535 1651 $(eval _tmp:=$(firstword $($(target)_BLD_TRG) $(BUILD_TARGET))) \ 1536 1652 $(if $($(target)_$(prop).$(_tmp)),\
Note:
See TracChangeset
for help on using the changeset viewer.