Skip to content

Commit 05d24c8

Browse files
committed
Merge branch 'master' into rust-boot
2 parents 54621a9 + 1119f7e commit 05d24c8

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+480
-432
lines changed

.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
*.bin
88
*.elf
99

10+
# serial output
11+
serial-*.log
12+
1013
### Assembler ###
1114
*.[sS]
1215
*.bc

.travis.yml

+1-2
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@ install:
2222
- export PATH="$PATH:$(rustc --print sysroot)/cargo/bin"
2323
- curl -sf "https://raw.githubusercontent.com/japaric/rust-everywhere/master/install.sh" | bash -s -- --from japaric/xargo
2424
script:
25-
- cd lib/sos_alloc && cargo test
26-
- cd ../.. && cargo test -p sos_intrusive
25+
- make test
2726
- make
2827
after_success:
2928
- travis-cargo doc && travis-cargo doc-upload

Cargo.toml

+13-6
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,28 @@ authors = [ # hacked around by
77
"Philipp Oppermann <dev@phil-opp.com>"
88
]
99

10-
build = "build.rs"
10+
build = "build.rs"
1111

12-
[[bin]]
13-
name = "sos_kernel_full"
12+
# [[bin]]
13+
# name = "sos_kernel_full"
1414

1515
# [lib]
1616
# crate-type = ["staticlib"]
1717
#
1818

1919
[profile.dev]
20+
opt-level = 3
21+
debug = true
22+
rpath = false
23+
lto = false
24+
debug-assertions = true
25+
codegen-units = 1
2026
panic = "abort"
2127

2228
[profile.release]
29+
2330
panic = "abort"
24-
debug = true
31+
debug = false
2532

2633
[features]
2734
default = []
@@ -43,11 +50,11 @@ version = "0.2.*"
4350
features = ["spin_no_std"]
4451

4552
[dependencies.sos_alloc]
46-
path = "lib/sos_alloc"
53+
path = "sos_alloc"
4754
features = ["buddy_as_system"]
4855

4956
[dependencies.sos_vga]
50-
path = "lib/sos_vga"
57+
path = "sos_vga"
5158
features = ["system_term"]
5259

5360
[dependencies.clippy]

Makefile

+55-18
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
arch ?= x86_64
2-
target ?= $(arch)-unknown-sos-gnu
2+
target ?= $(arch)-sos-kernel-gnu
33

4-
iso := target/$(target)/release/sos-$(arch).iso
5-
kernel := target/$(target)/release/sos_kernel
6-
isofiles := target/$(target)/release/isofiles
4+
iso := target/$(target)/debug/sos-$(arch).iso
5+
kernel := target/$(target)/debug/sos_kernel
6+
isofiles := target/$(target)/debug/isofiles
7+
8+
release_iso := target/$(target)/release/sos-$(arch).iso
9+
release_kernel := target/$(target)/release/sos_kernel
10+
release_isofiles := target/$(target)/release/isofiles
711

812
grub_cfg := src/arch/$(arch)/grub.cfg
913

14+
TIMESTAMP := $(shell /bin/date "+%Y-%m-%d-%H:%M:%S")
15+
1016
#COLORS
1117
GREEN := $(shell tput -Txterm setaf 2)
1218
WHITE := $(shell tput -Txterm setaf 7)
@@ -23,47 +29,78 @@ HELP_FUN = \
2329
for (sort keys %help) { \
2430
print "${WHITE}$$_:${RESET}\n"; \
2531
for (@{$$help{$$_}}) { \
26-
$$sep = " " x (32 - length $$_->[0]); \
32+
$$sep = " " x (20 - length $$_->[0]); \
2733
print " ${YELLOW}$$_->[0]${RESET}$$sep${GREEN}$$_->[1]${RESET}\n"; \
2834
}; \
2935
print "\n"; }
3036

31-
.PHONY: all clean kernel run iso cargo help gdb
37+
.PHONY: all clean kernel run iso cargo help gdb test doc release-iso release-run release-kernel
38+
39+
doc: ##@utilities Make RustDoc documentation
40+
@xargo doc
3241

3342
help: ##@miscellaneous Show this help.
3443
@perl -e '$(HELP_FUN)' $(MAKEFILE_LIST)
3544

36-
all: kernel
45+
all: help
3746

3847
env: ##@utilities Install dev environment dependencies
3948
./scripts/install-env.sh
4049

4150
clean: ##@utilities Delete all build artefacts.
42-
@cargo clean
51+
@xargo clean
4352

44-
kernel: $(kernel) ##@build Compile the kernel binary
53+
54+
kernel: $(kernel).bin ##@build Compile the debug kernel binary
4555

4656
iso: $(iso) ##@build Compile the kernel binary and make an ISO image
4757

4858
run: $(iso) ##@build Make the kernel ISO image and boot QEMU from it.
4959
@qemu-system-x86_64 -s -hda $(iso)
5060

51-
$(iso): $(kernel) $(grub_cfg)
61+
release-kernel: $(release_kernel).bin ##@release Compile the release kernel binary
62+
63+
release-iso: $(release_iso) ##@release Compile the release kernel binary and make an ISO image
64+
65+
release-run: $(release_iso) ##@release Make the release kernel ISO image and boot QEMU from it.
66+
@qemu-system-x86_64 -s -hda $(release_iso)
67+
68+
debug: $(iso) ##@build Run the kernel, redirecting serial output to a logfile.
69+
@qemu-system-x86_64 -s -hda $(iso) -serial file:$(CURDIR)/target/$(target)/serial-$(TIMESTAMP).log
70+
71+
test: ##@build Test crate dependencies
72+
@xargo test -p sos_intrusive
73+
@cd sos_alloc && xargo test
74+
75+
$(iso): $(kernel).bin $(grub_cfg)
5276
@mkdir -p $(isofiles)/boot/grub
53-
@cp $(kernel) $(isofiles)/boot/
77+
@cp $(kernel).bin $(isofiles)/boot/
5478
@cp $(grub_cfg) $(isofiles)/boot/grub
5579
@grub-mkrescue -o $(iso) $(isofiles)/
5680
@rm -r $(isofiles)
5781

58-
$(kernel)_full:
59-
@xargo build --release --target $(target)
82+
$(release_kernel):
83+
@xargo build --target $(target) --release
84+
85+
$(release_kernel).bin: $(release_kernel)
86+
@cp $(release_kernel) $(release_kernel).bin
87+
88+
$(release_iso): $(release_kernel).bin $(grub_cfg)
89+
@mkdir -p $(release_isofiles)/boot/grub
90+
@cp $(release_kernel).bin $(release_isofiles)/boot/
91+
@cp $(grub_cfg) $(release_isofiles)/boot/grub
92+
@grub-mkrescue -o $(release_iso) $(release_isofiles)/
93+
@rm -r $(release_isofiles)
94+
95+
$(kernel):
96+
@xargo build --target $(target)
6097

61-
$(kernel).debug: $(kernel)_full
62-
@x86_64-elf-objcopy --only-keep-debug $(kernel)_full $(kernel).debug
98+
$(kernel).debug: $(kernel)
99+
@x86_64-elf-objcopy --only-keep-debug $(kernel) $(kernel).debug
63100

64-
$(kernel): $(kernel)_full $(kernel).debug
65-
@x86_64-elf-strip -g -o $(kernel) $(kernel)_full
101+
$(kernel).bin: $(kernel) $(kernel).debug
102+
@x86_64-elf-strip -g -o $(kernel).bin $(kernel)
66103
@x86_64-elf-objcopy --add-gnu-debuglink=$(kernel).debug $(kernel)
67104

68-
gdb: $(kernel) $(kernel).debug ##@utilities Connect to a running QEMU instance with gdb.
105+
gdb: $(kernel).bin $(kernel).debug ##@utilities Connect to a running QEMU instance with gdb.
69106
@rust-gdb -ex "target remote tcp:127.0.0.1:1234" $(kernel)

lib/README.md

-25
This file was deleted.

lib/sos_multiboot2/Cargo.toml

-4
This file was deleted.

0 commit comments

Comments
 (0)