亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mk386.c

?? c編譯器源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
    chkNULL( item, "Out of memory !" );

    if ( list->count == 0 )
        list->head = list->tail = item;
    else {
        (list->tail)->next = item;
        list->tail = item;
    }
    list->count++;
}


void ListIter( List *list, void (*iter)( Item *) ) {
    Item *p;

    chkNULL( list, "Pointer is NULL !" );

    if ( list->count && iter ) {
        for ( p = list->head; p; p = p->next )
            (*iter)(p);
    }
}


static char *need;
static int found = 0;


static void find( Item *item ) {
    if ( strcmp( item->data, need ) == 0 )
        found = 1;
}


int  ListFind( List *list, char *data ) {
    found = 0;
    need = data;
    ListIter( list, find );
    return found;
}


char findpath[ _MAX_PATH ];
char findname[ _MAX_PATH ];


void get_source( char *filename ) {
    _splitpath( filename, fdisk, fpath, fname, fext );

    if ( strchr( filename, '?' ) || strchr( filename, '*' ) ) {  /* Check for '*' and '?' */
        _makepath( findpath, fdisk, fpath, NULL, NULL );
        _makepath( findname, NULL, NULL, fname, fext );
        find_source( findpath, findname );
    }
    else
        get_one_source( filename );
}


#ifdef __TURBOC__


void find_source( char *fpath, char *fname ) {
    int fpath_len = strlen( fpath );
    struct ffblk fb;

    if ( !findfirst( strcat( fpath, fname), &fb, FA_ARCH) )
    do {
        fpath[ fpath_len ] = '\0';
        get_one_source( strcat( fpath, fb.ff_name) );
    } while (! findnext(&fb) );
}


#else


void find_source( char *fpath, char *fname ) {
    int fpath_len = strlen( fpath );
    struct find_t fb;

    if (!_dos_findfirst( strcat( fpath, fname), _A_NORMAL, &fb ) )
    do {
        fpath[ fpath_len ] = '\0';
        get_one_source( strcat( fpath, fb.name) );
    } while( ! _dos_findnext( &fb ) );
}


#endif


void get_one_source( char *srcfile ) {
    char file[ _MAX_PATH ];
    strupr( strncpy( file, srcfile, _MAX_PATH ) );
    FileAdd( &files, file );
}


void cleanup( void ) {   // for atexit()
    ListDelete( &files );
    ListDelete( &l_def );
    ListDelete( &l_inc );
    ListDelete( &l_cc386 );
}


#define Def(v) ( (v) ? 'D' : 'U' )

void make( char *maker ) {
    static char make_opt[ _MAX_PATH ];
//  static char *args[3];
    int err;

    sprintf( make_opt,
" -%cMAP -%cDEBUG -%cNODEFLIB -%cKEEP_SRC -%cKEEP_LST -%cLINK -%cASSEMBLE -%cCOMPILE",
        Def( _map_file), Def( _debug), Def( _nodef_lib),
        Def( _keep_gen ), Def( _dump_lst ),
        Def( _link), Def( _assemble ), Def( _compile ) );
    if ( _keep_rsp )
        strcat( make_opt, " -K" );
    if ( _build_all )
        strcat( make_opt, " -B" );
    printf( "%s%s\n", maker, make_opt );
    err = spawnlp( P_OVERLAY, maker, maker, make_opt, NULL );

    if ( err <  0 )
        error( ERR_RUNTIME, maker );
    else if ( err > 0 )
        error( err, maker );
}

char *name( void ) {
    if ( strlen( name_exe ) > 0 )
        return name_exe;
    _splitpath( files.head->data, fdisk, fpath, fname, fext );
    return fname;
}

char *libpath( char *lib ) {
    if ( strlen( path_lib ) == 0 )
        return lib;
    strcpy( _file, path_lib );
    strcat( _file, "\\" );
    return strcat( _file, lib );
}

