aboutsummaryrefslogtreecommitdiffstats
path: root/src/ghdldrv/ghdllocal.adb
diff options
context:
space:
mode:
Diffstat (limited to 'src/ghdldrv/ghdllocal.adb')
-rw-r--r--src/ghdldrv/ghdllocal.adb44
1 files changed, 26 insertions, 18 deletions
diff --git a/src/ghdldrv/ghdllocal.adb b/src/ghdldrv/ghdllocal.adb
index 75ececd4f..1b34af41e 100644
--- a/src/ghdldrv/ghdllocal.adb
+++ b/src/ghdldrv/ghdllocal.adb
@@ -55,46 +55,54 @@ package body Ghdllocal is
Compile_Init;
end Init;
- procedure Decode_Option (Cmd : in out Command_Lib;
- Option : String;
- Arg : String;
- Res : out Option_Res)
+ function Decode_Driver_Option (Option : String) return Boolean
is
- pragma Unreferenced (Cmd);
- pragma Unreferenced (Arg);
- Opt : constant String (1 .. Option'Length) := Option;
+ subtype Opt_String is String (1 .. Option'Length);
+ Opt : Opt_String renames Option;
begin
- Res := Option_Bad;
if Opt = "-v" and then Flag_Verbose = False then
Flag_Verbose := True;
- Res := Option_Ok;
+ return True;
elsif Opt'Length > 9 and then Opt (1 .. 9) = "--PREFIX=" then
Switch_Prefix_Path := new String'(Opt (10 .. Opt'Last));
- Res := Option_Ok;
+ return True;
elsif Opt = "--ieee=synopsys" then
Flag_Ieee := Lib_Synopsys;
- Res := Option_Ok;
+ return True;
elsif Opt = "--ieee=mentor" then
Flag_Ieee := Lib_Mentor;
- Res := Option_Ok;
+ return True;
elsif Opt = "--ieee=none" then
Flag_Ieee := Lib_None;
- Res := Option_Ok;
+ return True;
elsif Opt = "--ieee=standard" then
Flag_Ieee := Lib_Standard;
- Res := Option_Ok;
+ return True;
elsif Opt = "-m32" then
Flag_32bit := True;
- Res := Option_Ok;
+ return True;
elsif Opt'Length >= 2
and then (Opt (2) = 'g' or Opt (2) = 'O')
then
-- Silently accept -g and -O.
+ return True;
+ else
+ return Options.Parse_Option (Opt);
+ end if;
+ end Decode_Driver_Option;
+
+ procedure Decode_Option (Cmd : in out Command_Lib;
+ Option : String;
+ Arg : String;
+ Res : out Option_Res)
+ is
+ pragma Unreferenced (Cmd);
+ pragma Unreferenced (Arg);
+ begin
+ if Decode_Driver_Option (Option) then
Res := Option_Ok;
else
- if Options.Parse_Option (Opt) then
- Res := Option_Ok;
- end if;
+ Res := Option_Bad;
end if;
end Decode_Option;