📄 gener.c
字号:
iter0( DEFINED, masm_def );
break;
case ASSEMBLER_WASM:
fprintf( frsp, "AS = WASM\n" );
fprintf( frsp, "AS_OPT = -4ps -fpi87 -q -mf %s -i=$(PATH_INC)",
( ( options & _OPT_DEBUG ) ? "-d1" : "" ) );
iter0( DEFINED, masm_def );
break;
default:
fprintf( stderr, "Use unknow assembler !\n" );
exit(-1);
}
fprintf( frsp, "\n\n" );
fprintf( frsp, "### Linker\n" );
switch ( linker ) {
case LINKER_TLINK:
if ( dosx != DOSX_PMODE ) {
fprintf( stderr, "Warning : TLINK use only with PMODE !\n" );
dosx = DOSX_PMODE;
}
fprintf( frsp, "LNK = TLINK\n"
"LNK_OPT = /3/c/d" );
if ( options & _OPT_MAPFILE )
fprintf( frsp, "/m/l/s" );
else
fprintf( frsp, "/x" );
if ( options & _OPT_DEBUG )
fprintf( frsp, "/v" );
break;
case LINKER_LINK:
if ( dosx != DOSX_PMODE ) {
fprintf( stderr, "Warning : LINK use only with PMODE !\n" );
dosx = DOSX_PMODE;
}
fprintf( frsp, "LNK = LINK\n"
"LNK_OPT = /NOIGNORECASE" );
if ( options & _OPT_MAPFILE )
fprintf( frsp, " /MAP" );
break;
case LINKER_VALX:
if ( dosx != DOSX_PMODE ) {
fprintf( stderr, "Warning : VALX use only with PMODE !\n" );
dosx = DOSX_PMODE;
}
fprintf( frsp, "LNK = VALX\n"
"LNK_OPT = -NOCA -USE32" );
if ( options & _OPT_MAPFILE )
fprintf( frsp, " -MAP" );
else
fprintf( frsp, " -NOMAP" );
break;
case LINKER_WLINK:
if ( dosx == DOSX_PMODE ) {
fprintf( stderr, "Warning : WLINK can't use with PMODE ! Use DOS4G ...\n" );
dosx = DOSX_DOS4G;
}
fprintf( frsp, "LNK = WLINK\n"
"LNK_OPT =" );
if ( options & _OPT_DEBUG )
fprintf( frsp, " debug all op symf" );
break;
default:
fprintf( stderr, "Use unknow linker !\n" );
exit(-1);
}
fprintf( frsp, "\n\n" );
fprintf( frsp, "### Path to default lib & obj\n" );
iter0( PATH_LIB, linker_libpath );
if ( libpath == NULL )
libpath = ".";
fprintf( frsp, "LIBPATH = %s\n\n", libpath );
fprintf( frsp, "### Default lib & obj\n" );
if ( !( options & _OPT_NODEFLIB ) ) {
if ( dosx == DOSX_PMODE ) {
if ( options & _OPT_DEBUG )
fprintf( frsp, "DEFOBJ = $(LIBPATH)\\C0DOSD.OBJ\n" );
else
fprintf( frsp, "DEFOBJ = $(LIBPATH)\\C0DOS.OBJ\n" );
}
else
fprintf( frsp, "DEFOBJ = $(LIBPATH)\\C0DOSW.OBJ\n" );
fprintf( frsp, "DEFLIB = $(LIBPATH)\\CLDOS.LIB\n" );
}
else {
fprintf( frsp, "DEFOBJ =\n" );
fprintf( frsp, "DEFLIB =\n" );
}
fprintf( frsp, "\n" );
fprintf( frsp, "### Name of .EXE file\n"
"EXENAME = %s\n\n", exename );
fprintf( frsp, "### Name of .MAP file\n" );
if ( options & _OPT_MAPFILE )
fprintf( frsp, "MAPNAME = %s.MAP\n\n", exename );
else
fprintf( frsp, "MAPNAME = NUL\n\n", exename );
fprintf( frsp, "### .OBJ file(s)\n"
"OBJS = \\\n" );
iter0( FILE_OBJ, make_list );
fprintf( frsp, "\n" );
fprintf( frsp, "### .LIB file(s)\n"
"LIBS = \\\n" );
iter0( FILE_LIB, make_list );
fprintf( frsp, "\n\n" );
fprintf( frsp, "### Main depend\n"
"$(EXENAME).EXE : makefile. $(OBJS) $(LIBS)\n" );
fprintf( frsp, "\t $(LNK) $(LNK_OPT) @&&|\n" );
switch( linker ) {
case LINKER_TLINK:
case LINKER_LINK:
fprintf( frsp, "\t$(DEFOBJ) $(OBJS)\n\t @echo $(EXENAME).EXE\n\t @echo $(MAPNAME)\n\t @echo $(DEFLIB) $(LIBS)\n" );
break;
case LINKER_VALX:
fprintf( frsp, "\t\"$(DEFOBJ)\" $(OBJS),$(EXENAME).EXE,$(MAPNAME),\"$(DEFLIB)\" $(LIBS)\n" );
break;
case LINKER_WLINK:
fprintf( frsp, "\tformat os2 le\n"
"\top nod\n"
"\top quiet\n" );
switch ( dosx ) {
case DOSX_PMODEW :
fprintf( frsp, "\top osname='CC386+PMODE/W'\n"
"\top stub=$(LIBPATH)\\PMODEW.EXE\n" );
break;
case DOSX_WDOSX :
fprintf( frsp, "\top osname='CC386+WDOSX'\n"
"\top stub=$(LIBPATH)\\WDOSXLE.EXE\n" );
break;
case DOSX_DOS32A :
fprintf( frsp, "\top osname='CC386+DOS/32A'\n"
"\top stub=$(LIBPATH)\\DOS32A.EXE\n" );
break;
case DOSX_ZRDX :
fprintf( frsp, "\top osname='CC386+ZRDX'\n"
"\top stub=$(LIBPATH)\\ZRDX.EXE\n" );
break;
case DOSX_CAUSEWAY :
fprintf( frsp, "\top osname='CC386+CAUSEWAY'\n"
"\top stub=$(LIBPATH)\\CAUSEWAY.EXE\n" );
break;
default:
case DOSX_DOS4G :
fprintf( frsp, "\top osname='CC386+DOS/4G[W]'\n"
"\top stub=$(LIBPATH)\\4GSTUB.EXE\n" );
break;
}
fprintf( frsp, "\tname $(EXENAME).EXE\n"
"\top map=$(MAPNAME)\n" );
if ( !( options & _OPT_NODEFLIB ) )
fprintf( frsp, "\tfile $(DEFOBJ)\n" );
iter0( FILE_OBJ, wlink_obj );
if ( !( options & _OPT_NODEFLIB ) )
fprintf( frsp, "\tlibrary $(DEFLIB)\n" );
iter0( FILE_LIB, wlink_lib );
break;
default:
fprintf( stderr, "Use unknow linker !\n" );
exit(-1);
}
fprintf( frsp, "|\n" );
if ( !(options & _OPT_KEEPRSP ) )
fprintf( frsp, "\t Del $(EXENAME).LNK\n" );
if ( !(options & _OPT_KEEPGEN ) ) {
iter( FILE_ASM, delete_file );
// iter( FILE_OBJ, delete_file );
}
fprintf( frsp, "\n");
// fprintf( frsp, "### .LNK file\n" );
// fprintf( frsp, "$(EXENAME).LNK : makefile. $(OBJS) $(LIBS)\n" );
iter0( FILE_CPP, make_cpp );
iter( FILE_ASM, make_asm );
close_rsp();
if ( options & _OPT_RUNMAKE ) {
switch( maker ) {
case MAKER_MAKE :
exec( "MAKE", ( options & _OPT_BUILDALL ) ? "-B" : "" );
break;
case MAKER_IMAKE :
exec( "IMAKE", ( options & _OPT_BUILDALL ) ? "-B" : "" );
break;
case MAKER_WMAKE :
exec( "WMAKE", ( options & _OPT_BUILDALL ) ? "/a /u" : "/u" );
break;
default:
fprintf( stderr, "Use unknow maker !\n" );
exit(-1);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -