2 # Makefile for SIMH 3.8
7 # 01-OCT-08 PH Added spaces after "-o" option to gcc
8 # 19-SEP-08 PH Initial version
11 ################################################################################
13 # Find out something about the system we build for.
14 # This process is ugly and should be revisited!
22 ifneq (,$(findstring solaris
,$(OSTYPE
)))
26 ifneq (,$(findstring darwin
,$(OSTYPE
)))
31 ################################################################################
33 # Set build options according to what we found out about the build platform
37 LDFLAGS
= -lm
-lwsock32
-lwinmm
38 CFLAGS
=-std
=c99
-U__STRICT_ANSI__
-O2
-I.
-Wall
42 ifeq ($(BUILD
),solaris
)
45 LDFLAGS
=-lm
-lsocket
-lnsl
-lrt
-lpthread
48 ifeq ($(BUILD
),darwin
)
50 CFLAGS
= -D_GNU_SOURCE
-O3
56 CFLAGS
= -D_GNU_SOURCE
-O3
-std
=c99
-U__STRICT_ANSI__
-g
59 READLINE_SAVED_HISTORY
=true
63 ################################################################################
65 # Add network definitions etc if desired
67 ifneq ($(USE_NETWORK
),)
69 LDFLAGS
+=-lwpcap
-lpacket
72 ifneq ($(HAVE_READLINE
),)
73 READLINE_CFLAGS
+= -DHAVE_READLINE
74 READLINE_LDFLAGS
+= -lreadline
75 ifneq ($(READLINE_SAVED_HISTORY
),)
76 READLINE_CFLAGS
+= -DREADLINE_SAVED_HISTORY
80 ################################################################################
82 # Other stuff to add to CFLAGS and LDFLAGS
84 CFLAGS
+=-I
$(COMMON_DIR
)
88 ################################################################################
90 # Target directory where the executables go to.
91 # The directory is automatically created if it doesn't exist.
94 # This makes the target directory go away with "make clean":
95 CLEANSTUFF
+=$(TARGET_DIR
)
98 ################################################################################
99 ################################################################################
101 # This is the main section containing all the simulator dependent information.
105 ################################################################################
110 # The "normal" common modules
113 COMMON_MODULES
=scp sim_console sim_fio sim_timer sim_sock sim_tmxr\
114 sim_ether sim_tape sim_readline
115 COMMON_CFLAGS
+=$(READLINE_CFLAGS
)
116 LDFLAGS
+=$(READLINE_LDFLAGS
)
118 # The common modules with -DUSE_INT64
119 SIM_NAMES
+=COMMON_INT64
120 COMMON_INT64_SRC_DIR
=$(COMMON_SRC_DIR
)
121 COMMON_INT64_OBJ_DIR
=common_int64
122 COMMON_INT64_MODULES
=$(COMMON_MODULES
)
123 COMMON_INT64_CFLAGS
+=$(READLINE_CFLAGS
)
124 COMMON_INT64_CFLAGS
+=-DUSE_INT64
126 # The common modules with -DUSE_INT64 and -DUSE_ADDR64
127 SIM_NAMES
+=COMMON_INT64_ADDR64
128 COMMON_INT64_ADDR64_SRC_DIR
=$(COMMON_SRC_DIR
)
129 COMMON_INT64_ADDR64_OBJ_DIR
=common_int64_addr64
130 COMMON_INT64_ADDR64_MODULES
=$(COMMON_MODULES
)
131 COMMON_INT64_ADDR64_CFLAGS
+=$(READLINE_CFLAGS
)
132 COMMON_INT64_ADDR64_CFLAGS
+=-DUSE_INT64
-DUSE_ADDR64
135 ################################################################################
143 NOVA_MODULES
= nova_sys nova_cpu nova_dkp nova_dsk nova_lp nova_mta \
144 nova_plt nova_pt nova_clk nova_tt nova_tt1 nova_qty
145 NOVA_EXTRA_OBJS
+=$(COMMON_OBJS
)
146 NOVA_EXTRA_DEPS
+=$(COMMON_SRC_DIR
)/*.h
150 ################################################################################
152 # Data General Eclipse
157 # The Makefile uses all items in SIM_NAMES to call the OBJECT_COLLECT_TEMPLATE
158 # sequentially. This macro uses the sim name (e.g. ECLIPSE) as prefix for
159 # the variables it is working on.
160 # It looks if there's a ..._SRC_DIR and ..._OBJ_DIR.
161 # If not, it assigns both from ..._DIR.
162 # So you can also specify a single source and object directory with ..._DIR.
164 # The template also builds a complete list of source files, ..._SOURCES.
166 # Then the OBJECT_RULE_TEMPLATE is expanded for all source files.
167 # The current object file name is created from the source file name,
168 # then added to the list of object files, ..._OBJS.
169 # And, of course, the build rule for the object is output.
170 # After the expansion of the OBJECT_RULE_TEMPLATE, the ..._EXTRA_OBJS
171 # are added to the ..._OBJs list.
173 # There's another template, PROGRAM_TEMPLATE. It is called with all
174 # SIM_NAMES as well. It generates the link rules for each application,
175 # uses the ..._OBJS variable as input.
176 # It also generates a "phony" target with the executable's stem,
177 # to enable things like "make nova".
178 # The application clean rules, like "novaclean", are also created by means
182 # This tells make to use the ECLIPSE_ variables.
185 # The program's source directory
188 # Where the program's modules go to
189 ECLIPSE_OBJ_DIR
=eclipse
191 # Because the OBJ_DIR is no SRC_DIR, we will add it to the list of items
192 # to delete with "make clean".
193 CLEANSTUFF
+=$(ECLIPSE_OBJ_DIR
)
195 # The executable name. Can be left out if only rules for object files should
196 # be generated. The common parts leave this blank.
199 # The source file names without extension relative to the SRC_DIR
200 # Other sources (relative to the current directory) can be added by means
201 # of the EXTRA_MODULES variable (see PDP10)
202 ECLIPSE_MODULES
=eclipse_cpu eclipse_tt nova_sys nova_dkp nova_dsk nova_lp \
203 nova_mta nova_plt nova_pt nova_clk nova_tt1 nova_qty
205 # The C compiler flags used to build the MODULES' and EXTRA_MODULES' object
207 ECLIPSE_CFLAGS
=-DECLIPSE
-DUSE_INT64
209 # Objects that are defined in another program/collection. Must be the
210 # object file names relative to the current directory,
211 # for example "H316/h316_cpu.o".
212 # Those object files are compiled by their own collection's rules!
213 ECLIPSE_EXTRA_OBJS
+=$(COMMON_INT64_OBJS
)
215 # Extra dependencies for the program's/collection's modules.
216 ECLIPSE_EXTRA_DEPS
+=$(COMMON_SRC_DIR
)/*.h
220 ################################################################################
228 PDP1_MODULES
= pdp1_lp pdp1_cpu pdp1_stddev pdp1_sys pdp1_dt pdp1_drm \
230 PDP1_EXTRA_OBJS
+=$(COMMON_OBJS
)
231 PDP1__EXTRA_DEPS
+=$(COMMON_SRC_DIR
)/*.h
235 ################################################################################
240 PDP18_MODULES
= pdp18b_dt pdp18b_drm pdp18b_cpu\
241 pdp18b_lp pdp18b_mt pdp18b_rf\
242 pdp18b_rp pdp18b_stddev pdp18b_sys\
243 pdp18b_rb pdp18b_tt1 pdp18b_fpp
249 CLEANSTUFF
+=$(PDP4_OBJ_DIR
)
250 PDP4_MODULES
=$(PDP18_MODULES
)
252 PDP4_EXTRA_OBJS
+=$(COMMON_OBJS
)
253 PDP4_EXTRA_DEPS
+=$(COMMON_SRC_DIR
)/*.h
259 CLEANSTUFF
+=$(PDP7_OBJ_DIR
)
260 PDP7_MODULES
=$(PDP18_MODULES
)
262 PDP7_EXTRA_OBJS
+=$(COMMON_OBJS
)
263 PDP7_EXTRA_DEPS
+=$(COMMON_SRC_DIR
)/*.h
269 CLEANSTUFF
+=$(PDP9_OBJ_DIR
)
270 PDP9_MODULES
=$(PDP18_MODULES
)
272 PDP9_EXTRA_OBJS
+=$(COMMON_OBJS
)
273 PDP9_EXTRA_DEPS
+=$(COMMON_SRC_DIR
)/*.h
279 CLEANSTUFF
+=$(PDP15_OBJ_DIR
)
280 PDP15_MODULES
=$(PDP18_MODULES
)
282 PDP15_EXTRA_OBJS
+=$(COMMON_OBJS
)
283 PDP15_EXTRA_DEPS
+=$(COMMON_SRC_DIR
)/*.h
287 ################################################################################
295 PDP8_MODULES
=pdp8_cpu pdp8_clk pdp8_df \
296 pdp8_dt pdp8_lp pdp8_mt \
297 pdp8_pt pdp8_rf pdp8_rk \
298 pdp8_rx pdp8_sys pdp8_tt \
299 pdp8_ttx pdp8_rl pdp8_tsc \
300 pdp8_td pdp8_ct pdp8_fpp
301 PDP8_EXTRA_OBJS
+=$(COMMON_OBJS
)
302 PDP8_EXTRA_DEPS
+=$(COMMON_SRC_DIR
)/*.h
306 ################################################################################
313 PDP10_MODULES
= pdp10_fe pdp10_cpu \
314 pdp10_ksio pdp10_lp20 pdp10_mdfp \
315 pdp10_pag pdp10_rp pdp10_sys \
316 pdp10_tim pdp10_tu pdp10_xtnd\
318 PDP10_EXTRA_MODULES
=$(PDP11_DIR
)/pdp11_dz
$(PDP11_DIR
)/pdp11_pt\
319 $(PDP11_DIR
)/pdp11_ry
$(PDP11_DIR
)/pdp11_xu\
320 $(PDP11_DIR
)/pdp11_cr
322 PDP10_EXTRA_DEPS
=$(PDP11_DIR
)/*.h
324 PDP10_CFLAGS
=-DVM_PDP10
-DUSE_INT64
-I
$(PDP11_DIR
)
325 PDP10_EXTRA_OBJS
+=$(COMMON_INT64_OBJS
)
326 PDP10_EXTRA_DEPS
+=$(COMMON_INT64_SRC_DIR
)/*.h
330 ################################################################################
337 PDP11_MODULES
= pdp11_fp pdp11_cpu pdp11_dz \
338 pdp11_cis pdp11_lp pdp11_rk \
339 pdp11_rl pdp11_rp pdp11_rx \
340 pdp11_stddev pdp11_sys pdp11_tc \
341 pdp11_tm pdp11_ts pdp11_io \
342 pdp11_rq pdp11_tq pdp11_pclk \
343 pdp11_ry pdp11_pt pdp11_hk \
344 pdp11_xq pdp11_xu pdp11_vh \
345 pdp11_rh pdp11_tu pdp11_cpumod \
346 pdp11_cr pdp11_rf pdp11_dl \
347 pdp11_ta pdp11_rc pdp11_kg \
351 PDP11_CFLAGS
=-DVM_PDP11
352 PDP11_EXTRA_OBJS
+=$(COMMON_OBJS
)
353 PDP11_EXTRA_DEPS
+=$(COMMON_SRC_DIR
)/*.h
357 ################################################################################
365 VAX_MODULES
=vax_cpu vax_cpu1 vax_fpa vax_io \
366 vax_cis vax_octa vax_cmode \
367 vax_mmu vax_stddev vax_sysdev \
368 vax_sys vax_syscm vax_syslist
370 VAX_EXTRA_MODULES
=$(PDP11_DIR
)/pdp11_rl
$(PDP11_DIR
)/pdp11_rq
$(PDP11_DIR
)/pdp11_ts \
371 $(PDP11_DIR
)/pdp11_dz
$(PDP11_DIR
)/pdp11_lp
$(PDP11_DIR
)/pdp11_tq \
372 $(PDP11_DIR
)/pdp11_xq
$(PDP11_DIR
)/pdp11_ry \
373 $(PDP11_DIR
)/pdp11_vh
$(PDP11_DIR
)/pdp11_cr
375 VAX_EXTRA_DEPS
=$(PDP11_DIR
)/*.h
376 VAX_CFLAGS
=-DVM_VAX
-DUSE_INT64
-DUSE_ADDR64
-I
${PDP11_DIR}
377 VAX_EXTRA_OBJS
+=$(COMMON_INT64_ADDR64_OBJS
)
378 VAX_EXTRA_DEPS
+=$(COMMON_INT64_ADDR64_SRC_DIR
)/*.h
382 ################################################################################
390 VAX780_OBJ_DIR
=vax780
391 VAX780_MODULES
=vax_cpu vax_cpu1 vax_fpa \
392 vax_cis vax_octa vax_cmode \
393 vax_mmu vax_sys vax_syscm \
394 vax780_stddev vax780_sbi \
395 vax780_mem vax780_uba vax780_mba \
396 vax780_fload vax780_syslist \
398 VAX780_EXTRA_MODULES
=${PDP11_DIR}/pdp11_rl
${PDP11_DIR}/pdp11_rq \
399 ${PDP11_DIR}/pdp11_ts
${PDP11_DIR}/pdp11_dz \
400 ${PDP11_DIR}/pdp11_lp
${PDP11_DIR}/pdp11_tq \
401 ${PDP11_DIR}/pdp11_xu
${PDP11_DIR}/pdp11_ry \
402 ${PDP11_DIR}/pdp11_cr
${PDP11_DIR}/pdp11_rp \
403 ${PDP11_DIR}/pdp11_tu
${PDP11_DIR}/pdp11_hk
405 VAX780_CFLAGS
=-DVM_VAX
-DVAX_780
-DUSE_INT64
-DUSE_ADDR64
-I
$(PDP11_DIR
)
406 VAX780_EXTRA_DEPS
=$(PDP11_DIR
)/*.h
407 VAX780_EXTRA_OBJS
+=$(COMMON_INT64_ADDR64_OBJS
)
408 VAX780_EXTRA_DEPS
+=$(COMMON_INT64_ADDR64_SRC_DIR
)/*.h
412 ################################################################################
414 # Honeywell DDP-516/H316
420 H316_MODULES
= h316_stddev h316_lp h316_cpu h316_sys h316_mt h316_fhd h316_dp
421 H316_EXTRA_OBJS
+=$(COMMON_OBJS
)
422 H316_EXTRA_DEPS
+=$(COMMON_SRC_DIR
)/*.h
426 ################################################################################
428 # Hewlett Packard 2100
434 HP2100_MODULES
= hp2100_stddev hp2100_dp hp2100_dq \
435 hp2100_dr hp2100_lps hp2100_ms \
436 hp2100_mt hp2100_mux hp2100_cpu \
437 hp2100_fp hp2100_sys hp2100_lpt \
438 hp2100_ipl hp2100_ds hp2100_cpu0 \
439 hp2100_cpu1 hp2100_cpu2 hp2100_cpu3 \
440 hp2100_cpu4 hp2100_cpu5 hp2100_cpu6 \
441 hp2100_cpu7 hp2100_fp1 hp2100_baci
442 HP2100_CFLAGS
= -DHAVE_INT64
443 HP2100_EXTRA_OBJS
+=$(COMMON_OBJS
)
444 HP2100_EXTRA_DEPS
+=$(COMMON_SRC_DIR
)/*.h
448 ################################################################################
456 I1401_MODULES
= i1401_lp i1401_cpu i1401_iq \
457 i1401_cd i1401_mt i1401_dp \
459 I1401_EXTRA_OBJS
+=$(COMMON_OBJS
)
460 I1401_EXTRA_DEPS
+=$(COMMON_SRC_DIR
)/*.h
464 ################################################################################
472 I1620_MODULES
= i1620_cd i1620_dp i1620_pt \
473 i1620_tty i1620_cpu i1620_lp \
475 I1620_EXTRA_OBJS
+=$(COMMON_OBJS
)
476 I1620_EXTRA_DEPS
+=$(COMMON_SRC_DIR
)/*.h
480 ################################################################################
488 I7094_MODULES
= i7094_cpu i7094_cpu1 i7094_io \
489 i7094_cd i7094_clk i7094_com \
490 i7094_drm i7094_dsk i7094_sys \
491 i7094_lp i7094_mt i7094_binloader
492 I7094_OPT
= -DUSE_INT64
493 I7094_EXTRA_OBJS
+=$(COMMON_INT64_OBJS
)
494 I7094_EXTRA_DEPS
+=$(COMMON_INT64_SRC_DIR
)/*.h
498 ################################################################################
504 IBM1130_DIR
= Ibm1130
505 IBM1130_EXEC
= ibm1130
506 IBM1130_MODULES
= ibm1130_cpu ibm1130_cr \
507 ibm1130_disk ibm1130_stddev \
508 ibm1130_sys ibm1130_gdu \
509 ibm1130_gui ibm1130_prt \
510 ibm1130_fmt ibm1130_ptrp \
511 ibm1130_plot ibm1130_sca \
513 IBM1130_EXTRA_OBJS
+=$(COMMON_OBJS
)
514 IBM1130_EXTRA_DEPS
+=$(COMMON_SRC_DIR
)/*.h
518 ################################################################################
526 S3_MODULES
= s3_cd s3_cpu s3_disk s3_lp \
528 S3_EXTRA_OBJS
+=$(COMMON_OBJS
)
529 S3_EXTRA_DEPS
+=$(COMMON_SRC_DIR
)/*.h
533 ################################################################################
541 ID16_MODULES
= id16_cpu id16_sys id_dp \
542 id_fd id_fp id_idc id_io \
543 id_lp id_mt id_pas id_pt \
544 id_tt id_uvc id16_dboot id_ttp
545 ID16_EXTRA_OBJS
+=$(COMMON_OBJS
)
546 ID16_EXTRA_DEPS
+=$(COMMON_SRC_DIR
)/*.h
550 ################################################################################
558 ID32_MODULES
= id32_cpu id32_sys id32_dboot
559 ID32_EXTRA_OBJS
= $(foreach o
, id_dp \
560 id_fd id_fp id_idc id_io \
561 id_lp id_mt id_pas id_pt \
562 id_tt id_uvc id_ttp
, $(ID16_DIR
)/$(o
).o
)
563 ID32_EXTRA_OBJS
+=$(COMMON_OBJS
)
564 ID32_EXTRA_DEPS
+=$(COMMON_SRC_DIR
)/*.h
568 ################################################################################
576 ALTAIR_MODULES
= altair_sio altair_cpu altair_dsk \
578 ALTAIR_EXTRA_OBJS
+=$(COMMON_OBJS
)
579 ALTAIR_EXTRA_DEPS
+=$(COMMON_SRC_DIR
)/*.h
583 ################################################################################
589 ALTAIRZ80_EXEC
=altairz80
590 ALTAIRZ80_DIR
= AltairZ80
591 ALTAIRZ80_MODULES
= altairz80_cpu altairz80_cpu_nommu \
592 altairz80_dsk disasm \
593 altairz80_sio altairz80_sys \
594 altairz80_hdsk altairz80_net \
595 flashwriter2 i86_decode \
596 i86_ops i86_prim_ops \
597 i8272 insnsa insnsd \
599 s100_disk1a s100_disk2 \
600 s100_fif s100_mdriveh \
601 s100_mdsad s100_selchan \
602 s100_ss1 s100_64fdc \
603 s100_scp300f sim_imd \
605 ALTAIRZ80_EXTRA_OBJS
+=$(COMMON_OBJS
)
606 ALTAIRZ80_EXTRA_DEPS
+=$(COMMON_SRC_DIR
)/*.h
610 ################################################################################
618 GRI_MODULES
= gri_cpu gri_stddev gri_sys
619 GRI_EXTRA_OBJS
+=$(COMMON_OBJS
)
620 GRI_EXTRA_DEPS
+=$(COMMON_SRC_DIR
)/*.h
624 ################################################################################
626 # Royal-Mcbee LGP-30, LGP-21
632 LGP_MODULES
= lgp_cpu lgp_stddev lgp_sys
633 LGP_EXTRA_OBJS
+=$(COMMON_OBJS
)
634 LGP_EXTRA_DEPS
+=$(COMMON_SRC_DIR
)/*.h
638 ################################################################################
640 # Scientific Data Systems SDS 940
646 SDS_MODULES
= sds_cpu sds_drm sds_dsk sds_io \
647 sds_lp sds_mt sds_mux sds_rad \
649 SDS_EXTRA_OBJS
+=$(COMMON_OBJS
)
650 SDS_EXTRA_DEPS
+=$(COMMON_SRC_DIR
)/*.h
654 ################################################################################
655 ################################################################################
657 # Here comes the generic stuff. Should be altered VERY carefully.
662 #################################
664 # The object file build rule template
667 define OBJECT_RULE_TEMPLATE
669 # Add the object file to the CLEANSTUFF list
670 $(1)_OBJS
+=$$(patsubst %.c
,%.o
, $$($(1)_OBJ_DIR
)/$$(notdir $(2)))
672 CLEANSTUFF
+=$$(patsubst %.c
,%.o
, $$($(1)_OBJ_DIR
)/$$(notdir $(2)))
674 $$(patsubst %.c
,%.o
,$$($(1)_OBJ_DIR
)/$$(notdir $(2))): $(2) $$($(1)_SRC_DIR
)/*.h
$$($(1)_EXTRA_DEPS
)
676 # Create output directory if it doesn't exist yet.
677 @if
[ ! -d
$$($(1)_OBJ_DIR
) ]; then echo
"MKDIR $$($(1)_OBJ_DIR)";\
678 mkdir
$$($(1)_OBJ_DIR
) 2>/dev
/null||true
; fi
681 $$(CC
) -c
-o
$$@
-I
$$($(1)_SRC_DIR
) $$(CFLAGS
) $$($(1)_CFLAGS
) $$<
684 @
$$(CC
) -c
-o
$$@
-I
$$($(1)_SRC_DIR
) $$(CFLAGS
) $$($(1)_CFLAGS
) $$<
690 ################################################################################
692 # The object file collection template
695 define OBJECT_COLLECT_TEMPLATE
697 # If no ..._OBJ_DIR is specified, use ..._DIR
698 ifeq (,$$($(1)_OBJ_DIR
))
699 $(1)_OBJ_DIR
=$$($(1)_DIR
)
702 # If no ..._SRC_DIR is specified, use ..._DIR
703 ifeq (,$$($(1)_SRC_DIR
))
704 $(1)_SRC_DIR
=$$($(1)_DIR
)
707 $(1)_SOURCES
=$$(foreach mod
, $$($(1)_MODULES
), $$($(1)_SRC_DIR
)/$$(mod
).c
)
708 $(1)_SOURCES
+=$$(foreach mod
, $$($(1)_EXTRA_MODULES
), $$(mod
).c
)
711 # They are generated by an inner template. Needed for flexibility.
713 $$(foreach src
, $$($(1)_SOURCES
), $$(eval
$$(call OBJECT_RULE_TEMPLATE
,$(1),$$(src
))))
715 $(1)_OBJS
+=$$($(1)_EXTRA_OBJS
)
720 ################################################################################
722 # The executable file build rule template
725 define PROGRAM_TEMPLATE
727 # All this is disabled if there's no executable to build.
729 ifneq (,$$($(1)_EXEC
))
731 # Add the executable to the CLEANSTUFF list
733 CLEANSTUFF
+=$$(TARGET_DIR
)/$$($(1)_EXEC
)$$(EXEC_SUFFIX
)
735 EXEC_TARGETS
+=$$($(1)_EXEC
)
737 # Generate a phony target with the simulator's name.
738 # Enables things like "make h316".
739 # On Windows this WILL NOT be "make h316.exe".
740 $$($(1)_EXEC
): $$(TARGET_DIR
)/$$($(1)_EXEC
)$$(EXEC_SUFFIX
)
743 $$(TARGET_DIR
)/$$($(1)_EXEC
)$$(EXEC_SUFFIX
): $$($(1)_OBJS
)
744 @if
[ ! -d
$$(TARGET_DIR
) ]; then echo
"MKDIR $$(TARGET_DIR)";\
745 mkdir
$$(TARGET_DIR
) 2>/dev
/null||true
;fi
748 $$(CC
) -o
$$@
$$(LDFLAGS
) $$($(1)_LDFLAGS
) $$^
751 @
$$(CC
) -o
$$@
$$(LDFLAGS
) $$($(1)_LDFLAGS
) $$^
755 $$($(1)_EXEC
)clean clean$$($(1)_EXEC
):
757 rm -f
$$(TARGET_DIR
)/$$($(1)_EXEC
)$$(EXEC_SUFFIX
)
760 @echo CLEAN
$$($(1)_EXEC
)
761 @
rm -f
$$(TARGET_DIR
)/$$($(1)_EXEC
)$$(EXEC_SUFFIX
)
766 .PHONY
: $$($(1)_EXEC
) clean$$($(1)_EXEC
) $$($(1)_EXEC
)clean
772 ################################################################################
774 #################################
776 # Use the template with SIM_NAMES
777 # This will generate all build rules for all object files and executables.
779 $(foreach sn
, $(SIM_NAMES
),$(eval
$(call OBJECT_COLLECT_TEMPLATE
,$(sn
))))
780 $(foreach sn
, $(SIM_NAMES
),$(eval
$(call PROGRAM_TEMPLATE
,$(sn
))))
783 #################################
790 #################################
792 # Output a little help
795 @echo Available targets
:
797 @echo
"all - Build all simulators"
798 @echo
"clean - Delete all generated files and directories"
800 @echo Simulators can explicitely built by the following targets
:
802 @for n in
$(EXEC_TARGETS
); do echo
" $$n" ; done
804 @echo The actual CC calls can be made visible with specifying VERBOSE
=something.
808 #################################
815 @
rm -rf
$(CLEANSTUFF
)
819 #################################
821 # Specify phony targets
824 .PHONY
: clean help
all default
827 ################################################################################
829 # This is the end of the game :-)
831 ################################################################################