#define L_( s ) fprintf( frsp, "\t%s", (s) )
#define L0( s ) fprintf( frsp, "%s", (s) )
#define L1( s ) fprintf( frsp, "%s\n", (s) )

static FILE *frsp;


static void compile_inc  ( Item *p ) { fprintf( frsp, "%s;", p->data );   }
static void compile_def  ( Item *p ) { fprintf( frsp, " /D%s", p->data ); }
static void compile_opt  ( Item *p ) { fprintf( frsp, " %s", p->data );   }

static void assemble_def( Item *p ) { fprintf( frsp, " /d%s", p->data ); }
static void assemble_inc( Item *p ) { fprintf( frsp, " /i%s", p->data ); }


static void get_obj( Item *p ) {
    _splitpath( p->data, fdisk, fpath, fname, fext );
    if ( strcmp( fext, ".OBJ" ) == 0 )
        fprintf( frsp, "%s \\\n", p->data );
    else if ( strcmp( fext, ".ASM" ) == 0 ) {
        fprintf( frsp, "$(PATH_OBJ)\\%s.OBJ \\\n", fname );
    }
    else if ( strcmp( fext, ".LIB" ) != 0 ) {
        fprintf( frsp, "$(PATH_OBJ)\\%s.OBJ \\\n", fname );
    }
}

static void get_asm( Item *p ) {
    _splitpath( p->data, fdisk, fpath, fname, fext );
    if ( strcmp( fext, ".OBJ" ) == 0 || strcmp( fext, ".LIB" ) == 0 )
        return;
    else if ( strcmp( fext, ".ASM" ) == 0 )
        fprintf( frsp, "%s \\\n", p->data );
    else
        fprintf( frsp, "%s.ASM \\\n", fname );
}

static void get_lib( Item *p ) {
    _splitpath( p->data, fdisk, fpath, fname, fext );
    if ( strcmp( fext, ".LIB" ) == 0 ) {
        fprintf( frsp, "%s \\\n", p->data );
    }
}

static void get_dep( Item *p ) {
    _splitpath( p->data, fdisk, fpath, fname, fext );
    if ( strcmp( fext, ".LIB" ) == 0 )
        return; // .LIB file
    else if ( strcmp( fext, ".OBJ" ) == 0 )
        return; // .OBJ file
    else if ( strcmp( fext, ".ASM" ) == 0 ) {   // .ASM file
        fprintf( frsp, "$(PATH_OBJ)\\%s.OBJ : %s\n", fname, p->data );
        fprintf( frsp, "  $(AS) %s,$(PATH_OBJ)\\%s.OBJ,$(PATH_OBJ)\\%s.LST,NUL\n",
            p->data, fname, fname );
        fprintf( frsp, "  $(DEL_LST) $(PATH_OBJ)\\%s.LST\n", fname );
    }
    else {  // .CPP file
        fprintf( frsp, "$(PATH_OBJ)\\%s.OBJ : %s.ASM\n", fname, fname );
        fprintf( frsp, "  $(AS) %s.ASM,$(PATH_OBJ)\\%s.OBJ,$(PATH_OBJ)\\%s.LST,NUL\n",
            fname, fname, fname );
        fprintf( frsp, "  $(DEL_LST) $(PATH_OBJ)\\%s.LST\n", fname );
        fprintf( frsp, "  $(DEL_SRC) %s.ASM\n", fname );
        fprintf( frsp, "%s.ASM : %s\n", fname, p->data );
        fprintf( frsp, "  $(CC) %s\n",  p->data );
    }
}


static void wout_obj( Item *p) {
    _splitpath( p->data, fdisk, fpath, fname, fext );
    if ( strcmp( fext, ".LIB" ) == 0 )
        return;
    else if ( strcmp( fext, ".OBJ" ) == 0 )
        fprintf( frsp, "file %s\n", p->data );
    else if ( strcmp( fext, ".ASM" ) == 0 )
        fprintf( frsp, "file $(PATH_OBJ)\\%s.OBJ\n", fname );
    else
        fprintf( frsp, "file $(PATH_OBJ)\\%s.OBJ\n", fname );
}

