tagged release 0.7.1
[parrot.git] / config / gen / makefiles / bcg.in
bloba3396aa89d29bfbdb90601488ef0b11d001a8305
1 RM_F                = @rm_f@
2 PERL                = @perl@
3 PARROT          = @build_dir@/parrot@exe@
4 #CONDITIONED_LINE(win32):LIBPARROT = @build_dir@/libparrot@a@
5 #INVERSE_CONDITIONED_LINE(win32):LIBPARROT = @build_dir@/@blib_dir@/libparrot@a@
6 O                       = @o@
7 LOAD_EXT            = @load_ext@
8 CC                  = @cc@
9 CC_INC              = @cc_inc@ -I@build_dir@/include
10 C_LIBS              = @libs@ 
11 CC_SHARED           = @cc_shared@
12 CFLAGS              = $(CC_INC) @ccflags@ @cc_debug@ @ccwarn@ @cc_hasjit@ @cg_flag@ @gc_flag@ $(CC_SHARED)
13 LINK_DYNAMIC    = @link_dynamic@
14 LINK                = @link@
15 LINKFLAGS           = @linkflags@ @link_debug@ @ld_debug@ 
16 LD                  = @ld@
17 #CONDITIONED_LINE(win32):LDFLAGS = @ldflags@ @ld_debug@ $(LIBPARROT)
18 #INVERSE_CONDITIONED_LINE(win32):LDFLAGS = @ldflags@ @ld_debug@ -L@build_dir@/blib/lib/ -lparrot
19 SHARE_EXT       = @share_ext@
20 LD_SHARE_FLAGS  = @ld_share_flags@
21 BUILD_PMC       = $(PERL) @build_dir@/tools/build/dynpmc.pl
22 SRC_PMC_DIR         = src/pmc
23 DEST_PMC_DIR    = @build_dir@/runtime/parrot/dynext
24 PMC_GROUP       = $(DEST_PMC_DIR)/bcg_group$(LOAD_EXT)
25 LIB_BCG         = @build_dir@/blib/lib/libbcg$(SHARE_EXT)
26 SRC_DIR         = src
27 INCLUDE_DIR     = include
28 CP              = @cp@
30 .SUFFIXES : .c .h .pmc .dump $(O) .str .pir .pbc
32 .c$(O) :
33         $(CC) $(CFLAGS) -I$(@D) @cc_o_out@$@ -c $<
35 BCG_H_FILES = \
36     $(INCLUDE_DIR)/bcg.h \
37     $(SRC_DIR)/bcg_private.h \
38     $(SRC_DIR)/bcg_logger.h \
39     $(SRC_DIR)/bcg_utils.h \
40     $(SRC_DIR)/bcg_reg_alloc.h \
41     $(SRC_DIR)/bcg_emitter.h
43 BCG_O_FILES  = \
44         $(SRC_DIR)/bcg_logger$(O) \
45         $(SRC_DIR)/bcg$(O) \
46         $(SRC_DIR)/bcg_utils$(O) \
47         $(SRC_DIR)/bcg_op$(O) \
48         $(SRC_DIR)/bcg_unit$(O) \
49         $(SRC_DIR)/bcg_reg_alloc_vanilla$(O) \
50         $(SRC_DIR)/bcg_emitter_pasm$(O)
52 PMCS = \
53  bcg
55 PMC_GEN_FILES = \
56  $(SRC_PMC_DIR)/*.dump \
57  $(SRC_PMC_DIR)/*.c \
58  $(SRC_PMC_DIR)/*.h \
59  $(SRC_PMC_DIR)/*$(O) \
60  $(SRC_PMC_DIR)/*$(LOAD_EXT) \
61  $(PMC_GROUP)
63 all: pmcs
67 # Build Targets
69 $(BCG_O_FILES): $(BCG_H_FILES)
71 $(LIB_BCG): $(BCG_O_FILES)
72         $(LD) $(LD_SHARE_FLAGS) $(LDFLAGS) @ld_out@$@ $(BCG_O_FILES) @libs@
73     $(CP) @build_dir@/blib/lib/libbcg$(SHARE_EXT) @build_dir@
75         
76 pmcs: $(LIB_BCG)
77         @cd $(SRC_PMC_DIR) && $(BUILD_PMC) generate $(PMCS)
78         @cd $(SRC_PMC_DIR) && $(BUILD_PMC) compile $(PMCS)
79         @cd $(SRC_PMC_DIR) && $(BUILD_PMC) linklibs $(PMCS)
80         @cd $(SRC_PMC_DIR) && $(BUILD_PMC) copy "--destination=$(DEST_PMC_DIR)" \
81                  $(PMCS)
85 # Test Targets
87 test: all
88         cd t && prove && cd ..
92 # Clean Targets
94 testclean: 
95         $(RM_F) t/*.pir
97 clean: testclean
98         $(RM_F) $(PMC_GEN_FILES)
99         $(RM_F) $(BCG_O_FILES)
100         $(RM_F) $(LIB_BCG)
102 realclean: clean
104 distclean: realclean