source: trunk/Softwares/Makefile.Software @ 128

Last change on this file since 128 was 124, checked in by rosiere, 15 years ago

1) Add test and configuration
2) Fix Bug
3) Add log file in load store unit
4) Fix Bug in environment

  • Property svn:keywords set to Id
File size: 4.2 KB
Line 
1#
2# $Id: Makefile.Software 124 2009-06-17 12:11:25Z 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
15#-----[ Directory ]---------------------------------------------------------------
16DIR_OBJ                         = obj
17DIR_BIN                         = bin
18
19EXE                             = soft
20
21DIR_COMMON              = $(MORPHEO_TOPLEVEL)/Softwares/Common
22DIR_COMMON_C            = $(DIR_COMMON)/src/c
23DIR_COMMON_ASM          = $(DIR_COMMON)/src/asm
24DIR_COMMON_SYS          = $(DIR_COMMON)/src/sys
25DIR_COMMON_INC          = $(DIR_COMMON)/include
26
27OBJECTS_COMMON          =       $(patsubst $(DIR_COMMON_SYS)/%.s,$(DIR_OBJ)/%.o,$(wildcard $(DIR_COMMON_SYS)/*.s))      \
28                                $(patsubst $(DIR_COMMON_ASM)/%.s,$(DIR_OBJ)/%.o,$(wildcard $(DIR_COMMON_ASM)/*.s))      \
29                                $(patsubst $(DIR_COMMON_C)/%.c,$(DIR_OBJ)/%.o,$(wildcard $(DIR_COMMON_C)/*.c))
30
31
32#-----[ To the compilation ]------------------------------------------------------
33OPTIMIZE                        = -O2 -std=c99 -fomit-frame-pointer -fdelayed-branch -mror -mcmov -msext -mhard-mul -msoft-div -msoft-float
34
35#Option :
36# -fomit-frame-pointer                  : n'utilise pas le pointeur de frame
37# -fdelayed-branch                      : utilise les delayed slot
38# ON            OFF
39# -mror         -mno-ror                : utilisation de l'instruction l.ror
40# -mcmov        -mno-cmov               : utilisation de l'instruction l.cmov
41# -msext        -mno-sext               : utilisation des instructions l.extXX
42# -mhard-mul    -msoft-mul              : utilisation du multiplieur materiel
43# -mhard-div    -msoft-div              : utilisation du diviseur materiel
44# -mhard-float  -msoft-float            : utilisation du flottant materiel
45# -msibcall     -mno-sibcall            : Enable sibcall optimization
46# -mlogue       -mno-logue              : Schedule pro/epi-logue.
47# -maj          -mno-aj                 : Use aligned jumps.
48
49# Tools
50OR32_CC                         = $(OR1K_BIN)/or32-elf-gcc
51OR32_AS                         = $(OR1K_BIN)/or32-elf-as
52OR32_LD                         = $(OR1K_BIN)/or32-elf-ld
53OR32_OBJDUMP                    = $(OR1K_BIN)/or32-elf-objdump
54OR32_NM                         = $(OR1K_BIN)/or32-elf-nm
55
56# Tools's option
57OR32_CC_OPT                     = -Wall $(INCDIR) $(OPTIMIZE) -Wlong-long -DMorpheo $(FLAGS)
58# -DHAVE_LIBC
59OR32_AS_OPT                     =
60OR32_LD_OPT                     = -T$(DIR_LDSCRIPT)/or32.ld $(LIBDIR) $(LIBNAME) $(OR1K_LIBDIR) $(OR1K_LIBNAME)
61OR32_OBJDUMP_OPT                = -D
62OR32_NM_OPT                     = -n
63
64#-----[ Rules ]-------------------------------------------------------------------
65.PRECIOUS                       : $(DIR_BIN)/%.x.txt $(DIR_BIN)/%.x $(DIR_OBJ)/%.o
66
67vpath   %.h     $(DIR_INC):$(DIR_COMMON_INC)
68vpath   %.c     $(DIR_C):$(DIR_COMMON_C)
69vpath   %.s     $(DIR_ASM):$(DIR_SYS):$(DIR_COMMON_ASM):$(DIR_COMMON_SYS)
70vpath   %.o     $(DIR_OBJ)
71vpath   %.x     $(DIR_BIN)
72
73all                             : $(DIR_BIN)/$(EXE).x
74
75$(DIR_BIN)/%.x                  : $(DIR_BIN) $(DIR_OBJ)
76                                @\
77                                $(MAKE) $(OBJECTS);                             \
78                                $(ECHO) "Linkage            : $*.x";            \
79                                $(OR32_LD) -o $@ $(OBJECTS) $(OR32_LD_OPT);     \
80                                $(ECHO) "List symbols       : $*.x.nm";         \
81                                $(OR32_NM)      $(OR32_NM_OPT)      $@ > $@.nm; \
82                                $(ECHO) "Display info       : $*.x.txt";        \
83                                $(OR32_OBJDUMP) $(OR32_OBJDUMP_OPT) $@ > $@.txt;\
84                                echo $($(GREP) "l.jal 0" $@.txt);
85
86$(DIR_OBJ)/%.o                  : %.s   
87                                @\
88                                $(ECHO) "Compilation        : $*.s";            \
89                                $(OR32_CC) $(OR32_CC_OPT)     -o $@   -c $^ ;
90#                               $(OR32_CC) $(OR32_CC_OPT)  -S -o $@.s -c $^ ;
91
92$(DIR_OBJ)/%.o                  : %.c
93                                @\
94                                $(ECHO) "Compilation        : $*.c";            \
95                                $(OR32_CC) $(OR32_CC_OPT)     -o $@   -c $^ ;
96#                               $(OR32_CC) $(OR32_CC_OPT)  -S -o $@.s -c $^ ;
97
98$(DIR_BIN) $(DIR_OBJ)           :
99                                @\
100                                $(MKDIR) $@;
101
102#-----[ Maintenance ]-------------------------------------------------------------
103clean                           :
104                                @\
105                                $(ECHO) "Delete     temporary files";           \
106                                $(RM)   $(DIR_OBJ)              \
107                                        *~                      \
108                                        $(DIR_SRC)/*~           \
109                                        $(DIR_C)/*~             \
110                                        $(DIR_ASM)/*~           \
111                                        $(DIR_SYS)/*~           \
112                                        $(DIR_INC)/*~           \
113                                        $(DIR_LDSCRIPT)/*~      \
114
115clean_all                       : clean
116                                $(RM)   $(DIR_BIN)
117
118#-----[ Help ]--------------------------------------------------------------------
119help                            :
120                                @\
121                                $(ECHO) "";\
122                                $(ECHO) "List of directive   : ";\
123                                $(ECHO) " * all              : Compile the software";\
124                                $(ECHO) " * clean            : Erase all files generates";\
125                                $(ECHO) " * clean_all        : Erase all files generates";\
126                                $(ECHO) "";
Note: See TracBrowser for help on using the repository browser.