diff options
Diffstat (limited to 'translate')
-rw-r--r-- | translate/gcc/Make-lang.in | 54 | ||||
-rwxr-xr-x | translate/gcc/dist.sh | 9 | ||||
-rw-r--r-- | translate/ghdldrv/Makefile | 20 | ||||
-rw-r--r-- | translate/ghdldrv/ghdldrv.adb | 18 | ||||
-rw-r--r-- | translate/ortho_front.adb | 13 |
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; |