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

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

?? ghdldrv.adb

?? vhdl集成電路設計軟件.需要用gcc-4.0.2版本編譯.
?? ADB
?? 第 1 頁 / 共 4 頁
字號:
--  GHDL driver - commands invoking gcc.--  Copyright (C) 2002, 2003, 2004, 2005 Tristan Gingold----  GHDL is free software; you can redistribute it and/or modify it under--  the terms of the GNU General Public License as published by the Free--  Software Foundation; either version 2, or (at your option) any later--  version.----  GHDL is distributed in the hope that it will be useful, but WITHOUT ANY--  WARRANTY; without even the implied warranty of MERCHANTABILITY or--  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License--  for more details.----  You should have received a copy of the GNU General Public License--  along with GCC; see the file COPYING.  If not, write to the Free--  Software Foundation, 59 Temple Place - Suite 330, Boston, MA--  02111-1307, USA.with Ada.Command_Line; use Ada.Command_Line;with Ada.Text_IO; use Ada.Text_IO;with Ada.Characters.Latin_1;with GNAT.OS_Lib; use GNAT.OS_Lib;with GNAT.Table;with GNAT.Dynamic_Tables;with Libraries;with Name_Table; use Name_Table;with Std_Package;with Types; use Types;with Iirs; use Iirs;with Files_Map;with Flags;with Configuration;--with Disp_Tree;with Default_Pathes;with Interfaces.C_Streams;with System;with Ghdlmain; use Ghdlmain;with Ghdllocal; use Ghdllocal;with Version;package body Ghdldrv is   --  Name of the tools used.   Compiler_Cmd : String_Access := null;   Post_Processor_Cmd : String_Access := null;   Assembler_Cmd : constant String := "as";   Linker_Cmd : constant String := "gcc";   --  Path of the tools.   Compiler_Path : String_Access;   Post_Processor_Path : String_Access;   Assembler_Path : String_Access;   Linker_Path : String_Access;   --  Set by the '-o' option: the output filename.  If the option is not   --  present, then null.   Output_File : String_Access;   --  "-o" string.   Dash_O : String_Access;   --  "-S" string.   Dash_S : String_Access;   --  "-quiet" option.   Dash_Quiet : String_Access;   type Compile_Kind_Type is (Compile_Mcode, Compile_Gcc, Compile_Debug);   Compile_Kind : Compile_Kind_Type := Compile_Gcc;   --  If set, do not assmble   Flag_Asm : Boolean;   --  If true, executed commands are displayed.   Flag_Disp_Commands : Boolean;   --  Flag not quiet   Flag_Not_Quiet : Boolean;   --  True if failure expected.   Flag_Expect_Failure : Boolean;   --  Argument table for the tools.   --  Each table low bound is 1 so that the length of a table is equal to   --  the last bound.   package Argument_Table_Pkg is new GNAT.Dynamic_Tables     (Table_Component_Type => String_Access,      Table_Index_Type => Integer,      Table_Low_Bound => 1,      Table_Initial => 4,      Table_Increment => 100);   use Argument_Table_Pkg;   --  Arguments for tools.   Compiler_Args : Argument_Table_Pkg.Instance;   Postproc_Args : Argument_Table_Pkg.Instance;   Assembler_Args : Argument_Table_Pkg.Instance;   Linker_Args : Argument_Table_Pkg.Instance;   --  Display the program spawned in Flag_Disp_Commands is TRUE.   --  Raise COMPILE_ERROR in case of failure.   procedure My_Spawn (Program_Name : String; Args : Argument_List)   is      Status : Integer;   begin      if Flag_Disp_Commands then         Put (Program_Name);         for I in Args'Range loop            Put (' ');            Put (Args (I).all);         end loop;         New_Line;      end if;      Status := Spawn (Program_Name, Args);      if Status = 0 then         return;      elsif Status = 1 then         Error ("compilation error");         raise Compile_Error;      else         Error ("exec error");         raise Exec_Error;      end if;   end My_Spawn;   --  Compile FILE with additional argument OPTS.   procedure Do_Compile (Options : Argument_List; File : String)   is      Obj_File : String_Access;      Asm_File : String_Access;      Post_File : String_Access;      Success : Boolean;   begin      --  Create post file.      case Compile_Kind is         when Compile_Debug =>            Post_File := Append_Suffix (File, Post_Suffix);         when others =>            null;      end case;      --  Create asm file.      case Compile_Kind is         when Compile_Gcc           | Compile_Debug =>            Asm_File := Append_Suffix (File, Asm_Suffix);         when Compile_Mcode =>            null;      end case;      --  Create obj file.      if Compile_Kind = Compile_Mcode or else not Flag_Asm      then         Obj_File := Append_Suffix (File, Get_Object_Suffix.all);      end if;      --  Compile.      declare         P : Natural;         Nbr_Args : Natural := Last (Compiler_Args) + Options'Length + 4;         Args : Argument_List (1 .. Nbr_Args);      begin         P := 0;         for I in First .. Last (Compiler_Args) loop            P := P + 1;            Args (P) := Compiler_Args.Table (I);         end loop;         for I in Options'Range loop            P := P + 1;            Args (P) := Options (I);         end loop;         --  Add -quiet.         if not Flag_Not_Quiet then            P := P + 1;            Args (P) := Dash_Quiet;         end if;         Args (P + 1) := Dash_O;         case Compile_Kind is            when Compile_Debug =>               Args (P + 2) := Post_File;            when Compile_Gcc =>               Args (P + 2) := Asm_File;            when Compile_Mcode =>               Args (P + 2) := Obj_File;         end case;         Args (P + 3) := new String'(File);         My_Spawn (Compiler_Path.all, Args (1 .. P + 3));         Free (Args (P + 3));      exception         when Compile_Error =>            --  Delete temporary file in case of error.            Delete_File (Args (P + 2).all, Success);            --  FIXME: delete object file too ?            raise;      end;      --  Post-process.      if Compile_Kind = Compile_Debug then         declare            P : Natural;            Nbr_Args : Natural := Last (Postproc_Args) + 4;            Args : Argument_List (1 .. Nbr_Args);         begin            P := 0;            for I in First .. Last (Postproc_Args) loop               P := P + 1;               Args (P) := Postproc_Args.Table (I);            end loop;            if not Flag_Not_Quiet then               P := P + 1;               Args (P) := Dash_Quiet;            end if;            Args (P + 1) := Dash_O;            Args (P + 2) := Asm_File;            Args (P + 3) := Post_File;            My_Spawn (Post_Processor_Path.all, Args (1 .. P + 3));         end;         Free (Post_File);      end if;      --  Assemble.      if Compile_Kind >= Compile_Gcc then         if Flag_Expect_Failure then            Delete_File (Asm_File.all, Success);         elsif not Flag_Asm then            declare               P : Natural;               Nbr_Args : Natural := Last (Assembler_Args) + 4;               Args : Argument_List (1 .. Nbr_Args);               Success : Boolean;            begin               P := 0;               for I in First .. Last (Assembler_Args) loop                  P := P + 1;                  Args (P) := Assembler_Args.Table (I);               end loop;               Args (P + 1) := Dash_O;               Args (P + 2) := Obj_File;               Args (P + 3) := Asm_File;               My_Spawn (Assembler_Path.all, Args (1 .. P + 3));               Delete_File (Asm_File.all, Success);            end;         end if;      end if;      Free (Asm_File);      Free (Obj_File);   end Do_Compile;   package Filelist is new GNAT.Table     (Table_Component_Type => String_Access,      Table_Index_Type => Natural,      Table_Low_Bound => 1,      Table_Initial => 16,      Table_Increment => 100);   --  Read a list of files from file FILENAME.   --  Lines starting with a '#' are ignored (comments)   --  Lines starting with a '>' are directory lines   --  If first character of a line is a '@', it is replaced with   --    the prefix_path.   --  If TO_OBJ is true, then each file is converted to an object file name   --   (suffix is replaced by the object file extension).   procedure Add_File_List (Filename : String; To_Obj : Boolean)   is      use Interfaces.C_Streams;      use System;      use Ada.Characters.Latin_1;      Dir : String (1 .. max_path_len);      Dir_Len : Natural;      Line : String (1 .. max_path_len);      Stream : Interfaces.C_Streams.FILEs;      Mode : constant String := "rt" & Ghdllocal.Nul;      L : Natural;      File : String_Access;   begin      Line (1 .. Filename'Length) := Filename;      Line (Filename'Length + 1) := Ghdllocal.Nul;      Stream := fopen (Line'Address, Mode'Address);      if Stream = NULL_Stream then         Error ("cannot open " & Filename);         return;      end if;      Dir_Len := 0;      loop         exit when fgets (Line'Address, Line'Length, Stream) = NULL_Stream;         if Line (1) /= '#' then            --  Compute string length.            L := 0;            while Line (L + 1) /= Ghdllocal.Nul loop               L := L + 1;            end loop;            --  Remove trailing NL.            while L > 0 and then (Line (L) = LF or Line (L) = CR) loop               L := L - 1;            end loop;            if Line (1) = '>' then               Dir_Len := L - 1;               Dir (1 .. Dir_Len) := Line (2 .. L);            else               if Line (1) = '@' then                  File := new String'(Prefix_Path.all & Line (2 .. L));               else                  if To_Obj then                     File := new String'(Dir (1 .. Dir_Len)                                         & Get_Base_Name (Line (1 .. L))                                         & Get_Object_Suffix.all);                  else                     File := new String'(Line (1 .. L));                  end if;               end if;               Filelist.Increment_Last;               Filelist.Table (Filelist.Last) := File;               Dir_Len := 0;            end if;         end if;      end loop;      if fclose (Stream) /= 0 then         Error ("cannot close " & Filename);      end if;   end Add_File_List;   function Get_Object_Filename (File : Iir_Design_File) return String   is      Dir : Name_Id;      Name : Name_Id;   begin      Dir := Get_Library_Directory (Get_Library (File));      Name := Get_Design_File_Filename (File);      return Image (Dir) & Get_Base_Name (Image (Name))        & Get_Object_Suffix.all;   end Get_Object_Filename;   Last_Stamp : Time_Stamp_Id;   Last_Stamp_File : Iir;   function Is_File_Outdated (Design_File : Iir_Design_File) return Boolean   is      use Files_Map;      Dir : Name_Id;      Name : Name_Id;      File : Source_File_Entry;   begin      --  Std.Standard is never outdated.      if Design_File = Std_Package.Std_Standard_File then         return False;      end if;      Dir := Get_Library_Directory (Get_Library (Design_File));      Name := Get_Design_File_Filename (Design_File);      declare         Obj_Pathname : String := Get_Object_Filename (Design_File) & Nul;         Stamp : Time_Stamp_Id;      begin         Stamp := Get_File_Time_Stamp (Obj_Pathname'Address);         --  If the object file does not exist, recompile the file.         if Stamp = Null_Time_Stamp then            if Flag_Verbose then               Put_Line ("no object file for " & Image (Name));            end if;            return True;         end if;         --  Keep the time stamp of the most recently analyzed unit.         if Last_Stamp = Null_Time_Stamp           or else Is_Gt (Stamp, Last_Stamp)         then            Last_Stamp := Stamp;            Last_Stamp_File := Design_File;         end if;      end;      --  2) file has been modified.      File := Load_Source_File (Get_Design_File_Directory (Design_File),                                Get_Design_File_Filename (Design_File));      if not Is_Eq (Get_File_Time_Stamp (File),                    Get_File_Time_Stamp (Design_File))      then         if Flag_Verbose then            Put_Line ("file " & Image (Get_File_Name (File))                 & " has been modified");         end if;         return True;      end if;      return False;   end Is_File_Outdated;   function Is_Unit_Outdated (Unit : Iir_Design_Unit) return Boolean   is      Design_File : Iir_Design_File;   begin      --  Std.Standard is never outdated.      if Unit = Std_Package.Std_Standard_Unit then         return False;      end if;      Design_File := Get_Design_File (Unit);      --  1) not yet analyzed:      if Get_Date (Unit) not in Date_Valid then         if Flag_Verbose then            Disp_Library_Unit (Get_Library_Unit (Unit));            Put_Line (" was not analyzed");         end if;         return True;      end if;      --  3) the object file does not exist.      --  Already checked.      --  4) one of the dependence is newer      declare         Depends : Iir_List;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲影视在线播放| 蜜桃精品视频在线| 国产精品视频在线看| 26uuu色噜噜精品一区| 日韩西西人体444www| 欧美一区二区免费| 久久久综合精品| 日本一二三四高清不卡| 中文字幕一区二区不卡| 亚洲色图视频网| 一区二区不卡在线播放 | 精品一区二区三区不卡| 蜜桃在线一区二区三区| 国精产品一区一区三区mba桃花| 老色鬼精品视频在线观看播放| 国内精品国产成人国产三级粉色| 国产乱码字幕精品高清av | 日韩一区二区视频| 亚洲精品一区二区三区精华液| 久久久国产综合精品女国产盗摄| 国产精品久久久久国产精品日日| 中文字幕一区在线观看视频| 亚洲成人免费视频| 极品少妇一区二区| 91欧美一区二区| 91精品国产综合久久香蕉麻豆| 久久女同互慰一区二区三区| 亚洲天堂精品在线观看| 美洲天堂一区二卡三卡四卡视频| 国产麻豆精品在线观看| 日本精品视频一区二区三区| 欧美福利视频导航| 国产精品国产三级国产aⅴ中文| 亚洲电影一区二区三区| 国产在线精品一区二区| 一本大道久久a久久精品综合| 欧美一级免费大片| 成人欧美一区二区三区视频网页| 男人的天堂久久精品| 99r国产精品| 欧美精品一区男女天堂| 亚洲成a人在线观看| 国产91精品一区二区| 欧美美女黄视频| 亚洲伦在线观看| 国产成+人+日韩+欧美+亚洲| 欧美日韩国产综合久久 | 欧美电视剧免费全集观看| 国产精品久久久久久一区二区三区 | 4438亚洲最大| 一区二区三区精品在线| 成人精品高清在线| 久久综合九色综合欧美98| 肉肉av福利一精品导航| 99久久国产免费看| 国产欧美一区二区精品久导航| 日韩高清一级片| 在线观看精品一区| 亚洲男女毛片无遮挡| 成人午夜电影网站| 久久久久9999亚洲精品| 免费一级欧美片在线观看| 欧美区一区二区三区| 亚洲精品久久久久久国产精华液| 国产91在线|亚洲| 久久免费精品国产久精品久久久久 | 亚洲电影你懂得| 日本黄色一区二区| 亚洲天堂2016| 色天天综合久久久久综合片| 亚洲人精品午夜| 91麻豆产精品久久久久久| 中文字幕在线观看一区| 成人av在线资源| 亚洲女性喷水在线观看一区| eeuss鲁片一区二区三区| 中文字幕一区二区三区av| 99国产精品久久久久久久久久久| 中文字幕欧美一区| 色综合久久88色综合天天6| 中文字幕在线不卡国产视频| 99久久777色| 一区二区高清在线| 欧美猛男超大videosgay| 蜜桃av一区二区在线观看| 精品动漫一区二区三区在线观看| 久久成人久久爱| 国产精品三级在线观看| 色老汉一区二区三区| 亚洲第一二三四区| 日韩欧美一区电影| 国产精品 日产精品 欧美精品| 日本一区二区三区dvd视频在线| 成人激情av网| 视频一区二区欧美| 2023国产精品| 日本韩国精品在线| 日本午夜一本久久久综合| 亚洲精品一区在线观看| 99re在线精品| 美女在线观看视频一区二区| 欧美国产日产图区| 欧美网站一区二区| 国产麻豆一精品一av一免费| 中文字幕一区二区三区四区不卡 | av在线一区二区三区| 一区二区不卡在线视频 午夜欧美不卡在| 欧美日韩综合一区| 国产麻豆成人精品| 亚洲一区二区三区四区的| 久久这里都是精品| 欧美在线视频不卡| 高清国产午夜精品久久久久久| 亚洲综合色丁香婷婷六月图片| 337p粉嫩大胆色噜噜噜噜亚洲| 91一区二区三区在线播放| 蜜桃av一区二区三区| 一区二区三区中文字幕| 久久久精品人体av艺术| 欧美疯狂性受xxxxx喷水图片| 成人黄色av网站在线| 另类小说欧美激情| 亚洲已满18点击进入久久| 国产精品久久午夜夜伦鲁鲁| 91精品国产91热久久久做人人| 91小视频在线观看| 国产91在线观看| 国产一区二区三区免费| 天堂成人免费av电影一区| 亚洲精品国产视频| 国产精品理论片在线观看| 精品区一区二区| 欧美电影在哪看比较好| 欧美性欧美巨大黑白大战| www.视频一区| 成人99免费视频| 国产宾馆实践打屁股91| 国产真实乱对白精彩久久| 蜜桃av噜噜一区二区三区小说| 五月天亚洲精品| 亚洲成人av电影| 天天爽夜夜爽夜夜爽精品视频| 亚洲精品国产精品乱码不99| 亚洲欧洲精品一区二区精品久久久| 久久色在线观看| 国产三级欧美三级| 国产亚洲污的网站| 国产欧美日本一区视频| 亚洲国产高清在线| 国产精品国产三级国产普通话99| 欧美极品aⅴ影院| 国产女主播在线一区二区| 欧美激情艳妇裸体舞| 国产精品久久久久一区| 最新国产の精品合集bt伙计| 亚洲伦在线观看| 亚洲午夜久久久久| 免费久久精品视频| 国产自产2019最新不卡| 国产99一区视频免费| 成人av影院在线| 在线观看中文字幕不卡| 欧美精品在线一区二区| 日韩欧美一二三四区| 久久久久久久精| 综合在线观看色| 午夜精品国产更新| 卡一卡二国产精品| 成人一级片网址| 欧美日韩免费一区二区三区视频| 7777精品伊人久久久大香线蕉经典版下载 | 国产精品国产三级国产普通话三级 | 中文字幕中文在线不卡住| 国产精品久久三区| 亚洲精品五月天| 青娱乐精品在线视频| 国产福利一区在线| 色综合久久久久久久久| 91麻豆精品国产91久久久久久久久 | 日韩和欧美的一区| 国产精选一区二区三区| 95精品视频在线| 欧美一区二区三区影视| 中文乱码免费一区二区| 亚洲国产一二三| 国产一区二区三区免费看| 日本高清不卡视频| 精品国产123| 一区二区免费视频| 国产乱码精品1区2区3区| 91一区二区三区在线观看| 欧美一区二区视频免费观看| 国产精品午夜久久| 热久久免费视频| 91福利在线观看| 国产性做久久久久久| 日本不卡123| 在线精品亚洲一区二区不卡| 国产日韩一级二级三级| 日韩电影在线一区二区|