Changeset 1832501 in git


Ignore:
Timestamp:
Mar 17, 1999, 1:41:31 PM (25 years ago)
Author:
Kai Krüger <krueger@…>
Branches:
(u'spielwiese', '8e0ad00ce244dfd0756200662572aef8402f13d5')
Children:
1471a87c88809d18580f881efb9a559f31d0baa0
Parents:
773e7f1fa070fb846fa7b455caf6e3fb79049538
Message:
*** empty log message ***


git-svn-id: file:///usr/local/Singular/svn/trunk@2949 2c84dea3-7e68-4137-9b89-c4e89433aadc
Location:
modules/tools
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • modules/tools/Makefile.in

    r773e7f r1832501  
    22#
    33#
    4 CFLAGS  += -I../include -I../../Singular -DNDEBUG -DMODULE_GENERATOR
    5 LIBS    += -lgmp
     4CFLAGS  += -g -I../include -I../../Singular -DNDEBUG -DMODULE_GENERATOR
     5LIBS    += -L/usr/local/lib -lgmp
    66
    77OBJS    = scanner.o misc.o
     
    1515
    1616.cc.o:
    17         cc -c ${CFLAGS} $<
     17        gcc -c ${CFLAGS} $<
    1818
    1919.c.o:
    20         cc -c ${CFLAGS} $<
     20        gcc -c ${CFLAGS} $<
    2121
    2222modgen: ${OBJS} modgen.h decl.inc
    23         cc -o $@ ${CFLAGS} ${LIBS} ${OBJS}
     23        gcc -o $@ ${CFLAGS} ${OBJS} ${LIBS}
    2424
    2525scanner.cc: scanner.l
  • modules/tools/misc.cc

    r773e7f r1832501  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: misc.cc,v 1.1 1998-11-19 15:16:41 krueger Exp $ */
     4/* $Id: misc.cc,v 1.2 1999-03-17 12:41:30 krueger Exp $ */
    55/*
    66* ABSTRACT: lib parsing
     
    1616#include <subexpr.h>
    1717#include <tok.h>
     18#include <regex.h>
     19
    1820#include "modgen.h"
     21
     22#define SYSTYP_NONE   0
     23#define SYSTYP_LINUX  1
     24#define SYSTYP_HPUX9  2
     25#define SYSTYP_HPUX10 3
     26
     27char *DYNAinclude[] = {
     28   "",
     29   "#include <dlfcn.h>",
     30   "#include <dl.h>",
     31   "#include <dl.h>",
     32   "#include <>",
     33   "#include <>",
     34   "#include <>",
     35   NULL
     36};
     37
     38int systyp = SYSTYP_NONE;
    1939
    2040BOOLEAN    expected_parms;
     
    200220  pnew->next = NULL;
    201221  pnew->is_static = 0;
     222  pnew->paramcnt = 0;
    202223  strcpy(pnew->procname, name);
    203224  strcpy(pnew->funcname, name);
     
    224245    pp->next = pnew;
    225246  }
    226 
    227 }
    228 
    229 /*========================================================================*/
    230 PrintProclist(procdefv pi)
     247  (pi->paramcnt)++;
     248}
     249
     250/*========================================================================*/
     251void PrintProclist(procdefv pi)
    231252{
    232253  procdefv v = pi;
    233254  paramdefv pp;
    234   while(v!=NULL) {
     255  for(v=pi; v!=NULL; v = v->next) {
     256//  while(v!=NULL) {
    235257    pp = v->param;
    236258    printf("proc: %s(", v->procname);
     
    243265    }
    244266    printf(")\n");
    245     v =v ->next;
    246   }
    247 }
    248 
    249 /*========================================================================*/
    250 void generate_mod(procdefv pi, moddefv module, cfilesv c_filelist)
    251 {
    252   procdefv v = pi;
     267//    v =v ->next;
     268  }
     269}
     270
     271/*========================================================================*/
     272void generate_mod(
     273  procdefv pi,
     274  moddefv module,
     275  cfilesv c_filelist
     276  )
     277{
     278  procdefv v = NULL;
    253279  FILE *fp_c, *fp_h;
    254280  char *filename;
     281 
     282  if(strcmp(S_UNAME, "ix86-Linux") == 0) {
     283    systyp = SYSTYP_LINUX;
     284  } else if (strcmp(S_UNAME, "HPUX-9")==0) {
     285    systyp = SYSTYP_HPUX9;
     286  } else if (strcmp(S_UNAME, "HPUX-10")==0) {
     287    systyp = SYSTYP_HPUX10;
     288  }
     289  printf("SYSTYP:%d\n", systyp);
    255290 
    256291  filename = (char *)malloc(strlen(module->name)+5);
     
    274309  if(module->info != NULL) enter_id(fp_c, "info", module->info);
    275310  if(module->helpfile != NULL) enter_id(fp_c, "helpfile", module->helpfile);
    276   while(v!=NULL) {
     311  for(v=pi; v!=NULL; v = v->next) {
     312//  while(v!=NULL) {
     313    printf("->%s, %s\n", v->procname, v->funcname);
    277314    fprintf(fp_c, "  iiAddCproc(\"%s\",\"%s\",%s, mod_%s);\n",
    278315            module->name, v->procname,
    279316            v->is_static ? "TRUE" : "FALSE", v->funcname);
    280     v =v ->next;
     317//    v =v ->next;
    281318  }
    282319  fprintf(fp_c, "  return 0;\n}\n\n");
     
    284321
    285322  /* building entry-functions */
    286   while(v!=NULL) {
     323  for(v=pi; v!=NULL; v = v->next) {
    287324    generate_function(v, fp_c);
    288325    generate_header(v, fp_h);
    289     v =v ->next;
    290326  }
    291327  printf("  done.\n");fflush(stdout);
     
    303339void generate_function(procdefv pi, FILE *fp)
    304340{
    305   int tok;
     341  int cnt = 0, i;
     342  printf("%s has %d paramters\n", pi->funcname, pi->paramcnt);
    306343 
    307344  paramdefv pp = pi->param;
     
    309346  if(pp!= NULL && pp->typ!=SELF_CMD) {
    310347    fprintf(fp, "  leftv v = h;\n");
    311     fprintf(fp, "  int tok = NONE;\n");
    312 
     348    fprintf(fp, "  int tok = NONE, index = 0;\n");
     349    for (i=0;i<pi->paramcnt; i++)
     350      fprintf(fp, "  leftv res%d = (leftv)Alloc0(sizeof(sleftv));\n", i);
     351
     352    fprintf(fp, "\n");
     353   
    313354    while(pp!=NULL) {
    314355      fprintf(fp, "  if(v==NULL) goto mod_%s_error;\n", pi->funcname);
    315356      fprintf(fp, "  tok = v->Typ();\n");
    316       fprintf(fp, "  if(tok!=%s) goto mod_%s_error;\n",
    317               pp->typname, pi->funcname);
     357      fprintf(fp, "  printf(\"test %d.1\\n\");\n", cnt);
     358      fprintf(fp, "  if((index=iiTestConvert(tok, %s))==0)\n", pp->typname);
     359      fprintf(fp, "     goto mod_%s_error;\n", pi->funcname);
     360      fprintf(fp, "  printf(\"test %d.2\\n\");\n", cnt);
     361      fprintf(fp, "  if(iiConvert(tok, %s, index, v, res%d))\n",
     362              pp->typname, cnt);
     363      fprintf(fp, "     goto mod_%s_error;\n", pi->funcname);
     364      fprintf(fp, "  printf(\"test %d.3\\n\");\n", cnt);
    318365      fprintf(fp, "  v = v->next;\n");
    319366      pp = pp->next;
     367      cnt++;
    320368    }
    321369    fprintf(fp, "  if(v!=NULL) { tok = v->Typ(); goto mod_%s_error; }\n", pi->funcname);
     370    fprintf(fp, "  printf(\"test before return\\n\");\n");
    322371
    323372    fprintf(fp, "\n");
    324     fprintf(fp, "    return(%s(res,h));\n\n", pi->funcname);
     373    fprintf(fp, "    return(%s(res", pi->funcname);
     374    for (i=0;i<pi->paramcnt; i++)
     375      fprintf(fp, ", res%d", i);
     376    fprintf(fp, "));\n\n");
    325377    fprintf(fp, "  mod_%s_error:\n", pi->funcname);
    326378    fprintf(fp, "    Werror(\"%s(`%%s`) is not supported\", Tok2Cmdname(tok));\n",
     
    344396void  mod_write_header(FILE *fp, char *module)
    345397{
     398#if 0
     399  FILE *fp;
     400  char buf[BUFLEN];
     401 
     402  regex_t preg;
     403  regmatch_t   pmatch[1];
     404  size_t  nmatch = 0;
     405  char *regex = "@MODULE_NAME@";
     406
     407  rc = regcomp(&preg, regex, REG_NOSUB);
     408  if(rc) return -1;
     409
     410  if(!regexec(&preg, d_entry->d_name, nmatch, pmatch, REG_NOTBOL))
     411    cert_count++;
     412  regfree(&preg);
     413 
     414#else
    346415  write_header(fp, module);
    347416  fprintf(fp, "#include <stdlib.h>\n");
     
    349418  fprintf(fp, "#include <string.h>\n");
    350419  fprintf(fp, "#include <ctype.h>\n");
    351   fprintf(fp, "#include <dlfcn.h>\n");
     420  fprintf(fp, "%s\n", DYNAinclude[systyp]);
    352421  fprintf(fp, "\n");
    353422  fprintf(fp, "#include <locals.h>\n");
    354423  fprintf(fp, "#include \"%s.h\"\n", module);
    355424  fprintf(fp, "\n");
    356  
     425#endif
    357426}
    358427
     
    363432          comment, comment);
    364433  fprintf(fp, "%s * version %s\n", comment, MOD_GEN_VERSION);
     434  fprintf(fp, "%s * module %s\n", comment, module);
    365435  fprintf(fp, "%s * Don't edit this file\n%s */\n", comment, comment);
    366436  fprintf(fp, "%s\n", comment);
     
    387457static char *object_name(char *p)
    388458{
    389   char *q = strrchr(p, '.');
     459  char *q = (char *)strrchr(p, '.');
    390460  if(q==NULL) return "";
    391461  *q = '\0';
    392462  char *r = (char *)malloc(strlen(p)+4);
    393   sprintf(r, "%s.lo", p);
     463  switch(systyp) {
     464      case SYSTYP_LINUX:
     465        sprintf(r, "%s.lo", p);
     466        break;
     467       
     468      case SYSTYP_HPUX9:
     469        sprintf(r, "%s.o", p);
     470        break;
     471  }
     472 
    394473  *q = '.';
    395474  return(r);
     
    408487  fprintf(fp, "CXX\t= gcc\n");
    409488  fprintf(fp, "CFLAGS\t= -DNDEBUG -I. -I../include\n");
     489  fprintf(fp, "#LD\t=\n");
    410490  fprintf(fp, "\n");
    411491  fprintf(fp, "SRCS\t= ");
     
    418498
    419499  fprintf(fp, "\n\n");
    420   fprintf(fp, "all:\t%s.so\n", module->name);
    421   fprintf(fp, "\n");
    422   fprintf(fp, "%%.lo: %%.cc Makefile\n");
    423   fprintf(fp, "\t${CC} ${CFLAGS} -c -fPIC -DPIC $< -o $*.lo\n");
    424   fprintf(fp, "\n");
    425  
    426   fprintf(fp, "%%.la: %%.cc Makefile\n");
    427   fprintf(fp, "\t${CC} ${CFLAGS} -c $< -o $*.la\n");
    428   fprintf(fp, "\n");
    429 
    430   fprintf(fp, "%s.so: ${OBJS}\n", module->name);
    431   fprintf(fp, "\t${CC} ${CFLAGS} -shared -Wl,-soname -Wl,%s.so.%d \\\n",
    432           module->name, module->major);
    433   fprintf(fp, "\t\t-o %s.so.%d.%d.%d ${OBJS}\n", module->name,
    434           module->major, module->minor, module->level);
    435   fprintf(fp, "\trm -f %s.so\n", module->name);
    436   fprintf(fp, "\tln -s %s.so.%d.%d.%d %s.so\n", module->name, module->major,
    437           module->minor, module->level, module->name);
    438   fprintf(fp, "\n");
     500  switch(systyp) {
     501      case SYSTYP_LINUX:
     502        fprintf(fp, "all:\t%s.so\n", module->name);
     503        fprintf(fp, "\n");
     504        fprintf(fp, "%%.lo: %%.cc Makefile\n");
     505        fprintf(fp, "\t${CC} ${CFLAGS} -c -fPIC -DPIC $< -o $*.lo\n");
     506        fprintf(fp, "\n");
     507 
     508        fprintf(fp, "%%.la: %%.cc Makefile\n");
     509        fprintf(fp, "\t${CC} ${CFLAGS} -c $< -o $*.la\n");
     510        fprintf(fp, "\n");
     511
     512        fprintf(fp, "%s.so: ${OBJS}\n", module->name);
     513        fprintf(fp, "\t${CC} ${CFLAGS} -shared -Wl,-soname -Wl,%s.so.%d \\\n",
     514                module->name, module->major);
     515        fprintf(fp, "\t\t-o %s.so.%d.%d.%d ${OBJS}\n", module->name,
     516                module->major, module->minor, module->level);
     517        fprintf(fp, "\trm -f %s.so\n", module->name);
     518        fprintf(fp, "\tln -s %s.so.%d.%d.%d %s.so\n", module->name, module->major,
     519                module->minor, module->level, module->name);
     520        fprintf(fp, "\n");
     521        break;
     522
     523      case SYSTYP_HPUX9:
     524        fprintf(fp, "all:\t%s.sl\n", module->name);
     525        fprintf(fp, "\n");
     526        fprintf(fp, "%%.o: %%.cc Makefile\n");
     527        fprintf(fp, "\t${CC} ${CFLAGS} -c -fPIC -DPIC $< -o $*.o\n");
     528        fprintf(fp, "\n");
     529        fprintf(fp, "%s.sl: ${OBJS}\n", module->name);
     530        fprintf(fp, "\t${LD} -b -o %s.sl \\\n", module->name);
     531        fprintf(fp, "\t\t${OBJS}\n");
     532        break;
     533       
     534  }
    439535
    440536  fprintf(fp, "clean:\n");
    441   fprintf(fp, "\trm -f *.o *.lo *.so* *.la *~ core\n\n");
     537  fprintf(fp, "\trm -f *.o *.lo *.so* *.sl *.la *~ core\n\n");
    442538 
    443539  fprintf(fp, "distclean: clean\n");
  • modules/tools/modgen.h

    r773e7f r1832501  
    11/*
    2  *  $Id: modgen.h,v 1.1 1998-11-19 15:16:42 krueger Exp $
     2 *  $Id: modgen.h,v 1.2 1999-03-17 12:41:31 krueger Exp $
    33 *
    44 */
    55
    6 #define MOD_GEN_VERSION "0.1"
     6#define MOD_GEN_VERSION "0.2"
     7
     8#define BUFLEN 128
     9#define TMPL_HEAD ""
     10#define TMPL_FOOT ""
    711
    812class paramdef;
     
    3135  int is_static;
    3236  paramdefv param;
     37  int paramcnt;
    3338};
    3439
     
    4247 public:
    4348  char * name;
    44   unsigned short major, minor, level;
     49  unsigned int major, minor, level;
    4550  char * version;
    4651  char * revision;
     
    5661
    5762extern procdefv Add2proclist(procdefv pi, char *name);
    58 extern PrintProclist(procdefv pi);
    5963extern void AddParam(procdefv pi, char *name, char *typname, int typ);
    6064extern void generate_mod(procdefv pi, moddefv module, cfilesv c_filelist);
     
    6670extern void make_version(char *p, moddefv module);
    6771extern cfilesv Add2files(cfilesv cf, char *buff);
     72extern void PrintProclist(procdefv pi);
     73
  • modules/tools/scanner.l

    r773e7f r1832501  
    33*  Computer Algebra System SINGULAR     *
    44****************************************/
    5 /* $Id: scanner.l,v 1.1 1998-11-19 15:16:43 krueger Exp $ */
     5/* $Id: scanner.l,v 1.2 1999-03-17 12:41:31 krueger Exp $ */
    66#include <stdio.h>
    77#include <string.h>
     
    122122             }
    123123<pdef>{name}+, {
    124              char param[256],n1[32],n2[32];
     124             char param[256], n2[32];
    125125             int cmd;
    126126             param[0]='\0';
     
    132132           }
    133133<pdef>{name}+\)+{eq}+{name} {
    134              char param[256],n1[32],n2[32],funcname[256];
     134             char param[256], n2[32],funcname[256];
    135135             int cmd;
    136136             BEGIN(old_state);
     137             memset(funcname, '\0', 256);
    137138             param[0]='\0';
    138139             sscanf( yytext, "%[^)])%*[^=]=%s", param, funcname);
     
    148149<pdef>\)+{eq}+{name}|{eq}+{tos}+{name} {
    149150             char funcname[256];
    150              int cmd;
    151151             BEGIN(old_state);
    152152             sscanf( yytext, "%*[^=]=%s", funcname);
     
    173173  int yywrap() {
    174174    //printf("yywrap()\n");
     175    return 1;
    175176  }
    176177}
     
    188189  module_def.helpfile=NULL;
    189190  yylex();
    190   //PrintProclist(proclist);
     191  PrintProclist(proclist);
    191192  generate_mod(proclist, &module_def, c_filelist);
    192193  mod_create_makefile(&module_def, c_filelist);
Note: See TracChangeset for help on using the changeset viewer.