aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile.in22
-rw-r--r--libraries/Makefile.inc87
2 files changed, 65 insertions, 44 deletions
diff --git a/Makefile.in b/Makefile.in
index a026577ce..cc9c931d3 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -413,15 +413,15 @@ else
STD_GHDL_FLAGS=--GHDL1=$(PWD)/ghdl1-$(backend)$(EXEEXT)
endif
-$(LIB93_DIR)/std/std_standard.o: $(GHDL)
+$(LIB93_DIR)/std/std_standard.o: $(GHDL) std.v93
cd $(LIB93_DIR)/std; \
$(GHDL) --bootstrap-standard $(STD_GHDL_FLAGS) --std=93 $(LIB_CFLAGS)
-$(LIB87_DIR)/std/std_standard.o: $(GHDL)
+$(LIB87_DIR)/std/std_standard.o: $(GHDL) std.v87
cd $(LIB87_DIR)/std; \
$(GHDL) --bootstrap-standard $(STD_GHDL_FLAGS) --std=87 $(LIB_CFLAGS)
-$(LIB08_DIR)/std/std_standard.o: $(GHDL)
+$(LIB08_DIR)/std/std_standard.o: $(GHDL) std.v08
cd $(LIB08_DIR)/std; \
$(GHDL) --bootstrap-standard $(STD_GHDL_FLAGS) --std=08 $(LIB_CFLAGS)
@@ -430,12 +430,12 @@ libs.vhdl.standard: $(LIB93_DIR)/std/std_standard.o \
$(LIB08_DIR)/std/std_standard.o
install.dirs:
- [ -d $(DESTDIR)$(prefix) ] || $(MKDIR) -p $(DESTDIR)$(prefix)
- [ -d $(DESTDIR)$(bindir) ] || $(MKDIR) -p $(DESTDIR)$(bindir)
- [ -d $(DESTDIR)$(libdir) ] || $(MKDIR) -p $(DESTDIR)$(libdir)
- [ -d $(DESTDIR)$(prefix)/$(libdirsuffix) ] || \
- $(MKDIR) -p $(DESTDIR)$(prefix)/$(libdirsuffix)
- [ -d $(DESTDIR)$(incdir) ] || $(MKDIR) -p $(DESTDIR)$(incdir)
+# Use -p to create parents and to avoid error if existing.
+ $(MKDIR) -p $(DESTDIR)$(prefix)
+ $(MKDIR) -p $(DESTDIR)$(bindir)
+ $(MKDIR) -p $(DESTDIR)$(libdir)
+ $(MKDIR) -p $(DESTDIR)$(prefix)/$(libdirsuffix)
+ $(MKDIR) -p $(DESTDIR)$(incdir)
install.vhdllib: install.dirs
for d in $(VHDLLIB_SUBDIRS); do \
@@ -443,10 +443,10 @@ install.vhdllib: install.dirs
$(INSTALL_DATA) -p \
$(LIBDST_DIR)/$$d/* $(DESTDIR)$(VHDL_LIB_DIR)/$$d; \
done
- # ANSI color
+# ANSI color
$(INSTALL_DATA) -p \
$(srcdir)/dist/ansi_color.sh $(DESTDIR)$(VHDL_LIB_DIR)/;
- # Vendors scripts
+# Vendors scripts
$(MKDIR) -p $(DESTDIR)$(VHDL_LIB_DIR)/vendors
$(INSTALL_DATA) -p \
$(LIBSRC_DIR)/vendors/* $(DESTDIR)$(VHDL_LIB_DIR)/vendors/
diff --git a/libraries/Makefile.inc b/libraries/Makefile.inc
index fb2d14913..bc6627a1f 100644
--- a/libraries/Makefile.inc
+++ b/libraries/Makefile.inc
@@ -22,6 +22,7 @@
# ANALYZE
# LN
# CP
+# MKDIR
# VHDLLIBS_COPY_OBJS: must be set to 'no' for jit
vhdl.libs.all: vhdl.libs.v87 vhdl.libs.v93 vhdl.libs.v08
@@ -122,19 +123,23 @@ VITAL95_SRCS=$(addprefix $(LIBDST_DIR)/src/,$(VITAL95_BSRCS))
VITAL2000_SRCS=$(addprefix $(LIBDST_DIR)/src/,$(VITAL2000_BSRCS))
$(LIBDST_DIR)/src/std $(LIBDST_DIR)/src/ieee $(LIBDST_DIR)/src/ieee2008 $(LIBDST_DIR)/src/vital95 $(LIBDST_DIR)/src/vital2000 $(LIBDST_DIR)/src/synopsys $(LIBDST_DIR)/src/mentor:
- -mkdir -p $@
+ $(MKDIR) -p $@
### V87 ###############################################################
$(LIB87_DIR):
- mkdir -p $@
+ $(MKDIR) -p $@
+
+$(STD87_DIR) $(IEEE87_DIR) $(SYN87_DIR): $(LIB87_DIR)
+ $(MKDIR) -p $@
$(LIBDST_DIR)/src/std/%.v87: $(LIBSRC_DIR)/std/%.vhdl $(LIBDST_DIR)/src/std
$(SED_V87) < $< > $@
-std.v87: $(ANALYZE_DEP) $(LIB87_DIR) $(STD87_SRCS) force
- $(RM) -rf $(STD87_DIR)
- mkdir $(STD87_DIR)
+std.v87: $(STD87_DIR)/std-obj87.cf
+
+$(STD87_DIR)/std-obj87.cf: $(ANALYZE_DEP) $(STD87_SRCS) $(STD87_DIR)
+ $(RM) -f $@
cd $(STD87_DIR); \
for i in $(STD87_BSRCS); do \
cmd="$(ANALYZE87) --bootstrap --work=std ../../src/$$i"; \
@@ -149,8 +154,10 @@ $(LIBDST_DIR)/src/vital95/%.vhdl: $(LIBSRC_DIR)/vital95/%.vhdl $(LIBDST_DIR)/src
ANALYZE_IEEE87=$(ANALYZE87) -P../std --work=ieee
-ieee.v87: $(ANALYZE_DEP) $(LIB87_DIR) $(IEEE87_SRCS) $(VITAL95_SRCS) std.v87 force
- $(RM) -rf $(IEEE87_DIR); mkdir $(IEEE87_DIR)
+ieee.v87: $(IEEE87_DIR)/ieee-obj87.cf
+
+$(IEEE87_DIR)/ieee-obj87.cf: $(ANALYZE_DEP) $(IEEE87_SRCS) $(VITAL95_SRCS) $(IEEE87_DIR) $(STD87_DIR)/std-obj87.cf
+ $(RM) -f $@
cd $(IEEE87_DIR); \
for i in $(IEEE87_BSRCS) $(VITAL95_BSRCS); do \
cmd="$(ANALYZE_IEEE87) ../../src/$$i";\
@@ -160,9 +167,10 @@ ieee.v87: $(ANALYZE_DEP) $(LIB87_DIR) $(IEEE87_SRCS) $(VITAL95_SRCS) std.v87 for
$(LIBDST_DIR)/src/synopsys/%.vhdl: $(LIBSRC_DIR)/synopsys/%.vhdl $(LIBDST_DIR)/src/synopsys
$(CP) $< $@
-synopsys.v87: $(ANALYZE_DEP) $(LIB87_DIR) $(SYNOPSYS87_SRCS) ieee.v87 force
- $(RM) -rf $(SYN87_DIR)
- mkdir $(SYN87_DIR)
+synopsys.v87: $(SYN87_DIR)/ieee-obj87.cf
+
+$(SYN87_DIR)/ieee-obj87.cf: $(ANALYZE_DEP) $(LIB87_DIR) $(SYNOPSYS87_SRCS) $(SYN87_DIR) $(IEEE87_DIR)/ieee-obj87.cf
+ $(RM) -f $@
cd $(SYN87_DIR); \
$(CP) ../ieee/ieee-obj87.cf . ; \
test x$(VHDLLIBS_COPY_OBJS) = "xno" || \
@@ -180,14 +188,18 @@ synopsys.v87: $(ANALYZE_DEP) $(LIB87_DIR) $(SYNOPSYS87_SRCS) ieee.v87 force
### V93 ###############################################################
$(LIB93_DIR):
- mkdir -p $@
+ $(MKDIR) -p $@
+
+$(STD93_DIR) $(IEEE93_DIR) $(SYN93_DIR) $(MENTOR93_DIR): $(LIB93_DIR)
+ $(MKDIR) -p $@
$(LIBDST_DIR)/src/std/%.v93: $(LIBSRC_DIR)/std/%.vhdl $(LIBDST_DIR)/src/std
$(SED_V93) < $< > $@
-std.v93: $(ANALYZE_DEP) $(LIB93_DIR) $(STD93_SRCS) force
- $(RM) -rf $(STD93_DIR)
- mkdir $(STD93_DIR)
+std.v93: $(STD93_DIR)/std-obj93.cf
+
+$(STD93_DIR)/std-obj93.cf: $(ANALYZE_DEP) $(LIB93_DIR) $(STD93_SRCS) $(STD93_DIR)
+ $(RM) -rf $@
cd $(STD93_DIR); \
for i in $(STD93_BSRCS); do \
cmd="$(ANALYZE93) --bootstrap --work=std ../../src/$$i"; \
@@ -205,18 +217,20 @@ $(LIBDST_DIR)/src/vital2000/%.vhdl: $(LIBSRC_DIR)/vital2000/%.vhdl $(LIBDST_DIR)
ANALYZE_IEEE93=$(ANALYZE93) -P../std --work=ieee
-ieee.v93: $(ANALYZE_DEP) $(LIB93_DIR) $(IEEE93_SRCS) $(VITAL2000_SRCS) std.v93 force
- $(RM) -rf $(IEEE93_DIR)
- mkdir $(IEEE93_DIR)
+ieee.v93: $(IEEE93_DIR)/ieee-obj93.cf
+
+$(IEEE93_DIR)/ieee-obj93.cf: $(ANALYZE_DEP) $(LIB93_DIR) $(IEEE93_SRCS) $(VITAL2000_SRCS) $(IEEE93_DIR) $(STD93_DIR)/std-obj93.cf
+ $(RM) -f $@
cd $(IEEE93_DIR); \
for i in $(IEEE93_BSRCS) $(VITAL2000_BSRCS); do \
cmd="$(ANALYZE_IEEE93) ../../src/$$i"; \
echo $$cmd; eval $$cmd || exit 1; \
done
-synopsys.v93: $(ANALYZE_DEP) $(LIB93_DIR) $(SYNOPSYS93_SRCS) ieee.v93 force
- $(RM) -rf $(SYN93_DIR)
- mkdir $(SYN93_DIR)
+synopsys.v93: $(SYN93_DIR)/ieee-obj93.cf
+
+$(SYN93_DIR)/ieee-obj93.cf: $(ANALYZE_DEP) $(LIB93_DIR) $(SYNOPSYS93_SRCS) $(SYN93_DIR) $(IEEE93_DIR)/ieee-obj93.cf
+ $(RM) -f $@
cd $(SYN93_DIR); \
$(CP) ../ieee/ieee-obj93.cf .; \
test x$(VHDLLIBS_COPY_OBJS) = "xno" || \
@@ -234,9 +248,10 @@ synopsys.v93: $(ANALYZE_DEP) $(LIB93_DIR) $(SYNOPSYS93_SRCS) ieee.v93 force
$(LIBDST_DIR)/src/mentor/%.vhdl: $(LIBSRC_DIR)/mentor/%.vhdl $(LIBDST_DIR)/src/mentor
$(CP) $< $@
-mentor.v93: $(ANALYZE_DEP) $(LIB93_DIR) $(MENTOR93_SRCS) ieee.v93 force
- $(RM) -rf $(MENTOR93_DIR)
- mkdir $(MENTOR93_DIR)
+mentor.v93: $(MENTOR93_DIR)/ieee-obj93.cf
+
+$(MENTOR93_DIR)/ieee-obj93.cf: $(ANALYZE_DEP) $(LIB93_DIR) $(MENTOR93_SRCS) $(MENTOR93_DIR) $(IEEE93_DIR)/ieee-obj93.cf
+ $(RM) -f $@
cd $(MENTOR93_DIR); \
$(CP) ../ieee/ieee-obj93.cf . ;\
test x$(VHDLLIBS_COPY_OBJS) = "xno" || \
@@ -254,7 +269,10 @@ mentor.v93: $(ANALYZE_DEP) $(LIB93_DIR) $(MENTOR93_SRCS) ieee.v93 force
### V08 ###############################################################
$(LIB08_DIR):
- mkdir -p $@
+ $(MKDIR) -p $@
+
+$(STD08_DIR) $(IEEE08_DIR) $(SYN08_DIR): $(LIB08_DIR)
+ $(MKDIR) -p $@
$(LIBDST_DIR)/src/std/%.v08: $(LIBSRC_DIR)/std/%.vhdl $(LIBDST_DIR)/src/std
$(SED_V08) < $< > $@
@@ -262,9 +280,10 @@ $(LIBDST_DIR)/src/std/%.v08: $(LIBSRC_DIR)/std/%.vhdl $(LIBDST_DIR)/src/std
$(LIBDST_DIR)/src/std/%.vhdl: $(LIBSRC_DIR)/std/%.vhdl $(LIBDST_DIR)/src/std
$(CP) $< $@
-std.v08: $(ANALYZE_DEP) $(LIB08_DIR) $(STD08_SRCS) force
- $(RM) -rf $(STD08_DIR)
- mkdir $(STD08_DIR)
+std.v08: $(STD08_DIR)/std-obj08.cf
+
+$(STD08_DIR)/std-obj08.cf: $(ANALYZE_DEP) $(LIB08_DIR) $(STD08_SRCS) $(STD08_DIR)
+ $(RM) -f $@
cd $(STD08_DIR); \
for i in $(STD08_BSRCS); do \
cmd="$(ANALYZE08) --bootstrap --work=std ../../src/$$i"; \
@@ -277,9 +296,10 @@ $(LIBDST_DIR)/src/ieee2008/%.vhdl: $(LIBSRC_DIR)/ieee2008/%.vhdl $(LIBDST_DIR)/s
ANALYZE_IEEE08=$(ANALYZE08) -P../std --work=ieee
ANALYZE_VITAL08=$(ANALYZE08) -P../std --work=ieee -frelaxed-rules
-ieee.v08: $(ANALYZE_DEP) $(LIB08_DIR) $(IEEE08_SRCS) std.v08 force
- $(RM) -rf $(IEEE08_DIR)
- mkdir $(IEEE08_DIR)
+ieee.v08: $(IEEE08_DIR)/ieee-obj08.cf
+
+$(IEEE08_DIR)/ieee-obj08.cf: $(ANALYZE_DEP) $(LIB08_DIR) $(IEEE08_SRCS) $(IEEE08_DIR) $(STD08_DIR)/std-obj08.cf
+ $(RM) -f $@
cd $(IEEE08_DIR); \
for i in $(IEEE08_BSRCS); do \
cmd="$(ANALYZE_IEEE08) ../../src/$$i"; \
@@ -290,9 +310,10 @@ ieee.v08: $(ANALYZE_DEP) $(LIB08_DIR) $(IEEE08_SRCS) std.v08 force
echo $$cmd; eval $$cmd || exit 1; \
done
-synopsys.v08: $(ANALYZE_DEP) $(LIB08_DIR) $(SYNOPSYS08_SRCS) ieee.v08 force
- $(RM) -rf $(SYN08_DIR)
- mkdir $(SYN08_DIR)
+synopsys.v08: $(SYN08_DIR)/ieee-obj08.cf
+
+$(SYN08_DIR)/ieee-obj08.cf: $(ANALYZE_DEP) $(LIB08_DIR) $(SYNOPSYS08_SRCS) $(SYN08_DIR) $(IEEE08_DIR)/ieee-obj08.cf
+ $(RM) -f $@
cd $(SYN08_DIR); \
$(CP) ../ieee/ieee-obj08.cf .; \
test x$(VHDLLIBS_COPY_OBJS) = "xno" || \