From 7ef79a53a8f3cbb972d3ac7b8b9ab7754f201001 Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Mon, 22 Jan 2018 12:12:27 +0100 Subject: Change libraries path to allow installation of system-wide libraries. For #521 --- Makefile.in | 8 ++--- libraries/Makefile.inc | 77 +++++++++++++++++++++++------------------------ src/ghdldrv/ghdldrv.adb | 2 +- src/ghdldrv/ghdllocal.adb | 17 ++++++----- 4 files changed, 52 insertions(+), 52 deletions(-) diff --git a/Makefile.in b/Makefile.in index 91a42d0d4..f46115721 100644 --- a/Makefile.in +++ b/Makefile.in @@ -416,13 +416,13 @@ LIBSRC_DIR:=$(srcdir)/libraries LIBDST_DIR:=$(libdirsuffix) VHDLLIB_SUBDIRS_COMMON= src/std src/synopsys src/openieee \ - v87/std v87/ieee v87/synopsys \ - v93/std v93/ieee v93/synopsys \ - v08/std + std/v87 ieee/v87 synopsys/v87 \ + std/v93 ieee/v93 synopsys/v93 \ + std/v08 VHDLLIB_SUBDIRS_FULL= src/ieee src/vital95 src/vital2000 src/mentor \ src/ieee2008 \ - v93/mentor v08/ieee v08/synopsys + mentor/v93 ieee/v08 synopsys/v08 ifeq ($(enable_openieee),false) VHDLLIB_SUBDIRS=$(VHDLLIB_SUBDIRS_COMMON) $(VHDLLIB_SUBDIRS_FULL) diff --git a/libraries/Makefile.inc b/libraries/Makefile.inc index 16783684e..f4af50078 100644 --- a/libraries/Makefile.inc +++ b/libraries/Makefile.inc @@ -111,21 +111,18 @@ SED_V87:= sed -e '/--!V87/s/^/ --/' -e '/--START-!V87/,/--END-!V87/s/^/--/' \ SED_V08:= sed -e '/--V87/s/^/ --/' -e '/--!V08/s/^/ --/' \ -e '/--START-!V08/,/--END-!V08/s/^/--/' -LIB87_DIR:=$(LIBDST_DIR)/v87 -STD87_DIR:=$(LIB87_DIR)/std -IEEE87_DIR:=$(LIB87_DIR)/ieee -SYN87_DIR:=$(LIB87_DIR)/synopsys - -LIB93_DIR:=$(LIBDST_DIR)/v93 -STD93_DIR:=$(LIB93_DIR)/std -IEEE93_DIR:=$(LIB93_DIR)/ieee -SYN93_DIR:=$(LIB93_DIR)/synopsys -MENTOR93_DIR:=$(LIB93_DIR)/mentor - -LIB08_DIR:=$(LIBDST_DIR)/v08 -STD08_DIR:=$(LIB08_DIR)/std -IEEE08_DIR:=$(LIB08_DIR)/ieee -SYN08_DIR:=$(LIB08_DIR)/synopsys +STD87_DIR:=$(LIBDST_DIR)/std/v87 +IEEE87_DIR:=$(LIBDST_DIR)/ieee/v87 +SYN87_DIR:=$(LIBDST_DIR)/synopsys/v87 + +STD93_DIR:=$(LIBDST_DIR)/std/v93 +IEEE93_DIR:=$(LIBDST_DIR)/ieee/v93 +SYN93_DIR:=$(LIBDST_DIR)/synopsys/v93 +MENTOR93_DIR:=$(LIBDST_DIR)/mentor/v93 + +STD08_DIR:=$(LIBDST_DIR)/std/v08 +IEEE08_DIR:=$(LIBDST_DIR)/ieee/v08 +SYN08_DIR:=$(LIBDST_DIR)/synopsys/v08 ANALYZE87:=$(ANALYZE) --std=87 ANALYZE93:=$(ANALYZE) --std=93 @@ -169,7 +166,7 @@ $(LIBDST_DIR)/src/openieee/%.v87: $(LIBSRC_DIR)/openieee/%.v87 $(LIBDST_DIR)/src/vital95/%.vhdl: $(LIBSRC_DIR)/vital95/%.vhdl $(CP) $< $@ -ANALYZE_IEEE87=$(ANALYZE87) -P../std --work=ieee +ANALYZE_IEEE87=$(ANALYZE87) -P../.. --work=ieee ieee.v87: $(IEEE87_DIR)/ieee-obj87.cf @@ -189,12 +186,12 @@ synopsys.v87: $(SYN87_DIR)/ieee-obj87.cf $(SYN87_DIR)/ieee-obj87.cf: $(ANALYZE_DEP) $(SYNOPSYS87_SRCS) $(IEEE87_DIR)/ieee-obj87.cf $(RM) -f $@ cd $(SYN87_DIR); \ - $(CP) ../ieee/ieee-obj87.cf . ; \ + $(CP) ../../ieee/v87/ieee-obj87.cf . ; \ test x$(VHDLLIBS_COPY_OBJS) = "xno" || \ for i in $(IEEE_SRCS) $(VITAL95_SRCS); do \ b=`basename $$i .vhdl`; \ - if [ -f ../ieee/$$b.o ]; then \ - $(RM) -f $$b.o; $(LN) ../ieee/$$b.o $$b.o || exit 1; \ + if [ -f ../../ieee/v87/$$b.o ]; then \ + $(RM) -f $$b.o; $(LN) ../../ieee/v87/$$b.o $$b.o || exit 1; \ fi; \ done; \ for i in $(SYNOPSYS87_BSRCS); do \ @@ -233,7 +230,7 @@ $(LIBDST_DIR)/src/openieee/%.v93: $(LIBSRC_DIR)/openieee/%.v93 $(LIBDST_DIR)/src/vital2000/%.vhdl: $(LIBSRC_DIR)/vital2000/%.vhdl $(CP) $< $@ -ANALYZE_IEEE93=$(ANALYZE93) -P../std --work=ieee +ANALYZE_IEEE93=$(ANALYZE93) -P../.. --work=ieee ieee.v93: $(IEEE93_DIR)/ieee-obj93.cf @@ -250,12 +247,12 @@ synopsys.v93: $(SYN93_DIR)/ieee-obj93.cf $(SYN93_DIR)/ieee-obj93.cf: $(ANALYZE_DEP) $(SYNOPSYS93_SRCS) $(IEEE93_DIR)/ieee-obj93.cf $(RM) -f $@ cd $(SYN93_DIR); \ - $(CP) ../ieee/ieee-obj93.cf .; \ + $(CP) ../../ieee/v93/ieee-obj93.cf .; \ test x$(VHDLLIBS_COPY_OBJS) = "xno" || \ for i in $(IEEE_SRCS) $(MATH_SRCS) $(VITAL2000_SRCS); do \ b=`basename $$i .vhdl`; \ - if [ -f ../ieee/$$b.o ]; then \ - $(RM) -f $$b.o; $(LN) ../ieee/$$b.o $$b.o || exit 1; \ + if [ -f ../../ieee/v93/$$b.o ]; then \ + $(RM) -f $$b.o; $(LN) ../../ieee/v93/$$b.o $$b.o || exit 1; \ fi; \ done; \ for i in $(SYNOPSYS93_BSRCS); do \ @@ -271,12 +268,12 @@ mentor.v93: $(MENTOR93_DIR)/ieee-obj93.cf $(MENTOR93_DIR)/ieee-obj93.cf: $(ANALYZE_DEP) $(MENTOR93_SRCS) $(IEEE93_DIR)/ieee-obj93.cf $(RM) -f $@ cd $(MENTOR93_DIR); \ - $(CP) ../ieee/ieee-obj93.cf . ;\ + $(CP) ../../ieee/v93/ieee-obj93.cf . ;\ test x$(VHDLLIBS_COPY_OBJS) = "xno" || \ for i in $(IEEE_SRCS) $(MATH_SRCS) $(VITAL2000_SRCS); do \ b=`basename $$i .vhdl`; \ - if [ -f ../ieee/$$b.o ]; then \ - $(RM) -f $$b.o; $(LN) ../ieee/$$b.o $$b.o || exit 1; \ + if [ -f ../../ieee/v93/$$b.o ]; then \ + $(RM) -f $$b.o; $(LN) ../../ieee/v93/$$b.o $$b.o || exit 1; \ fi; \ done ; \ for i in $(MENTOR93_BSRCS); do \ @@ -305,8 +302,8 @@ $(STD08_DIR)/std-obj08.cf: $(ANALYZE_DEP) $(STD08_SRCS) $(LIBDST_DIR)/src/ieee2008/%.vhdl: $(LIBSRC_DIR)/ieee2008/%.vhdl $(CP) $< $@ -ANALYZE_IEEE08=$(ANALYZE08) -P../std --work=ieee -ANALYZE_VITAL08=$(ANALYZE08) -P../std --work=ieee -frelaxed-rules +ANALYZE_IEEE08=$(ANALYZE08) -P../.. --work=ieee +ANALYZE_VITAL08=$(ANALYZE08) -P../.. --work=ieee -frelaxed-rules ieee.v08: $(IEEE08_DIR)/ieee-obj08.cf @@ -330,12 +327,12 @@ synopsys.v08: $(SYN08_DIR)/ieee-obj08.cf $(SYN08_DIR)/ieee-obj08.cf: $(ANALYZE_DEP) $(SYNOPSYS08_SRCS) $(IEEE08_DIR)/ieee-obj08.cf $(RM) -f $@ cd $(SYN08_DIR); \ - $(CP) ../ieee/ieee-obj08.cf .; \ + $(CP) ../../ieee/v08/ieee-obj08.cf .; \ test x$(VHDLLIBS_COPY_OBJS) = "xno" || \ for i in $(IEEE08_SRCS) $(VITAL2000_SRCS); do \ b=`basename $$i .vhdl`; \ - if [ -f ../ieee/$$b.o ]; then \ - $(RM) -f $$b.o; $(LN) ../ieee/$$b.o $$b.o || exit 1; \ + if [ -f ../../ieee/v08/$$b.o ]; then \ + $(RM) -f $$b.o; $(LN) ../../ieee/v08/$$b.o $$b.o || exit 1; \ fi; \ done; \ for i in $(SYNOPSYS08_BSRCS); do \ @@ -347,15 +344,15 @@ $(SYN08_DIR)/ieee-obj08.cf: $(ANALYZE_DEP) $(SYNOPSYS08_SRCS) $(IEEE08_DIR)/ieee ANALYZE_STD=$(GHDL) --bootstrap-standard $(GHDL_FLAGS) -$(LIB93_DIR)/std/std_standard.o: $(GHDL) std.v93 - cd $(LIB93_DIR)/std; $(ANALYZE_STD) --std=93 +$(STD87_DIR)/std_standard.o: $(GHDL) std.v87 + cd $(STD87_DIR); $(ANALYZE_STD) --std=87 -$(LIB87_DIR)/std/std_standard.o: $(GHDL) std.v87 - cd $(LIB87_DIR)/std; $(ANALYZE_STD) --std=87 +$(STD93_DIR)/std_standard.o: $(GHDL) std.v93 + cd $(STD93_DIR); $(ANALYZE_STD) --std=93 -$(LIB08_DIR)/std/std_standard.o: $(GHDL) std.v08 - cd $(LIB08_DIR)/std; $(ANALYZE_STD) --std=08 +$(STD08_DIR)/std_standard.o: $(GHDL) std.v08 + cd $(STD08_DIR); $(ANALYZE_STD) --std=08 -libs.vhdl.standard: $(LIB93_DIR)/std/std_standard.o \ - $(LIB87_DIR)/std/std_standard.o \ - $(LIB08_DIR)/std/std_standard.o +libs.vhdl.standard: $(STD93_DIR)/std_standard.o \ + $(STD87_DIR)/std_standard.o \ + $(STD08_DIR)/std_standard.o diff --git a/src/ghdldrv/ghdldrv.adb b/src/ghdldrv/ghdldrv.adb index 5fe3912c0..96e259da7 100644 --- a/src/ghdldrv/ghdldrv.adb +++ b/src/ghdldrv/ghdldrv.adb @@ -997,8 +997,8 @@ package body Ghdldrv is if Add_Std then Std_File := new String'(Get_Machine_Path_Prefix & Directory_Separator - & Get_Version_Path & Directory_Separator & "std" & Directory_Separator + & Get_Version_Path & Directory_Separator & "std_standard" & Link_Obj_Suffix.all); P := P + 1; Args (P) := Std_File; diff --git a/src/ghdldrv/ghdllocal.adb b/src/ghdldrv/ghdllocal.adb index 59c02a54e..8cbfa70eb 100644 --- a/src/ghdldrv/ghdllocal.adb +++ b/src/ghdldrv/ghdllocal.adb @@ -323,17 +323,17 @@ package body Ghdllocal is end if; end Get_Machine_Path_Prefix; - procedure Add_Library_Path (Name : String) + procedure Add_Library_Name (Name : String) is Path : constant String := Get_Machine_Path_Prefix & Directory_Separator - & Get_Version_Path & Directory_Separator & Name & Directory_Separator; + & Name & Directory_Separator & Get_Version_Path & Directory_Separator; begin if not Is_Directory (Path) then Warning ("library " & Name & " does not exists for " & Get_Version_Path); end if; Libraries.Add_Library_Path (Path); - end Add_Library_Path; + end Add_Library_Name; procedure Setup_Libraries (Load : Boolean) is @@ -382,21 +382,24 @@ package body Ghdllocal is -- Add paths for predefined libraries. if not Flags.Bootstrap then - Add_Library_Path ("std"); case Flag_Ieee is when Lib_Standard => - Add_Library_Path ("ieee"); + Add_Library_Name ("ieee"); when Lib_Synopsys => - Add_Library_Path ("synopsys"); + Add_Library_Name ("synopsys"); when Lib_Mentor => if Vhdl_Std >= Vhdl_08 then Warning ("--ieee=mentor is ignored for --std=08"); else - Add_Library_Path ("mentor"); + Add_Library_Name ("mentor"); end if; when Lib_None => null; end case; + + -- For std: just add the library prefix. + Libraries.Add_Library_Path + (Get_Machine_Path_Prefix & Directory_Separator); end if; if Load then Libraries.Load_Std_Library; -- cgit v1.2.3