OSDN Git Service

Fix aliasing bug that also caused memory usage problems.
[pf3gnuchains/gcc-fork.git] / gcc / ada / Makefile.generic
index 61d0ff9..e18511f 100644 (file)
@@ -181,12 +181,12 @@ vpath %$(AR_EXT) $(OBJ_DIR)
 # character be part of a pathname on UNIX and this character can't be used in
 # a pathname on Windows.
 
-clean_deps = $(subst :,|,$(DEPS_PROJECTS:%=clean_%))
-compile_deps = $(subst :,|,$(DEPS_PROJECTS:%=compile_%))
-object_deps = $(subst :,|,$(DEPS_PROJECTS:%=object_%))
-ada_deps = $(subst :,|,$(DEPS_PROJECTS:%=ada_%))
-c_deps = $(subst :,|,$(DEPS_PROJECTS:%=c_%))
-c++_deps = $(subst :,|,$(DEPS_PROJECTS:%=c++_%))
+clean_deps = $(subst :,__GPRCOLON__,$(DEPS_PROJECTS:%=clean_%))
+compile_deps = $(subst :,__GPRCOLON__,$(DEPS_PROJECTS:%=compile_%))
+object_deps = $(subst :,__GPRCOLON__,$(DEPS_PROJECTS:%=object_%))
+ada_deps = $(subst :,__GPRCOLON__,$(DEPS_PROJECTS:%=ada_%))
+c_deps = $(subst :,__GPRCOLON__,$(DEPS_PROJECTS:%=c_%))
+c++_deps = $(subst :,__GPRCOLON__,$(DEPS_PROJECTS:%=c++_%))
 
 # Default target is to build (compile/bind/link)
 all: build
@@ -200,22 +200,22 @@ c: $(c_deps) internal-c
 c++: $(c++deps) internal-c++
 
 $(clean_deps): force
-       @$(MAKE) -C $(dir $(subst |,:,$(@:clean_%=%))) -f Makefile.$(notdir $@) internal-clean
+       @$(MAKE) -C $(dir $(subst __GPRCOLON__,:,$(@:clean_%=%))) -f Makefile.$(notdir $@) internal-clean
 
 $(compile_deps): force
-       @$(MAKE) -C $(dir $(subst |,:,$(@:compile_%=%))) -f Makefile.$(notdir $@) internal-compile
+       @$(MAKE) -C $(dir $(subst __GPRCOLON__,:,$(@:compile_%=%))) -f Makefile.$(notdir $@) internal-compile
 
 $(object_deps): force
-       @$(MAKE) -C $(dir $(subst |,:,$(@:object_%=%))) -f Makefile.$(notdir $@) internal-archive-objects ARCHIVE=$(ARCHIVE)
+       @$(MAKE) -C $(dir $(subst __GPRCOLON__,:,$(@:object_%=%))) -f Makefile.$(notdir $@) internal-archive-objects ARCHIVE=$(ARCHIVE)
 
 $(ada_deps): force
-       @$(MAKE) -C $(dir $(subst |,:,$(@:ada_%=%))) -f Makefile.$(notdir $@) internal-ada
+       @$(MAKE) -C $(dir $(subst __GPRCOLON__,:,$(@:ada_%=%))) -f Makefile.$(notdir $@) internal-ada
 
 $(c_deps): force
-       @$(MAKE) -C $(dir $(subst |,:,$(@:c_%=%))) -f Makefile.$(notdir $@) internal-c
+       @$(MAKE) -C $(dir $(subst __GPRCOLON__,:,$(@:c_%=%))) -f Makefile.$(notdir $@) internal-c
 
 $(c++_deps): force
-       @$(MAKE) -C $(dir $(subst |,:,$(@:c++_%=%))) -f Makefile.$(notdir $@) internal-c++
+       @$(MAKE) -C $(dir $(subst __GPRCOLON__,:,$(@:c++_%=%))) -f Makefile.$(notdir $@) internal-c++
 
 ifneq ($(EXEC),)
    EXEC_RULE=-o $(EXEC)
@@ -230,20 +230,16 @@ ifeq ($(filter c++,$(LANGUAGES)),c++)
 
    ifeq ($(filter ada,$(LANGUAGES)),ada)
       # C++ and Ada mixed
-      LINKER = $(OBJ_DIR)/c++linker
       LARGS = --LINK=$(LINKER)
 
       ifeq ($(strip $(filter-out %gcc %g++,$(CXX))),)
-         # Case of GNU C++ and GNAT
-
-$(LINKER): Makefile.$(PROJECT_BASE)
-       @echo \#!/bin/sh > $(LINKER)
-       @echo unset BINUTILS_ROOT >> $(LINKER)
-       @echo unset GCC_ROOT >> $(LINKER)
-       @echo $(CXX) $$\* >> $(LINKER)
-       @chmod +x $(LINKER)
+         # Case of GNAT and a GNU C++ compiler
+$(LINKER):
 
       else
+         # Case of GNAT and a non GNU C++ compiler
+         LINKER = $(OBJ_DIR)/c++linker
+
 $(LINKER): Makefile.$(PROJECT_BASE)
        @echo \#!/bin/sh > $(LINKER)
        @echo $(CXX) $$\* $(shell gcc -print-libgcc-file-name) >> $(LINKER)
@@ -348,9 +344,9 @@ link:
 else
 
 link: $(EXEC_DIR)/$(EXEC) archive-objects
