refactor: rework the entire build system
This commit is contained in:
		
							parent
							
								
									4e110d12eb
								
							
						
					
					
						commit
						8cefd7946f
					
				
					 41 changed files with 607 additions and 209 deletions
				
			
		
							
								
								
									
										6
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							|  | @ -9,6 +9,7 @@ | |||
| *.a | ||||
| *.dump | ||||
| vmstupid | ||||
| vmstupid-dbg | ||||
| 
 | ||||
| 
 | ||||
| /sysroot | ||||
|  | @ -17,3 +18,8 @@ log.txt | |||
| 
 | ||||
| /docs/html | ||||
| /docs/config/Data | ||||
| 
 | ||||
| a.out | ||||
| *.old | ||||
| /bx_enh_dbg.ini | ||||
| bochsrc.bxrc | ||||
|  |  | |||
							
								
								
									
										58
									
								
								Makefile
									
										
									
									
									
								
							
							
						
						
									
										58
									
								
								Makefile
									
										
									
									
									
								
							|  | @ -1,53 +1,13 @@ | |||
| .SUFFIXES: | ||||
| .DELETE_ON_ERROR: | ||||
| .DEFAULT_GOAL := all | ||||
| TOPDIR	:= $(CURDIR) | ||||
| export TOPDIR | ||||
| 
 | ||||
| AS		= nasm | ||||
| LD		= ld.lld | ||||
| OBJDUMP = llvm-objdump | ||||
| QEMU	= qemu-system-i386 | ||||
| RM		= rm -f | ||||
| MKCWD	= mkdir -p $(@D) | ||||
| INSTALL = install | ||||
| SUBDIR := thirdparty lib bin kernel | ||||
| 
 | ||||
| BIN_DIR		= bin | ||||
| DOC_DIR		= docs | ||||
| KERNEL_DIR	= kernel | ||||
| LIB_DIR		= lib | ||||
| TOOLS_DIR	= tools | ||||
| .PHONY: docs | ||||
| docs: | ||||
| 	-mkdir -p docs/html | ||||
| 	naturaldocs -p docs/config -img docs/img -xi tmp -i . -o HTML docs/html | ||||
| 	cp docs/img/favicon.ico docs/html/ | ||||
| 
 | ||||
| include $(TOOLS_DIR)/build.mk | ||||
| 
 | ||||
| ASFLAGS	=  -F dwarf -g -DSTUPID_VERSION="\"$(shell $(GIT-VERSION))\"" -Ilib \
 | ||||
| 	-DBUILD_DATE="\"$(shell date --iso)\"" \
 | ||||
| 	-DNASM_VERSION="\"$(shell nasm -v)\"" | ||||
| QEMUFLAGS = -serial stdio -no-reboot | ||||
| 
 | ||||
| GARBADGE	= stupid.iso | ||||
| 
 | ||||
| include $(KERNEL_DIR)/build.mk | ||||
| include $(LIB_DIR)/build.mk | ||||
| include $(BIN_DIR)/build.mk | ||||
| include $(DOC_DIR)/build.mk | ||||
| 
 | ||||
| all: stupid.iso | ||||
| 
 | ||||
| sysroot: $(KERNEL_BIN) $(KERNEL_DUMP) $(LIBS_BIN) | ||||
| 	$(INSTALL) -d $@ | ||||
| 	$(INSTALL) -d $@/bin | ||||
| 	$(INSTALL) -d $@/lib | ||||
| 	$(INSTALL) $(KERNEL_BIN) $@ | ||||
| 	$(INSTALL) $(LIBS_BIN) $@/lib | ||||
| 
 | ||||
| stupid.iso: sysroot | ||||
| 	$(CREATE-ISO) $@ $< | ||||
| 
 | ||||
| run: stupid.iso | ||||
| 	$(QEMU) $(QEMUFLAGS) -cdrom $< | ||||
| 
 | ||||
| clean: | ||||
| 	$(RM) $(GARBADGE) | ||||
| 
 | ||||
| re: clean all | ||||
| 
 | ||||
| .PHONY: all clean re | ||||
| include $(TOPDIR)/share/mk/stupid.subdir.mk | ||||
|  |  | |||
							
								
								
									
										3
									
								
								bin/Makefile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								bin/Makefile
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,3 @@ | |||
| NOSUBDIR := 1 | ||||
| 
 | ||||
| include $(TOPDIR)/share/mk/stupid.subdir.mk | ||||
|  | @ -3,14 +3,26 @@ | |||
|  */ | ||||
| 
 | ||||
| /* | ||||
|  * Procedure: Motd | ||||
|  * Program entry point | ||||
|  * Procedure: main | ||||
|  * | ||||
|  * Program entry point. | ||||
|  */ | ||||
| Motd: PROC OPTIONS(MAIN); | ||||
| 	DCL in FILE; | ||||
| 	OPEN FILE(in) TITLE('/etc/motd') INPUT; | ||||
| 	DO ; | ||||
| 
 | ||||
| 
 | ||||
| PROC main; | ||||
| 	DCL in AS File; | ||||
| 	DCL line AS String; | ||||
| 	DCL now AS DateTime; | ||||
| 
 | ||||
| 	now = [[DateTime allocate] now]; | ||||
| 	IF now == NIL THEN exit(1); | ||||
| 	in = [[File allocate] initOpen:"/etc/motd"]; | ||||
| 	IF in == NIL THEN exit(1); | ||||
| 
 | ||||
| 	WHILE [in readLine:line] != EOF; | ||||
| 		print(line); | ||||
| 	END; | ||||
| 	CLOSE FILE(in); | ||||
| 
 | ||||
| 	[in release]; | ||||
| 	[now release]; | ||||
| END; | ||||
|  |  | |||
|  | @ -1,5 +0,0 @@ | |||
| .PHONY: docs | ||||
| docs:  | ||||
| 	-mkdir -p $(DOC_DIR)/html | ||||
| 	naturaldocs -p $(DOC_DIR)/config -img $(DOC_DIR)/img -xi tmp -i . -o HTML $(DOC_DIR)/html | ||||
| 	cp $(DOC_DIR)/img/favicon.ico $(DOC_DIR)/html/ | ||||
							
								
								
									
										2
									
								
								docs/coding-style.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								docs/coding-style.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,2 @@ | |||
| File: Coding Style | ||||
| 
 | ||||
