1#----------------------------------------------------------------------------
2# Project:  Horizon
3# File:     commondefs.funcs.om
4#
5# Copyright (C)2009-2011 Nintendo Co., Ltd.  All rights reserved.
6#
7# These coded instructions, statements, and computer programs contain
8# proprietary information of Nintendo of America Inc. and/or Nintendo
9# Company Ltd., and are protected by Federal copyright law.  They may
10# not be disclosed to third parties or copied or duplicated in any form,
11# in whole or in part, without the prior written consent of Nintendo.
12#
13# $Rev: 36586 $
14#----------------------------------------------------------------------------
15
16# ���̃t�@�C���͊֐���`�݂̂ł�
17# �֐���`�ȊO��lj����Ȃ��ł�������
18
19#----------------------------------------------------------------------------
20# �֐���`
21#----------------------------------------------------------------------------
22
23#------------------------------------
24#
25#------------------------------------
26
27# �v���W�F�N�g���[�g����̑��΃p�X�����߂�B
28# ���[�g������ sources �ȉ��̃p�X�̏ꍇ�� sources �����
29GetSubPath(path) =
30    private.apath = $(absname $(path))
31    private.subpath = $(removeprefix  $(AROOT)$(DIRSEP), $(apath))
32    private.subpath = $(removeprefix sources$(DIRSEP), $(subpath))
33
34    if $(and                                            \
35         $(or $(equal $(apath), $(subpath)),            \
36              $(and $(defined FORCE_REFERENCE_ROOT),    \
37                    $(FORCE_REFERENCE_ROOT))),          \
38         $(defined SOURCES_REFERENCE_ROOT))
39        private.subpath_refer = $(removeprefix $(absname $(SOURCES_REFERENCE_ROOT)), $(apath))
40        return $(subpath_refer)
41    else
42        if $(equal $(subpath), $(apath))
43            eprintln($"�c���[�O�̃t�@�C�����r���h���悤�Ƃ��Ă��܂��B: $(apath)")
44            eprintln($"SOURCES_REFERENCE_ROOT �ɂĎ蓮�Ŋ�f�B���N�g�����w�肵�Ă��������B")
45            return $(basename $(apath))
46    return $(subpath)
47
48# �f�B���N�g���̐e�q�֌W���ׂ�
49is_under(parent_path, child_path) =
50    private.parent_path = $(absname $(parent_path))
51    private.child_path  = $(absname $(child_path))
52    if $(equal $(removeprefix $(parent_path), $(child_path)), $(child_path))
53        return false
54    else
55        return true
56
57completeLibrarySuffix(config, libfiles) =
58    private.result =
59        foreach(libfile, $(libfiles))
60            if $(findstring $(libfile), $'\.(small)|(fast)(\.|$)')
61                value $(libfile)
62            else
63                value $(libfile).$(config.effort)
64    return $(result)
65
66
67private.Bin2ObjDefaultSymbolFunction(filename) =
68    private.prefix = $(uppercase $(removesuffix $(basename $(filename))))
69    return $(prefix)_BEGIN $(prefix)_END
70
71
72
73private.CreateCmdFile(path, files) =
74    private.f = $(fopen $(path),w)
75    foreach(line, $(absname $(files)))
76        fprint($(f),$'"')
77        fprint($(f),$(line))
78        fprintln($(f),$'"')
79    close($(f))
80
81
82
83#------------------------------------
84# ���[����`
85#------------------------------------
86
87#-------------------------------------------------------
88# AddRuleToMakeObjectFromC
89#
90# �T�v
91#   .c ���� .o ���쐬���郋�[����lj�����
92#   .o �̃p�X��Ԃ�
93#
94# �Q�Ƃ��Ă���O���[�o���ϐ�
95#   �Ȃ�
96#-------------------------------------------------------
97AddRuleToMakeObjectFromC(path, src, includes, flags, flags_build, flags_scan) =
98    private.scanner_name = $(SCANNER_PREFIX)-c-$(fullname $(rootname $(path)))
99
100    .SCANNER: $(scanner_name): $(src) .PHONY/$(ROOT)/build-setup :value: $(digest-in-path-optional_ $(includes), $&)
101        $(CC) $(flags) $(flags_scan)    $(CCOUT)$(absname $(path)) $(absname $<)
102
103    $(path): $(src) :scanner: $(scanner_name)
104        $(CC) $(flags) $(flags_build) -c $(CCOUT)$(absname $@) $(absname $<)
105
106    $(path): $(nth 0, $(CC)) $(makeDirectory $(dirname $(path)))
107    return $(path)
108
109
110#-------------------------------------------------------
111# AddRuleToMakeObjectFromCpp
112#
113# ����
114#   .cpp ���� .o ���쐬���郋�[����lj�����
115#   .o �̃p�X��Ԃ�
116#
117# �Q�Ƃ��Ă���O���[�o���ϐ�
118#   �Ȃ�
119#-------------------------------------------------------
120AddRuleToMakeObjectFromCpp(path, src, includes, flags, flags_build, flags_scan) =
121    private.scanner_name = $(SCANNER_PREFIX)-cxx-$(fullname $(rootname $(path)))
122
123    .SCANNER: $(scanner_name): $(src) .PHONY/$(ROOT)/build-setup :value: $(digest-in-path-optional_ $(includes), $&)
124        $(CXX) $(flags) $(flags_scan)     $(CCOUT)$(absname $(path)) $(absname $<)
125
126    $(path): $(src) :scanner: $(scanner_name)
127        $(CXX) $(flags) $(flags_build) -c $(CCOUT)$(absname $@) $(absname $<)
128
129    $(path): $(nth 0, $(CXX)) $(makeDirectory $(dirname $(path)))
130    return $(path)
131
132
133#-------------------------------------------------------
134# AddRuleToMakeObjectFromAsm
135#
136# ����
137#   .s ���� .o ���쐬���郋�[����lj�����
138#   .o �̃p�X��Ԃ�
139#
140# �Q�Ƃ��Ă���O���[�o���ϐ�
141#   �Ȃ�
142#-------------------------------------------------------
143AddRuleToMakeObjectFromAsm(path, src, flags, flags_build) =
144    $(path): $(src) :effects: asmlock
145        $(AS) $(flags) $(flags_build) $(ASOUT)$(absname $@) $(absname $<)
146    $(path): $(nth 0, $(AS)) $(makeDirectory $(dirname $(path)))
147    return $(path)
148
149#-------------------------------------------------------
150# AddRuleToInstall
151#
152# ����
153#   �t�@�C�����R�s�[���郋�[����lj�����
154#   .o �̃p�X��Ԃ�
155#
156# �Q�Ƃ��Ă���O���[�o���ϐ�
157#   �Ȃ�
158#-------------------------------------------------------
159AddRuleToInstall(dst, src) =
160    $(dst): $(makeDirectory $(dirname $(dst)))
161    $(dst): $(src)
162        cp $< $@
163    return $(dst)
164
165
166#-------------------------------------------------------
167# AddRuleToMakeStaticLibrary
168#
169# ����
170#   .o �̃��X�g���� .a ���쐬���郋�[����lj�����
171#   .a �̃p�X��Ԃ�
172#
173# �Q�Ƃ��Ă���O���[�o���ϐ�
174#   �Ȃ�
175#-------------------------------------------------------
176AddRuleToMakeStaticLibrary(lib, srcs) =
177    $(lib): $(nth 0, $(AR))
178    $(lib): $(makeDirectory $(dirname $(lib)))
179    $(lib): $(srcs)
180        CreateCmdFile($@.res,$^)
181        rm -f $(absname $@)
182        $(AR) $(ARFLAGS) $(absname $@) --via $(absname $@.res)
183        rm -f $@.res
184    return $(lib)
185
186
187#-------------------------------------------------------
188# AddRuleToMakeObjectFromBinary
189#
190# ����
191#   �C�ӂ̃t�@�C������ .o ���쐬���郋�[����lj�����
192#   .o �̃p�X��Ԃ�
193#
194# �Q�Ƃ��Ă���O���[�o���ϐ�
195#   �Ȃ�
196#-------------------------------------------------------
197AddRuleToMakeObjectFromBinary(obj, bin, sympair, flags) =
198    private.begin = $(nth 0, $(sympair))
199    private.end   = $(nth 1, $(sympair))
200    $(obj): $(bin) $(BIN2OBJ)
201        $(BIN2OBJ) $(flags) -b $(begin) -e $(end) $< $@
202    return $(obj)
203
204
205#-------------------------------------------------------
206# AddRuleToPreProcess
207#
208# ����
209#   C �̃v���v���Z�X������K�p���郋�[����lj�����
210#   ���ʃt�@�C���̃p�X��Ԃ�
211#
212# �Q�Ƃ��Ă���O���[�o���ϐ�
213#   �Ȃ�
214#-------------------------------------------------------
215AddRuleToPreProcess(outfile, infile, includes, flags, flags_scan) =
216    private.scanner_name    = $(SCANNER_PREFIX)-cpp-$(fullname $(rootname $(outfile)))
217    private.outdir          = $(makeDirectory $(dirname $(outfile)))
218
219    .SCANNER: $(scanner_name): $(infile) .PHONY/$(ROOT)/build-setup :value: $(digest-in-path-optional_ $(includes), $&)
220        $(CPP) $(flags) $(flags_scan) $(CCOUT)$(absname $(outfile)) $(absname $<)
221
222    $(outfile): $(infile) $(outdir) :scanner: $(scanner_name)
223        $(CPP) $(flags) $(CCOUT)$(absname $@) $(absname $<)
224    return $(outfile)
225
226
227#-------------------------------------------------------
228# AddRuleToMakeElf
229#
230# ����
231#   ELF �t�@�C�����쐬���郋�[����lj�����
232#   ELF �t�@�C���̃p�X��Ԃ�
233#
234# �Q�Ƃ��Ă���O���[�o���ϐ�
235#   �Ȃ�
236#-------------------------------------------------------
237AddRuleToMakeElf(elf, flags, files, depends) =
238    private.dasm = $(file $(removesuffix $(elf))$(EXT_DASM))
239    $(elf): $(nth 0, $(LD))
240    $(elf): $(depends) :effects: $(dasm) :value: $(getMtimeIfLarge $(depends))
241        $(LD) $(LDOUT)$(absname $@) $(flags) $(set $(files))
242        $(if $(DISAS), $(DISAS) -o$(absname $(dasm)) $(absname $@))
243    return $(elf)
244
245#-------------------------------------------------------
246# AddRuleToMakeElfUsingCmdFile
247#
248# ����
249#   �I�v�V�����t�@�C���o�R�� ELF �t�@�C�����쐬���郋�[����lj�����
250#   ELF �t�@�C���̃p�X��Ԃ�
251#
252# �Q�Ƃ��Ă���O���[�o���ϐ�
253#   �Ȃ�
254#-------------------------------------------------------
255AddRuleToMakeElfUsingCmdFile(elf, flags, files, depends) =
256    private.dasm = $(file $(removesuffix $(elf))$(EXT_DASM))
257    $(elf): $(nth 0, $(LD)) $(makeDirectory $(dirname $(elf)))
258    $(elf): $(depends) :effects: $(dasm) :value: $(getMtimeIfLarge $(depends))
259        CreateCmdFile($@.res,$(set $(files)))
260        $(LD) $(LDOUT)$(absname $@) $(flags) $(LDRESP) $(absname $@.res)
261        $(if $(DISAS), $(DISAS) -o$(absname $(dasm)) $(absname $@))
262    return $(elf)
263
264
265
266makeObjectPath(src) =
267    private.oname =
268        if $(not $(is_under $(CWD), $(src)))
269            value $(rootname $(GetSubPath $(src)))$(EXT_OBJ)
270        else
271            value $(rootname $(src))$(EXT_OBJ)
272    return $(file $(makePath $(obj_dir) $(oname)))
273
274
275#   INCLUDES, CFLAGS, PREFIXED_INCLUDES, CSCANFLAGS, CCFLAGS_BUILD
276MakeObjectFromC(src) =
277    private.dst = $(makeObjectPath $(src))
278    return $(AddRuleToMakeObjectFromC $(dst),$(src),$(INCLUDES),$(CFLAGS) $(PREFIXED_INCLUDES),$(CCFLAGS_BUILD),$(CSCANFLAGS))
279
280#   INCLUDES, CXXFLAGS, PREFIXED_INCLUDS, CSCANFLAGS, CCFLAGS_BUILD
281MakeObjectFromCpp(src) =
282    private.dst = $(makeObjectPath $(src))
283    return $(AddRuleToMakeObjectFromCpp $(dst),$(src),$(INCLUDES),$(CXXFLAGS) $(PREFIXED_INCLUDES),$(CCFLAGS_BUILD),$(CSCANFLAGS))
284
285#   ASFLAGS, CCFLAGS_BUILD, PREFIXED_INCLUDES
286MakeObjectFromAsm(src) =
287    private.dst = $(makeObjectPath $(src))
288    return $(AddRuleToMakeObjectFromAsm $(dst),$(src),$(ASFLAGS) $(PREFIXED_INCLUDES),$(CCFLAGS_BUILD))
289
290
291
292#------------------------------------
293# �r���h����
294#------------------------------------
295
296#-------------------------------------------------------
297# ObjectOne
298#
299# ����
300#   ���̓t�@�C���̊g���q�ɉ����ēK�؂ȏ������s��
301#   �I�u�W�F�N�g�t�@�C���ւƕϊ�����
302#   ���������I�u�W�F�N�g�t�@�C���̃p�X��Ԃ�
303#
304# �Q�Ƃ��Ă���O���[�o���ϐ�
305#   COMPILER INCLUDES
306#-------------------------------------------------------
307ObjectOne(config, src, obj_dir) =
308    CCFLAGS        += $(COMPILER.getCCFlags $(config)) $(config.getSystemCCFlags)
309    CCFLAGS_MACRO  += $(COMPILER.getMacroFlags $(config)) -DNN_USE_MAKECCI
310    ASFLAGS        += $(COMPILER.getASFlags $(config))
311    INCLUDES        = $(dir $(INCLUDES))
312
313    private.ofile =
314        match $(src)
315        case $"\($(EXT_C)\)$$"
316            value $(MakeObjectFromC $(src))
317        case $"\(\.cpp\)$$"
318            value $(MakeObjectFromCpp $(src))
319        case $"\($(EXT_ASM)\)$$"
320            value $(MakeObjectFromAsm $(src))
321        default
322            eprintln($"Unsupported source file: " '$(src)')
323            exit(1)
324
325    return $(ofile)
326
327#-------------------------------------------------------
328# Object
329#
330# ����
331#   �����̓��̓t�@�C���� ObjectOne ��K�p����
332#   ObjectOne �̌��ʂ̃��X�g��Ԃ�
333#
334# �Q�Ƃ��Ă���O���[�o���ϐ�
335#   �Ȃ�
336#-------------------------------------------------------
337Object(config, srcs) =
338    if $(not $(srcs))
339        return $(EMPTY)
340
341    private.obj_dir_parent = $(config.getObjectDirectory)
342
343    # �����I�Ɉ�ˆ�‚̃t�@�C���ɑ΂��ă��[�����`����
344    private.ofiles =
345        foreach(filename, $(srcs))
346            if $(not $(equal $(filename),$(EMPTY)))
347                value $(ObjectOne $(config), $(string $(filename)), $(obj_dir_parent))
348
349    clean:
350        rm -rf $(obj_dir_parent) $(SUBDIR_OBJECTS)
351
352    return $(stripEmpty $(ofiles))
353
354
355
356#-------------------------------------------------------
357# StaticObject
358#
359# ����
360#   Object ��K�p���A�������ꂽ�t�@�C�����w��̏ꏊ�ɃR�s�[����
361#   �R�s�[��̃t�@�C���̃p�X�̃��X�g��Ԃ�
362#
363# �Q�Ƃ��Ă���O���[�o���ϐ�
364#   �Ȃ�
365#-------------------------------------------------------
366StaticObject(config, srcs) =
367    private.libdir = $(config.getLibraryDirectory true)
368
369    private.ofiles =
370        foreach(filename, $(srcs))
371            private.obj     = $(ObjectOne $(config),$(filename),$(config.getObjectDirectory))
372            private.libpath = $(file $(libdir)/$(config.getStaticObjectName $(rootname $(filename))))
373            value $(AddRuleToInstall $(libpath),$(obj))
374
375    clean:
376        rm -f $(ofiles)
377
378    return $(ofiles)
379
380
381#-------------------------------------------------------
382# StaticObject
383#
384# ����
385#   �����̓��̓t�@�C�����A���̊g���q�ɉ����ēK�؂ȏ������s����
386#   �I�u�W�F�N�g�t�@�C���ւƕϊ������̂��A
387#   .a �t�@�C���ւ܂Ƃ߂�
388#   .a �t�@�C���̃p�X��Ԃ�
389#
390# �Q�Ƃ��Ă���O���[�o���ϐ�
391#   �Ȃ�
392#-------------------------------------------------------
393StaticLibrary(config, name, files) =
394    private.libdir  = $(config.getLibraryDirectory true)
395    private.objs    = $(filter     %$(EXT_OBJ),$(files))
396    private.srcs    = $(filter-out %$(EXT_OBJ),$(files))
397    private.ofiles  = $(objs) $(Object $(config), $(srcs))
398    private.libpath = $(file $(libdir)$(DIRSEP)$(config.getLibraryName $(name)))
399    return $(AddRuleToMakeStaticLibrary $(libpath), $(ofiles))
400
401
402#-------------------------------------------------------
403# ObjectFromBinaryWithSymbol
404#
405# ����
406#   �C�ӂ̃t�@�C�����I�u�W�F�N�g�t�@�C���ւƕϊ�����
407#   ���������I�u�W�F�N�g�t�@�C���̃p�X��Ԃ�
408#
409# �Q�Ƃ��Ă���O���[�o���ϐ�
410#   BIN2OBJ_FLAGS
411#-------------------------------------------------------
412public.ObjectFromBinaryWithSymbol(config, files, symbol_function) =
413    private.obj_dir_parent = $(config.getObjectDirectory)
414    private.ofiles =
415        foreach(filename, $(files))
416            private.ofile = $(file $(obj_dir_parent)/$(basename $(filename))$(EXT_OBJ))
417            private.symbol_pair = $(symbol_function $(filename))
418            $(ofile): $(obj_dir_parent)
419            value $(AddRuleToMakeObjectFromBinary $(ofile),$(filename),$(symbol_pair),$(BIN2OBJ_FLAGS))
420    return $(ofiles)
421
422
423#-------------------------------------------------------
424# ObjectFromBinary
425#
426# ����
427#   �C�ӂ̃t�@�C�����I�u�W�F�N�g�t�@�C���ւƕϊ�����
428#   ���������V���{���Ƀf�t�H���g�̌`�����g�p����
429#   ���������I�u�W�F�N�g�t�@�C���̃p�X��Ԃ�
430#
431# �Q�Ƃ��Ă���O���[�o���ϐ�
432#   �Ȃ�
433#-------------------------------------------------------
434public.ObjectFromBinary(config, files) =
435    return $(ObjectFromBinaryWithSymbol $(config), $(files), $(Bin2ObjDefaultSymbolFunction))
436
437
438
439#-------------------------------------------------------
440# PreProcess
441#
442# ����
443#   C �̃v���v���Z�X������K�p�����t�@�C�����쐬����
444#   �K�p��̃t�@�C���̃p�X��Ԃ�
445#
446# �Q�Ƃ��Ă���O���[�o���ϐ�
447#   CCFLAGS_MACRO COMPILER
448#   INCLUDES CCFLAGS PREFIXED_INCLUDES CSCANFLAGS
449#-------------------------------------------------------
450public.PreProcess(config, infile, outfile) =
451    CCFLAGS_MACRO  += $(COMPILER.getMacroFlags $(config)) -DNN_USE_MAKECCI
452    return $(AddRuleToPreProcess $(outfile),$(infile),$(INCLUDES),$(CCFLAGS) $(PREFIXED_INCLUDES),$(CSCANFLAGS))
453
454
455#-------------------------------------------------------
456# InstallFiles
457#
458# ����
459#   �����̃t�@�C�����R�s�[����
460#
461# �Q�Ƃ��Ă���O���[�o���ϐ�
462#   �Ȃ�
463#-------------------------------------------------------
464public.InstallFiles(source_root, sources, destination) =
465    private.destination = $(absname $(destination))
466    private.source_root = $(absname $(source_root))
467    private.sources     = $(removeprefix $(source_root)$(DIRSEP), $(sources))
468
469    private.dfiles = $(addprefix $(destination)$(DIRSEP), $(sources))
470
471    .SUBDIRS: $(source_root)
472        foreach(source, $(sources))
473            private.dfile = $(addprefix $(destination)$(DIRSEP), $(source))
474            AddRuleToInstall($(dfile),$(source))
475
476    return $(dfiles)
477
478
479Elf(elf, flags, files, depends) =
480    if $(equal $(LDRESP),$(EMPTY))
481        return $(AddRuleToMakeElf $(elf), $(flags), $(files), $(depends))
482    else
483        return $(AddRuleToMakeElfUsingCmdFile $(elf), $(flags), $(files), $(depends))
484
485#-------------------------------------------------------
486# ExecutableElf
487#
488# ����
489#   EXECUTABLE �`���� ELF ���쐬����
490#
491# �Q�Ƃ��Ă���O���[�o���ϐ�
492#   LIBDIR, LDFLAGS, COMPILER, MINIMUM_LIBS, DEFAULT_LIBS,
493#   LIBS, TOOL, LIBFILES, CRT_0_O, MAPFILE, LDSCRIPT_TEMPLATE,
494#   LDSCRIPT
495#-------------------------------------------------------
496ExecutableElf(config, name, files) =
497    private.image_dir   = $(config.getImageDirectory false)
498    private.elf         = $(config.getBinaryPath $(name), $(EXT_ELF))
499    LIBDIR              = $(config.getLibraryDirectory false)
500    LDFLAGS            += $(COMPILER.getLDFlags $(config))
501
502    MINIMUM_LIBS       += $(config.getMinimumLibraries)
503    DEFAULT_LIBS       += $(config.getDefaultLibraries)
504    if $(config.isHostIoEnable)
505        DEFAULT_LIBS   += $(config.getHostIoLibraries)
506        export
507
508    private.ext_elfs    = $(addprefix %, $(EXT_OBJ) $(EXT_ELF) $(EXT_PLF))
509    private.ofiles      = $(Object $(config), $(filter-out $(ext_elfs),$(files))) $(filter $(ext_elfs),$(files))
510    private.lfiles      = $(EMPTY)
511    LDSCRIPT            = $(EMPTY)
512
513    if $(filter %$(EXT_LIB), $(LIBS))
514        eprintln($""!!! WARNING: the LIBS variable should contain libraries _without_ extensions."")
515        LIBS = $(replacesuffixes $(EXT_LIB), $"$(EMPTY)", $(LIBS))
516        export
517
518    if $(not $(and $(defined TOOL), $(TOOL)))
519        private.filtered_lfiles = $(filter-out $"$(EMPTY)",$(LIBS))
520        export lfiles
521        export LDSCRIPT
522        lfiles          = $(file $(addprefix $(LIBDIR)$(DIRSEP), $(addsuffix $(EXT_LIB), $(completeLibrarySuffix $(config), $(filtered_lfiles)))))
523        lfiles         += $(file $(addsuffix $(EXT_LIB), $(completeLibrarySuffix $(config), $(replacesuffixes $(EXT_LIB), $"$(EMPTY)", $(LIBFILES)))))
524
525        if $(and $(defined CRT_0_O),$(not $(equal $(LDRESP),$(EMPTY))))
526            lfiles += $(file $(addprefix $(LIBDIR)$(DIRSEP), $(addsuffix $(EXT_OBJ), $(completeLibrarySuffix $(config), $(removesuffix $(CRT_0_O))))))
527
528        MAPFILE         = $(config.getMapfilePath $(name))
529        export MAPFILE
530
531        if $(defined LDSCRIPT_TEMPLATE)
532            LDSCRIPT        = $(PreProcess $(config), $(LDSCRIPT_TEMPLATE), $(absname $(config.getLdscriptPath $(name))))
533
534            $(LDSCRIPT): $(image_dir)
535
536            $(elf): $(LDSCRIPT) :effects: $(MAPFILE)
537
538    clean:
539        rm -rf $(image_dir) $(SUBDIR_IMAGES)
540
541    return $(Elf $(elf), $(LDFLAGS), $(ofiles) $(lfiles), $(ofiles) $(lfiles))
542
543#Program(config, name, files) =
544
545
546
547#------------------------------------
548# ���̑�
549#------------------------------------
550
551# �S�Ẵ\�[�X�t�@�C���̃R���p�C���O�Ɏ��s����^�[�Q�b�g
552public.RequireSetup(targets) =
553    .PHONY/$(ROOT)/build-setup: $(targets)
554
555
556public.DefineDefaultRules() =
557
558    .DEFAULT: build
559
560    all: build tests
561
562    run: run-scripts
563
564    %.log: run-scripts
565
566    dotests run: $(RUNNER) :effects: $(RUNNER_LOCK)
567        $(RunDependMCR $@)
568
569public.ShowConfig() =
570    NOT_FOUND = $"���‚���܂���"
571    println($"�‹��ϐ�/�����ݒ�--------------------------------------")
572    println($"  HORIZON_ROOT:           " $(absname $(HORIZON_ROOT)))
573    println($"  HORIZON_ADDINS_ROOT:    " $(HORIZON_ADDINS_ROOT))
574    println($"  HORIZON_TARGETS:        " $(if $(defined-env HORIZON_TARGETS),                   $`(getenv HORIZON_TARGETS)))
575    println($"  ARMLMD_LICENSE_FILE:    " $(if $(defined-env ARMLMD_LICENSE_FILE),               $`(getenv ARMLMD_LICENSE_FILE)))
576    println($"  $(RVCT_ENV_PREFIX)BIN:              " $(if $(defined-env $(RVCT_ENV_PREFIX)BIN), $`(getenv $(RVCT_ENV_PREFIX)BIN)))
577    if $(defined-env $(RVCT_ENV_PREFIX)BIN)
578        ARMCC_VERSION   = $(gsub $(string $(shell $"$(RVCT_BINDIR)armcc.exe" --help)),   $" Usage:.*", $(EMPTY))
579        ARMASM_VERSION  = $(gsub $(string $(shell $"$(RVCT_BINDIR)armasm.exe" --help)),  $" Usage:.*", $(EMPTY))
580        ARMLINK_VERSION = $(gsub $(string $(shell $"$(RVCT_BINDIR)armlink.exe" --help)), $" Usage:.*", $(EMPTY))
581        ARMAR_VERSION   = $(gsub $(string $(shell $"$(RVCT_BINDIR)armar.exe" --help)),   $" - archive.*", $(EMPTY))
582        FROMELF_VERSION = $(gsub $(string $(shell $"$(RVCT_BINDIR)fromelf.exe" --help)), $"ARM image.*", $(EMPTY))
583
584        println($"                           - $(ARMCC_VERSION)")
585        println($"                           - $(ARMASM_VERSION)")
586        println($"                           - $(ARMLINK_VERSION)")
587        println($"                           - $(ARMAR_VERSION)")
588        println($"                           - $(FROMELF_VERSION)")
589    println($"  $(RVCT_ENV_PREFIX)INC:              " $(if $(defined-env $(RVCT_ENV_PREFIX)INC),           $`(getenv $(RVCT_ENV_PREFIX)INC)))
590    println($"  $(RVCT_ENV_PREFIX)LIB:              " $(if $(defined-env $(RVCT_ENV_PREFIX)LIB),           $`(getenv $(RVCT_ENV_PREFIX)LIB)))
591
592    println($" ")
593    println($"�v���W�F�N�g�ݒ�---------------------------------------")
594    println($"  ROOT:                   " $(absname $(ROOT)))
595    println($"  INSTALL_ROOT:           " $(absname $(INSTALL_ROOT)))
596    println($"  INSTALL_ROOT_IMAGES:    " $(absname $(INSTALL_ROOT_IMAGES)))
597    println($"  INSTALL_ROOT_LIBRARIES: " $(absname $(INSTALL_ROOT_LIBRARIES)))
598    println($" ")
599    println($"�v���O����---------------------------------------------")
600
601    GCC_VERSION =
602    if $(GCC)
603        GCC_VERSION = $`(gsub $(string $(shell $(GCC) --version)), $" Copyright.*", $(EMPTY))
604        export
605
606    #OMAKE_VERSION_ = $`(gsub $(string $(shell omake --version)), $":.*", $(EMPTY))
607    println($"  GCC:                    " $(if $(equal $(GCC),   $(EMPTY)), $(NOT_FOUND), $`(GCC) [$`(GCC_VERSION)]))
608    println($"  RUBY:                   " $(if $(equal $(RUBY),  $(EMPTY)), $(NOT_FOUND), $`(RUBY) [$`(RUBY_VERSION)]))
609    println($"  7ZIP:                   " $(if $(equal $(7ZIP),  $(EMPTY)), $(NOT_FOUND), $`(7ZIP)))
610    println($"  UNZIP:                  " $(if $(equal $(UNZIP), $(EMPTY)), $(NOT_FOUND), $`(UNZIP)))
611    println($" ")
612
613
614
615public.CGeneratedFiles(files) =
616    CGeneratedFilesTarget: $(files)
617
618public.LocalCGeneratedFiles(files) =
619    .SCANNER: scan-c-%: $(files)
620    .SCANNER: scan-cxx-%: $(files)
621    .SCANNER: %$(EXT_OBJ): $(files)
622    export
623
624
625makePlatformDefsPath(name) =
626    return $(ROOT_OMAKE)/platforms/$(TARGET_PLATFORM.Name)/$(TARGET_PLATFORM.Name).$(name).om
627
628IsTestBuild() =
629    return $(filter dotests% tests, $(TARGETS))
630
631IsDocumentBuild() =
632    return $(filter documents clean-documents, $(TARGETS))
633
634
635
636
637