summaryrefslogtreecommitdiff
path: root/translate
diff options
context:
space:
mode:
Diffstat (limited to 'translate')
-rw-r--r--translate/gcc/Make-lang.in54
-rwxr-xr-xtranslate/gcc/dist.sh9
-rw-r--r--translate/ghdldrv/Makefile20
-rw-r--r--translate/ghdldrv/ghdldrv.adb18
-rw-r--r--translate/ortho_front.adb13
5 files changed, 91 insertions, 23 deletions
diff --git a/translate/gcc/Make-lang.in b/translate/gcc/Make-lang.in
index 308f400..3c6e5c3 100644
--- a/translate/gcc/Make-lang.in
+++ b/translate/gcc/Make-lang.in
@@ -69,17 +69,67 @@ AGCC_GCCSRC_DIR=$(srcdir)/..
AGCC_GCCOBJ_DIR=../
####gcc Makefile.inc
+# -*- Makefile -*- for the gcc implemantation of ortho.
+# Copyright (C) 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.
+
+# Variable used:
+# AGCC_GCCSRC_DIR: the gcc source base directory (ie gcc-X.Y.Z-objs/)
+# AGCC_GCCOBJ_DIR: the gcc objects base directory
+# agcc_srcdir: the agcc source directory
+# agcc_objdir: the agcc object directory
+
+AGCC_INC_FLAGS=-I$(AGCC_GCCOBJ_DIR)/gcc -I$(AGCC_GCCSRC_DIR)/include \
+ -I$(AGCC_GCCSRC_DIR)/gcc -I$(AGCC_GCCSRC_DIR)/gcc/config \
+ -I$(AGCC_GCCSRC_DIR)/libcpp/include
+AGCC_CFLAGS=-g -Wall -DIN_GCC $(AGCC_INC_FLAGS)
+
+AGCC_LOCAL_OBJS=ortho-lang.o
+
+AGCC_DEPS := $(AGCC_LOCAL_OBJS)
+AGCC_OBJS := $(AGCC_LOCAL_OBJS) $(AGCC_GCCOBJ_DIR)gcc/attribs.o
+# $(AGCC_GCCOBJ_DIR)gcc/toplev.o
+
+ortho-lang.o: $(agcc_srcdir)/ortho-lang.c \
+ $(AGCC_GCCOBJ_DIR)gcc/gtype-vhdl.h \
+ $(AGCC_GCCOBJ_DIR)gcc/gt-vhdl-ortho-lang.h
+ $(CC) -c -o $@ $< $(AGCC_CFLAGS)
+
+agcc-clean: force
+ $(RM) -f $(agcc_objdir)/*.o
+ $(RM) -f $(agcc_srcdir)/*~
+
+agcc-maintainer-clean: force
+ $(RM) -f $(AGCC_DEPS)
+
+
+.PHONY: agcc-clean agcc-maintainer-clean
# The compiler proper.
# It is compiled into the vhdl/ subdirectory to avoid file name clashes but
# linked in in gcc directory to be able to access to gcc object files.
-ghdl1$(exeext): $(AGCC_OBJS) $(AGCC_DEPS) force
+ghdl1$(exeext): $(AGCC_OBJS) $(AGCC_DEPS) force $(BACKEND) $(LIBDEPS)
CURDIR=`pwd`; cd $(srcdir)/vhdl; VHDLSRCDIR=`pwd`; cd $$CURDIR/vhdl; \
$(GNATMAKE) -c -aI$$VHDLSRCDIR ortho_gcc-main \
-cargs $(CFLAGS) $(GHDL_ADAFLAGS)
$(GNATMAKE) -o $@ -aI$(srcdir)/vhdl -aOvhdl ortho_gcc-main \
-bargs -E -cargs $(CFLAGS) $(GHDL_ADAFLAGS) \
- -largs $(AGCC_OBJS) $(LIBS) $(GMPLIBS)
+ -largs $(AGCC_OBJS) $(filter-out main.o,$(BACKEND)) \
+ $(LIBS) $(BACKENDLIBS)
# The driver for ghdl.
ghdl$(exeext): force
diff --git a/translate/gcc/dist.sh b/translate/gcc/dist.sh
index f79719b..9501334 100755
--- a/translate/gcc/dist.sh
+++ b/translate/gcc/dist.sh
@@ -39,7 +39,7 @@
set -e
# GCC version
-GCCVERSION=4.3.4
+GCCVERSION=4.7.2
# Machine name used by GCC
MACHINE=i686-pc-linux-gnu
# Directory where GCC sources (and objects) stay.
@@ -187,12 +187,17 @@ do_compile ()
case x86 in
x86)
BUILD=i686-pc-linux-gnu
- CONFIG_LIBS="--with-gmp=$PWD/../build --with-mpfr=$PWD/../build"
+ # gmp location (mpfr and mpc are supposed to be at the same place)
+ CONFIG_LIBS="--with-gmp=$PWD/../build"
;;
x86-64)
BUILD=x86_64-pc-linux-gnu
CONFIG_LIBS=""
;;
+ darwin)
+ BUILD=x86_64-apple-darwin10.7
+ CONFIG_LIBS="--with-gmp=$HOME/local"
+ ;;
*)
exit 1
;;
diff --git a/translate/ghdldrv/Makefile b/translate/ghdldrv/Makefile
index 56c0675..b4199a9 100644
--- a/translate/ghdldrv/Makefile
+++ b/translate/ghdldrv/Makefile
@@ -15,7 +15,7 @@
# 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.
-GNATFLAGS=-gnaty3befhkmr -gnata -gnatwae -aI../.. -aI.. -aI../../psl -aI../grt -aO.. -g -gnatf
+GNATFLAGS=-gnaty3befhkmr -gnata -gnatwae -aI../.. -aI.. -aI../../psl -aI../grt -aO.. -g -gnatf -gnat05
GRT_FLAGS=-g
LIB_CFLAGS=-g -O2
GNATMAKE=gnatmake
@@ -41,6 +41,8 @@ all: ghdl_mcode
target=i686-pc-linux-gnu
#target=x86_64-pc-linux-gnu
+#target=i686-apple-darwin
+#target=x86_64-apple-darwin
GRTSRCDIR=../grt
include $(GRTSRCDIR)/Makefile.inc
@@ -63,11 +65,11 @@ ghdl_mcode: default_pathes.ads $(GRT_ADD_OBJS) $(ORTHO_DEPS) memsegs_c.o chkstk.
$(GNATMAKE) -aI../../ortho/mcode -aI../../ortho $(GNATFLAGS) ghdl_mcode $(GNAT_BARGS) -largs memsegs_c.o chkstk.o $(GNAT_LARGS) $(GRT_ADD_OBJS) $(subst @,$(GRTSRCDIR),$(GRT_EXTRA_LIB))
ghdl_llvm_jit: GRT_FLAGS+=-DWITH_GNAT_RUN_TIME
-ghdl_llvm_jit: default_pathes.ads $(GRT_ADD_OBJS) $(ORTHO_DEPS) bindings.o force
+ghdl_llvm_jit: default_pathes.ads $(GRT_ADD_OBJS) $(ORTHO_DEPS) bindings.o force
$(GNATMAKE) -o $@ -aI../../ortho/llvm -aI../../ortho/mcode -aI../../ortho $(GNATFLAGS) ghdl_mcode $(GNAT_BARGS) -largs -m64 bindings.o $(GNAT_LARGS) $(GRT_ADD_OBJS) $(subst @,$(GRTSRCDIR),$(GRT_EXTRA_LIB)) --LINK=g++
-ghdl_simul: default_pathes.ads force
- $(GNATMAKE) -aI../../simulate $(GNATFLAGS) ghdl_simul $(GNAT_BARGS) -largs $(GNAT_LARGS)
+ghdl_simul: default_pathes.ads $(GRT_ADD_OBJS) force
+ $(GNATMAKE) -aI../../simulate $(GNATFLAGS) ghdl_simul $(GNAT_BARGS) -largs $(GNAT_LARGS) $(GRT_ADD_OBJS) $(subst @,$(GRTSRCDIR),$(GRT_EXTRA_LIB))
memsegs_c.o: ../../ortho/mcode/memsegs_c.c
$(CC) -c -g -o $@ $<
@@ -75,10 +77,10 @@ memsegs_c.o: ../../ortho/mcode/memsegs_c.c
bindings.o: ../../ortho/llvm/bindings.cpp
$(CXX) -c -m64 `$(LLVM_CONFIG) --cxxflags` -g -o $@ $<
-ghdl_gcc: default_pathes.ads force
+ghdl_gcc: default_pathes.ads force
$(GNATMAKE) $(GNATFLAGS) ghdl_gcc $(GNAT_BARGS) -largs $(GNAT_LARGS)
-ghdl_llvm: default_pathes.ads force
+ghdl_llvm: default_pathes.ads force
$(GNATMAKE) $(GNATFLAGS) ghdl_llvm $(GNAT_BARGS) -largs $(GNAT_LARGS)
default_pathes.ads: default_pathes.ads.in Makefile
@@ -104,7 +106,8 @@ LIB08_DIR:=../lib/v08
LIBSRC_DIR:=../../libraries
REL_DIR:=../..
-ANALYZE:=../../../ghdldrv/ghdl -a $(LIB_CFLAGS)
+GHDL=ghdl
+ANALYZE:=../../../ghdldrv/$(GHDL) -a $(LIB_CFLAGS)
LN=ln -s
CP=cp
@@ -151,6 +154,9 @@ install.all: install.v87 install.v93 install.standard
install.mcode: install.v87 install.v93 install.v08
install.llvm: install.standard-llvm
+install.simul:
+ $(MAKE) GHDL=ghdl_simul install.v87 install.v93
+
clean: force
$(RM) -f *.o *.ali ghdl_gcc ghdl_mcode
$(RM) -f b~*.ad? *~ default_pathes.ads
diff --git a/translate/ghdldrv/ghdldrv.adb b/translate/ghdldrv/ghdldrv.adb
index 438227d..dde8a40 100644
--- a/translate/ghdldrv/ghdldrv.adb
+++ b/translate/ghdldrv/ghdldrv.adb
@@ -671,6 +671,11 @@ package body Ghdldrv is
Add_Argument (Compiler_Args, new String'(Opt));
Flag_Expect_Failure := True;
Res := Option_Ok;
+ elsif Opt = "-C" then
+ -- Translate -C into --mb-comments, as gcc already has a definition
+ -- for -C. Done before Flags.Parse_Option.
+ Add_Argument (Compiler_Args, new String'("--mb-comments"));
+ Res := Option_Ok;
elsif Options.Parse_Option (Opt) then
Add_Argument (Compiler_Args, new String'(Opt));
Res := Option_Ok;
@@ -888,22 +893,21 @@ package body Ghdldrv is
procedure Bind_Anaelab (Files : Argument_List)
is
- Comp_List : Argument_List (1 .. 2 * Files'Length + 2);
- Flag_C : String_Access;
+ Comp_List : Argument_List (1 .. Files'Length + 2);
Index : Natural;
begin
Comp_List (1) := new String'("--anaelab");
Comp_List (2) := Unit_Name;
- Flag_C := new String'("-c");
Index := 3;
for I in Files'Range loop
- Comp_List (Index) := Flag_C;
- Comp_List (Index + 1) := Files (I);
- Index := Index + 2;
+ Comp_List (Index) := new String'("--ghdl-source=" & Files (I).all);
+ Index := Index + 1;
end loop;
Do_Compile (Comp_List, Elab_Name.all);
- Free (Flag_C);
Free (Comp_List (1));
+ for I in 3 .. Comp_List'Last loop
+ Free (Comp_List (I));
+ end loop;
end Bind_Anaelab;
procedure Link (Add_Std : Boolean;
diff --git a/translate/ortho_front.adb b/translate/ortho_front.adb
index e5d6626..4f6e201 100644
--- a/translate/ortho_front.adb
+++ b/translate/ortho_front.adb
@@ -164,20 +164,23 @@ package body Ortho_Front is
end if;
Action := Action_Anaelab;
return Decode_Elab_Option (Arg);
- elsif Opt.all = "-c" then
+ elsif Opt'Length > 14
+ and then Opt (Opt'First .. Opt'First + 13) = "--ghdl-source="
+ then
if Action /= Action_Anaelab then
Error_Msg_Option
- ("-c option allowed only after --anaelab options");
+ ("--ghdl-source option allowed only after --anaelab options");
return 0;
end if;
- if Arg = null then
- Error_Msg_Option ("filename required after -c");
+ if Arg /= null then
+ Error_Msg_Option ("no argument allowed after --ghdl-source");
return 0;
end if;
declare
L : Id_Link_Acc;
begin
- L := new Id_Link'(Id => Name_Table.Get_Identifier (Arg.all),
+ L := new Id_Link'(Id => Name_Table.Get_Identifier
+ (Opt (Opt'First + 14 .. Opt'Last)),
Link => null);
if Anaelab_Files = null then
Anaelab_Files := L;