Subversion Repositories DevTools

Rev

Rev 6177 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
4814 dpurdie 1
# -*- mode: mak; -*-
2
###############################################################################
3
# File:         TOOLSET/vcwin64.rul[e]
4
# Contents:     Visual C/C++ WIN64 rules
5
#
6
#   Based on vcwin32, but it has been cleaned up for the 64-bit builds
7
#   Legacy support has been removed
8
#
9
###############################################################################
10
#..     Remove "undef" warnings
11
#
12
cc_includes	+=
13
cc_defines	+=
14
cxx_includes	+=
15
cxx_defines	+=
16
purecov_ld_flags +=
17
 
18
###############################################################################
19
#..     Parse user options
20
#       Global options already parsed
21
#       These options extend the global options
22
#
23
 
24
ifdef OPTIONS
25
 
26
ifneq "$(findstring purify,$(OPTIONS))" ""      # Enable purify
27
else
28
ifneq "$(findstring purecov,$(OPTIONS))" ""     # Enable pure coverage
29
purecov_ld_flags += FIXED:NO
30
endif
31
endif
32
 
33
ifneq "$(findstring ccdepend,$(OPTIONS))" ""    # Build depends using CC
34
endif
35
 
36
ifneq "$(findstring wall,$(OPTIONS))" ""        # Enable all warnings
37
USE_WALL	= 1
38
endif
39
 
40
ifneq "$(findstring gensbr,$(OPTIONS))" ""     # Generate Source Browser Files
41
GEN_SBR_FILES	= 1
42
endif
43
 
44
endif
45
 
46
################################################################################
47
#   Define a macro to assist in selecting compiler options based on the
48
#   type of compiler being being used. New versions of compilers will deprecate
49
#   options or replace some
50
#
51
#   select_co	- Select Compiler Option
52
#		- Arguments are for the different compilers as defined by VSCOMPILER
53
#		  VSCOMPILER in the range 1.. as defined in the .PL file
54
#
55
#		  Current usage
56
#			1 - vc6
57
#			2 - vc7
58
#			3 - vc8,vc9,vc10,vc12
59
#
60
$(if $(VSCOMPILER),,$(error VCWIN64 toolset requires VSCOMPILER to be defined))
61
select_co = $(subst --,,$(word $(VSCOMPILER),$1 $2 $3))
62
 
63
###############################################################################
64
#   Standard library paths
65
#   Export LIB as this is used by the compiler (#import) as well as the
66
#   librarian and the linker. It is also used by the library generation
67
#   process.
68
#
69
#	VC_LIB	- Lib paths from Compiler toolkit
70
#		    - ';' seperated path list
71
#		    - Uses \ or / as a dir sep
72
#		    - Uses real spaces in pathnames
73
#		    - Should be Absolute Paths
74
#                   
75
#	LIBDIRS	- Lib paths from JATS
76
#		    - Space seperated path list
77
#		    - Uses / as dir sep
78
#		    - Must not contain spaces
79
#		    - Will be Relative
80
#
81
#	ALL_LIBDIRS and LIB
82
#		    - Only contain valid paths
83
#		      VS2005 will complain about bad LIB entries
84
#		      Use $(wildcard ...) to limit to test for existence
85
#		    - Contain absolute paths
86
#		      msdev/devenv don't work with relative paths
87
#		      Use $(abspath ...) to convert
88
#
89
#	ALL_LIBDIRS - Used internally
90
#		    - Space seperated path list
91
#		    - Uses / as dir sep
92
#		    - Uses %20 as a altspace in pathnames
93
#                   
94
#	LIB     - Exported to tools
95
#		    - ';' seperated path list
96
#		    - Uses \ as a dir sep
97
#		    - Uses real spaces in pathnames
98
#..
99
 
100
vc_libs     := $(subst ;,$(space),$(subst \,/,$(subst $(space),$(spacealt),$(VC_LIB))))
101
ALL_LIBDIRS := $(wildcard $(call myabspath,$(LIBDIRS))) $(vc_libs)
102
LIB         := $(subst $(spacealt),$(space),$(subst $(space),$(empty),$(patsubst %,%;,$(subst /,\,$(ALL_LIBDIRS)))))
103
export LIB
104
 
105
#one_per_line = $(foreach aa,$2,$(info $1 :: $(subst $(spacealt),$(space),$(aa))))
106
#$(call one_per_line,Good LIBDIRS,$(ALL_LIBDIRS))
107
 
