1
1
QEMUIMAGEFILES = weensyos.img
2
2
all : $(QEMUIMAGEFILES )
3
+ include build/flags.mk
3
4
4
5
# Place local configuration options, such as `CC=clang`, in
5
6
# `config.mk` so you don't have to list them every time.
6
- -include config.mk
7
+ CONFIG ?= config.mk
8
+ -include $(CONFIG )
7
9
8
10
# `$(V)` controls whether the makefiles print verbose commands (the shell
9
11
# commands run by Make) or brief commands (like `COMPILE`).
@@ -31,7 +33,9 @@ NCPU = 1
31
33
LOG ?= file:log.txt
32
34
QEMUOPT = -net none -parallel $(LOG ) -smp $(NCPU )
33
35
ifeq ($(D ) ,1)
34
- QEMUOPT += -d int,cpu_reset,guest_errors -no-reboot
36
+ QEMUOPT += -d int,cpu_reset,guest_errors -no-reboot -D qemu.log
37
+ else ifeq ($(D),2)
38
+ QEMUOPT += -d guest_errors -no-reboot -D qemu.log
35
39
endif
36
40
ifneq ($(NOGDB ) ,1)
37
41
QEMUGDB ?= -gdb tcp::12949
@@ -40,6 +44,8 @@ ifeq ($(STOP),1)
40
44
QEMUOPT += -S
41
45
endif
42
46
47
+ QEMURANDSEED := $(strip $(shell od -N8 -tu8 -An /dev/urandom) )
48
+
43
49
44
50
# Sets of object files
45
51
@@ -91,33 +97,33 @@ endif
91
97
# How to make object files
92
98
93
99
$(OBJDIR ) /% .ko : % .cc $(KERNELBUILDSTAMPS )
94
- $(call cxxcompile,$(KERNELCXXFLAGS ) -O1 -DWEENSYOS_KERNEL -c $< -o $@ ,COMPILE $< )
100
+ $(call cxxcompile,-O1 $(KERNELCXXFLAGS ) -DWEENSYOS_KERNEL -c $< -o $@ ,COMPILE $< )
95
101
96
102
$(OBJDIR ) /% .ko : % .S $(OBJDIR ) /k-asm.h $(KERNELBUILDSTAMPS )
97
103
$(call assemble,-O2 -c $< -o $@ ,ASSEMBLE $< )
98
104
99
105
$(OBJDIR ) /boot.o : $(OBJDIR ) /% .o: boot.cc $(KERNELBUILDSTAMPS )
100
- $(call cxxcompile,$(CXXFLAGS ) -Os - fomit-frame-pointer -DWEENSYOS_KERNEL -c $< -o $@ ,COMPILE $< )
106
+ $(call cxxcompile,-Os $(CXXFLAGS ) -fomit-frame-pointer -c $< -o $@ ,COMPILE $< )
101
107
102
108
$(OBJDIR ) /bootentry.o : $(OBJDIR ) /% .o: \
103
109
bootentry.S $(OBJDIR ) /k-asm.h $(KERNELBUILDSTAMPS )
104
110
$(call assemble,-Os -fomit-frame-pointer -c $< -o $@ ,ASSEMBLE $< )
105
111
106
112
$(OBJDIR ) /% .uo : % .cc $(BUILDSTAMPS )
107
- $(call cxxcompile,$(CXXFLAGS ) -O1 -DWEENSYOS_PROCESS -c $< -o $@ ,COMPILE $< )
113
+ $(call cxxcompile,-O1 $(CXXFLAGS ) -DWEENSYOS_PROCESS -c $< -o $@ ,COMPILE $< )
108
114
109
115
$(OBJDIR ) /% .uo : % .S $(OBJDIR ) /u-asm.h $(BUILDSTAMPS )
110
116
$(call assemble,-O2 -c $< -o $@ ,ASSEMBLE $< )
111
117
112
118
113
119
# How to make supporting source files
114
120
115
- $(OBJDIR ) /k-asm.h : kernel.hh lib.hh types.h x86-64.h build/mkkernelasm.awk $(KERNELBUILDSTAMPS )
116
- $(call cxxcompile,-dM -E kernel.hh | awk -f build/mkkernelasm.awk | sort > $@ ,CREATE $@ )
121
+ $(OBJDIR ) /k-asm.h : $(KERNELBUILDSTAMPS )
122
+ $(call run, $( k_asm_h_input_command ) | $( asm_h_build_command ) > $@ ,CREATE $@ )
117
123
@if test ! -s $@ ; then echo ' * Error creating $@!' 1>&2 ; exit 1; fi
118
124
119
- $(OBJDIR ) /u-asm.h : u-lib.hh lib.hh types.h x86-64.h build/mkkernelasm.awk $(BUILDSTAMPS )
120
- $(call cxxcompile,-dM -E u-lib.hh | awk -f build/mkkernelasm.awk | sort > $@ ,CREATE $@ )
125
+ $(OBJDIR ) /u-asm.h : $(BUILDSTAMPS )
126
+ $(call run, $( u_asm_h_input_command ) | $( asm_h_build_command ) > $@ ,CREATE $@ )
121
127
@if test ! -s $@ ; then echo ' * Error creating $@!' 1>&2 ; exit 1; fi
122
128
123
129
$(OBJDIR ) /k-firstprocess.h :
@@ -127,7 +133,7 @@ $(OBJDIR)/k-foreachimage.h: build/mkforeachimage.awk $(PROCESSES_BUILDSTAMP)
127
133
$(call run,awk -f build/mkforeachimage.awk -v processes="$(PROCESSES ) " > $@ ,CREATE $@ )
128
134
129
135
$(OBJDIR ) /firstprocess.gdb :
130
- $(call run,if test "$(WEENSYOS_FIRST_PROCESS ) " = allocators ; then echo "add-symbol-file obj/p-allocator .full 0x100000"; echo "add-symbol-file obj/p-allocator2 .full 0x140000"; echo "add-symbol-file obj/p-allocator3.full 0x180000"; echo "add-symbol-file obj/p-allocator4.full 0x1C0000 "; else echo "add-symbol-file obj/p-$(WEENSYOS_FIRST_PROCESS ) .full 0x100000"; fi > $@ ,CREATE $@ )
136
+ $(call run,if test "$(WEENSYOS_FIRST_PROCESS ) " = friends ; then echo "add-symbol-file obj/p-alice .full 0x100000"; echo "add-symbol-file obj/p-eve .full 0x140000"; else echo "add-symbol-file obj/p-$(WEENSYOS_FIRST_PROCESS ) .full 0x100000"; fi > $@ ,CREATE $@ )
131
137
132
138
$(OBJDIR ) /k-hardware.ko : $(OBJDIR ) /k-foreachimage.h
133
139
@@ -158,7 +164,7 @@ $(OBJDIR)/%: $(OBJDIR)/%.full
158
164
$(call run,$(QUIETOBJCOPY ) -j .text -j .rodata -j .data -j .bss -j .ctors -j .init_array $< ,STRIP,$@ )
159
165
160
166
$(OBJDIR ) /bootsector : $(BOOT_OBJS ) build/boot.ld
161
- $(call link,-T build/boot.ld -o $@ .full $(BOOT_OBJS ) ,LINK)
167
+ $(call link,-T build/boot.ld -z noexecstack - o $@ .full $(BOOT_OBJS ) ,LINK)
162
168
$(call run,$(OBJDUMP ) -C -S $@ .full >$@ .asm)
163
169
$(call run,$(NM ) -n $@ .full >$@ .sym)
164
170
$(call run,$(OBJCOPY ) -S -O binary -j .text $@ .full $@ )
@@ -167,19 +173,19 @@ $(OBJDIR)/bootsector: $(BOOT_OBJS) build/boot.ld
167
173
# How to make host program for ensuring a loaded symbol table
168
174
169
175
$(OBJDIR ) /mkchickadeesymtab : build/mkchickadeesymtab.cc $(BUILDSTAMPS )
170
- $(call run,$(HOSTCXX ) $(CPPFLAGS ) $(HOSTCXXFLAGS ) $(DEPCFLAGS ) -g -o $@ ,HOSTCOMPILE,$< )
176
+ $(call run,$(HOSTCXX ) $(HOSTCPPFLAGS ) $(HOSTCXXFLAGS ) $(DEPCFLAGS ) -g -o $@ ,HOSTCOMPILE,$< )
171
177
172
178
173
179
# How to make host programs for constructing & checking file systems
174
180
175
181
$(OBJDIR ) /% .o : % .cc $(BUILDSTAMPS )
176
- $(call run,$(HOSTCXX ) $(CPPFLAGS ) $(HOSTCXXFLAGS ) $(DEPCFLAGS ) -c -o $@ ,HOSTCOMPILE,$< )
182
+ $(call run,$(HOSTCXX ) $(HOSTCPPFLAGS ) $(HOSTCXXFLAGS ) $(DEPCFLAGS ) -c -o $@ ,HOSTCOMPILE,$< )
177
183
178
184
$(OBJDIR ) /% .o : build/% .cc $(BUILDSTAMPS )
179
- $(call run,$(HOSTCXX ) $(CPPFLAGS ) $(HOSTCXXFLAGS ) $(DEPCFLAGS ) -c -o $@ ,HOSTCOMPILE,$< )
185
+ $(call run,$(HOSTCXX ) $(HOSTCPPFLAGS ) $(HOSTCXXFLAGS ) $(DEPCFLAGS ) -c -o $@ ,HOSTCOMPILE,$< )
180
186
181
187
$(OBJDIR ) /mkbootdisk : build/mkbootdisk.cc $(BUILDSTAMPS )
182
- $(call run,$(HOSTCXX ) $(CPPFLAGS ) $(HOSTCXXFLAGS ) $(DEPCFLAGS ) -g -o $@ ,HOSTCOMPILE,$< )
188
+ $(call run,$(HOSTCXX ) $(HOSTCPPFLAGS ) $(HOSTCXXFLAGS ) $(DEPCFLAGS ) -g -o $@ ,HOSTCOMPILE,$< )
183
189
184
190
185
191
weensyos.img : $(OBJDIR ) /mkbootdisk $(OBJDIR ) /bootsector $(OBJDIR ) /kernel
@@ -219,7 +225,7 @@ run-gdb-$(RUNSUFFIX): run-gdb
219
225
run-gdb-graphic-$(RUNSUFFIX ) : run-gdb-graphic
220
226
run-gdb-console-$(RUNSUFFIX ) : run-gdb-console
221
227
222
- # Kill all my qemus
228
+ # Stop all my qemus
223
229
stop kill :
224
230
-killall -u $$(whoami ) $(QEMU )
225
231
@sleep 0.2; if ps -U $$ (whoami) | grep $( QEMU) > /dev/null; then killall -9 -u $$ (whoami) $( QEMU) ; fi
0 commit comments