Changeset 227 for trunk/m2

Show
Ignore:
Timestamp:
07/13/06 22:52:40 (2 years ago)
Author:
krobillard
Message:

M2 - Added target_env/uc_name. A 'lib target on Linux & Windows can now bring in other libraries.

Location:
trunk/m2
Files:
6 modified

Legend:

Unmodified
Added
Removed
  • trunk/m2/m2

    r155 r227  
    1 #!/usr/local/bin/rebol -qs 
     1#!/usr/bin/rebol -qs 
    22 
    33REBOL [ 
     
    8484        target_env: context [ 
    8585                name: none 
     86                uc_name: none 
    8687                output_file: none 
    8788                link_cxx: false 
     
    114115                rule_text: none 
    115116 
    116                 rule_makeobj: func [cc flags obj src /local uc] [ 
     117                rule_makeobj: func [cc flags obj src] [ 
    117118                        ; Default to GNU 
    118                         uc: uppercase copy name 
    119                         rejoin [ "^(tab)$(" cc ") -c $(" uc flags ") -o " obj  
    120                                          " $(" uc "_INCPATH) " src ] 
     119                        rejoin [ "^(tab)$(" cc ") -c $(" uc_name flags ") -o " obj  
     120                                         " $(" uc_name "_INCPATH) " src ] 
    121121                ] 
    122122                makerule_cxx: func [obj src] [ link_cxx: true 
     
    382382        m2/add_target (make exe_target [ 
    383383                        name: basename 
     384                        uc_name: uppercase copy basename 
    384385                        cfg: make m2/configuration [] 
    385386                ]) blk 
     
    391392        m2/add_target (make lib_target [ 
    392393                        name: basename 
     394                        uc_name: uppercase copy basename 
    393395                        cfg: make m2/configuration [] 
    394396                ]) blk 
     
    401403        m2/add_target (make shlib_target [ 
    402404                        name: basename 
     405                        uc_name: uppercase copy basename 
    403406                        cfg: make m2/configuration [] 
    404407                ]) blk 
     
    410413        m2/add_target (make rule_target [ 
    411414                        name: basename 
     415                        uc_name: uppercase copy basename 
    412416                        cfg: make m2/configuration [] 
    413417                ]) blk 
  • trunk/m2/m2_cygwin.r

    r93 r227  
    180180    ] 
    181181 
    182     macro_text: function [] [uc] 
    183     [ 
    184         uc: uppercase name 
    185  
     182    macro_text: func [] 
     183    [ 
    186184        emit [ 
    187             uc "_CFLAGS   = " menv_cflags " " gnu_string "-D" defines eol 
    188             uc "_CXXFLAGS = $(" uc "_CFLAGS) " menv_cxxflags eol 
    189             uc "_INCPATH  = " gnu_string "-I" include_paths eol 
    190             uc "_LFLAGS   = " menv_lflags eol 
    191             uc "_LIBS     = " gnu_string "-L" link_paths " " 
     185            uc_name "_CFLAGS   = " menv_cflags " " gnu_string "-D" defines eol 
     186            uc_name "_CXXFLAGS = $(" uc_name "_CFLAGS) " menv_cxxflags eol 
     187            uc_name "_INCPATH  = " gnu_string "-I" include_paths eol 
     188            uc_name "_LFLAGS   = " menv_lflags eol 
     189            uc_name "_LIBS     = " gnu_string "-L" link_paths " " 
    192190                              gnu_string "-l" link_libs eol 
    193191        ] 
     
    195193        ;if cfg/qt [ 
    196194        ;    emit [ 
    197         ;        uc "_SRCMOC  = " expand_list_gnu srcmoc_files eol 
    198         ;        uc "_OBJMOC  = " expand_list_gnu objmoc_files eol 
     195        ;        uc_name "_SRCMOC  = " expand_list_gnu srcmoc_files eol 
     196        ;        uc_name "_OBJMOC  = " expand_list_gnu objmoc_files eol 
    199197        ;    ] 
    200198        ;] 
    201199 
    202200        emit [ 
    203             ;uc "_HEADERS  = " expand_list_gnu header_files eol 
    204             uc "_SOURCES  = " expand_list_gnu source_files eol 
    205             uc "_OBJECTS  = " expand_list_gnu object_files eol 
     201            ;uc_name "_HEADERS  = " expand_list_gnu header_files eol 
     202            uc_name "_SOURCES  = " expand_list_gnu source_files eol 
     203            uc_name "_OBJECTS  = " expand_list_gnu object_files eol 
    206204        ] 
    207205    ] 
     
    210208    ; TODO: if cfg/qt [ "rm -f $(_SRCMOC)" ] 
    211209 
    212     dist: function [] [uc] [ 
    213         uc: uppercase name 
    214         rejoin [" $(" uc "_SOURCES)" ] 
    215     ] 
    216  
    217     rule_text: function [] [uc] 
    218     [ 
    219         uc: uppercase name 
     210    dist: function [] [uc_name] [ 
     211        uc_name: uppercase name 
     212        rejoin [" $(" uc_name "_SOURCES)" ] 
     213    ] 
     214 
     215    rule_text: func [] 
     216    [ 
    220217        emit [ eol output_file ": " obj_macro m2/local_libs link_libs 
    221             {^/^(tab)$(LINK) -o $@ $(} uc {_LFLAGS) } obj_macro 
    222             { $(} uc {_LIBS)} eol 
     218            {^/^(tab)$(LINK) -o $@ $(} uc_name {_LFLAGS) } obj_macro 
     219            { $(} uc_name {_LIBS)} eol 
    223220        ] 
    224221    ] 
  • trunk/m2/m2_linux.r

    r93 r227  
    105105    config: 
    106106    [ 
    107         obj_macro: rejoin [ "$(" uppercase name "_OBJECTS)" ] 
     107        obj_macro: rejoin [ "$(" uc_name "_OBJECTS)" ] 
    108108 
    109109        cflags {-pipe} 
     
    168168    ] 
    169169 
    170     macro_text: function [] [uc] 
    171     [ 
    172         uc: uppercase name 
    173  
     170    macro_text: func [] 
     171    [ 
    174172        emit [ 
    175             uc "_CFLAGS   = " menv_cflags " " gnu_string "-D" defines eol 
    176             uc "_CXXFLAGS = $(" uc "_CFLAGS) " menv_cxxflags eol 
    177             uc "_INCPATH  = " gnu_string "-I" include_paths eol 
    178             uc "_LFLAGS   = " menv_lflags eol 
    179             uc "_LIBS     = " gnu_string "-L" link_paths " " 
     173            uc_name "_CFLAGS   = " menv_cflags " " gnu_string "-D" defines eol 
     174            uc_name "_CXXFLAGS = $(" uc_name "_CFLAGS) " menv_cxxflags eol 
     175            uc_name "_INCPATH  = " gnu_string "-I" include_paths eol 
     176            uc_name "_LFLAGS   = " menv_lflags eol 
     177            uc_name "_LIBS     = " gnu_string "-L" link_paths " " 
    180178                              gnu_string "-l" link_libs eol 
    181179        ] 
     
    183181        ;if cfg/qt [ 
    184182        ;    emit [ 
    185         ;        uc "_SRCMOC  = " expand_list_gnu srcmoc_files eol 
    186         ;        uc "_OBJMOC  = " expand_list_gnu objmoc_files eol 
     183        ;        uc_name "_SRCMOC  = " expand_list_gnu srcmoc_files eol 
     184        ;        uc_name "_OBJMOC  = " expand_list_gnu objmoc_files eol 
    187185        ;    ] 
    188186        ;] 
    189187 
    190188        emit [ 
    191             ;uc "_HEADERS  = " expand_list_gnu header_files eol 
    192             uc "_SOURCES  = " expand_list_gnu source_files eol 
    193             uc "_OBJECTS  = " expand_list_gnu object_files eol 
     189            ;uc_name "_HEADERS  = " expand_list_gnu header_files eol 
     190            uc_name "_SOURCES  = " expand_list_gnu source_files eol 
     191            uc_name "_OBJECTS  = " expand_list_gnu object_files eol 
    194192        ] 
    195193    ] 
     
    198196    ; TODO: if cfg/qt [ "rm -f $(_SRCMOC)" ] 
    199197 
    200     dist: function [] [uc] [ 
    201         uc: uppercase name 
    202         rejoin [" $(" uc "_SOURCES)" ] 
    203     ] 
    204  
    205     rule_text: function [] [uc] 
    206     [ 
    207         uc: uppercase name 
     198    dist: func [] [ 
     199        rejoin [" $(" uc_name "_SOURCES)" ] 
     200    ] 
     201 
     202    rule_text: func [] 
     203    [ 
    208204        emit [ eol output_file ": " obj_macro m2/local_libs link_libs 
    209205            {^/^(tab)$(} 
    210206                either link_cxx ["LINK_CXX"]["LINK"] 
    211                 {) -o $@ $(} uc {_LFLAGS) } obj_macro 
    212             { $(} uc {_LIBS)} eol 
     207                {) -o $@ $(} uc_name {_LFLAGS) } obj_macro 
     208            { $(} uc_name {_LIBS)} eol 
    213209        ] 
    214210    ] 
     
    222218    ] 
    223219 
    224     rule_text: function [] [] 
    225     [ 
    226         emit [ eol output_file ": " obj_macro 
    227             "^/^(tab)ar rc $@ " obj_macro " $(" uppercase name "_LFLAGS)" 
    228             "^/^(tab)ranlib $@^/" 
     220    rule_text: func [] 
     221    [ 
     222        emit [eol output_file ": " obj_macro] 
     223        emit either empty? link_libs [[ 
     224            "^/^-ar rc $@ " obj_macro " $(" uc_name "_LFLAGS)" 
     225        ]] [[ 
     226            ; Concatenate other libraries. 
     227            "^/^-ld -Ur -o " objdir name "lib.o $^^ $(" uc_name 
     228                "_LIBS) $(" uc_name "_LFLAGS)" 
     229            "^/^-ar rc $@ " objdir name "lib.o" 
     230        ]] 
     231        emit "^/^-ranlib $@^/" 
     232        if cfg/release [ 
     233            emit "^-strip -d $@^/" 
    229234        ] 
    230235    ] 
  • trunk/m2/m2_macx.r

    r155 r227  
    9595    built_obj_rule: none 
    9696 
    97     uc_name: none 
    98  
    9997    cfg_bundle: none 
    10098    cfg_universal: none 
     
    104102    config: 
    105103    [ 
    106         uc_name: uppercase copy name 
    107  
    108104        obj_macro: rejoin [ "$(" uc_name "_OBJECTS)" ] 
    109105 
  • trunk/m2/m2_sun.r

    r93 r227  
    167167    ] 
    168168 
    169     macro_text: function [] [uc] 
    170     [ 
    171         uc: uppercase name 
    172  
     169    macro_text: func [] 
     170    [ 
    173171        emit [ 
    174             uc "_CFLAGS   = " menv_cflags " " gnu_string "-D" defines eol 
    175             uc "_CXXFLAGS = $(" uc "_CFLAGS) " menv_cxxflags eol 
    176             uc "_INCPATH  = " gnu_string "-I" include_paths eol 
    177             uc "_LFLAGS   = " menv_lflags eol 
    178             uc "_LIBS     = " gnu_string "-L" link_paths " " 
     172            uc_name "_CFLAGS   = " menv_cflags " " gnu_string "-D" defines eol 
     173            uc_name "_CXXFLAGS = $(" uc_name "_CFLAGS) " menv_cxxflags eol 
     174            uc_name "_INCPATH  = " gnu_string "-I" include_paths eol 
     175            uc_name "_LFLAGS   = " menv_lflags eol 
     176            uc_name "_LIBS     = " gnu_string "-L" link_paths " " 
    179177                              gnu_string "-l" link_libs eol 
    180178        ] 
     
    182180        ;if cfg/qt [ 
    183181        ;    emit [ 
    184         ;        uc "_SRCMOC  = " expand_list_gnu srcmoc_files eol 
    185         ;        uc "_OBJMOC  = " expand_list_gnu objmoc_files eol 
     182        ;        uc_name "_SRCMOC  = " expand_list_gnu srcmoc_files eol 
     183        ;        uc_name "_OBJMOC  = " expand_list_gnu objmoc_files eol 
    186184        ;    ] 
    187185        ;] 
    188186 
    189187        emit [ 
    190             ;uc "_HEADERS  = " expand_list_gnu header_files eol 
    191             uc "_SOURCES  = " expand_list_gnu source_files eol 
    192             uc "_OBJECTS  = " expand_list_gnu object_files eol 
     188            ;uc_name "_HEADERS  = " expand_list_gnu header_files eol 
     189            uc_name "_SOURCES  = " expand_list_gnu source_files eol 
     190            uc_name "_OBJECTS  = " expand_list_gnu object_files eol 
    193191        ] 
    194192    ] 
     
    197195    ; TODO: if cfg/qt [ "rm -f $(_SRCMOC)" ] 
    198196 
    199     dist: function [] [uc] [ 
    200         uc: uppercase name 
    201         rejoin [" $(" uc "_SOURCES)" ] 
    202     ] 
    203  
    204     rule_text: function [] [uc] 
    205     [ 
    206         uc: uppercase name 
     197    dist: func [] [ 
     198        rejoin [" $(" uc_name "_SOURCES)" ] 
     199    ] 
     200 
     201    rule_text: func [] 
     202    [ 
    207203        emit [ eol output_file ": " obj_macro m2/local_libs link_libs 
    208204            {^/^(tab)$(} 
    209205                either link_cxx ["LINK_CXX"]["LINK"] 
    210                 {) -o $@ $(} uc {_LFLAGS) } obj_macro 
    211             { $(} uc {_LIBS)} eol 
     206                {) -o $@ $(} uc_name {_LFLAGS) } obj_macro 
     207            { $(} uc_name {_LIBS)} eol 
    212208        ] 
    213209    ] 
  • trunk/m2/m2_visualc.r

    r93 r227  
    102102    config: 
    103103    [ 
    104         obj_macro: rejoin [ "$(" uppercase name "_OBJECTS)" ] 
     104        obj_macro: rejoin [ "$(" uc_name "_OBJECTS)" ] 
    105105 
    106106        cflags {/nologo} 
     
    113113            lflags {/subsystem:windows} 
    114114        ] 
    115  
    116         libs {user32 gdi32} 
    117115 
    118116        either cfg/warn [ 
     
    159157        output_file: rejoin [ conv_slash output_dir name ".exe" ] 
    160158        do config 
     159        libs {user32}    ; gdi32 
    161160        if cfg/qt [ 
    162161            either cfg/qt = 3 [ 
     
    195194    ] 
    196195 
    197     macro_text: function [] [uc] 
    198     [ 
    199         uc: uppercase name 
    200  
     196    macro_text: func [] 
     197    [ 
    201198        emit [ 
    202             uc "_CFLAGS   = " menv_cflags " " gnu_string "/D" defines eol 
    203             uc "_CXXFLAGS = $(" uc "_CFLAGS) " menv_cxxflags eol 
    204             uc "_INCPATH  = " gnu_string "/I" include_paths eol 
    205             uc "_LFLAGS   = " menv_lflags eol 
    206             uc "_LIBS     = " gnu_string "/libpath:" link_paths " " 
     199            uc_name "_CFLAGS   = " menv_cflags " " gnu_string "/D" defines eol 
     200            uc_name "_CXXFLAGS = $(" uc_name "_CFLAGS) " menv_cxxflags eol 
     201            uc_name "_INCPATH  = " gnu_string "/I" include_paths eol 
     202            uc_name "_LFLAGS   = " menv_lflags eol 
     203            uc_name "_LIBS     = " gnu_string "/libpath:" link_paths " " 
    207204                              lib_string link_libs eol 
    208205        ] 
    209206 
    210207        emit [ 
    211             uc "_SOURCES  = " expand_list_gnu source_files eol 
    212             uc "_OBJECTS  = " expand_list_gnu object_files eol 
     208            uc_name "_SOURCES  = " expand_list_gnu source_files eol 
     209            uc_name "_OBJECTS  = " expand_list_gnu object_files eol 
    213210        ] 
    214211    ] 
     
    216213    clean: does [ rejoin [ "^(tab)-@del " output_file " " obj_macro eol ] ] 
    217214 
    218     dist: function [] [uc] [ 
    219         uc: uppercase name 
    220         rejoin [" $(" uc "_SOURCES) $(" uc "_HEADERS)" ] 
    221     ] 
    222  
    223     rule_text: function [] [uc] 
    224     [ 
    225         uc: uppercase name 
     215    dist: func [] [ 
     216        rejoin [" $(" uc_name "_SOURCES) $(" uc_name "_HEADERS)" ] 
     217    ] 
     218 
     219    rule_text: func [] 
     220    [ 
    226221        emit [ eol output_file ": " obj_macro m2/local_libs link_libs 
    227             {^/^(tab)$(LINK) /out:$@ $(} uc {_LFLAGS) } obj_macro 
    228             { $(} uc {_LIBS)} eol 
    229         ] 
    230     ] 
    231  
    232     rule_makeobj: func [cc flags obj src /local uc] [ 
    233         uc: uppercase name 
    234         rejoin [ "^(tab)$(" cc ") /c $(" uc flags ") /Fo" obj  
    235                  " $(" uc "_INCPATH) " src ] 
     222            {^/^(tab)$(LINK) /out:$@ $(} uc_name {_LFLAGS) } obj_macro 
     223            { $(} uc_name {_LIBS)} eol 
     224        ] 
     225    ] 
     226 
     227    rule_makeobj: func [cc flags obj src] [ 
     228        rejoin [ "^(tab)$(" cc ") /c $(" uc_name flags ") /Fo" obj  
     229                 " $(" uc_name "_INCPATH) " src ] 
    236230    ] 
    237231] 
     
    246240    rule_text: function [] [] 
    247241    [ 
    248         emit [ eol output_file ": " obj_macro 
    249             "^/^(tab)lib /nologo /out:$@ " obj_macro " $(" uppercase name 
    250             "_LFLAGS)^/" 
     242        emit [ 
     243            eol output_file ": " obj_macro 
     244            "^/^(tab)lib /nologo /out:$@ " obj_macro " $(" uc_name 
     245            "_LIBS) $(" uc_name "_LFLAGS)^/" 
    251246        ] 
    252247    ]