aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2018-01-22 12:12:27 +0100
committerTristan Gingold <tgingold@free.fr>2018-01-25 06:07:10 +0100
commit7ef79a53a8f3cbb972d3ac7b8b9ab7754f201001 (patch)
treeea046711a06cc41b4f0f93f52198899052c1fc68
parentb1d50e135b86502224f43147f1d93fa3ee5d6f5d (diff)
downloadghdl-7ef79a53a8f3cbb972d3ac7b8b9ab7754f201001.tar.gz
ghdl-7ef79a53a8f3cbb972d3ac7b8b9ab7754f201001.tar.bz2
ghdl-7ef79a53a8f3cbb972d3ac7b8b9ab7754f201001.zip
Change libraries path to allow installation of system-wide libraries.
For #521
-rw-r--r--Makefile.in8
-rw-r--r--libraries/Makefile.inc77
-rw-r--r--src/ghdldrv/ghdldrv.adb2
-rw-r--r--src/ghdldrv/ghdllocal.adb17
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;