108
###############################################################################
109
#..     Compiler definitions
110
#
111
 
112
#..     C Compiler definition
113
#
114
 
115
# Standard defines
116
#
117
#..
118
vc_defines	+= -DWIN32 -D_WIN32 -DWIN64 -D_WIN64
119
 
120
ifdef ALVL
121
vc_defines	+= -DALVL=$(ALVL)
122
endif
123
ifdef DLVL
124
vc_defines	+= -DDLVL=$(DLVL)
125
endif
126
 
127
#
128
#	__SOURCE__ interferes with Windows Precompiled headers
129
#	It can be disabled, but its not for backward compatability
130
#
131
ifndef DISABLE__SOURCE__
132
vc_defines	+= -D__SOURCE__=\"$(notdir $<)\"
133
endif
134
 
135
	# Standard flags
136
	#
137
	# Both compilers now use the same front end - you must still define either
138
	# _X86_ or _ALPHA_.  These have replaced the i386 and ALPHA definitions
139
	# which are not ANSI compliant.
140
	#
141
	# Common compiler flags:
142
	#   -c    - compile without linking
143
	#   -W3   - Set warning level to level 3
144
	#   -Zi   - generate debugging information
145
	#   -Zd   - generate only public symbols and line numbers for debugging
146
	#   -Od   - disable all optimizations
147
	#   -Ox   - use maximum optimizations
148
	#   -Ge   - enable stack checks
149
	#   -Gm   - enable min builds
150
	#   -GX   - (Deprecated: Use -EHsc) Enables synchronous exception handling (C++)
151
    #   -EHsc - Enables synchronous exception handling (C++)
152
	#   -YX   - (Deprecated: Don't use) Automatically generate precompiled headers
153
	#   -Yd   - Place debug info within objects.
154
	#   -GZ   - (Deprecated: Use -RTC1)Enable runtime debug checks
155
	#   -GR   - Enables run-time type information (RTTI)
156
	#   -MD   - Creates a multithreaded DLL, using MSVCRT.LIB
157
	#   -MDd  - Creates a debug multithreaded DLL, using MSVCRTD.LIB
158
	#
159
	# Output options:
160
	#   -Fo<file>      name object file
161
	#   -Fp<file>      name precompiled header file
162
	#   -Fd[file]      name .PDB file
163
	#   -Fm[file]      name map file
164
	#   -FR[file]      name source browser file (Complete)
165
	#   -Fr[file]      name source browser file (No locals)
166
	#
167
	# i386 specific compiler flags:
168
	#   -Gz  - stdcall
169
	#   -Gd  - cdecl
170
	#
171
	# Plus:
172
	#   -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl
173
	#   _X86_ | _MIPS_ | _PPC_
174
	#   WINNT | WIN95
175
	#   WINVER=0x0500 (5.0) | WINVER=0x0400 (4.0) | WINVER=0x030A (3.51)
176
	#   _MT
177
	#
178
	# Linker
179
	#   -MT[d]  using MT safe C library
180
	#
181
	# ! Warning !
182
	#   If you are going to call C run-time routines from a program
183
	#   built with LIBCMT.LIB, you must start your threads with the
184
	#   _beginthread function.  Do not use the Win32 functions
185
	#   ExitThread and CreateThread.  Using SuspendThread can lead to
186
	#   a deadlock when more than one thread is blocked waiting for
187
	#   the suspend thread to complete its access to a C run-time
188
	#   data structure.
189
	#..
190
vc_flags	+= -c -nologo
191
vc_flags	+= -GR
192
vc_flags	+= -Gd
193
vc_flags	+= $(call select_co,-GX,-GX,-EHsc)
194
#vc_flags	+= -Wp64
195
ifdef USE_WALL
196
vc_flags	+= -W4
197
else
198
vc_flags	+= -W3
199
endif
200
 
201
vc_compile_flags = -TC          # Force C unless otherwise demanded
202
ifdef FORCE_C_COMPILE
203
vc_compile_flags = -TC
204
endif
205
 
206
ifdef FORCE_CC_COMPILE
207
vc_compile_flags = -TP
208
endif
209
 
210
ifdef USE_OPTIMISE				# default for production
211
vc_flags	+= -Od              # Don't optimise production code. Too many problems. Ship what we test
212
else
213
vc_flags	+= -Od
214
endif
215
 
216
ifdef USE_DEBUGINFO				# default for debug
217
vc_flags	+= $(call select_co,-GZ,-GZ,-RTC1)
218
vc_defines	+= -DDEBUG
219
else
220
vc_flags	+=
221
endif
222
 
223
ifdef LEAVETMP                  # Create an assembly listing
224
vc_flags       += -FAs  -Fa$(subst /,\\,$(basename $@).src)
225
endif
226
 
227
ifndef THREADMODE
228
    THREADMODE = "D"
229
endif
230
 
231
ifeq "$(DEBUG)" "1"				# debug/prod specific
232
vc_flags	+= -M$(THREADMODE)d
233
vc_defines	+= -D_DEBUG
234
else
235
vc_flags	+= -M$(THREADMODE)
236
vc_defines	+= -DNDEBUG
237
endif
238
 
239
ifdef USE_STRICT_ANSI				# default OFF
240
vc_flags	+= -Za
241
else
242
vc_flags	+=
243
endif
244
 
245
ifdef USE_RTTI
246
vc_flags	+= -GR
247
endif
248
 
249
ifndef PDB_NONE                 		        # Supress PDB generation
250
vc_flags	+= -Zi
251
endif
252
 
253
ifdef PRECOMPILEHDRS                           	# Precompile headers
254
vc_flags	+= $(call select_co,-YX,-YX,--)
255
endif
256
 
257
vc_flags	+= -Fp$(subst /,\\,$(OBJDIR)/)
258
vc_flags	+= -Fd$(subst /,\\,$(PDB))
259
 
260
ifdef GEN_SBR_FILES
261
vc_flags	+= -FR$(subst /,\\,$(basename $@).sbr)
262
endif
263
 
4928 dpurdie 264
ifdef WARNINGS_AS_ERRORS
265
vc_flags	+= -WX
266
endif
267
 
268
 
4814 dpurdie 269
SHCFLAGS	+= $(call select_co,-GD,--,--)
270
SHCXXFLAGS	+= $(call select_co,-GD,--,--)
271
 
272
	# Standard includes
273
	# INCLUDE    - a ';' seperated list of paths
274
        # vc_include - a 'space' seperated list of paths
275
        #            - Using / for path sep
276
        #            - Using 'spacealt'(%20) for 'space' placeholder
277
	#..
278
vc_includes	=\
279
		$(subst ;,$(space),$(subst \,/,$(subst $(space),$(spacealt),$(INCLUDE))))
280
 
281
	# Command
282
	#
283
	#..
284
cc		= $(CC_PRE) cl
285
cc_init		=
286
cc_o_switch	= $(subst /,\\,-Fo$@)
287
cc_source	= $(subst /,\\,$<)
288
# CFLAGS must follow vc_flags to build with netbula headers
289
# these should be the ONLY c files that must be built with the C compiler
290
# until netbula support the C++ compiler
291
cc_flags	= \
292
		$(strip $(vc_compile_flags)) \
293
		$(strip $(patsubst %,%,$(vc_flags))) \
294
		$(strip $(patsubst %,%,$(vc_defines))) \
295
		$(patsubst %,%,$(CFLAGS)) \
296
		$(patsubst %,-D%,$(cc_defines)) \
297
		$(subst $(spacealt),$(space),$(patsubst %,"-I%",$(subst /,\,$(INCDIRS)))) \
298
		$(subst $(spacealt),$(space),$(patsubst %,"-I%",$(subst /,\,$(cc_includes)))) \
299
		$(subst $(spacealt),$(space),$(patsubst %,"-I%",$(subst /,\,$(vc_includes))))
300
cc_term		=
301
 
302
define cc_pre
6177 dpurdie 303
	@$(echo) '[$<] Compiling..'
4814 dpurdie 304
endef
305
 
306
	# Note:  The compiler gets the case of the PDB file
307
	#        wrong, force to be mixed case.  Also generating of the
308
	#        PDB image is optional based on debugging options, must
309
	#        test if file exists.
310
	#
311
	#        Leave the $(PDB).tmp file otherwise clearaudit gets upset
312
	#
313
define cc_post
314
	@if [ -f $(PDB) ]; then \
315
	$(rm) -f $(PDB).tmp; \
316
	$(mv) $(PDB) $(PDB).tmp; \
