source: abuse/tags/pd/imlib/port/maker.c @ 604

Last change on this file since 604 was 49, checked in by Sam Hocevar, 15 years ago
  • Imported original public domain release, for future reference.
  • Property svn:keywords set to Id
File size: 17.3 KB
Line 
1/*
2 
3*/
4
5
6#include <stdio.h>
7#include <string.h>
8#include <stdlib.h>
9#ifdef __WATCOMC__
10#include <sys\types.h>
11#include <direct.h>
12#define make_dir(dir) mkdir(dir)
13#else
14#include <sys/stat.h>
15#define make_dir(dir) mkdir(dir,511)
16#endif
17
18
19int line_on,no_include;
20enum { LINUX, DOS, AIX, SUN, SGI };
21
22char *plat_names[] = {"Linux (SVGA & X11)",
23                      "Watcom for MS-DOS",
24                      "IBM AIX for RS6000's",
25                      "Sun OS",
26                      "Silicon Graphics"};
27
28char *plat_name[] = {"LINUX","DOS","AIX","SUN","SGI"};
29
30                     
31
32char z[5000];
33
34struct var_node
35{
36  struct var_node *next;
37  char *name;
38  char *subst;
39} *first_var;
40
41
42
43 
44
45char *basename="noname";
46char *imlib_objs="";
47char *add_libs="";
48char *ofiles="";
49char *imlib_dir="../imlib";
50char *plat_stuff=NULL;
51
52void create_dir(char *dir)
53{
54  char *d,ch;
55  d=dir;
56  while (*d)
57  {
58    if (*d=='\\' || *d=='/')
59    {
60      ch=*d;
61      *d=0;
62      make_dir(dir);
63      *d=ch;
64    }
65    d++;
66  }
67  make_dir(dir);
68}
69
70void oextend(char *dir, char *word, char *new_dir, int platform, int optimize);
71
72void store_var(char *name, char *subst)
73{
74  struct var_node *p;
75  for (p=first_var;p && strcmp(p->name,name);p=p->next);
76  if (p) 
77    free(p->subst);     
78  else
79  {
80    p=(struct var_node *)malloc(sizeof(struct var_node));
81    p->name=(char *)strcpy((char *)malloc(strlen(name)+1),name);   
82    p->next=first_var;
83    first_var=p;
84  }
85  p->subst=(char *)strcpy((char *)malloc(strlen(subst)+1),subst);
86   
87}
88
89void expand_line(char *line, char *buffer);
90
91int get_var(char *name, char *buffer)
92{
93  char *cp,*cp2;
94  struct var_node *p;
95  char tmp[100];
96  for (p=first_var;p && strcmp(p->name,name);p=p->next);
97  if (p)
98  {
99    expand_line(p->subst,buffer);
100    return 1;
101  }
102  else
103  {
104    buffer[0]=0;
105    return 0;
106  }
107}
108
109int detect_platform()
110{
111#ifdef __linux__
112  return LINUX;
113#endif
114
115#ifdef __WATCOMC__
116  return DOS;
117#endif
118
119#ifdef _AIX
120  return AIX;
121#endif
122
123#ifdef sun
124  return SUN;
125#endif
126
127#ifdef SUN3
128  return SUN;
129#endif
130
131#ifdef SUN4
132  return SUN;
133#endif
134
135  printf("Cannot detect platform\n");
136  exit(1);
137
138
139  return 0;
140}
141
142int get_word(char **st, char *buffer)
143{
144  char *bp;
145  while (*(*st)==' ') (*st)++;
146  if (*(*st)==0 || *(*st)=='\n' || *(*st)=='\r' || *(*st)=='=')
147    return 0;
148
149  for (bp=buffer;*(*st) && *(*st)!=' ' && *(*st)!='\n' && *(*st)!='\r' && *(*st)!='=';(*st)++,bp++)
150    *bp=*(*st);
151  *(bp)=0;
152  return 1;
153}
154
155void get_equal(char **st)
156{
157  while (*(*st)==' ') (*st)++;
158  if (*(*st)!='=')
159  {
160    printf("expecting '=' on line %d\n",line_on);
161    exit(0);
162  }
163  (*st)++;
164}
165
166void process_file(char *name);
167
168void expand_line(char *line, char *buffer)
169{
170  char tmp[100],*cp2;
171  for (;*line;)
172  {   
173    if (*line=='$')
174    {
175      line++;
176      if (*line=='$')
177        *(buffer++)=*(line++);
178      else if (*line!='(')
179      {
180        printf("Expecting ( after $\n");
181        exit(0);
182      } else     
183      {
184        line++;
185        for (cp2=tmp;*line!=')' && *line;line++,cp2++) *cp2=*line; line++;
186        *cp2=0;
187        get_var(tmp,buffer);
188        while (*buffer) buffer++;
189      }
190    } else *(buffer++)=*(line++);     
191  }
192  *buffer=0;
193}
194
195void process_line(char *st, FILE *fp)
196{
197  char word[100],*wp,*ws,skip,rd;
198  expand_line(st,z);
199  st=z;
200
201  if (get_word(&st,word))   
202  {
203    if (!strcmp(word,"INCLUDE"))
204    {
205      if (!get_word(&st,word))
206      {
207        fprintf(stderr,"expecting filename after INCLUDE on line %d\n",line_on);
208        exit(1);
209      }
210      process_file(word);
211    } else if (!strcmp(word,"SECTION"))
212    {
213      skip=0; rd=0;
214      wp=st;
215      do
216      {
217        while (*wp==' ') wp++;
218        ws=wp;
219        if (*wp==0) skip=1;
220        else
221        {
222          while (*wp!=' ' && *wp) wp++;
223          *wp=0;
224          if (!strcmp(ws,plat_name[detect_platform()]))
225            rd=1;
226        }
227      } while (!skip && !rd);
228      do
229      {
230        fgets(word,100,fp);
231        while (word[strlen(word)-1]=='\n' || word[strlen(word)-1]=='\r')
232          word[strlen(word)-1]=0;
233        strcat(word,"\n");
234        if (rd)
235        {
236          if (strcmp(word,"END\n"))
237          {
238            if (plat_stuff)
239            {
240              plat_stuff=realloc(plat_stuff,strlen(plat_stuff)+1+strlen(word));
241              strcat(plat_stuff,word);
242            }
243            else
244            {
245              plat_stuff=malloc(strlen(plat_stuff)+1+strlen(word));
246              strcpy(plat_stuff,word);
247            }       
248          }
249        }
250      } while (strcmp(word,"END\n"));
251
252
253    } else
254    {
255      get_equal(&st);
256      store_var(word,st);
257    }
258  } 
259}
260
261
262void dos_path(char *path)
263{
264  if (detect_platform()==DOS)
265  {
266    for (;*path;path++)
267      if (*path=='/') *path='\\';
268  }
269}
270
271char *include_path(int platform)
272{
273  char tmp[200];
274  if (platform==DOS)
275  {
276    z[0]=0;
277/*    dos_path(imlib_dir,tmp);
278    sprintf(z,"-ic:\\watcom\\h;%s\\include;-i. ",tmp);  */
279  }
280  else
281    sprintf(z,"-I%s/include",imlib_dir);
282  return z;
283}
284
285
286void debug_flags(FILE *fp, int platform)
287{
288  switch (platform)
289  {
290    case LINUX :
291    case SUN :
292    case AIX :
293    case SGI :
294    {
295      fprintf(fp,"-g");
296    } break;
297    case DOS :
298    {
299      fprintf(fp,"/zq /d2");
300    } break;
301  }
302}
303
304char *compiler(int platform)
305{
306  switch(platform)
307  {
308    case DOS :
309    { return "wpp386"; } break;
310    default :
311    { return "g++"; } break;             
312  }
313}
314
315int fetch_word(char **ch, char *buffer)
316{
317  while (*(*ch)==' ' || *(*ch)=='\t') (*ch)++;
318  if (*(*ch)==0) return 0;
319  while (*(*ch) && *(*ch)!=' ' && *(*ch)!='\t')
320  {
321    *(buffer++)=*(*ch);
322    (*ch)++;
323  }
324  *buffer=0;
325  return 1;
326}
327
328void list_o_files(char *name, FILE *fp, char *fl, char *dir, char *ext, int platform, int optimize)
329{
330  char fname[200],ofname[200],*ch,sl;
331  if (platform==DOS) sl='\\'; else sl='/';
332  if (optimize)
333    fprintf(fp,"%s_O = ",name);
334  else
335    fprintf(fp,"%s = ",name);
336
337  while (*fl==' ' || *fl=='\t') fl++;
338  while (*fl)
339  {
340    if (dir && dir[0])
341      sprintf(fname,"%s%c",dir,sl);
342    else fname[0]=0;
343    ch=fname+strlen(fname);
344
345
346    while (*fl && *fl!=' ' && *fl!='\t')
347      *(ch++)=*(fl++);
348    *ch=0;
349    oextend(NULL,fname,ofname,platform,optimize);
350    fprintf(fp,"%s",ofname);
351
352    while (*fl==' ' || *fl=='\t') fl++;
353    if (*fl)
354    {
355      if (platform==DOS)
356        fprintf(fp," &\n\t");
357      else
358        fprintf(fp," \\\n\t");
359    }
360    else fprintf(fp,"\n\n");
361  }
362}
363
364char *object_extension(int platform)
365{
366  if (platform==DOS)
367    return ".obj";
368  else return ".o";
369}
370
371void list_wlink_files(FILE *fp, char *var, char *dir, int optimize)
372{
373  char tmp[2000],name[100],*prep,*last_slash,*np;
374  get_var(var,tmp);
375
376  if (!dir) dir=".";
377  dos_path(dir);
378  var=tmp;
379  while (*var)
380  {
381    while (*var==' ' || *var=='\t') var++;
382    if (*var)
383    {
384      for (prep=name,last_slash=NULL;*var!=' ' && *var!='\t' && *var;prep++,var++)
385      {
386        *prep=*var;
387        if (*var=='/')
388        {
389          last_slash=prep;
390          *prep='\\';
391        }
392      }
393      *prep=0;
394      if (last_slash)
395      {
396        *last_slash=0;
397        fprintf(fp,"file %s\\%s\\DOS\\",dir,name);
398        np=last_slash+1;
399      } else
400      {
401        fprintf(fp,"file %s\\DOS\\",dir);
402        np=name;       
403      }   
404      if (optimize)
405        fprintf(fp,"opt\\");
406      else fprintf(fp,"debug\\");
407      fprintf(fp,"%s.obj\n",np);
408    }
409  } 
410}
411
412void make_program(FILE *fp, char *name, char *plat_base, int platform, int optimize)
413{
414  FILE *lfp;
415  char tmp[2000],tmp2[200],de[5],*oe,*oe2;
416  sprintf(tmp2,"%s_FILES",plat_base);
417  get_var(tmp2,tmp);
418  list_o_files(tmp2,fp,tmp,imlib_dir,object_extension(platform),platform,optimize); 
419  if (platform==DOS)
420    strcpy(de,".exe");
421  else
422    de[0]=0;
423
424  if (optimize) { oe="o"; oe2="_O";}  else { oe=""; oe2=""; }
425
426  fprintf(fp,"%s%s%s : $(%s_FILES%s) $(IMLIB_OBJS%s) $(PROG_OBJS%s)\n",name,oe,de,plat_base,oe2,oe2,oe2);
427
428  if (platform!=DOS)
429  {
430    if (optimize)
431      fprintf(fp,"\t$(CC) -o %s%s $(%s_FILES_O) $(IMLIB_OBJS_O) $(PROG_OBJS_O)",
432            name,oe,plat_base);
433    else
434      fprintf(fp,"\t$(CC) -o %s%s $(%s_FILES) $(IMLIB_OBJS) $(PROG_OBJS)",
435            name,oe,plat_base);
436
437    sprintf(tmp,"%s_LIBS",plat_base);
438    if (get_var(tmp,tmp))
439      fprintf(fp," %s",tmp);
440    fprintf(fp,"\n");
441  } else
442  {
443    if (optimize)   
444      sprintf(tmp,"%so.lnk",name);
445    else
446      sprintf(tmp,"%s.lnk",name);
447
448    fprintf(fp,"\twlink @%s\n",tmp);
449    lfp=fopen(tmp,"wb");
450    if (!lfp)
451    {
452      printf("Unable to open linker file %s\n",tmp);
453      exit(0);
454    }
455    if (!optimize)
456      fprintf(lfp,"debug all\n");
457    fprintf(lfp,"system dos4g\n"
458            "option caseexact\n");
459    if (optimize)
460      fprintf(lfp,"name %so%s\n",name,de);
461    else
462      fprintf(lfp,"name %s%s\n",name,de);
463
464    if (get_var("STACK_SIZE",tmp2))
465      fprintf(lfp,"option stack=%s\n",tmp2);
466    else fprintf(lfp,"option stack=8k\n");
467
468   
469   
470    sprintf(tmp,"%s_FILES",plat_base);
471    list_wlink_files(lfp,tmp,imlib_dir,optimize);
472    sprintf(tmp,"IMLIB_OBJS");
473    list_wlink_files(lfp,tmp,imlib_dir,optimize);
474    sprintf(tmp,"O_FILES");
475    list_wlink_files(lfp,tmp,NULL,optimize);
476    fclose(lfp);
477  }
478
479  fprintf(fp,"\n");
480}
481
482
483struct dep_file
484{
485  struct dep_file *next;
486  char *name;
487} ;
488
489
490struct dep_file *make_depend_list(struct dep_file *first, char *name, int platform)
491{
492  FILE *fp;
493  struct dep_file *p;
494  char tmp[200],*ch,*ch2;
495  strcpy(tmp,name);
496  fp=fopen(tmp,"rb");
497  if (!fp)
498  {
499    if (platform==DOS)   
500      sprintf(tmp,"%s\\include\\%s",imlib_dir,name);
501    else
502      sprintf(tmp,"%s/include/%s",imlib_dir,name);
503    fp=fopen(tmp,"rb");
504  }
505
506  if (fp)
507  {
508    for (p=first;p;p=p->next)
509    {
510      if (!strcmp(p->name,tmp))   /* make sure we have not already processed this file */
511      {
512        fclose(fp);
513        return first;
514      }
515    }
516    p=(struct dep_file *)malloc(sizeof(struct dep_file));
517    p->next=first;
518    p->name=(char *)strcpy((char *)malloc(strlen(tmp)+1),tmp);
519    first=p;
520
521    if (!no_include)
522    {
523      while (!feof(fp))
524      {
525        fgets(tmp,200,fp);
526        if (!feof(fp))
527        {
528          if (memcmp(tmp,"#include",8)==0)
529          {
530            for (ch=tmp+8;*ch==' ' || *ch=='\t';ch++);
531            if (*ch=='"')
532            {
533              ch++;
534              for (ch2=tmp;*ch!='"';ch++,ch2++)
535              { *ch2=*ch; }
536              *ch2=0;
537              first=make_depend_list(first,tmp,platform);
538            }
539          }
540        }
541      }
542    }
543    fclose(fp);
544  }
545  return first;
546}
547
548void list_c_depends(FILE *fp, char *file, int platform, int optimize)
549{
550  char nn[200],nn2[200],*ndir;
551  struct dep_file *first,*p;
552  first=make_depend_list(NULL,file,platform);
553  fprintf(stderr,"checking dependancies for : %s                      \r",file);
554  strcpy(nn,file);
555  nn[strlen(nn)-2]=0;
556  oextend(NULL,nn,nn2,platform,optimize);
557  if (nn2[0]=='.' && (nn2[1]=='\\' || nn2[1]=='/'))
558    ndir=nn2+2;
559  else ndir=nn2;
560  while (first)
561  {
562    if (strcmp(first->name,file))
563      fprintf(fp,"%s : %s\n",ndir,first->name);
564    p=first;
565    first=first->next;
566    free(p);
567  }
568}
569
570void oextend(char *dir, char *word, char *new_dir, int platform, int optimize)
571{
572  char slash,*sl,*last_slash,ext[200],small_word[100],mk[200];
573  if (platform==DOS) slash='\\'; else slash='/';
574  new_dir[0]=0;
575  if (dir && strcmp(dir,".") && strcmp(dir,".\\") && strcmp(dir,"./"))
576    sprintf(new_dir,"%s%c%s",dir,slash,word);
577  else strcpy(new_dir,word);
578
579  for (sl=new_dir,last_slash=NULL;*sl;sl++)
580    if (*sl=='\\' || *sl=='/')
581      last_slash=sl;
582
583  if (last_slash)
584  {
585    strcpy(small_word,last_slash+1);
586    *(last_slash+1)=0;
587  }
588  else
589  {
590    strcpy(small_word,new_dir);
591    new_dir[0]=0;
592  }
593 
594  if (dir && strcmp(dir,".") && strcmp(dir,".\\") && strcmp(dir,"./"))
595    sprintf(mk,"%s%c%s",dir,slash,word);
596  else
597    strcpy(mk,word);
598
599
600  sprintf(mk,"%s%c%s",dir,slash,word);
601
602  for (sl=mk;*sl;sl++);
603  while (*sl!='/' && *sl!='\\') sl--;
604  sl++;
605  if (optimize)
606    sprintf(sl,"%s/%s",plat_name[platform],"opt");
607  else
608    sprintf(sl,"%s/%s",plat_name[platform],"debug");
609  create_dir(mk);
610
611
612  if (optimize)
613    sprintf(ext,"%s/%s/%s%s",plat_name[platform],"opt",small_word,object_extension(platform));
614  else
615    sprintf(ext,"%s/%s/%s%s",plat_name[platform],"debug",small_word,object_extension(platform));
616
617  strcat(new_dir,ext);
618  if (platform==DOS)
619  {   
620    for (sl=new_dir;*sl;sl++)
621      if (*sl=='/') *sl='\\';
622  }
623}
624
625void list_o_depends(FILE *fp, char *var, char *dir, int platform, int optimize)
626{
627  char *ch,word[100],tmp[200],o_name[200],sl,*tail;
628  if (platform==DOS) sl='\\'; else sl='/';
629  get_var(var,z);
630  ch=z;
631  if (!dir) dir=".";
632  dos_path(dir);
633  if (optimize) tail="_O"; else tail="_D";
634 
635  while (fetch_word(&ch,word))
636  {
637    oextend(dir,word,o_name,platform,optimize);
638    if (!get_var(o_name,z))
639    {
640      dos_path(word);
641      if (platform!=DOS)
642      {
643        if (!strcmp(dir,"."))
644          fprintf(fp,"%s : %s.c\n",o_name,word);
645        else
646          fprintf(fp,"%s : %s%c%s.c\n",o_name,dir,sl,word);
647      }
648      else
649        fprintf(fp,"%s : .%c%s%c%s.c\n",o_name,sl,dir,sl,word);
650
651      if (platform==DOS)
652        fprintf(fp,"\twpp386 %s%c%s.c $(CFLAGS%s) -fo=%s\n",dir,sl,word,tail,o_name);
653      else
654        fprintf(fp,"\t$(CC) %s%c%s.c $(CFLAGS%s) -c -o %s\n",dir,sl,word,tail,o_name);
655
656
657      store_var(o_name,"O");
658      if (dir)     
659        sprintf(tmp,"%s%c%s.c",dir,sl,word);
660      else
661        sprintf(tmp,"%s.c",word);
662      list_c_depends(fp,tmp,platform,optimize);
663    }
664  }
665
666}
667
668
669void write_flags(FILE *fp,int platform, int optimize)
670{
671  char tmp[1000];
672  char nm[100];
673  if (optimize)
674    fprintf(fp,"CFLAGS_O=%s",include_path(platform));
675  else
676    fprintf(fp,"CFLAGS_D=%s",include_path(platform));
677
678  if (optimize)
679    sprintf(nm,"%s_OPTIMIZE",plat_name[platform]);
680  else
681    sprintf(nm,"%s_DEBUG",plat_name[platform]);
682
683  get_var(nm,tmp);
684  fprintf(fp," %s ",tmp);
685
686
687  if (platform!=DOS && platform!=LINUX)
688    fprintf(fp,"-DBIG_ENDIANS ");
689  if (platform==SUN)
690    fprintf(fp,"-I/lusr/X11R5/include ");
691  if (get_var("CFLAGS",z))
692    fprintf(fp,"%s ",z);
693
694  sprintf(tmp,"%s_FLAGS",plat_name[platform]);
695  if (get_var(tmp,z))
696    fprintf(fp,"%s ",z);
697
698
699  fprintf(fp,"\n");
700}
701
702void make_makefile(int platform)
703{
704  char tmp[100],*s,de[5];
705  FILE *fp;
706  if (platform==DOS)
707    strcpy(de,".exe");
708  else de[0]=0;
709 
710  if (!get_var("MAKEFILE_NAME",tmp))
711  {
712    if (platform==DOS)
713      strcpy(tmp,"makefile.wat");
714    else
715      strcpy(tmp,"Makefile");
716  }
717
718  fp=fopen(tmp,"w");
719
720  if (!fp)
721  {
722    printf("Unable to open %s for writing\n",tmp);
723    exit(0);
724  }
725 
726  fprintf(fp,"CC=%s\n",compiler(platform));
727
728  write_flags(fp,platform,0);
729  write_flags(fp,platform,1);
730
731
732
733  list_o_files("IMLIB_OBJS",fp,imlib_objs,imlib_dir,object_extension(platform),platform,0);
734  list_o_files("IMLIB_OBJS",fp,imlib_objs,imlib_dir,object_extension(platform),platform,1);
735  list_o_files("PROG_OBJS",fp,ofiles,NULL,object_extension(platform),platform,0);
736  list_o_files("PROG_OBJS",fp,ofiles,NULL,object_extension(platform),platform,1);
737 
738
739  if (platform==LINUX)        /* for linux make two versions of program,  X11 & SVGA */
740  {
741    sprintf(tmp,"%sx",basename);
742    fprintf(fp,"all : %s %s\n\n",basename,tmp);
743   
744    make_program(fp,basename,"LINUX_SVGA",platform,0);
745    make_program(fp,tmp,"LINUX_X",platform,0);
746
747    fprintf(fp,"opt : %so %so\n\n",basename,tmp);
748   
749    make_program(fp,basename,"LINUX_SVGA",platform,1);
750    make_program(fp,tmp,"LINUX_X",platform,1);
751  }
752  else
753  {
754    fprintf(fp,"all : %s%s\n\n",basename,de);   
755    make_program(fp,basename,plat_name[platform],platform,0);   
756
757    fprintf(fp,"opt : %so%s\n\n",basename,de);
758    make_program(fp,basename,plat_name[platform],platform,1);   
759  }
760  sprintf(tmp,"%s_FILES",plat_name[platform]);
761
762  list_o_depends(fp,tmp,imlib_dir,platform,0);
763  list_o_depends(fp,tmp,imlib_dir,platform,1);
764  list_o_depends(fp,"IMLIB_OBJS",imlib_dir,platform,0);
765  list_o_depends(fp,"IMLIB_OBJS",imlib_dir,platform,1);
766  list_o_depends(fp,"O_FILES",NULL,platform,0);
767  list_o_depends(fp,"O_FILES",NULL,platform,1);
768  if (platform!=DOS)
769  {
770    fprintf(fp,"clean :\n\t"
771            "rm -f $(%s_FILES) $(IMLIB_OBJS) $(O_FILES)\n",
772            plat_name[platform]);
773    fprintf(fp,"cleano :\n\t"
774            "rm -f $(%s_FILES_O) $(IMLIB_OBJS_O) $(O_FILES_O)\n",
775            plat_name[platform]);
776  }
777  if (plat_stuff)
778    fprintf(fp,"%s",plat_stuff);   /* add any platform specific additions  */
779
780  fclose(fp);
781}
782
783
784void process_file(char *name)
785{
786  char line[500],tmp[3000],*chp;
787  int ol;
788  int get_next_line,i;
789  FILE *fp;
790  ol=line_on;
791  fp=fopen(name,"rb");
792  if (!fp)
793  {
794    printf("Unable to open makefile template (%s)\n",name);
795    exit(1);
796  }
797
798  line_on=1;
799  while (!feof(fp))
800  {
801    tmp[0]=0;   
802    do
803    {
804      get_next_line=0;
805      fgets(line,1000,fp);
806     
807      for (chp=line;*chp && *chp!=';';chp++);
808      *chp=0;
809
810      while (line[strlen(line)-1]=='\n' || line[strlen(line)-1]=='\r' || line[strlen(line)-1]==' ')
811        line[strlen(line)-1]=0;
812
813      if (line[strlen(line)-1]=='\\')
814      {
815        line[strlen(line)-1]=0;
816        get_next_line=1;
817      }
818      strcat(tmp,line);
819     
820    } while (get_next_line && !feof(fp));
821           
822
823    if (!feof(fp))
824      process_line(tmp,fp);
825    line_on++;
826  }
827
828  fclose(fp);
829  line_on=ol;
830}
831
832char *template_file="maker.tmp";
833main(int argc, char **argv)
834{
835  int pf,i;
836  char tmp[1000];
837  first_var=NULL;
838  no_include=0;
839
840  for (i=1;i<argc;i++)
841  {
842    if (!strcmp(argv[i],"-f"))
843    {
844      i++;
845      template_file=argv[i];
846    }
847    if (!strcmp(argv[i],"-noi"))
848      no_include=1;
849  }
850
851  process_file(template_file);
852  pf=detect_platform();
853  printf("Genering Makefile for %s\n",plat_names[pf]);
854
855  if (get_var("O_FILES",tmp))
856    ofiles=(char *)strcpy((char *)malloc(strlen(tmp)+1),tmp);
857  if (get_var("BASE_NAME",tmp))
858    basename=(char *)strcpy((char *)malloc(strlen(tmp)+1),tmp);
859  if (get_var("IMLIB_DIR",tmp))
860    imlib_dir=(char *)strcpy((char *)malloc(strlen(tmp)+1),tmp);
861  if (get_var("IMLIB_OBJS",tmp))
862    imlib_objs=(char *)strcpy((char *)malloc(strlen(tmp)+1),tmp);
863
864 
865  make_makefile(pf);
866  printf("done                                               \n");
867}
868
869
Note: See TracBrowser for help on using the repository browser.