-$(EXEC_DIR)/$(EXEC): $(OBJ_FILES)
-       @$(display) $(LINKER) -o $(EXEC_DIR)/$(EXEC) $(OBJ_DIR)/$(MAIN_OBJECT) $(LDFLAGS)
-       $(LINKER) -o $(EXEC_DIR)/$(EXEC) $(OBJ_DIR)/$(MAIN_OBJECT) $(LDFLAGS)
+$(EXEC_DIR)/$(EXEC): $(OBJECTS)
+       @$(display) $(LINKER) -o $(EXEC_DIR)/$(EXEC) $(OBJ_DIR)/$(MAIN_OBJECT) $(LDFLAGS) $(FLDFLAGS)
+       @$(LINKER) -o $(EXEC_DIR)/$(EXEC) $(OBJ_DIR)/$(MAIN_OBJECT) $(LDFLAGS) $(FLDFLAGS)
 endif
 endif
 
@@ -363,7 +359,7 @@ ifeq ($(strip $(filter-out c c++ ada,$(LANGUAGES))),)
 ifeq ($(MAIN),ada)
 # Ada main
 link: $(LINKER) archive-objects force
-       @(display) $(GNATMAKE) -b -l -P$(PROJECT_FILE) $(ADA_SOURCES)
+       @$(display) $(GNATMAKE) -b -l -P$(PROJECT_FILE) $(ADA_SOURCES)
        @$(GNATMAKE) -b -l -P$(PROJECT_FILE) $(ADA_SOURCES) \
                 -largs $(LARGS) $(LDFLAGS)
 
@@ -376,15 +372,15 @@ else
 # C/C++ main
 
 link: $(LINKER) archive-objects force
-       @(display) $(GNATMAKE) $(EXEC_RULE) -B -P$(PROJECT_FILE) $(ADA_SOURCES)
+       @$(display) $(GNATMAKE) $(EXEC_RULE) -B -P$(PROJECT_FILE) $(ADA_SOURCES)
        @$(GNATMAKE) $(EXEC_RULE) -B -P$(PROJECT_FILE) $(ADA_SOURCES) \
-                -largs $(MAIN_OBJECT) $(LARGS) $(LDFLAGS)
+                -largs $(OBJ_DIR)/$(MAIN_OBJECT) $(LARGS) $(LDFLAGS) $(FLDFLAGS)
 
 internal-build: $(LINKER) archive-objects force
-       @$(display) $(GNATMAKE) -B -P$(PROJECT_FILE) $(ADA_SOURCES) $(EXEC_RULE) $(ADAFLAGS)
+       @$(display) $(GNATMAKE) $(EXEC_RULE) -B -P$(PROJECT_FILE) $(ADA_SOURCES) $(ADAFLAGS)
        @$(GNATMAKE) $(EXEC_RULE) \
                 -B -P$(PROJECT_FILE) $(ADA_SOURCES) $(ADAFLAGS) \
-                -largs $(MAIN_OBJECT) $(LARGS) $(LDFLAGS)
+                -largs $(OBJ_DIR)/$(MAIN_OBJECT) $(LARGS) $(LDFLAGS) $(FLDFLAGS)
 endif
 
 else
@@ -399,10 +395,13 @@ endif
 
 ifeq ($(strip $(filter-out %gcc %g++,$(CC) $(CXX))),)
 # Compiler is GCC, take avantage of the preprocessor option -MD and
-# C*_INCLUDE_PATH environment variables
+# the CPATH environment variable
 
-export C_INCLUDE_PATH:=$(shell gprcmd path $(SRC_DIRS))$(C_INCLUDE_PATH)
-export CXX_INCLUDE_PATH:=$(shell gprcmd path $(SRC_DIRS))$(CXX_INCLUDE_PATH)
+empty:=
+space:=$(empty) $(empty)
+path_sep:=$(shell gprcmd path_sep)
+SRC_DIRS_PATH:= $(subst $(space),$(path_sep),$(SRC_DIRS))
+export CPATH:=$(SRC_DIRS_PATH)$(path_sep)$(CPATH)
 
 DEP_CFLAGS = -Wp,-MD,$(OBJ_DIR)/$(*F).d
 
@@ -483,20 +482,20 @@ internal-c++ : $(CXX_OBJECTS)
 .PHONY: force internal-clean internal-archive internal-build internal-compile internal-ada internal-c internal-c++ build compile clean ada c c++
 
 internal-clean:
-       @echo $(RM) $(OBJ_DIR)/*$(OBJ_EXT)
+       @$(display) $(RM) $(OBJ_DIR)/*$(OBJ_EXT)
        @$(RM) $(OBJ_DIR)/*$(OBJ_EXT)
-       @echo $(RM) $(OBJ_DIR)/*.ali
+       @$(display) $(RM) $(OBJ_DIR)/*.ali
        @$(RM) $(OBJ_DIR)/*.ali
-       @echo $(RM) $(OBJ_DIR)/b~*
+       @$(display) $(RM) $(OBJ_DIR)/b~*
        @$(RM) $(OBJ_DIR)/b~*
-       @echo $(RM) $(OBJ_DIR)/b_*
+       @$(display) $(RM) $(OBJ_DIR)/b_*
        @$(RM) $(OBJ_DIR)/b_*
-       @echo $(RM) $(OBJ_DIR)/*$(AR_EXT)
+       @$(display) $(RM) $(OBJ_DIR)/*$(AR_EXT)
        @$(RM) $(OBJ_DIR)/*$(AR_EXT)
-       @echo $(RM) $(OBJ_DIR)/*.d
+       @$(display) $(RM) $(OBJ_DIR)/*.d
        @$(RM) $(OBJ_DIR)/*.d
 ifneq ($(EXEC),)
-       @echo $(RM) $(EXEC_DIR)/$(EXEC)
+       @$(display) $(RM) $(EXEC_DIR)/$(EXEC)
        @$(RM) $(EXEC_DIR)/$(EXEC)
 endif