Changeset 8246 for trunk

Show
Ignore:
Timestamp:
28/11/11 21:26:11 (6 months ago)
Author:
westram
Message:
  • eliminated several main()'s from lib/obj-code
    • replaced by ARB_main
    • link executable with wrapper-object (main->ARB_main)
  • unit-tests now use their own main()
    • this ensures that all static data is initialized when the unit-test starts (previous behavior was working, but undefined)
    • all tests pass (versus [8243])
Location:
trunk
Files:
1 added
28 modified

Legend:

Unmodified
Added
Removed
  • trunk/AISC_MKPTPS/Makefile

    r8220 r8246  
    99 
    1010$(BINARY): $(OBJECTS) 
    11         $(LINK_EXECUTABLE) $@ $(OBJECTS) $(EXECLIBS) 
     11        $(LINK_EXECUTABLE) $@ $(use_ARB_main) $(OBJECTS) $(EXECLIBS) 
    1212 
    1313.cxx.o: 
  • trunk/AISC_MKPTPS/mkptypes.cxx

    r8244 r8246  
    7979static int glastc       = ' ';                      // last char. seen by getsym() 
    8080 
    81 static char *current_file   = 0;                    // name of current file 
    82 static char *current_dir    = 0;                    // name of current directory 
    83 static char *header_comment = 0;                    // comment written into header 
    84 static long  linenum        = 1L;                   // line number in current file 
     81static char       *current_file   = 0;              // name of current file 
     82static char       *current_dir    = 0;              // name of current directory 
     83static const char *header_comment = 0;              // comment written into header 
     84static long        linenum        = 1L;             // line number in current file 
    8585 
    8686static char const *macro_name = "P_";               //   macro to use for prototypes 
     
    14801480} 
    14811481 
    1482 int main(int argc, char **argv) { 
     1482int ARB_main(int argc, const char *argv[]) { 
    14831483    FILE *f; 
    1484     char *t, *iobuf; 
     1484    const char *t; 
     1485    char *iobuf; 
    14851486    int exit_if_noargs = 0; 
    14861487 
  • trunk/CONVERTALN/main.cxx

    r7200 r8246  
    215215    return strcmp(arg, "-h") == 0 || strcmp(arg, "--help") == 0; 
    216216} 
    217 static bool command_line_conversion(int argc, char** argv, FormattedFile& in, FormattedFile& out) { 
     217static bool command_line_conversion(int argc, const char * const *argv, FormattedFile& in, FormattedFile& out) { 
    218218    for (int c = 1; c<argc; c++) { 
    219219        if (is_help_req(argv[c])) { 
     
    244244} 
    245245 
    246 int main(int argc, char *argv[]) { 
     246int ARB_main(int argc, const char *argv[]) { 
    247247    int exitcode = EXIT_SUCCESS; 
    248248    try { 
  • trunk/CONVERTALN/prototypes.h

    r7187 r8246  
    6363 
    6464/* main.cxx */ 
     65int ARB_main(int argc, const char *argv[]); 
    6566 
    6667/* mg.cxx */ 
  • trunk/DBSERVER/db_server.cxx

    r8103 r8246  
    249249} 
    250250 
    251 int main(int argc, char **argv) { 
    252     arb_params *params = arb_trace_argv(&argc, argv); 
     251int ARB_main(int argc, const char *argv[]) { 
     252    arb_params *params = arb_trace_argv(&argc, (const char **)argv); 
    253253 
    254254    bool        help  = false; 
  • trunk/DIST/DI_main.cxx

    r8036 r8246  
    5757 
    5858    { 
    59         arb_params *params = arb_trace_argv(&argc, argv); 
     59        arb_params *params = arb_trace_argv(&argc, (const char **)argv); 
    6060        if (argc==2) { 
    6161            freedup(params->db_server, argv[1]); 
  • trunk/EDIT4/ED4_main.cxx

    r8036 r8246  
    490490} 
    491491 
    492 int main(int argc, char **argv) { 
     492int ARB_main(int argc, const char *argv[]) { 
    493493    const char *data_path = ":"; 
    494494    const char *err = NULL; 
  • trunk/HELP_SOURCE/Makefile

    r7819 r8246  
    228228$(HELP2XML): arb_help2xml.o $(LIBS) 
    229229# @@@ when backtracing code is in libCORE, link vs ARBDB is no longer needed!  
    230         $(LINK_EXECUTABLE) $@ $< $(LIBS) $(LIBPATH) $(ARBDB_LIB) $(EXECLIBS) 
     230        $(LINK_EXECUTABLE) $@ $(use_ARB_main) $< $(LIBS) $(LIBPATH) $(ARBDB_LIB) $(EXECLIBS) 
    231231 
    232232 
  • trunk/HELP_SOURCE/arb_help2xml.cxx

    r7815 r8246  
    13191319} 
    13201320 
    1321 int main(int argc, char *argv[]) { 
     1321int ARB_main(int argc, const char *argv[]) { 
    13221322    Helpfile help; 
    13231323    string   arb_help; 
  • trunk/Makefile

    r8240 r8246  
    682682ARCHS_PT_SERVER_LINK = $(ARCHS_PT_SERVER) 
    683683endif 
     684 
     685# --------------------------------------- 
     686# wrap main() 
     687 
     688use_ARB_main=$(ARBHOME)/SOURCE_TOOLS/arb_main.o 
     689 
     690arbmainwrapper: 
     691        $(MAKE) -C SOURCE_TOOLS mainwrapper 
     692 
    684693 
    685694# --------------------------------------- 
     
    821830                echo "$(SEP) Link $@"; \ 
    822831                echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_NTREE) $(ARCHS_CLIENT_PROBE) $(GUI_LIBS) $(EXECLIBS)" ; \ 
    823                 $(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_NTREE) $(ARCHS_CLIENT_PROBE) $(GUI_LIBS) $(EXECLIBS) && \ 
     832                $(LINK_EXECUTABLE) $@ $(use_ARB_main) $(LIBPATH) $(ARCHS_NTREE) $(ARCHS_CLIENT_PROBE) $(GUI_LIBS) $(EXECLIBS) && \ 
    824833                echo "$(SEP) Link $@ [done]"; \ 
    825834                ) 
     
    857866                echo "$(SEP) Link $@"; \ 
    858867                echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_EDIT4) $(ARCHS_CLIENT_NAMES) $(GUI_LIBS) $(LIBS_EDIT4) $(EXECLIBS)" ; \ 
    859                 $(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_EDIT4) $(ARCHS_CLIENT_NAMES) $(GUI_LIBS) $(LIBS_EDIT4) $(EXECLIBS) && \ 
     868                $(LINK_EXECUTABLE) $@ $(use_ARB_main) $(LIBPATH) $(ARCHS_EDIT4) $(ARCHS_CLIENT_NAMES) $(GUI_LIBS) $(LIBS_EDIT4) $(EXECLIBS) && \ 
    860869                echo "$(SEP) Link $@ [done]"; \ 
    861870                ) 
     
    964973                echo "$(SEP) Link $@"; \ 
    965974                echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_CONVERT_ALN) $(LIBS) $(ARBDB_LIB) $(EXECLIBS)"; \ 
    966                 $(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_CONVERT_ALN) $(LIBS) $(ARBDB_LIB) $(EXECLIBS) && \ 
     975                $(LINK_EXECUTABLE) $@ $(use_ARB_main) $(LIBPATH) $(ARCHS_CONVERT_ALN) $(LIBS) $(ARBDB_LIB) $(EXECLIBS) && \ 
    967976                echo "$(SEP) Link $@ [done]"; \ 
    968977                ) 
     
    10281037                echo "$(SEP) Link $@"; \ 
    10291038                echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_DBSERVER) $(ARBDB_LIB) PROBE_COM/client.a $(SYSLIBS) $(EXECLIBS)" ; \ 
    1030                 $(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_DBSERVER) $(ARBDB_LIB) PROBE_COM/client.a $(SYSLIBS) $(EXECLIBS) && \ 
     1039                $(LINK_EXECUTABLE) $@ $(use_ARB_main) $(LIBPATH) $(ARCHS_DBSERVER) $(ARBDB_LIB) PROBE_COM/client.a $(SYSLIBS) $(EXECLIBS) && \ 
    10311040                echo "$(SEP) Link $@ [done]"; \ 
    10321041                ) 
     
    10511060                echo "$(SEP) Link $@"; \ 
    10521061                echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_PROBE_LINK) $(ARBDB_LIB) $(ARCHS_CLIENT_PROBE) PROBE_COM/server.a $(SYSLIBS) $(EXECLIBS)" ; \ 
    1053                 $(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_PROBE_LINK) $(ARBDB_LIB) $(ARCHS_CLIENT_PROBE) PROBE_COM/server.a $(SYSLIBS) $(EXECLIBS) && \ 
     1062                $(LINK_EXECUTABLE) $@ $(use_ARB_main) $(LIBPATH) $(ARCHS_PROBE_LINK) $(ARBDB_LIB) $(ARCHS_CLIENT_PROBE) PROBE_COM/server.a $(SYSLIBS) $(EXECLIBS) && \ 
    10541063                echo "$(SEP) Link $@ [done]"; \ 
    10551064                ) 
     
    14911500LINKSTAMP=SOURCE_TOOLS/generate_all_links.stamp 
    14921501 
    1493 links: checks $(LINKSTAMP) 
     1502links: checks $(LINKSTAMP) arbmainwrapper 
    14941503 
    14951504forcelinks: 
  • trunk/NALIGNER/ali_global.cxx

    r7811 r8246  
    6060 
    6161 
    62 void ALI_GLOBAL::init(int *argc, char *argv[]) 
     62void ALI_GLOBAL::init(int *argc, const char *argv[]) 
    6363{ 
    6464    int kill, i, h, j, ret; 
    65     char *pos; 
     65    const char *pos; 
    6666    arb_params *params; 
    6767    float fl; 
  • trunk/NALIGNER/ali_global.hxx

    r7811 r8246  
    2121 
    2222    // misc 
    23     char        *prog_name; 
    24     char        *species_name; 
    25     char        *default_file; 
    26     char        *db_server; 
    27     char        *pt_server; 
     23    const char *prog_name; 
     24    char       *species_name; 
     25    char       *default_file; 
     26    char       *db_server; 
     27    char       *pt_server; 
    2828 
    2929    // other classes 
     
    4545 
    4646    // functions 
    47     void init(int *argc, char *argv[]); 
     47    void init(int *argc, const char *argv[]); 
    4848}; 
    4949 
  • trunk/NALIGNER/ali_main.cxx

    r6385 r8246  
    216216 
    217217 
    218 int main(int argc, char **argv) 
     218int main(int argc, const char *argv[]) 
    219219{ 
    220220    int                            i; 
  • trunk/NAMES/names.cxx

    r8103 r8246  
    11681168    arb_params *params; 
    11691169 
    1170     params                 = arb_trace_argv(&argc, argv); 
     1170    params                 = arb_trace_argv(&argc, (const char **)argv); 
    11711171    const char *executable = argv[0]; 
    11721172 
  • trunk/NTREE/NT_main.cxx

    r8103 r8246  
    515515} 
    516516 
    517 int main(int argc, char **argv) { 
     517int ARB_main(int argc, const char *argv[]) { 
    518518    aw_initstatus(); 
    519519    GB_set_verbose(); 
  • trunk/PROBE/PT_buildtree.cxx

    r8103 r8246  
    393393#endif 
    394394 
    395 int main(int argc, const char*argv[]); 
    396395void NOTEST_SLOW_maybe_build_tree() { 
    397396    // does only test sth if DB is present. 
     
    412411#if 1 
    413412        // build 
    414         int res = main(ARRAY_ELEMS(argv), argv); 
     413        int res = ARB_main(ARRAY_ELEMS(argv), argv); 
    415414        TEST_ASSERT_EQUAL(res, EXIT_SUCCESS); 
    416415#endif 
  • trunk/PROBE/PT_main.cxx

    r8103 r8246  
    469469} 
    470470 
    471 int main(int argc, char **argv) { 
     471int ARB_main(int argc, const char *argv[]) { 
    472472    int         exitcode = EXIT_SUCCESS; 
    473     arb_params *params   = arb_trace_argv(&argc, argv); 
     473    arb_params *params   = arb_trace_argv(&argc, (const char **)argv); 
    474474    const char *exename  = argv[0]; 
    475475 
  • trunk/PROBE/pt_prototypes.h

    r8041 r8246  
    5757void PT_exit(void); 
    5858GB_ERROR PT_init_map(void) __ATTR__USERESULT; 
     59int ARB_main(int argc, const char *argv[]); 
    5960 
    6061/* PT_match.cxx */ 
  • trunk/PROBE_SET/ps_convert_db.cxx

    r6385 r8246  
    189189          char *_argv[]) { 
    190190 
    191     GBDATA   *ARB_main = 0; 
     191    GBDATA   *gb_main = 0; 
    192192    GB_ERROR  error    = 0; 
    193193 
     
    207207    times(&before); 
    208208    printf("Opening probe-group-database '%s'..\n  ", DB_name); 
    209     ARB_main = GB_open(DB_name, "rwcN"); 
    210     if (!ARB_main) { 
     209    gb_main = GB_open(DB_name, "rwcN"); 
     210    if (!gb_main) { 
    211211        error = GB_await_error(); 
    212212        GB_warning(error); 
     
    216216    PS_print_time_diff(&before); 
    217217 
    218     GB_transaction dummy(ARB_main); 
    219     GBDATA *group_tree = GB_entry(ARB_main, "group_tree"); 
     218    GB_transaction dummy(gb_main); 
     219    GBDATA *group_tree = GB_entry(gb_main, "group_tree"); 
    220220    if (!group_tree) { 
    221221        printf("no 'group_tree' in database\n"); 
     
    235235    times(&before); 
    236236    printf("init Species <-> ID - Map\n"); 
    237     PG_initSpeciesMaps(ARB_main); 
     237    PG_initSpeciesMaps(gb_main); 
    238238    int species_count = PG_NumberSpecies(); 
    239239    printf("%i species in the map ", species_count); 
  • trunk/SERVERCNTRL/servercntrl.cxx

    r8103 r8246  
    313313} 
    314314 
    315 arb_params *arb_trace_argv(int *argc, char **argv) 
     315arb_params *arb_trace_argv(int *argc, const char **argv) 
    316316{ 
    317317    int s, d; 
     
    350350                case 'P': freedup(erg->pt_server, argv[s]+2); break; 
    351351                case 'T': { 
    352                     char *ipport = argv[s]+2; 
     352                    const char *ipport = argv[s]+2; 
    353353                    if (ipport[0] == ':' && 
    354354                        ipport[1] >= '0' && ipport[1] <= '9') { // port only -> assume localhost 
  • trunk/SERVERCNTRL/servercntrl.h

    r8100 r8246  
    3636GB_ERROR arb_look_and_kill_server(int magic_number, const char *arb_tcp_env); 
    3737void arb_print_server_params(void); 
    38 arb_params *arb_trace_argv(int *argc, char **argv); 
     38arb_params *arb_trace_argv(int *argc, const char **argv); 
    3939void free_arb_params(arb_params *params); 
    4040 
  • trunk/SOURCE_TOOLS/Makefile

    r7819 r8246  
     1.SUFFIXES: .o .cxx  
    12 
    23all: 
     
    45 
    56clean: 
    6                 rm -f *.stamp valgrind2grep.lst postcompile.sav 
     7                rm -f *.stamp valgrind2grep.lst postcompile.sav arb_main.o 
    78 
    89valgrind_update: 
    910                ./arb_valgrind update 
     11 
     12# -------------------------------------------------------------------------------- 
     13 
     14.cxx.o: 
     15        $(CPP) $(cflags) -c -o $@ $(@:.o=.cxx)  $(CPPINCLUDES) $(POST_COMPILE) 
     16 
     17mainwrapper: arb_main.o 
    1018 
    1119# -------------------------------------------------------------------------------- 
  • trunk/SOURCE_TOOLS/export2sub

    r7669 r8246  
    55 
    66export ARBHOME 
     7export use_ARB_main 
    78 
    89export DEBUG 
  • trunk/TOOLS/Makefile

    r8103 r8246  
    4343 
    4444$(ARBHOME)/bin/arb_probe: arb_probe.o $(LIBS_ARB_PROBE) 
    45         $(LINK_EXECUTABLE) $@ $< $(LIBS_ARB_PROBE) $(LIB_ARBDB) $(EXECLIBS)  
     45        $(LINK_EXECUTABLE) $@ $(use_ARB_main) $< $(LIBS_ARB_PROBE) $(LIB_ARBDB) $(EXECLIBS)  
    4646 
    4747$(ARBHOME)/bin/arb_read_tree: arb_read_tree.o  $(LIBS_ARB_READ_TREE) 
     
    5252 
    5353$(ARBHOME)/bin/%: %.o 
    54         $(LINK_EXECUTABLE) $@ $< $(LIB_ARBDB) $(EXECLIBS) 
     54        $(LINK_EXECUTABLE) $@ $(use_ARB_main) $< $(LIB_ARBDB) $(EXECLIBS) 
    5555 
    5656clean: 
  • trunk/TOOLS/arb_probe.cxx

    r8100 r8246  
    424424} 
    425425 
    426 int main(int argc, const char ** argv) { 
     426int ARB_main(int argc, const char *argv[]) { 
    427427    bool ok = parseCommandLine(argc, argv); 
    428428    if (ok) { 
  • trunk/TOOLS/arb_test.cxx

    r8103 r8246  
    1414#include <unistd.h> 
    1515 
    16 int main(int, char **) { 
     16int ARB_main(int argc, const char *argv[]) { 
    1717    fputs("don't call us\n", stderr); 
    1818    return EXIT_SUCCESS; 
  • trunk/UNIT_TESTER/Makefile.test

    r7926 r8246  
    109109 
    110110$(TEST_EXE) : $(TEST_OBJ) $(UNIT_TESTER_LIB) $(LINKDEPS) 
    111         $(LINK_EXECUTABLE) $@ $< $(UNIT_TESTER_LIB) -L../LIBLINK $(LINKLIST) $(EXECLIBS) 
     111        $(LINK_EXECUTABLE) $@ $< $(UNIT_TESTER_LIB) -L../LIBLINK $(LINKLIST) $(EXECLIBS)  -Wl,'-eARBTEST_main' 
    112112 
    113113dump: 
  • trunk/UNIT_TESTER/sym2testcode.pl

    r7176 r8246  
    270270  my $MAIN = ''; 
    271271  my $have_main = defined $exported{'main'}; 
    272   if ($have_main==0) { 
    273     $MAIN .= 'int main(void) {'."\n"; 
    274     # $MAIN .= 'extern int jkahdfakshdu; jkahdfakshdu=1;'; # cause unittest compile error 
    275     # $MAIN .= 'int *x=0; *x=0;'; # cause unittest crash 
    276     $MAIN .= '    '.$UNIT_TESTER."\n"; 
    277     $MAIN .= '    return EXIT_SUCCESS;'."\n"; 
    278     $MAIN .= '}'."\n"; 
    279   } 
    280   else { 
    281     $MAIN .= 'static '.$UNIT_TESTER."\n"; 
    282   } 
     272  if ($have_main==1) { 
     273    $MAIN .= "#error tested code uses main() - not possible. use ARB_main instead and link normal executable with arb_main.o\n"; 
     274  } 
     275  $MAIN .= 'int main(void) {'."\n"; 
     276  $MAIN .= '    '.$UNIT_TESTER."\n"; 
     277  $MAIN .= '    return EXIT_SUCCESS;'."\n"; 
     278  $MAIN .= '}'."\n"; 
    283279 
    284280  print OUT $HEAD."\n";