source: trunk/Softwares/Makefile.Software @ 145

Last change on this file since 145 was 139, checked in by rosiere, 14 years ago
  • Add test for all configuration
  • RAT : add rat scheme (depth_save)
  • Property svn:keywords set to Id
File size: 6.6 KB
Line 
1#
2# $Id: Makefile.Software 139 2010-07-30 14:47:27Z rosiere $
3#
4# [ Description ]
5#
6# Makefile
7#
8
9ifeq ($(origin MORPHEO_TOPLEVEL), undefined)
10        $(error "variable MORPHEO_TOPLEVEL is undefined")
11else
12        include $(MORPHEO_TOPLEVEL)/Makefile.tools
13endif
14
15include                         $(MORPHEO_TOPLEVEL)/Softwares/Makefile.defs
16
17#-----[ Directory ]---------------------------------------------------------------
18
19DIR_OBJ                         = obj
20DIR_BIN                         = bin
21
22EXE                             = soft_$(OS)_$(TARGET)
23
24DIR_COMMON                      = $(MORPHEO_TOPLEVEL)/Softwares/Common
25DIR_COMMON_C                    = $(DIR_COMMON)/src/c
26DIR_COMMON_ASM                  = $(DIR_COMMON)/src/asm
27DIR_COMMON_SYS                  = $(DIR_COMMON)/src/sys
28DIR_COMMON_INC                  = $(DIR_COMMON)/include
29
30#PREFIX_OBJ                     = $(OS)_$(TARGET)_
31#
32#SOURCES_COMMON                 = $(wildcard $(DIR_COMMON_SYS)/*.s)\
33#                                 $(wildcard $(DIR_COMMON_ASM)/*.s)\
34#                                 $(wildcard $(DIR_COMMON_C)/*.c)
35#
36#TEST                           = $(addprefix $(DIR_OBJ)/$(PREFIX_OBJ), $(addsuffix .o, $(basename $(notdir $(SOURCES_COMMON)))))
37
38OBJECTS_COMMON                  = $(patsubst $(DIR_COMMON_SYS)/%.s,$(DIR_OBJ)/%.o,$(wildcard $(DIR_COMMON_SYS)/*.s))\
39                                  $(patsubst $(DIR_COMMON_ASM)/%.s,$(DIR_OBJ)/%.o,$(wildcard $(DIR_COMMON_ASM)/*.s))\
40                                  $(patsubst $(DIR_COMMON_C)/%.c,$(DIR_OBJ)/%.o,$(wildcard $(DIR_COMMON_C)/*.c))
41
42#-----[ To the compilation ]------------------------------------------------------
43
44#~~~~~[ OS : Newlib ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
45NEWLIB_DIR_LDSCRIPT                     = $(NEWLIB)/lib/
46#NEWLIB_INCDIR
47#NEWLIB_LIBDIR
48#NEWLIB_LIBNAME
49NEWLIB_OBJECTS                          = $(NEWLIB)/lib/*.o
50
51#~~~~~[ OS : UNIX ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
52UNIX_DIR_LDSCRIPT                       =
53UNIX_INCDIR                             =
54UNIX_LIBDIR                             =
55UNIX_LIBNAME                            = -lm
56UNIX_OBJECTS                            =
57
58#~~~~~[ TARGET : COMMON ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
59COMMON_OPTIMIZE                 = -O2 -std=c99 -Wall -Wlong-long
60
61COMMON_CC_OPT                   = $(INCDIR) -D$(OS) -D$(TARGET) $($(TARGET)_OPTIMIZE) $(FLAGS)
62COMMON_AS_OPT                   =
63COMMON_LD_OPT                   = $(LIBDIR) $(LIBNAME) -static
64COMMON_OBJDUMP_OPT              = -D
65COMMON_NM_OPT                   = -n
66
67#~~~~~[ TARGET : MORPHEO ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
68MORPHEO_OPTIMIZE                        = $(COMMON_OPTIMIZE) -fomit-frame-pointer -fdelayed-branch -mror -mcmov -msext -mhard-mul -msoft-div -msoft-float
69
70#Option :
71# -fomit-frame-pointer                  : n'utilise pas le pointeur de frame
72# -fdelayed-branch                      : utilise les delayed slot
73# ON            OFF
74# -mror         -mno-ror                : utilisation de l'instruction l.ror
75# -mcmov        -mno-cmov               : utilisation de l'instruction l.cmov
76# -msext        -mno-sext               : utilisation des instructions l.extXX
77# -mhard-mul    -msoft-mul              : utilisation du multiplieur materiel
78# -mhard-div    -msoft-div              : utilisation du diviseur materiel
79# -mhard-float  -msoft-float            : utilisation du flottant materiel
80# -msibcall     -mno-sibcall            : Enable sibcall optimization
81# -mlogue       -mno-logue              : Schedule pro/epi-logue.
82# -maj          -mno-aj                 : Use aligned jumps.
83
84# Tools
85PREFIX_MORPHEO                  = or32-elf-
86
87MORPHEO_CC                      = $(OR1K_BIN)/$(PREFIX_MORPHEO)gcc
88MORPHEO_AS                      = $(OR1K_BIN)/$(PREFIX_MORPHEO)as
89MORPHEO_LD                      = $(OR1K_BIN)/$(PREFIX_MORPHEO)ld
90MORPHEO_OBJDUMP                 = $(OR1K_BIN)/$(PREFIX_MORPHEO)objdump
91MORPHEO_NM                      = $(OR1K_BIN)/$(PREFIX_MORPHEO)nm
92
93# Tools's option
94MORPHEO_CC_OPT                  = $(COMMON_CC_OPT)
95MORPHEO_AS_OPT                  = $(COMMON_AS_OPT)     
96MORPHEO_LD_OPT                  = $(COMMON_LD_OPT) -T$(DIR_LDSCRIPT)/or32.ld $(OR1K_LIBDIR) $(OR1K_LIBNAME)
97MORPHEO_OBJDUMP_OPT             = $(COMMON_OBJDUMP_OPT)
98MORPHEO_NM_OPT                  = $(COMMON_NM_OPT)
99
100#~~~~~[ TARGET : x86 ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
101x86_OPTIMIZE                    = $(COMMON_OPTIMIZE)
102
103x86_CC                          = gcc
104x86_AS                          = as
105x86_LD                          = gcc
106x86_OBJDUMP                     = objdump
107x86_NM                          = nm
108
109x86_CC_OPT                      = $(COMMON_CC_OPT)     
110x86_AS_OPT                      = $(COMMON_AS_OPT)     
111x86_LD_OPT                      = $(COMMON_LD_OPT)     
112x86_OBJDUMP_OPT                 = $(COMMON_OBJDUMP_OPT)
113x86_NM_OPT                      = $(COMMON_NM_OPT)
114
115#~~~~~[ TARGET : EV67 ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
116EV67_OPTIMIZE                   = $(COMMON_OPTIMIZE) -mtune="ev4"
117
118PREFIX_EV67                     = alphaev67-unknown-linux-gnu-
119#PREFIX_EV67                    = alpha-unknown-linux-gnu-
120
121EV67_CC                         = $(EV67_BIN)/$(PREFIX_EV67)gcc
122EV67_AS                         = $(EV67_BIN)/$(PREFIX_EV67)as
123EV67_LD                         = $(EV67_BIN)/$(PREFIX_EV67)gcc
124EV67_OBJDUMP                    = $(EV67_BIN)/$(PREFIX_EV67)objdump
125EV67_NM                         = $(EV67_BIN)/$(PREFIX_EV67)nm
126
127EV67_CC_OPT                     = $(COMMON_CC_OPT)
128EV67_AS_OPT                     = $(COMMON_AS_OPT)
129EV67_LD_OPT                     = $(COMMON_LD_OPT)
130EV67_OBJDUMP_OPT                = $(COMMON_OBJDUMP_OPT)
131EV67_NM_OPT                     = $(COMMON_NM_OPT)
132
133#-----[ Rules ]-------------------------------------------------------------------
134.PRECIOUS                       : $(DIR_BIN)/%.x.txt $(DIR_BIN)/%.x $(DIR_OBJ)/%.o
135
136vpath   %.h     $(DIR_INC):$(DIR_COMMON_INC)
137vpath   %.c     $(DIR_C):$(DIR_COMMON_C)
138vpath   %.s     $(DIR_ASM):$(DIR_SYS):$(DIR_COMMON_ASM):$(DIR_COMMON_SYS)
139vpath   %.o     $(DIR_OBJ)
140vpath   %.x     $(DIR_BIN)
141
142all                             : $(DIR_BIN)/$(EXE).x
143
144$(DIR_BIN)/%.x                  : $(DIR_BIN) $(DIR_OBJ)
145                                @\
146                                $(MAKE) $(OBJECTS);                                             \
147                                $(ECHO) "Linkage            : $*.x";                            \
148                                $($(TARGET)_LD) -o $@ $(OBJECTS) $($(TARGET)_LD_OPT);           \
149                                $(ECHO) "List symbols       : $*.x.nm";                         \
150                                $($(TARGET)_NM)      $($(TARGET)_NM_OPT)      $@ > $@.nm;       \
151                                $(ECHO) "Display info       : $*.x.txt";                        \
152                                $($(TARGET)_OBJDUMP) $($(TARGET)_OBJDUMP_OPT) $@ > $@.txt;      \
153                                echo $($(GREP) "l.jal 0" $@.txt);
154
155$(DIR_OBJ)/%.o                  : %.s   
156                                @\
157                                $(ECHO) "Compilation        : $*.s";                            \
158                                $($(TARGET)_CC) $($(TARGET)_CC_OPT)     -o $@   -c $^ ;
159#                               $($(TARGET)_CC) $($(TARGET)_CC_OPT)  -S -o $@.s -c $^ ;
160
161$(DIR_OBJ)/%.o                  : %.c
162                                @\
163                                $(ECHO) "Compilation        : $*.c";                            \
164                                $($(TARGET)_CC) $($(TARGET)_CC_OPT)     -o $@   -c $^ ;
165#                               $($(TARGET)_CC) $($(TARGET)_CC_OPT)  -S -o $@.s -c $^ ;
166
167$(DIR_BIN) $(DIR_OBJ)           :
168                                @\
169                                $(MKDIR) $@;
170
171#-----[ Maintenance ]-------------------------------------------------------------
172clean                           :
173                                @\
174                                $(ECHO) "Delete     temporary files";           \
175                                $(RM)   $(DIR_OBJ)                              \
176                                        *~                                      \
177                                        $(DIR_SRC)/*~                           \
178                                        $(DIR_C)/*~                             \
179                                        $(DIR_ASM)/*~                           \
180                                        $(DIR_SYS)/*~                           \
181                                        $(DIR_INC)/*~                           \
182                                        $(DIR_LDSCRIPT)/*~
183
184clean_all                       : clean
185                                $(RM)   $(DIR_BIN)
186
187#-----[ Help ]--------------------------------------------------------------------
188help                            :
189                                @\
190                                $(ECHO) "";                                                     \
191                                $(ECHO) "List of directive   : ";                               \
192                                $(ECHO) " * all              : Compile the software";           \
193                                $(ECHO) " * clean            : Erase all files generates";      \
194                                $(ECHO) " * clean_all        : Erase all files generates";      \
195                                $(ECHO) "";
Note: See TracBrowser for help on using the repository browser.