317
	$(cp) $(PDB).tmp $(PDB); \
318
	fi
319
endef
320
 
321
cc_filter	:= "$(notdir $(wildcard $(GBE_ROOT)/warnings.visualc))"
322
ifeq ($(strip $(cc_filter)), "warnings.visualc")
323
cc_filter	= $(GBE_ROOT)/warnings.visualc
324
else
325
cc_filter	=
326
endif
327
 
328
ifdef cc_filter
329
cc_redirect_stderr = 1
330
cc_error_filter = $(awk) -f $(cc_filter)
331
endif
332
 
333
 
334
###############################################################################
335
#..     C/C++ dependencies
336
#       depend and depend.err
337
#
338
#       Definitions provided by the compiler. 
339
#       Need to mimic them for dependency generation
340
#
341
vc_depend	=  -D_MSC_VER=1700 -D_MSC_EXTENSIONS=1
342
vc_depend	+= -D_MT
343
vc_depend	+= _M_X64=100
344
vc_depend	+= _M_AMD64=100
345
vc_depend	+= -D_INTEGRAL_MAX_BITS=64
346
 
347
ccdep		= $(XX_PRE) $(GBE_BIN)/mkdepend
348
ccdep_init	=
349
ccdep_o_switch	= -f -
350
ccdep_source	= $(filter %.c %.cc %.cpp, $+) > $@ 2> $@.err
351
ccdep_flags	= -MM -b -We -p '$$(OBJDIR)/' \
352
		$(foreach shname,$(SHNAMES),-p '$$(OBJDIR)/$(shname)/') \
353
		-o ".$(o)" \
354
		$(patsubst %,%,$(vc_depend)) \
355
		$(patsubst %,%,$(vc_defines)) \
356
		$(patsubst %,%,$(CFLAGS)) \
357
		$(patsubst %,%,$(CXXFLAGS)) \
358
		$(patsubst %,-D%,$(cc_defines)) \
359
		$(patsubst %,-D%,$(cxx_defines)) \
360
		$(subst $(spacealt),$(space),$(patsubst %,-I"%",$(subst /,\,$(INCDIRS)))) \
361
		$(subst $(spacealt),$(space),$(patsubst %,-I"%",$(subst /,\,$(cc_includes)))) \
362
		$(subst $(spacealt),$(space),$(patsubst %,-Y"%",$(subst /,\,$(vc_includes)))) \
363
		$(patsubst %,-Y %,$(NODEPDIRS))
364
 
365
ccdep_pre	=
366
ccdep_post	=
367
 
368
#..     C/C++ Lint definitions
369
#       -D Definition is not allowed: PCLINT does not like the space
370
#
371
lint_flags	+= \
372
	$(patsubst %,%,$(vc_depend)) \
373
	$(subst -D$(space),-D,$(patsubst %,%,$(vc_defines))) \
374
	$(patsubst %,%,$(CLINTFLAGS)) \
375
	$(patsubst %,-D%,$(cc_defines)) \
376
	$(subst $(spacealt),$(space),$(patsubst %,-I"%",$(INCDIRS))) \
377
	$(subst $(spacealt),$(space),$(patsubst %,-I"%",$(cc_includes))) \
378
	$(subst $(spacealt),$(space),$(patsubst %,-I"%",$(vc_includes)))
379
 
380
lint_libpath	= $(LIB)
381
 
382
#..     C++ Compiler definitions
383
#
384
cxx		= $(CC_PRE) cl
385
cxx_init	=
386
cxx_o_switch	= $(subst /,\\,-Fo$@)
387
cxx_source	= $(subst /,\\,$<)
388
# CXXFLAGS must follow vc_flags to build with netbula headers
389
# these should be the ONLY c files that must be built with the C compiler
390
# until netbula support the C++ compiler
391
cxx_flags	= -TP \
392
		$(patsubst %,%,$(vc_flags)) \
393
		$(patsubst %,%,$(vc_defines)) \
394
		$(patsubst %,%,$(CXXFLAGS)) \
395
		$(patsubst %,-D%,$(cxx_defines)) \
396
		$(subst $(spacealt),$(space),$(patsubst %,-I"%",$(subst /,\,$(INCDIRS)))) \
397
		$(subst $(spacealt),$(space),$(patsubst %,-I"%",$(subst /,\,$(cxx_includes)))) \
398
		$(subst $(spacealt),$(space),$(patsubst %,-I"%",$(subst /,\,$(vc_includes))))
399
cxx_term	=
400
 
401
define cxx_pre
6177 dpurdie 402
	@echo '[$<] compiling..'
4814 dpurdie 403
endef
404
 
405
define cxx_post
406
endef
407
 
408
 
409
###############################################################################
410
#..     Assembler definition
411
#
412
 
413
#..     Assembler (Microsoft 6.11)
414
#
415
as		= $(XX_PRE) ml
416
as_init 	=
417
as_i_switch	= /I
418
as_o_switch	= /Fo$(subst /,\\,$@)
419
as_source	= $(subst /,\\,$<)
420
as_cmdfile	= $(subst /,\\,$(basename $@).cmd)
421
as_flags	= @$(as_cmdfile)
422
as_term		=
423
 
424
as_includes	+= $(masm)/include
425
as_defines	+=
426
 
427
ml_flags	= /c /Zm /Cp /X
428
ifeq "$(DEBUG)" "1"
429
ml_flags	+= /W2 /Zd /DDEBUG
430
endif
431
ifdef DLVL
432
ml_flags	+= /DDLVL=$(DLVL)
433
endif
434
ifdef ALVL
435
ml_flags	+= /DALVL=$(ALVL)
436
endif
437
as_defines	:= $(addprefix /D,$(as_defines))
438
as_defines	+= $(ml_flags)
439
 
440
define as_pre
6177 dpurdie 441
	$(AA_PRE)$(cmdfile) -wko$(as_cmdfile) "\
4814 dpurdie 442
		$(patsubst %,%\\n,$(ASFLAGS)) \
443
		$(patsubst %,%\\n,$(as_defines)) \
444
		$(patsubst %,$(as_i_switch)%\\n,$(subst /,\\\\,$(INCLUDES))) \
445
		$(patsubst %,$(as_i_switch)%\\n,$(subst /,\\\\,$(as_includes)))";\
446
	        $(call show_cmdfile,$(as_cmdfile))
447
endef
448
 
449
ifndef LEAVETMP
450
define as_post
451
	@$(rm) -f $(as_cmdfile)
452
endef
453
else
454
define as_post
455
endef
456
endif
457
 
458
 
459
###############################################################################
460
#..     Archiver definition
461
#
462
 
463
#..     Archiver
464
#
465
ar		= $(XX_PRE)lib
466
ar_init 	=
467
ar_flags	= -nologo -machine:X64
468
ifeq "$(DEBUG)" "1"
469
ar_flags	+= $(call select_co,-debugtype:cv,--,--)
470
endif
471
 
472
LIBDEF		+=
473
ar_flags	+= $(patsubst %,-def:%,$(LIBDEF))
474
LIBNAME     +=
475
ar_flags	+= $(patsubst %,-name:%,$(LIBNAME))
476
ar_o_switch	= -out:$(subst /,\\,$@) $(subst /,\\,$(filter %.obj,$^)) $(subst /,\\,$(filter %.res,$^))
477
ar_term		=
478
 
479
define ar_pre
6177 dpurdie 480
	echo '[$@] Building library ..';
4814 dpurdie 481
endef
482
 
483
define ar_post
484
endef
485
 
486
 
487
#..     Archive Merge
488
#
489
armerge		= $(XX_PRE) $(GBE_TOOLS)/armerge
490
armerge_init	=
491
armerge_cmdfile =
492
armerge_flags	= -d $(MLIBDIR) -t MSVC
493
armerge_o_switch= $(subst /,\\,$@) $(subst /,\\,$^)
494
 
495
define armerge_pre
6177 dpurdie 496
	-echo '[$@] Merging library ..'; $(rm) -f $@
4814 dpurdie 497
endef
498
armerge_post	=
499
 
500
###############################################################################
501
#..     Linker
502
#
503
 
504
	# Standard flags
505
	#
506
	#..
507
vc_ldflags	= \
508
		-nologo\\n\
509
		-incremental:no\\n\
510
		-debug\\n\
511
		$(subst $(spacealt),$(space),$(patsubst %,-libpath:\"%\"\\n,$(subst /,\\\\,$(ALL_LIBDIRS))))\
7010 dpurdie 512
		$(subst $(spacealt),$(space),$(patsubst %,\"-%\"\\n,$(LDFLAGS)))\
4814 dpurdie 513
		$(patsubst %,-%\\n,$(purecov_ld_flags))
7010 dpurdie 514
 
515
 
4814 dpurdie 516
 
517
ifdef LDSUBSYSTEM
518
vc_ldflags += -subsystem:$(LDSUBSYSTEM)\\n
519
endif
520
 
521
#..     Shared library (dll)
522
#
523
 
524
shld		= $(CC_PRE) link
525
shld_cmdfile	= $(subst /,\\,$(basename $@).ld)
526
shld_flags	=
527
shld_o_switch	= @$(shld_cmdfile)
528
shld_term	=
529
 
530
define shld_pre
6177 dpurdie 531
	$(AA_PRE)$(cmdfile) -wkWeo$(shld_cmdfile) \
4814 dpurdie 532
		"$(vc_ldflags) $($(notdir $(SHBASE))_shld)"; \
6177 dpurdie 533
	echo '[$@] Linking shared library ..';\
4814 dpurdie 534
        $(call show_cmdfile,$(shld_cmdfile))
535
endef
536
 
537
ifndef LEAVETMP
538
define shld_post
539
	@$(rm) -f $(shld_cmdfile)
540
endef
541
else
542
define shld_post
543
endef
544
endif
545
 
546
define SHLDDEPEND
6177 dpurdie 547
	$(AA_PRE)$(cmdfile) -wkWeo$(@) "$($(DPLIST))"
4814 dpurdie 548
endef
549
 
550
#..      Application
551
#
552
 
553
ld		= $(CC_PRE) link
554
ld_cmdfile	= $(subst /,\\,$(basename $@).ld)
555
ld_flags	=
556
ld_o_switch	= @$(ld_cmdfile)
557
ld_term		=
558
 
559
define ld_pre
6177 dpurdie 560
	$(AA_PRE)$(cmdfile) -wkWeo$(ld_cmdfile) \
4814 dpurdie 561
		"$(vc_ldflags) $($(notdir $(basename $@))_ld)"; \
6177 dpurdie 562
	echo '[$@] Linking application ..';\
4814 dpurdie 563
        $(call show_cmdfile,$(ld_cmdfile))
564
endef
565
 
566
ifndef LEAVETMP
567
define ld_post
568
	@$(rm) -f $(ld_cmdfile)
569
endef
570
else
571
define ld_post
572
endef
573
endif
574
 
575
define LDDEPEND
6177 dpurdie 576
	$(AA_PRE)$(cmdfile) -wkWeo$(@) "$($(DPLIST))"
4814 dpurdie 577
endef
578
 
579
#.. Resource Compiler
580
#   Convert a .rc file into a .res file
581
#       Set up the INCLUDE envar to conatin the path to locate required
582
#       files and the local and interface directories then the compiler directories
583
#
584
#       Currently RC has a limit of 100 include paths to seach
585
#       Simply limit the list to the system paths and the directories
586
#       required by the prerequisite files
587
#
588
rc_defines = $(subst -D,/d ,$(vc_defines))
589
rc_dirs = $(subst /,\,$(sort $(dir $^)))
590
rc_dirs += $(LINCDIRS)
591
rc_dirs += $(vc_includes)
592
rc_include = $(subst $(spacealt),$(space),$(subst $(space),$(empty),$(patsubst %,%;,$(subst /,\,$(rc_dirs)))))
593
rc_include1 = $(subst \;,;,$(rc_include))
594
 
595
define RC
6177 dpurdie 596
	@$(echo) '[$@] Compile Resource File ..'
4814 dpurdie 597
	@$(show_environment)
598
	$(XX_PRE) export INCLUDE; INCLUDE="$(rc_include1)"; \
599
	RC /l 0xC09 $(rc_defines) /fo $(subst /,\\,$@) $(subst /,\\,$<)
600
endef
601
 
602
#.. Browser Information
603
#   Create a .BSC file from many .SBR files
604
#   Filter out non .SBR files to assist in rule creation
605
#
606
define BSCMAKE
6177 dpurdie 607
	@$(echo) '[$@] Create Source Browser Information ..'
4814 dpurdie 608
	@$(show_environment)
609
	$(XX_PRE) bscmake -nologo -n -o $(subst /,\\,$@) $(subst /,\\,$(filter %.sbr,$^))
610
endef
611
 
612
#