static void wout_lib( Item *p) {
    _splitpath( p->data, fdisk, fpath, fname, fext );
    if ( strcmp( fext, ".LIB" ) == 0 )
        fprintf( frsp, "library %s\n", p->data );
}

static void delete_obj( Item *p ) {
    _splitpath( p->data, fdisk, fpath, fname, fext );
    if ( strcmp( fext, ".LIB" ) == 0 || strcmp( fext, ".OBJ" ) == 0 )
        return;
    else
        fprintf( frsp, "  $(DEL_SRC) $(PATH_OBJ)\\%s.OBJ\n", fname );
}

void gen_makefile( void ) {
    int tlink = ( _output == 'p' || _output == 'l' );

    frsp = fopen( "MAKEFILE.", "wt" );
    if ( frsp == NULL )
        error( ERR_RUNTIME, "MAKEFILE." );

L1( "#" );
L1( "#  this MAKEFILE. generate MK386.EXE program"  );
L1( "#" );
L1( ".AUTODEPEND" );
L1( ".SWAP" );
L1( "# LINK     = # define LINK for COMPILE, ASSEMBLE & LINK" );
L1( "# ASSEMBLE = # define ASSEMBLE for COMPILE & ASSEMBLE" );
L1( "# COMPILE  = # define COMPILER for ONLY COMPILE" );
L1( "!ifndef LINK" );
L1( "!ifndef ASSEMBLE" );
L1( "!ifndef COMPILE" );
L1( "LINK       =" );
L1( "!endif" );
L1( "!endif" );
L1( "!endif" );
L1( "# DEBUG    = # define DEBUG for debug info and debug startup module" );
L1( "# MAP      = # define MAP for generate .MAP file" );
L1( "# NODEFLIB = # define NODEFLIB for NO link default .OBJ & .LIB" );
L1( "# KEEP_SRC = # define KEEP_SRC for save generate .ASM & .OBJ files" );
L1( "# KEEP_LST = # define KEEP_LST for save generate .LST files" );
L1( "" );
L1( "                                       ### name of .EXE file" );
L0( "NAME = " ); L1( name() );
L1( "                                       ### define tools" );
L1( "CC  = CC386.EXE" );
L1( "AS  = TASM.EXE" );
L1( "                                       ### define options for CC" );
L0( "CC_INC = " );
    if ( l_inc.count > 0 ) {
        L0( "/I" ); ListIter( &l_inc, compile_inc );
    }
L1( "" );
L0( "CC_DEF = " );
    ListIter( &l_def, compile_def );
L1( "" );
L0( "CC_OPT = " );
    fprintf( frsp, "%ci %ce %cA",
	( _dump_cpp ? '+' : '-' ), ( _dump_err ? '+' : '-' ), ( !_ansi ? '+' : '-' ) );
    ListIter( &l_cc386, compile_opt );
L1( "" );
L1( "!ifdef KEEP_LST" );
L1( "CC_OPT = $(CC_OPT) +l" );
L1( "!endif" );
L1( "" );
L1( "CC = $(CC) $(CC_OPT) $(CC_DEF) $(CC_INC)" );
L1( "                                       ### define options for AS" );
L0( "AS_INC = " );
    ListIter( &l_inc, assemble_inc );
L1( "" );
L0( "AS_DEF = " );
    ListIter( &l_def, assemble_def );
L1( "" );
L1( "!ifdef DEBUG");
L1( "AS_OPT = /t /m3 /ml /zi" );
L1( "!else" );
L1( "AS_OPT = /t /m3 /ml /zn" );
L1( "!endif");
L1( "!ifdef KEEP_LST" );
L1( "AS_OPT = $(AS_OPT) /la" );
L1( "!endif" );
L1( "" );
L1( "AS = $(AS) $(AS_OPT) $(AS_DEF) $(AS_INC)" );
L1( "                                       ### .LIB & output .OBJ path" );
L0( "PATH_LIB = " ); L1( path_lib );
L0( "PATH_OBJ = " );
    if ( strlen( path_obj ) > 0 )
        L1( path_obj );
    else
        L1( "." );
L1( "                                       ### default .OBJ & .LIB" );
L1( "!ifdef NODEFLIB");
L1( "DEFAULT_OBJS =" );
L1( "DEFAULT_LIBS =" );
L1( "WLINK_OBJS   =" );
L1( "WLINK_LIBS   =" );
L1( "!else" );
L1( "DEFAULT_LIBS = $(PATH_LIB)\\CLDOS.LIB" );
L1( "WLINK_LIBS   = library $(DEFAULT_LIBS)" );
L1( "!ifdef DEBUG" );
    if ( _output == 'l' )
        L1( "DEFAULT_OBJS = $(PATH_LIB)\\C0DOSLD.OBJ " );
    else if ( _output == 'p' )
        L1( "DEFAULT_OBJS = $(PATH_LIB)\\C0DOSD.OBJ " );
    else
        L1( "DEFAULT_OBJS = $(PATH_LIB)\\C0DOSWD.OBJ " );
L1( "!else" );
    if ( _output == 'l' )
        L1( "DEFAULT_OBJS = $(PATH_LIB)\\C0DOSL.OBJ " );
    else if ( _output == 'p' )
        L1( "DEFAULT_OBJS = $(PATH_LIB)\\C0DOS.OBJ " );
    else
        L1( "DEFAULT_OBJS = $(PATH_LIB)\\C0DOSW.OBJ " );
L1( "!endif" );
L1( "WLINK_OBJS   = file $(DEFAULT_OBJS)" );
L1( "!endif" );
L1( "                                       ### define macro for KEEP_SRC" );
L1( "!ifdef KEEP_SRC");
L1( "DEL_SRC = @rem" );
L1( "!else" );
L1( "DEL_SRC = -del" );
L1( "!endif");
L1( "                                       ### define macro for KEEP_LST" );
L1( "!ifdef KEEP_LST");
L1( "DEL_LST = @rem" );
L1( "!else" );
L1( "DEL_LST = -del" );
L1( "!endif");
L1( "                                       ### define macro for MAP" );
L1( "!ifdef MAP");
L1( "TLINK_OPT = /3/d/c/m/l/s" );
L1( "WLINK_OPT = option map" );
L1( "!else" );
L1( "TLINK_OPT = /3/d/c/x" );
L1( "WLINK_OPT = " );
L1( "!endif");
L1( "                                       ### define macro for DEBUG" );
L1( "!ifdef DEBUG");
L1( "TLINK_DBG = /v" );
L1( "WLINK_DBG = debug option symf" );
L1( "!else" );
L1( "TLINK_DBG = " );
L1( "WLINK_DBG = option quiet" );
L1( "!endif");
L1( "                                       ### .ASM files" );
    fprintf( frsp, "ASMS = \\\n" );
    ListIter( &files, get_asm );
L1( "                                       ### .OBJ files" );
	fprintf( frsp, "OBJS = $(DEFAULT_OBJS) \\\n" );
	ListIter( &files, get_obj );
L1( "                                       ### .LIB files" );
	fprintf( frsp, "LIBS = $(DEFAULT_LIBS) \\\n" );
	ListIter( &files, get_lib );
L1( "                                       ###  main make depend" );
L1( "!ifdef LINK" );
L1( "$(NAME).EXE : $(OBJS) $(LIBS) makefile." );
	if ( tlink )
	{
		L1( "  TLINK.EXE @&&|" );
		L1( "$(TLINK_OPT) $(TLINK_DBG) $(OBJS), $(NAME), $(NAME), $(LIBS)" );
	}
	else
	{
		L1( "  WLINK.EXE @&&|" );
		L1( "$(WLINK_OPT) $(WLINK_DBG)" );
		L1( "format os2 le" );
		L1( "option nod" );
		if ( _output == 'w' ) {
			L1( "option osname='CC386+PMODE/W'" );
			L1( "option stub=$(PATH_LIB)\\PMODEW.EXE" );
		}
		else {
			L1( "option osname='CC386+DOS/4GW'" );
			L1( "option stub=$(PATH_LIB)\\D4GWSTUB.EXE" );
        }
        L1( "name $(NAME)" );
        L1( "$(WLINK_OBJS)" );
        ListIter( &files, wout_obj );
        L1( "$(WLINK_LIBS)" );
        ListIter( &files, wout_lib );
    }
L1( "|" );
    ListIter( &files, delete_obj );
L1( "!else" );
L1( "!ifdef ASSEMBLE");
L1( "assemble : $(OBJS) " );
L1( "!else" );
L1( "!ifdef COMPILE");
L1( "compile : $(ASMS) " );
L1( "!endif" );
L1( "!endif" );
L1( "!endif" );
L1( "                                       ### files depend" );
    ListIter( &files, get_dep );
    fclose( frsp );
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
9191精品国产综合久久久久久| 午夜精品123| 亚洲在线一区二区三区| 欧美浪妇xxxx高跟鞋交| 成人激情免费视频| 国产福利一区在线| 精彩视频一区二区三区| 高潮精品一区videoshd| 91在线porny国产在线看| 99精品欧美一区二区三区小说| 综合亚洲深深色噜噜狠狠网站| 亚洲免费av在线| 精品国产污污免费网站入口 | 国产99久久久国产精品潘金| 国产精品久久久久久久久动漫| 日韩精品一区在线观看| 精品久久久影院| 一区二区三区国产精华| 国产高清不卡二三区| 日韩一区二区免费电影| 欧美视频在线播放| 亚洲精品国久久99热| 日本不卡中文字幕| 欧美乱妇15p| 亚洲第一激情av| 欧美色网站导航| 亚洲一区二区三区爽爽爽爽爽| jlzzjlzz亚洲女人18| 国产精品视频第一区| 成人午夜av在线| 欧美激情一区二区| 风间由美一区二区av101| 成人精品视频.| 国产精品久久久久久户外露出| 国产一级精品在线| 欧美韩日一区二区三区四区| 欧美年轻男男videosbes| 欧美精品一区二区三区高清aⅴ| 久久精品国产99久久6| 精品久久一区二区| 国产成人精品免费一区二区| 国产精品妹子av| 无码av免费一区二区三区试看| 欧美三级电影网| 久久66热偷产精品| 欧美韩国日本综合| 91国偷自产一区二区三区成为亚洲经典 | 国产精品77777| 国产aⅴ精品一区二区三区色成熟| 久久久国产午夜精品| 99国产精品视频免费观看| 亚洲自拍偷拍九九九| 日韩一级二级三级| 成人免费视频视频在线观看免费| 亚洲欧美国产三级| 欧美大片顶级少妇| 国产成人亚洲综合a∨婷婷图片| 一区在线中文字幕| 欧美大尺度电影在线| 99久久99久久精品免费观看| 日韩一区精品视频| 国产精品久久久久久久岛一牛影视 | 成人久久久精品乱码一区二区三区| 中文字幕亚洲精品在线观看| 欧美日韩成人激情| 精品毛片乱码1区2区3区| 欧美做爰猛烈大尺度电影无法无天| 韩国av一区二区| 日韩精品亚洲一区| 中文字幕一区二区视频| xvideos.蜜桃一区二区| 欧美色图第一页| 色综合久久九月婷婷色综合| 国产一二三精品| 免费观看一级特黄欧美大片| 亚洲香蕉伊在人在线观| 欧美高清视频在线高清观看mv色露露十八| 成人免费av网站| 99免费精品在线观看| 国产69精品久久99不卡| 免费欧美日韩国产三级电影| 精品日本一线二线三线不卡| 日韩欧美一级二级三级久久久| 欧美精品日韩综合在线| 欧美亚州韩日在线看免费版国语版| 9人人澡人人爽人人精品| 色琪琪一区二区三区亚洲区| 欧美精品在线观看播放| 日韩女同互慰一区二区| 99久久99久久综合| 99久久精品国产一区二区三区| 高清久久久久久| 91啪九色porn原创视频在线观看| 丁香六月综合激情| 91丨porny丨蝌蚪视频| 欧美日韩一区精品| 久久网站最新地址| 亚洲精品成人悠悠色影视| 五月婷婷综合激情| 国产91精品在线观看| 色嗨嗨av一区二区三区| 日韩片之四级片| 欧美激情一区二区三区全黄| 狠狠色丁香久久婷婷综合丁香| bt欧美亚洲午夜电影天堂| 7777精品伊人久久久大香线蕉最新版| 国产亚洲欧美日韩在线一区| 亚洲精品免费一二三区| 国产麻豆精品95视频| 亚洲精品免费视频| 丁香婷婷深情五月亚洲| 日韩欧美国产一二三区| 一二三四区精品视频| av电影一区二区| 国产日韩综合av| 久久精品国产一区二区三区免费看| 在线观看视频一区二区欧美日韩| 中文字幕第一区| 国产精品亚洲第一区在线暖暖韩国 | 欧美系列一区二区| 国产精品久久久久久久久晋中 | av亚洲精华国产精华精华| 精品国产一区二区三区av性色 | 欧美日本视频在线| 亚洲电影你懂得| 91成人在线精品| 亚洲精品老司机| 一本色道久久综合亚洲aⅴ蜜桃 | 欧美精选午夜久久久乱码6080| 亚洲一区二区三区视频在线播放 | 884aa四虎影成人精品一区| 亚洲精品视频免费看| 色88888久久久久久影院按摩| 日韩理论电影院| 亚洲一区二区三区精品在线| 成人综合在线观看| 国产精品素人一区二区| www.日韩av| 最近日韩中文字幕| 日韩精品一区国产麻豆| 欧美国产综合一区二区| 国产成人免费av在线| 国产精品久久夜| 欧美日本国产视频| 国内一区二区视频| 中文字幕一区二区三区不卡| 欧美日韩国产高清一区| 精品综合免费视频观看| 国产精品久久看| 这里是久久伊人| 91麻豆文化传媒在线观看| 麻豆免费看一区二区三区| 国产欧美一区二区三区在线老狼| 成人av中文字幕| 国产真实乱子伦精品视频| 亚洲视频在线一区| 久久精品国产精品青草| 国产精品理论在线观看| 91精品国产欧美一区二区18| 不卡的av网站| 国产成人鲁色资源国产91色综| 一区二区三区蜜桃| 国产精品乱码一区二区三区软件| 91精品啪在线观看国产60岁| 欧美三级蜜桃2在线观看| a4yy欧美一区二区三区| 国产资源在线一区| 欧美精品一级二级三级| 欧美午夜在线一二页| 成人avav在线| 91无套直看片红桃| 成年人国产精品| 一本大道久久精品懂色aⅴ| 精品一区二区日韩| 国产xxx精品视频大全| 天天av天天翘天天综合网色鬼国产| |精品福利一区二区三区| 国产精品少妇自拍| 中文字幕视频一区二区三区久| 一本色道久久综合亚洲aⅴ蜜桃| 北条麻妃国产九九精品视频| www.亚洲国产| 在线成人小视频| 久久久久久久久久看片| 国产色婷婷亚洲99精品小说| 亚洲国产岛国毛片在线| 亚洲黄色在线视频| 天天射综合影视| 国产精品系列在线播放| 成人小视频在线| 欧美人体做爰大胆视频| 久久影院午夜片一区| 亚洲女人****多毛耸耸8| 亚洲午夜精品一区二区三区他趣| 婷婷成人综合网| 国产高清视频一区| 欧美久久久久中文字幕| 国产精品二三区| 日韩不卡一区二区| 日本乱码高清不卡字幕|