|  | @ -116,6 +116,7 @@ Format: 1.51 | |||
| Alter Language: Assembly | ||||
| 
 | ||||
|    Add Extensions: s inc | ||||
|    Struct Prototype Ender: endstruc | ||||
| 
 | ||||
| 
 | ||||
| Language: PL/S | ||||
|  |  | |||
|  | @ -40,6 +40,7 @@ Timestamp: Updated yyyy/mm/dd | |||
| 
 | ||||
| File: Introduction  (docs/intro.txt) | ||||
| Link: Source Code  (https://github.com/d0p1s4m4/StupidOS) | ||||
| File: Coding Style  (docs/coding-style.txt) | ||||
| File: FAQ  (docs/faq.txt) | ||||
| 
 | ||||
| Group: Kernel  { | ||||
|  | @ -56,11 +57,9 @@ Group: Kernel  { | |||
|       File: serial.s  (no auto-title, kernel/drivers/serial.s) | ||||
|       }  # Group: Driver | ||||
| 
 | ||||
|    Group: Debug  { | ||||
| 
 | ||||
|       File: msg_en  (kernel/debug/msg_en.s) | ||||
|       }  # Group: Debug | ||||
| 
 | ||||
|    File: kernel.s  (kernel/kernel.s) | ||||
|    File: msg_en  (kernel/i18n/msg_en.s) | ||||
|    File: pmm.s  (kernel/pmm.s) | ||||
|    }  # Group: Kernel | ||||
| 
 | ||||
| Group: Lib  { | ||||
|  | @ -107,6 +106,21 @@ Group: Bin  { | |||
| 
 | ||||
|    }  # Group: Bin | ||||
| 
 | ||||
| Group: Share  { | ||||
| 
 | ||||
|    Group: Mk  { | ||||
| 
 | ||||
|       File: stupid.clean.mk  (share/mk/stupid.clean.mk) | ||||
|       File: stupid.kernel.mk  (share/mk/stupid.kernel.mk) | ||||
|       File: stupid.lib.mk  (share/mk/stupid.lib.mk) | ||||
|       File: stupid.own.mk  (share/mk/stupid.own.mk) | ||||
|       File: stupid.prog.mk  (share/mk/stupid.prog.mk) | ||||
|       File: stupid.subdir.mk  (share/mk/stupid.subdir.mk) | ||||
|       File: stupid.sys.mk  (share/mk/stupid.sys.mk) | ||||
|       }  # Group: Mk | ||||
| 
 | ||||
|    }  # Group: Share | ||||
| 
 | ||||
| Group: Index  { | ||||
| 
 | ||||
|    Index: Everything | ||||
|  |  | |||
|  | @ -79,3 +79,18 @@ Format: 1.51 | |||
| # If you add something that you think would be useful to other developers | ||||
| # and should be included in Natural Docs by default, please e-mail it to | ||||
| # topics [at] naturaldocs [dot] org. | ||||
| 
 | ||||
| 
 | ||||
| Alter Topic Type: Macro | ||||
| 
 | ||||
|    Add Keywords: | ||||
|       equ | ||||
| 
 | ||||
| 
 | ||||
| Topic Type: Struct | ||||
| 
 | ||||
|    Plural: Structs | ||||
|    Class Hierarchy: Yes | ||||
| 
 | ||||
|    Keywords: | ||||
|       struc | ||||
|  |  | |||
							
								
								
									
										5
									
								
								kernel/Makefile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								kernel/Makefile
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,5 @@ | |||
| KERNEL	= vmstupid | ||||
| SRCS	= head.s gdt.s pic.s isr.s idt.s pmm.s paging.s \
 | ||||
| 			lib/log.s drivers/serial.s | ||||
| 
 | ||||
| include $(TOPDIR)/share/mk/stupid.kernel.mk | ||||
|  | @ -1,24 +0,0 @@ | |||
| include kernel/drivers/build.mk | ||||
| 
 | ||||
| KERNEL_SRCS	= head.s gdt.s pic.s isr.s idt.s pmm.s paging.s lib/log.s | ||||
| KERNEL_OBJS	= $(addprefix kernel/, $(KERNEL_SRCS:.s=.o) $(DRIVERS_OBJS)) | ||||
| KERNEL_BIN	= vmstupid | ||||
| KERNEL_DUMP = $(KERNEL_BIN).dump | ||||
| 
 | ||||
| KERNEL_ASFLAGS	= $(ASFLAGS) -D__KERNEL__ -Ikernel | ||||
| 
 | ||||
| GARBADGE += $(KERNEL_OBJS) $(KERNEL_BIN) $(KERNEL_DUMP) | ||||
| 
 | ||||
| $(KERNEL_BIN): $(KERNEL_OBJS) | ||||
| 	$(LD) -T $(KERNEL_DIR)/linker.ld -nostdlib -o $@ $^ | ||||
| 
 | ||||
| $(KERNEL_DUMP): $(KERNEL_BIN) | ||||
| 	$(OBJDUMP) -D $^ > $@ | ||||
| 
 | ||||
| kernel/lib/%.o: lib/base/%.s | ||||
| 	@$(MKCWD) | ||||
| 	$(AS) -felf -o $@ $< $(KERNEL_ASFLAGS) | ||||
| 
 | ||||
| kernel/%.o: kernel/%.s | ||||
| 	$(AS) -felf -o $@ $< $(KERNEL_ASFLAGS) | ||||
| 
 | ||||
							
								
								
									
										51
									
								
								kernel/cpu.inc
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								kernel/cpu.inc
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,51 @@ | |||
| struc tss | ||||
| 	.link: resd 1 | ||||
| 	 | ||||
| endstruc | ||||
| 
 | ||||
| struc gdt_entry | ||||
| 	.limit_low: resw 1 | ||||
| 	.base_low: resw 1 | ||||
| 	.base_mid: resb 1 | ||||
| 	.access: resb 1 | ||||
| 	.flags: resb 1 | ||||
| 	.base_high: resb 1 | ||||
| endstruc | ||||
| 
 | ||||
| struc idt_entry | ||||
| 	.limit_low: resw 1 | ||||
| 	.selector: resw 1 | ||||
| 	.zero: resb 1 | ||||
| 	.attr: resb 1 | ||||
| 	.base_high: resw 1 | ||||
| endstruc | ||||
| 
 | ||||
| struc intframe | ||||
| 	;; registers | ||||
| 	.edi: resd 1 | ||||
| 	.esi: resd 1 | ||||
| 	.ebp: resd 1 | ||||
| 	.esp: resd 1 | ||||
| 	.ebx: resd 1 | ||||
| 	.edx: resd 1 | ||||
| 	.ecx: resd 1 | ||||
| 	.eax: resd 1 | ||||
| 
 | ||||
| 	;; | ||||
| 	.gs: resd 1 | ||||
| 	.fs: resd 1 | ||||
| 	.es: resd 1 | ||||
| 	.ds: resd 1 | ||||
| 	.intno: resd 1 | ||||
| 
 | ||||
| 	;; by x86 hardware | ||||
| 	.err: resd 1 | ||||
| 	.eip: resd 1 | ||||
| 	.cs:  resd 1 | ||||
| 	.eflags: resd 1 | ||||
| 
 | ||||
| 	;; crossring | ||||
| 	.useresp: resd 1 | ||||
| 	.ss: resd 1 | ||||
| endstruc | ||||
| 
 | ||||
|  | @ -1,29 +0,0 @@ | |||
| ; file: msg_en
 | ||||
| ; English strings
 | ||||
| 
 | ||||
| .section rodata
 | ||||
| msg_hello_world: | ||||
| 	db "StupidOS v", STUPID_VERSION, " (built with ", NASM_VERSION, " on ", BUILD_DATE, ")", 0 | ||||
| msg_boot_info: | ||||
| 	db "Bootloader: %s", 0 | ||||
| msg_pmm_initialized: | ||||
| 	db "PMM initialized", 0 | ||||
| err_invalid_boot_magic: | ||||
| 	db "[ERROR] Invalid boot magic (got: %x, expected: 0x2BADB002)", 0 | ||||
| err_cannot_map_memory: | ||||
| 	db "[ERROR] Can't map memory", 0 | ||||
| warn_no_mmap: | ||||
| 	db "[WARN] mmap flag not set", 0 | ||||
| msg_mmap_entry: | ||||
| 	db "Memory Map Entry:", 0xA | ||||
| 	db 0x9, "Address: (hi): %x (lo): %x", 0xA | ||||
| 	db 0x9, "Length: (hi): %x (lo): %x", 0xA | ||||
| 	db 0x9, "Type: %x", 0 | ||||
| msg_mem_block: | ||||
| 	db "Free Memory:", 0xA | ||||
| 	db 0x9, "Address: %x", 0xA | ||||
| 	db 0x9, "Length: %x", 0 | ||||
| msg_max_mem: | ||||
| 	db "Max memory: %x", 0 | ||||
| msg_bitmap_stored_at: | ||||
| 	db "Bitmap stored at: %x", 0 | ||||
|  | @ -1,2 +0,0 @@ | |||
| DRIVERS_SRCS	= serial.s | ||||
| DRIVERS_OBJS	= $(addprefix drivers/, $(DRIVERS_SRCS:.s=.o)) | ||||
							
								
								
									
										14
									
								
								kernel/fs/vfs.inc
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								kernel/fs/vfs.inc
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,14 @@ | |||
| 
 | ||||
| struc superblock | ||||
| 	.devid: resd 1 | ||||
| 	.size: resd 1 | ||||
| 	.ninode: resd 1 | ||||
| 	.fs_type: resd 1 | ||||
| endstruc | ||||
| 
 | ||||
| struc inode | ||||
| 	.devid: resd 1 | ||||
| 	.size: resd 1 | ||||
| 	.inode: resd 1s | ||||
| 	.access: resd 1 | ||||
| endstruc | ||||
|  | @ -5,16 +5,22 @@ | |||
| %include "base.inc" | ||||
| %include "multiboot.inc" | ||||
| 
 | ||||
| MULTIBOOT_MAGIC equ 0x1BADB002 | ||||
| MULTIBOOT_ALIGN equ 1 << 0 | ||||
| MULTIBOOT_MEMINFO equ 1 << 1 | ||||
| MULTIBOOT_FLAGS equ MULTIBOOT_ALIGN | MULTIBOOT_MEMINFO | ||||
| ; Define: MB_HDR_FLAGS 
 | ||||
| MB_HDR_FLAGS equ MB_HDR_ALIGN | MB_HDR_MEMINFO | MB_HDR_VIDEO | ||||
| 
 | ||||
| section .multiboot | ||||
| align 4 | ||||
| 	dd MULTIBOOT_MAGIC | ||||
| 	dd MULTIBOOT_FLAGS | ||||
| 	dd -(MULTIBOOT_MAGIC + MULTIBOOT_FLAGS) | ||||
| 	istruc mb_header | ||||
| 		at mb_header.magic,    dd MB_HDR_MAGIC | ||||
| 		at mb_header.flags,    dd MB_HDR_FLAGS | ||||
| 		at mb_header.checksum, dd -(MB_HDR_MAGIC + MB_HDR_FLAGS) | ||||
| 
 | ||||
| 		; video mode info
 | ||||
| 		at mb_header.mode_type, dd 0 | ||||
| 		at mb_header.width,     dd 1024 | ||||
| 		at mb_header.height,    dd 768 | ||||
| 		at mb_header.depth,     dd 32 | ||||
| 	iend | ||||
| 
 | ||||
| section .bss | ||||
| align 16 | ||||
|  | @ -25,7 +31,8 @@ stack_top: | |||
| section .text | ||||
| 
 | ||||
| 	; Function: entry
 | ||||
| 	; 
 | ||||
| 	; setup cpu and paging before calling <kmain>
 | ||||
| 	;
 | ||||
| 	; in:
 | ||||
| 	;     EAX - Multiboot magic
 | ||||
| 	;     EBX - Multiboot structure
 | ||||
|  | @ -36,18 +43,17 @@ section .text | |||
| global entry | ||||
| entry: | ||||
| 	mov esp, stack_top | ||||
| 	cli | ||||
| 	cli ; disable interrupt
 | ||||
| 
 | ||||
| 	mov edi, eax | ||||
| 	mov esi, ebx | ||||
| 	mov edi, eax ; save multiboot magic in EDI
 | ||||
| 	mov esi, ebx ; save multiboot structure in ESI
 | ||||
| 
 | ||||
| 	;; initialize serial (mostly used for debug)
 | ||||
| 	extern serial_init | ||||
| 	call serial_init | ||||
| 
 | ||||
| 	;; eax <- magic
 | ||||
| 	;; ebx <- multiboot struct
 | ||||
| 	cmp edi, 0x2BADB002 | ||||
| 	;; make sure we use a multiboot compliant bootloader
 | ||||
| 	cmp edi, MB_MAGIC | ||||
| 	je .multiboot_valid | ||||
| 
 | ||||
| 	LOG err_invalid_boot_magic, edi | ||||
|  | @ -95,7 +101,7 @@ hang: | |||
| 	 | ||||
| section .rodata | ||||
| 
 | ||||
| msg_hello_world db "StupidOS v", STUPID_VERSION, " (built with ", NASM_VERSION, " on ", BUILD_DATE, ")", 0 | ||||
| msg_hello_world db "StupidOS v", STUPID_VERSION, " (built with ", __NASM_VER__, " on ",  __DATE__, " ", __TIME__, ")", 0 | ||||
| msg_boot_info db "Bootloader: %s", 0 | ||||
| msg_pmm_initialized db "PMM initialized", 0 | ||||
| err_invalid_boot_magic db "[ERROR] Invalid boot magic (got: %x, expected: 0x2BADB002)", 0 | ||||
|  |  | |||
							
								
								
									
										10
									
								
								kernel/i18n/i18n.inc
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								kernel/i18n/i18n.inc
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,10 @@ | |||
| struc lang_entry | ||||
| 	.code: resb 2 | ||||
| 	.data: resd 1 | ||||
| 	.next: resd 1 | ||||
| endstruc | ||||
| 
 | ||||
| struc msg_table | ||||
| 	.hello_world: resd 1 | ||||
| 	.cpu_exceptions: resd 32 | ||||
| endstruc | ||||
							
								
								
									
										102
									
								
								kernel/i18n/msg_en.s
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								kernel/i18n/msg_en.s
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,102 @@ | |||
| ; file: msg_en
 | ||||
| ; English strings
 | ||||
| 
 | ||||
| %include "i18n.inc" | ||||
| 
 | ||||
| .section rodata
 | ||||
| global lang_en | ||||
| lang_en: | ||||
| 	istruc lang_entry | ||||
| 		at lang_entry.code: db "en" | ||||
| 		at lang_entry.data: dd msg_en | ||||
| 		at lang_entry.next: dd 0 | ||||
| 	iend | ||||
| 
 | ||||
| msg_en: | ||||
| 	istruc msg_table | ||||
| 		at msg_table.hello_world: dd msg_hello_world | ||||
| 
 | ||||
| 		at msg_table.cpu_exceptions: | ||||
| 			dd msg_int_division_zero | ||||
| 			dd msg_int_debug | ||||
| 			dd msg_int_nmi | ||||
| 			dd msg_int_breakpoint | ||||
| 			dd msg_int_overflow | ||||
| 			dd msg_int_range_exceeded | ||||
| 			dd msg_int_invalid_opcode | ||||
| 			dd msg_int_device_not_available | ||||
| 			dd msg_int_double_fault | ||||
| 			dd msg_int_coproc_segment_overrun | ||||
| 			dd msg_int_invalid_tss | ||||
| 			dd msg_int_seg_not_present | ||||
| 			dd msg_int_stack_segfault | ||||
| 			dd msg_int_gpf | ||||
| 			dd msg_int_page_fault | ||||
| 			dd msg_int_reserved | ||||
| 			dd msg_int_fp_exception | ||||
| 			dd msg_int_align_check | ||||
| 			dd msg_int_machine_check | ||||
| 			dd msg_int_simd_exception | ||||
| 			dd msg_int_virt_exception | ||||
| 			dd msg_int_reserved | ||||
| 			dd msg_int_reserved | ||||
| 			dd msg_int_reserved | ||||
| 			dd msg_int_reserved | ||||
| 			dd msg_int_reserved | ||||
| 			dd msg_int_reserved | ||||
| 			dd msg_int_reserved | ||||
| 			dd msg_int_reserved | ||||
| 			dd msg_int_reserved | ||||
| 			dd msg_int_reserved | ||||
| 			dd msg_int_reserved | ||||
| 	iend | ||||
| 
 | ||||
| msg_hello_world: | ||||
| 	db "StupidOS v", STUPID_VERSION, " (built with ", NASM_VERSION, " on ", BUILD_DATE, ")", 0 | ||||
| msg_boot_info: | ||||
| 	db "Bootloader: %s", 0 | ||||
| msg_pmm_initialized: | ||||
| 	db "PMM initialized", 0 | ||||
| err_invalid_boot_magic: | ||||
| 	db "[ERROR] Invalid boot magic (got: %x, expected: 0x2BADB002)", 0 | ||||
| err_cannot_map_memory: | ||||
| 	db "[ERROR] Can't map memory", 0 | ||||
| warn_no_mmap: | ||||
| 	db "[WARN] mmap flag not set", 0 | ||||
| msg_mmap_entry: | ||||
| 	db "Memory Map Entry:", 0xA | ||||
| 	db 0x9, "Address: (hi): %x (lo): %x", 0xA | ||||
| 	db 0x9, "Length: (hi): %x (lo): %x", 0xA | ||||
| 	db 0x9, "Type: %x", 0 | ||||
| msg_mem_block: | ||||
| 	db "Free Memory:", 0xA | ||||
| 	db 0x9, "Address: %x", 0xA | ||||
| 	db 0x9, "Length: %x", 0 | ||||
| msg_max_mem: | ||||
| 	db "Max memory: %x", 0 | ||||
| msg_bitmap_stored_at: | ||||
| 	db "Bitmap stored at: %x", 0 | ||||
| 
 | ||||
| 
 | ||||
| msg_int_division_zero: db "Division by zero", 0x0 | ||||
| msg_int_debug: db "Debug", 0x0 | ||||
| msg_int_nmi: db "Non-maskable interrupt", 0x0 | ||||
| msg_int_breakpoint: db "Breakpoint", 0x0 | ||||
| msg_int_overflow: db "Overflow", 0x0 | ||||
| msg_int_range_exceeded: db "Bound range exceeded", 0x0 | ||||
| msg_int_invalid_opcode: db "Invalid Opcode", 0x0 | ||||
| msg_int_device_not_available: db "Device not available", 0x0 | ||||
| msg_int_double_fault: db "Double fault", 0x0 | ||||
| msg_int_coproc_segment_overrun: db "Coprocessor segment overrun", 0x0 | ||||
| msg_int_invalid_tss: db "Invalid TSS", 0x0 | ||||
| msg_int_seg_not_present: db "Segment not present", 0x0 | ||||
| msg_int_stack_segfault: db "Stack segment fault", 0x0 | ||||
| msg_int_gpf: db "General Protection Fault", 0x0 | ||||
| msg_int_page_fault: db "Page fault", 0x0 | ||||
| msg_int_reserved: db "Reserved", 0x0 | ||||
| msg_int_fp_exception: db "x87 Floating-Point Exception", 0x0 | ||||
| msg_int_align_check: db "Aligment check", 0x0 | ||||
| msg_int_machine_check: db "Machine check", 0x0 | ||||
| msg_int_simd_exception: db "SIMD Floating-Point exception", 0x0 | ||||
| msg_int_virt_exception: db "Virtualization exception", 0x0 | ||||
| msg_int_sec_exception: db "Security exception", 0x0 | ||||
							
								
								
									
										73
									
								
								kernel/isr.s
									
										
									
									
									
								
							
							
						
						
									
										73
									
								
								kernel/isr.s
									
										
									
									
									
								
							|  | @ -1,5 +1,6 @@ | |||
| [BITS 32] | ||||
| 
 | ||||
| %include "cpu.inc" | ||||
| %include "base.inc" | ||||
| 
 | ||||
| %macro ISR_NO_ERR 1 | ||||
|  | @ -8,7 +9,7 @@ isr%1: | |||
| 	xchg bx, bx | ||||
| 	push dword 0 | ||||
| 	push dword %1 | ||||
| 	jmp isr_handler | ||||
| 	jmp isr_common | ||||
| %endmacro | ||||
| 
 | ||||
| %macro ISR_ERR 1 | ||||
|  | @ -16,37 +17,8 @@ global isr%1 | |||
| isr%1: | ||||
| 	xchg bx, bx | ||||
| 	push dword %1 | ||||
| 	jmp isr_handler | ||||
| %endmacro | ||||
| 
 | ||||
| struc intframe | ||||
| 	;; registers
 | ||||
| 	.edi: resd 1 | ||||
| 	.esi: resd 1 | ||||
| 	.ebp: resd 1 | ||||
| 	.esp: resd 1 | ||||
| 	.ebx: resd 1 | ||||
| 	.edx: resd 1 | ||||
| 	.ecx: resd 1 | ||||
| 	.eax: resd 1 | ||||
| 
 | ||||
| 	;;
 | ||||
| 	.gs: resd 1 | ||||
| 	.fs: resd 1 | ||||
| 	.es: resd 1 | ||||
| 	.ds: resd 1 | ||||
| 	.intno: resd 1 | ||||
| 
 | ||||
| 	;; by x86 hardware
 | ||||
| 	.err: resd 1 | ||||
| 	.eip: resd 1 | ||||
| 	.cs:  resd 1 | ||||
| 	.eflags: resd 1 | ||||
| 
 | ||||
| 	;; crossring
 | ||||
| 	.useresp: resd 1 | ||||
| 	.ss: resd 1 | ||||
| endstruc	 | ||||
| 	jmp isr_common | ||||
| %endmacro	 | ||||
| 	 | ||||
| section .text | ||||
| 
 | ||||
|  | @ -89,8 +61,16 @@ panic: | |||
| 	;jmp panic
 | ||||
| 	ret | ||||
| 
 | ||||
| ;global isr_handler
 | ||||
| 
 | ||||
| isr_handler: | ||||
| 	push ebp | ||||
| 	mov ebp, esp | ||||
| 
 | ||||
| .end: | ||||
| 	leave | ||||
| 	ret | ||||
| 
 | ||||
| isr_common: | ||||
| 	push ds | ||||
| 	push es | ||||
| 	push fs | ||||
|  | @ -103,8 +83,8 @@ isr_handler: | |||
| 	mov fs, ax | ||||
| 	mov gs, ax | ||||
| 
 | ||||
| 	LOG msg_interrupt | ||||
| 
 | ||||
| 	;LOG msg_interrupt
 | ||||
| 	call isr_handler | ||||
| 	;extern pic_eoi
 | ||||
| 	;call pic_eoi
 | ||||
| 	 | ||||
|  | @ -119,6 +99,29 @@ isr_handler: | |||
| 
 | ||||
| section .rodata | ||||
| 
 | ||||
| msg_int_division_zero: db "Division by zero", 0x0 | ||||
| msg_int_debug: db "Debug", 0x0 | ||||
| msg_int_nmi: db "Non-maskable interrupt", 0x0 | ||||
| msg_int_breakpoint: db "Breakpoint", 0x0 | ||||
| msg_int_overflow: db "Overflow", 0x0 | ||||
| msg_int_range_exceeded: db "Bound range exceeded", 0x0 | ||||
| msg_int_invalid_opcode: db "Invalid Opcode", 0x0 | ||||
| msg_int_device_not_available: db "Device not available", 0x0 | ||||
| msg_int_double_fault: db "Double fault", 0x0 | ||||
| msg_int_coproc_segment_overrun: db "Coprocessor segment overrun", 0x0 | ||||
| msg_int_invalid_tss: db "Invalid TSS", 0x0 | ||||
| msg_int_seg_not_present: db "Segment not present", 0x0 | ||||
| msg_int_stack_segfault: db "Stack segment fault", 0x0 | ||||
| msg_int_gpf: db "General Protection Fault", 0x0 | ||||
| msg_int_page_fault: db "Page fault", 0x0 | ||||
| msg_int_reserved: db "Reserved", 0x0 | ||||
| msg_int_fp_exception: db "x87 Floating-Point Exception", 0x0 | ||||
| msg_int_align_check: db "Aligment check", 0x0 | ||||
| msg_int_machine_check: db "Machine check", 0x0 | ||||
| msg_int_simd_exception: db "SIMD Floating-Point exception", 0x0 | ||||
| msg_int_virt_exception: db "Virtualization exception", 0x0 | ||||
| msg_int_sec_exception: db "Security exception", 0x0 | ||||
| 
 | ||||
| msg_interrupt db "interrupt", 0xA | ||||
| 	db "edi: %x esi: %x ebp: %x esp: %x", 0xA | ||||
| 	db "ebx: %x edx: %x ecx: %x eax: %x", 0xA | ||||
|  |  | |||
|  | @ -1,2 +1,12 @@ | |||
| ; File: kernel.s
 | ||||
| 
 | ||||
| [BITS 32] | ||||
| 
 | ||||
| ; Function: kmain
 | ||||
| .global kmain
 | ||||
| kmain: | ||||
| 	push ebp | ||||
| 	mov ebp, esp | ||||
| 
 | ||||
| 	leave | ||||
| 	ret | ||||
|  |  | |||
|  | @ -1,9 +1,54 @@ | |||
| ; file: multiboot.inc | ||||
| ; File: multiboot.inc | ||||
| 
 | ||||
| ; Define: MB_HDR_MAGIC | ||||
| ; Multiboot Header Magic | ||||
| MB_HDR_MAGIC equ 0x1BADB002 | ||||
| 
 | ||||
| ; Define: MB_MAGIC | ||||
| ; Multiboot Magic passed by the bootloader. | ||||
| MB_MAGIC equ 0x2BADB002 | ||||
| 
 | ||||
| ; Structure: mb_header | ||||
| ; | ||||
| ; .magic       - todo | ||||
| ; .flags       - See <flags> | ||||
| ; .checksum    - todo | ||||
| ; .aout_kludge - todo | ||||
| ; .mode_type   - todo | ||||
| ; .width       - todo | ||||
| ; .height      - todo | ||||
| ; .depth       - todo | ||||
| struc mb_header | ||||
| 	.magic: resd 1 | ||||
| 	.flags: resd 1 | ||||
| 	.checksum: resd 1 | ||||
| 	.aout_kludge: resd 5 | ||||
| 	.mode_type: resd 1 | ||||
| 	.width: resd 1 | ||||
| 	.height: resd 1 | ||||
| 	.depth: resd 1 | ||||
| endstruc | ||||
| 
 | ||||
| ; Defines: flags | ||||
| ; | ||||
| ; MB_HDR_ALIGN   - todo | ||||
| ; MB_HDR_MEMINFO - <mb_info.mem_lower> | ||||
| ; MB_HDR_VIDEO   - todo | ||||
| MB_HDR_ALIGN equ 1 << 0 | ||||
| MB_HDR_MEMINFO equ 1 << 1 | ||||
| MB_HDR_VIDEO equ 1 << 2 | ||||
| 
 | ||||
| ; Structure: mb_info | ||||
| ;  | ||||
| ; Fields: | ||||
| ; .flags       - See <flags> | ||||
| ; .mem_lower   - todo | ||||
| ; .mem_upper   - todo | ||||
| ; .boot_device - todo | ||||
| ;    . | ||||
| struc mb_info | ||||
| 
 | ||||
| 	; Field: flags | ||||
| 	;; flags | ||||
| 	.flags: resd 1 | ||||
| 
 | ||||
| 	;; flags[0] is set | ||||
|  | @ -25,7 +70,7 @@ struc mb_info | |||
| 
 | ||||
| 	;; flags[6] is set | ||||
| 	.mmap_length: resd 1 | ||||
| 	; Field: mmap_addr | ||||
| 	; <mb_info.mmap_length> | ||||
| 	; see <mb_mmap> | ||||
| 	.mmap_addr: resd 1 | ||||
| 
 | ||||
|  | @ -59,6 +104,13 @@ struc mb_info | |||
| 	.framebuffer_misc: resw 3 | ||||
| endstruc | ||||
| 
 | ||||
| ; Defines: flags | ||||
| ;  | ||||
| ; MB_INFO_MEM     - todo | ||||
| ; MB_INFO_BOOTDEV - todo  | ||||
| MB_INFO_MEM equ 1 << 0 | ||||
| MB_INFO_BOOTDEV equ 1 << 1 | ||||
| 
 | ||||
| ; Structure: mb_mmap | ||||
| struc mb_mmap | ||||
| 	.size: resd 1 | ||||
|  | @ -67,6 +119,13 @@ struc mb_mmap | |||
| 	.type: resd 1 | ||||
| endstruc | ||||
| 
 | ||||
| ; Defines: types | ||||
| ; | ||||
| ; MB_MEMORY_AVAILABLE - 1 | ||||
| ; MB_MEMORY_RESERVED  - 2 | ||||
| ; MB_MEMORY_ACPI      - 3 | ||||
| ; MB_MEMORY_NVS       - 4 | ||||
| ; MB_MEMORY_BADRAM    - 5 | ||||
| %define MB_MEMORY_AVAILABLE 1 | ||||
| %define MB_MEMORY_RESERVED 2 | ||||
| %define MB_MEMORY_ACPI 3 | ||||
|  |  | |||
|  | @ -1,3 +1,4 @@ | |||
| ; File: pmm.s
 | ||||
| [BITS 32] | ||||
| 	;; XXX: align address to page
 | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										3
									
								
								lib/Makefile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								lib/Makefile
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,3 @@ | |||
| SUBDIR = base crypto | ||||
| 
 | ||||
| include $(TOPDIR)/share/mk/stupid.subdir.mk | ||||
|  | @ -9,6 +9,7 @@ extern log_impl | |||
| ; LOG msg_boot_info, eax | ||||
| ; (end) | ||||
| %macro LOG 1-* | ||||
| %ifdef DEBUG | ||||
| %rep %0 | ||||
| %rotate -1 | ||||
| 	push %1 | ||||
|  | @ -21,4 +22,5 @@ extern log_impl | |||
| %rep %0 | ||||
| 	add esp, 4 | ||||
| %endrep | ||||
| %endif | ||||
| %endmacro | ||||
|  |  | |||
							
								
								
									
										4
									
								
								lib/base/Makefile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								lib/base/Makefile
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,4 @@ | |||
| LIB = base | ||||
| SRCS = log.s | ||||
| 
 | ||||
| include $(TOPDIR)/share/mk/stupid.lib.mk | ||||
|  | @ -1,2 +0,0 @@ | |||
| LIBS		+= base | ||||
| base_SRCS	= log.s | ||||
							
								
								
									
										24
									
								
								lib/build.mk
									
										
									
									
									
								
							
							
						
						
									
										24
									
								
								lib/build.mk
									
										
									
									
									
								
							|  | @ -1,24 +0,0 @@ | |||
| LIBS_BIN	= | ||||
| 
 | ||||
| define LIBS_TEMPLATE | ||||
| 
 | ||||
| $(1)_BIN = lib$(1).a | ||||
| 
 | ||||
| $(1)_OBJS = $$(addprefix lib/$(1)/, $$($(1)_SRCS:.s=.o)) | ||||
| 
 | ||||
| $$($(1)_BIN): $$($(1)_OBJS) | ||||
| 	ar rcs $$@ $$^ | ||||
| 
 | ||||
| GARBADGE	+= $$($(1)_OBJS) $$($(1)_BIN) | ||||
| LIBS_BIN	+= $$($(1)_BIN) | ||||
| 
 | ||||
| endef | ||||
| 
 | ||||
| LIBS	= | ||||
| 
 | ||||
| include lib/*/build.mk | ||||
| 
 | ||||
| $(foreach lib, $(LIBS), $(eval $(call LIBS_TEMPLATE,$(lib)))) | ||||
| 
 | ||||
| lib/%.o: lib/%.s | ||||
| 	$(AS) -felf $(ASFLAGS) -o $@ $< | ||||
							
								
								
									
										4
									
								
								lib/crypto/Makefile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								lib/crypto/Makefile
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,4 @@ | |||
| LIB		= crypto | ||||
| SRCS	= hash/sha256.s | ||||
| 
 | ||||
| include $(TOPDIR)/share/mk/stupid.lib.mk | ||||
							
								
								
									
										5
									
								
								lib/pls/std/error.pls
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								lib/pls/std/error.pls
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,5 @@ | |||
| CLASS Error; | ||||
| 
 | ||||
| MESSAGE  | ||||
| 
 | ||||
| END; | ||||
							
								
								
									
										3
									
								
								lib/pls/std/io/file.pls
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								lib/pls/std/io/file.pls
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,3 @@ | |||
| CLASS File; | ||||
| 
 | ||||
| END; | ||||
							
								
								
									
										5
									
								
								share/mk/stupid.clean.mk
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								share/mk/stupid.clean.mk
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,5 @@ | |||
| # File: stupid.clean.mk
 | ||||
| #
 | ||||
| 
 | ||||
| clean: | ||||
| 	$(RM) $(CLEANFILES) | ||||
							
								
								
									
										38
									
								
								share/mk/stupid.kernel.mk
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								share/mk/stupid.kernel.mk
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,38 @@ | |||
| # File: stupid.kernel.mk
 | ||||
| # 
 | ||||
| include $(TOPDIR)/share/mk/stupid.own.mk | ||||
| 
 | ||||
| ifdef KERNEL | ||||
| 
 | ||||
| ASFLAGS	+= -D__KERNEL__ -I$(TOPDIR)/kernel | ||||
| 
 | ||||
| OBJS = $(addsuffix .o, $(basename $(SRCS))) | ||||
| OBJS-dbg  = $(addsuffix .dbg.o, $(basename $(SRCS))) | ||||
| 
 | ||||
| CLEANFILES	+= $(KERNEL) $(KERNEL)-dbg $(OBJS) $(OBJS-dbg) | ||||
| 
 | ||||
| $(KERNEL): $(OBJS) | ||||
| 	$(LD) -T $(TOPDIR)/kernel/linker.ld -nostdlib -o $@ $^ | ||||
| 
 | ||||
| $(KERNEL)-dbg: $(OBJS-dbg) | ||||
| 	$(LD) -T $(TOPDIR)/kernel/linker.ld -nostdlib -o $@ $^ | ||||
| 
 | ||||
| %.o: %.s | ||||
| 	$(AS) $(ASFLAGS) -o $@ $< | ||||
| 
 | ||||
| %.dbg.o: %.s | ||||
| 	$(AS) $(ASFLAGS) $(ASDBGFLAGS) -o $@ $< | ||||
| 
 | ||||
| lib/%.o: ../lib/base/%.s | ||||
| 	@$(MKCWD) | ||||
| 	$(AS) $(ASFLAGS) -o $@ $< | ||||
| 
 | ||||
| lib/%.dbg.o: ../lib/base/%.s | ||||
| 	@$(MKCWD) | ||||
| 	$(AS) $(ASFLAGS) $(ASDBGFLAGS) -o $@ $< | ||||
| 
 | ||||
| all: $(KERNEL) $(KERNEL)-dbg | ||||
| 
 | ||||
| endif | ||||
| 
 | ||||
| include $(TOPDIR)/share/mk/stupid.clean.mk | ||||
							
								
								
									
										33
									
								
								share/mk/stupid.lib.mk
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								share/mk/stupid.lib.mk
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,33 @@ | |||
| # File: stupid.lib.mk
 | ||||
| # Support for building libraries
 | ||||
| 
 | ||||
| include $(TOPDIR)/share/mk/stupid.own.mk | ||||
| 
 | ||||
| ifdef LIB | ||||
| 
 | ||||
| CLEANFILES += lib$(LIB).a | ||||
| 
 | ||||
| ifdef SRCS | ||||
| 
 | ||||
| OBJS	+= $(addsuffix .o, $(basename $(SRCS))) | ||||
| 
 | ||||
| CLEANFILES	+= $(OBJS) | ||||
| 
 | ||||
| lib$(LIB).a: $(OBJS) | ||||
| 	$(AR) rcs $@ $^ | ||||
| 
 | ||||
| else | ||||
| 
 | ||||
| CLEANFILES += $(LIB).o | ||||
| 
 | ||||
| lib$(LIB).a: $(LIB).o | ||||
| 	$(AR) rcs $@ $^ | ||||
| 
 | ||||
| endif | ||||
| 
 | ||||
| all: lib$(LIB).a | ||||
| 
 | ||||
| endif | ||||
| 
 | ||||
| include $(TOPDIR)/share/mk/stupid.clean.mk | ||||
| include $(TOPDIR)/share/mk/stupid.sys.mk | ||||
							
								
								
									
										32
									
								
								share/mk/stupid.own.mk
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								share/mk/stupid.own.mk
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,32 @@ | |||
| # File: stupid.own.mk
 | ||||
| # Define common variables
 | ||||
| ifndef _STUPID_OWN_MK_ | ||||
| _STUPID_OWN_MK_=1 | ||||
| 
 | ||||
| .DEFAULT_GOAL := all | ||||
| 
 | ||||
| BINDIR	= /bin | ||||
| LIBDIR	= /lib | ||||
| 
 | ||||
| CC		= clang -target i386-none-elf | ||||
| CXX		= clang++ -target i386-none-elf | ||||
| 
 | ||||
| AS		= nasm | ||||
| LD		= ld.lld | ||||
| PLSCC	= plsc | ||||
| OBJCOPY	= llvm-objcopy | ||||
| OBJDUMP = llvm-objdump | ||||
| 
 | ||||
| MKCWD	= mkdir -p $(@D) | ||||
| 
 | ||||
| TARGETS	= all clean install | ||||
| .PHONY: $(TARGETS) | ||||
| 
 | ||||
| EXTRAFLAGS	= -DSTUPID_VERSION="0.0" -D__STUPID__ | ||||
| 
 | ||||
| CFLAGS		+= -Wall -Werror -Wextra $(EXTRAFLAGS) | ||||
| CXXFLAGS	+= -Wall -Werror -Wextra $(EXTRAFLAGS) | ||||
| ASFLAGS		+= -felf -I$(TOPDIR)/lib $(EXTRAFLAGS) | ||||
| ASDBGFLAGS	+=  -F dwarf -g -DDEBUG | ||||
| 
 | ||||
| endif | ||||
							
								
								
									
										41
									
								
								share/mk/stupid.prog.mk
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								share/mk/stupid.prog.mk
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,41 @@ | |||
| # File: stupid.prog.mk
 | ||||
| # Building programs from source files
 | ||||
| #
 | ||||
| # targets:
 | ||||
| # - all:
 | ||||
| #   	build the program and its manual page.
 | ||||
| # - clean:
 | ||||
| #   	remove the program and any object files.
 | ||||
| # - install:
 | ||||
| #		install the program and its manual page.
 | ||||
| 
 | ||||
| include $(TOPDIR)/share/mk/stupid.own.mk | ||||
| 
 | ||||
| ifdef PROG | ||||
| 
 | ||||
| CLEANFILES += $(PROG) | ||||
| 
 | ||||
| ifdef SRCS | ||||
| 
 | ||||
| OBJS	+= $(addsuffix .o, $(basename $(SRCS))) | ||||
| 
 | ||||
| CLEANFILES += $(OBJS) | ||||
| 
 | ||||
| $(PROG): $(OBJS) | ||||
| 	$(CC) $(CFLAGS) -o $@ $^ $(LDADD) | ||||
| 
 | ||||
| else | ||||
| 
 | ||||
| CLEANFILES += $(PROG).o | ||||
| 
 | ||||
| $(PROG): $(PROG).o | ||||
| 	$(CC) $(CFLAGS) -o $@ $< $(LDADD) | ||||
| 
 | ||||
| endif | ||||
| 
 | ||||
| all: $(PROG) | ||||
| 
 | ||||
| endif | ||||
| 
 | ||||
| include $(TOPDIR)/share/mk/stupid.clean.mk | ||||
| include $(TOPDIR)/share/mk/stupid.sys.mk | ||||
							
								
								
									
										20
									
								
								share/mk/stupid.subdir.mk
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								share/mk/stupid.subdir.mk
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,20 @@ | |||
| # File: stupid.subdir.mk
 | ||||
| # Targets for building subdirectories
 | ||||
| 
 | ||||
| .DEFAULT_GOAL := all | ||||
| TOPGOALS = all clean install | ||||
| 
 | ||||
| ifndef NOSUBDIR | ||||
| 
 | ||||
| .PHONY: $(SUBDIR) | ||||
| $(SUBDIR): | ||||
| 	$(MAKE) -C $@ $(MAKECMDGOALS) | ||||
| 
 | ||||
| $(TOPGOALS): $(SUBDIR) | ||||
| 
 | ||||
| else | ||||
| 
 | ||||
| # ensure target exist
 | ||||
| $(TOPGOALS): | ||||
| 
 | ||||
| endif | ||||
							
								
								
									
										19
									
								
								share/mk/stupid.sys.mk
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								share/mk/stupid.sys.mk
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,19 @@ | |||
| # File: stupid.sys.mk
 | ||||
| 
 | ||||
| %.o: %.c | ||||
| 	$(CC) -c -o $@ $< $(CFLAGS) | ||||
| 
 | ||||
| %.o: %.cc | ||||
| 	$(CXX) -c -o $@ $< $(CXXFLAGS) | ||||
| 
 | ||||
| %.o: %.cpp | ||||
| 	$(CXX) -c -o $@ $< $(CXXFLAGS) | ||||
| 
 | ||||
| %.o: %.cxx | ||||
| 	$(CXX) -c -o $@ $< $(CXXFLAGS) | ||||
| 
 | ||||
| %.o: %.C | ||||
| 	$(CXX) -c -o $@ $< $(CXXFLAGS) | ||||
| 
 | ||||
| %.o: %.s | ||||
| 	$(AS) $(ASFLAGS) -o $@ $< | ||||
							
								
								
									
										3
									
								
								thirdparty/Makefile
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								thirdparty/Makefile
									
										
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,3 @@ | |||
| NOSUBDIR := 1 | ||||
| 
 | ||||
| include $(TOPDIR)/share/mk/stupid.subdir.mk | ||||
|  | @ -1,9 +0,0 @@ | |||
| define TOOLS_TEMPLATE | ||||
| 
 | ||||
| $(1) = $$(addprefix $$(TOOLS_DIR)/, $$(shell echo -n $(1) | tr A-Z a-z)) | ||||
| 
 | ||||
| endef | ||||
| 
 | ||||
| TOOLS = GIT-VERSION CREATE-ISO | ||||
| 
 | ||||
| $(foreach tool, $(TOOLS), $(eval $(call TOOLS_TEMPLATE,$(tool)))) | ||||
|  | @ -12,6 +12,12 @@ menuentry "StupidOS" { | |||
|    boot | ||||
| } | ||||
| 
 | ||||
| menuentry "StupidOS (debug)" { | ||||
| 	hashsum --hash sha256 --check /boot/hashfile --prefix / | ||||
| 	multiboot /vmstupid-dbg "lang=en" | ||||
| 	boot | ||||
| } | ||||
| 
 | ||||
| EOF | ||||
| ) | ||||
| 
 | ||||
|  | @ -19,6 +25,7 @@ gen_iso_file() { | |||
| 	mkdir -p "$2/boot/grub" | ||||
| 	echo "$grub_config" > "$2/boot/grub/grub.cfg" | ||||
| 	sha256sum vmstupid > "$2/boot/hashfile" | ||||
| 	sha256sum vmstupid-dbg >> "$2/boot/hashfile" | ||||
| 
 | ||||
| 	grub-mkrescue -o $1 $2 | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue