kolibrios-gitea/programs/develop/libraries/menuetlibc/linuxtools/mgcc.c

66 lines
1.6 KiB
C
Raw Normal View History

#include<stdio.h>
#include<stdlib.h>
#ifndef WEXITSTATUS
#include <sys/wait.h>
#endif
char buf[32768];
#if (HAS_DEVENV == 0)
char * __dev_env;
#endif
// version-specific switches
#if __GNUC__ >= 4 && __GNUC_MINOR__ >= 4
#define GCCOPT "-fno-stack-protector -mincoming-stack-boundary=2 "
#elif __GNUC__ >= 4 && __GNUC_MINOR__ >= 1
#define GCCOPT "-fno-stack-protector "
#else
#define GCCOPT
#endif
static void __env(void)
{
char * p=getenv("MENUETDEV");
if(!p)
{
printf("MENUETDEV system variable not set !!!\n");
exit(-1);
}
#if (HAS_DEVENV == 0)
__dev_env=p;
#endif
}
int main(int argc,char * argv[])
{
int u;
__env();
if(argc<3)
{
fprintf(stderr,"Usage: %s infile.c outfile.o\n",argv[0]);
return 1;
}
#if (HAS_DEVENV==1)
sprintf(buf,"gcc -c %s -o %s -Os -nostdinc -fno-builtin -I/dev/env/MENUETDEV/include -fno-pic "
GCCOPT
"-mno-stack-arg-probe -mpreferred-stack-boundary=2 "
"-fno-common -DMENUETDEV='\"/dev/env/MENUETDEV\"' "
"-D__DEV_CONFIG_H='</dev/env/MENUETDEV/config.h>' -D__MENUETOS__ ",argv[1],argv[2]);
#else
sprintf(buf,"gcc -c %s -o %s -Os -nostdinc -fno-builtin -I%s/include -fno-pic "
GCCOPT
"-mno-stack-arg-probe -mpreferred-stack-boundary=2 "
"-fno-common -DMENUETDEV='\"%s\"' "
"-D__DEV_CONFIG_H=\"<%s/config.h>\" -D__MENUETOS__ ",argv[1],argv[2],__dev_env,__dev_env,__dev_env);
#endif
if(argc>3)
for(u=3;u<argc;u++)
{
strcat(buf,argv[u]);
strcat(buf," ");
}
return WEXITSTATUS(system(buf));
}