-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
157 lines (114 loc) · 4.78 KB
/
Makefile
File metadata and controls
157 lines (114 loc) · 4.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
PREFIX=$(HOME)/CE
include $(PREFIX)/etc/libce.conf
START_SISTEMA= 0x0000000000200000
SWAP= swap.img
-include util/start.mk
NCC ?= g++
NLD ?= ld.gold
COMM_CFLAGS=$(CFLAGS) \
-Wall \
-nostdlib \
-fno-exceptions \
-fno-rtti \
-fno-stack-protector \
-Iinclude \
-I$(INCLUDE) \
-mno-red-zone \
-gdwarf-2
COMM_LDFLAGS=\
-nostdlib
COMM_LDLIBS=
NCFLAGS=$(COMM_CFLAGS) -m64 -Wno-builtin-declaration-mismatch -DX86_64
ifdef DEBUG
NCFLAGS+=-DDEBUG
endif
NLDFLAGS=$(COMM_LDFLAGS) -melf_x86_64 -L$(LIB64)
NLDLIBS=$(COMM_LDLIBS) -lce64
ifdef AUTOCORR
NCFLAGS+=-DAUTOCORR
endif
WINDOWS_CPP_FILES := $(wildcard io/windows/*.cpp)
WINDOWS_OBJ_FILES = $(patsubst io/windows/%.cpp,io/windows/%.o,$(WINDOWS_CPP_FILES))
RESOURCES_CPP_FILES := $(wildcard io/windows/resources/*.cpp)
RESOURCES_OBJ_FILES = $(patsubst io/windows/resources/%.cpp,io/windows/resources/%.o,$(RESOURCES_CPP_FILES))
all: \
build/sistema \
build/parse \
build/creatimg \
utente/prog
$(WINDOWS_OBJ_FILES): $(wildcard io/windows/*.h)
build/sistema: sistema/sist_s.o sistema/sist_cpp.o
$(NLD) $(NLDFLAGS) -o build/sistema -Ttext $(START_SISTEMA) sistema/sist_s.o sistema/sist_cpp.o $(NLDLIBS)
build/io: io/io_s.o io/io_cpp.o $(WINDOWS_OBJ_FILES) $(RESOURCES_OBJ_FILES)
$(NLD) $(NLDFLAGS) -o build/io -Ttext $(START_IO) io/io_s.o io/io_cpp.o $(WINDOWS_OBJ_FILES) $(RESOURCES_OBJ_FILES) $(NLDLIBS)
build/utente: utente/uten_s.o utente/lib.o utente/uten_cpp.o
$(NLD) $(NLDFLAGS) -o build/utente -Ttext $(START_UTENTE) utente/uten_cpp.o utente/uten_s.o utente/lib.o $(NLDLIBS)
# compilazione di sistema.s e sistema.cpp
sistema/sist_s.o: sistema/sistema.s include/costanti.h
$(NCC) $(NCFLAGS) -x assembler-with-cpp -c sistema/sistema.s -o sistema/sist_s.o
sistema/sist_cpp.o: sistema/sistema.cpp include/costanti.h
$(NCC) $(NCFLAGS) -c sistema/sistema.cpp -o sistema/sist_cpp.o
# compilazione di io.s e io.cpp
io/io_s.o: io/io.s include/costanti.h
$(NCC) $(NCFLAGS) -x assembler-with-cpp -c io/io.s -o io/io_s.o
io/io_cpp.o: io/io.cpp include/costanti.h io/windows/consts.h
$(NCC) $(NCFLAGS) -fpic -c io/io.cpp -o io/io_cpp.o
## compilazione modulo windows di io
io/windows/%.o: io/windows/%.cpp
$(NCC) $(NCFLAGS) -fpic -c -o $@ $<
## compilazione risorse per modulo windows dell'io
io/windows/resources/%.o: io/windows/resources/%.cpp
$(NCC) $(NCFLAGS) -fpic -c -o $@ $<
# compilazione di utente.s e utente.cpp
utente/uten_s.o: utente/utente.s include/costanti.h
$(NCC) $(NCFLAGS) -x assembler-with-cpp -c utente/utente.s -o utente/uten_s.o
utente/utente.cpp: build/parse utente/prog/*.in utente/include/* utente/prog
build/parse -o utente/utente.cpp utente/prog/*.in
utente/uten_cpp.o: utente/utente.cpp
$(NCC) $(NCFLAGS) -fpic -Iutente/include -c utente/utente.cpp -o utente/uten_cpp.o
utente/lib.o: utente/lib.cpp utente/include/lib.h
$(NCC) $(NCFLAGS) -fpic -Iutente/include -c utente/lib.cpp -o utente/lib.o
# creazione di parse e createimg
build/parse: util/parse.c util/src.h
gcc -o build/parse util/parse.c
util/coff.o: include/costanti.h util/interp.h util/coff.h util/dos.h util/coff.cpp
g++ -c -g -Iinclude -o util/coff.o util/coff.cpp
util/elf32.o: include/costanti.h util/interp.h include/elf.h util/elf32.h util/elf32.cpp
g++ -c -g -Iinclude -o util/elf32.o util/elf32.cpp
util/elf64.o: include/costanti.h util/interp.h include/elf.h include/elf64.h util/elf64.cpp
g++ -c -g -Iinclude -o util/elf64.o util/elf64.cpp
util/interp.o: include/costanti.h util/interp.h util/interp.cpp
g++ -c -g -Iinclude -o util/interp.o util/interp.cpp
util/swap.o: include/costanti.h util/swap.h util/swap.cpp
g++ -c -g -Iinclude -o util/swap.o util/swap.cpp
util/fswap.o: include/costanti.h util/swap.h util/fswap.cpp
g++ -c -g -Iinclude -o util/fswap.o util/fswap.cpp
util/creatimg.o: include/costanti.h util/interp.h util/swap.h util/creatimg.cpp
g++ -c -g -Iinclude -o util/creatimg.o util/creatimg.cpp
build/creatimg: util/creatimg.o util/elf32.o util/elf64.o util/coff.o util/interp.o util/swap.o util/fswap.o
g++ -g -o build/creatimg util/creatimg.o util/elf32.o util/elf64.o util/coff.o util/interp.o util/swap.o util/fswap.o
# creazione del file di swap
$(SWAP): util/start.mk
truncate -s $(SWAP_SIZE) $(SWAP)
.PHONY: swap clean reset
swap: build/creatimg build/io build/utente $(SWAP)
build/creatimg $(SWAP) build/io build/utente && ln -fs $(SWAP) .swap
clean:
rm -f sistema/*.o io/*.o utente/*.o util/*.o
rm -f io/windows/*.o
rm -f util/start.mk util/start.gdb util/start.pl
clean-res:
rm -f io/windows/resources/*.o
clean-all: \
clean \
clean-res
reset: clean
rm -f build/* $(SWAP) .swap
build:
mkdir -p $@
utente/prog:
mkdir -p $@
build/mkstart: include/costanti.h util/mkstart.cpp
g++ -g -Iinclude -o build/mkstart util/mkstart.cpp
util/start.mk: include/costanti.h include/tipo.h build/mkstart
build/mkstart