git://scm.lunaixsky.com
/
lunaix-os.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
6aa5c70
)
fix gcc warnings & improved makefile echos
author
Minep
<zelong56@gmail.com>
Sat, 26 Feb 2022 18:06:55 +0000
(18:06 +0000)
committer
Minep
<zelong56@gmail.com>
Sat, 26 Feb 2022 18:06:55 +0000
(18:06 +0000)
lunaix-os/config/make-cc
patch
|
blob
|
history
lunaix-os/hal/cpu.c
patch
|
blob
|
history
lunaix-os/includes/hal/cpu.h
patch
|
blob
|
history
lunaix-os/includes/lunaix/mm/page.h
patch
|
blob
|
history
lunaix-os/kernel/asm/x86/interrupts.c
patch
|
blob
|
history
lunaix-os/kernel/k_main.c
patch
|
blob
|
history
lunaix-os/kernel/mm/pmm.c
patch
|
blob
|
history
lunaix-os/kernel/mm/vmm.c
patch
|
blob
|
history
lunaix-os/libs/libc/stdlib/itoa.c
patch
|
blob
|
history
lunaix-os/makefile
patch
|
blob
|
history
diff --git
a/lunaix-os/config/make-cc
b/lunaix-os/config/make-cc
index f3ce340ae14c890a64eba149cdacbe270965f6fe..643b4eee1dbefc44c9c9e0f86d9f0c4534b62f8a 100644
(file)
--- a/
lunaix-os/config/make-cc
+++ b/
lunaix-os/config/make-cc
@@
-4,6
+4,6
@@
AS := i686-elf-as
ARCH_OPT := -D__ARCH_IA32
O := -O2
ARCH_OPT := -D__ARCH_IA32
O := -O2
-W := -Wall -Wextra
+W := -Wall -Wextra
-Wno-unknown-pragmas
CFLAGS := -std=gnu99 -ffreestanding $(O) $(W) $(ARCH_OPT)
LDFLAGS := -ffreestanding $(O) -nostdlib -lgcc
\ No newline at end of file
CFLAGS := -std=gnu99 -ffreestanding $(O) $(W) $(ARCH_OPT)
LDFLAGS := -ffreestanding $(O) -nostdlib -lgcc
\ No newline at end of file
diff --git
a/lunaix-os/hal/cpu.c
b/lunaix-os/hal/cpu.c
index b2ef65704e00512b7a31652f3130fc0e78e3ffe6..d57ae26d4a07447957ad2da56a3adc801afd771c 100644
(file)
--- a/
lunaix-os/hal/cpu.c
+++ b/
lunaix-os/hal/cpu.c
@@
-4,7
+4,7
@@
void cpu_get_model(char* model_out) {
uint32_t* out = (uint32_t*)model_out;
void cpu_get_model(char* model_out) {
uint32_t* out = (uint32_t*)model_out;
- reg32 eax
, ebx, edx, ecx
;
+ reg32 eax
= 0, ebx = 0, edx = 0, ecx = 0
;
__get_cpuid(0, &eax, &ebx, &ecx, &edx);
__get_cpuid(0, &eax, &ebx, &ecx, &edx);
@@
-27,7
+27,7
@@
void cpu_get_brand(char* brand_out) {
brand_out[1] = '\0';
}
uint32_t* out = (uint32_t*) brand_out;
brand_out[1] = '\0';
}
uint32_t* out = (uint32_t*) brand_out;
- reg32 eax
, ebx, edx, ecx
;
+ reg32 eax
= 0, ebx = 0, edx = 0, ecx = 0
;
for (uint32_t i = 2, j = 0; i < 5; i++)
{
__get_cpuid(BRAND_LEAF + i, &eax, &ebx, &ecx, &edx);
for (uint32_t i = 2, j = 0; i < 5; i++)
{
__get_cpuid(BRAND_LEAF + i, &eax, &ebx, &ecx, &edx);
@@
-40,6
+40,8
@@
void cpu_get_brand(char* brand_out) {
brand_out[48] = '\0';
}
brand_out[48] = '\0';
}
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wreturn-type"
reg32 cpu_r_cr0() {
asm volatile ("mov %cr0, %eax");
}
reg32 cpu_r_cr0() {
asm volatile ("mov %cr0, %eax");
}
@@
-51,6
+53,7
@@
reg32 cpu_r_cr2() {
reg32 cpu_r_cr3() {
asm volatile ("mov %cr3, %eax");
}
reg32 cpu_r_cr3() {
asm volatile ("mov %cr3, %eax");
}
+#pragma GCC diagnostic push
void cpu_w_cr0(reg32 v) {
asm volatile (
void cpu_w_cr0(reg32 v) {
asm volatile (
diff --git
a/lunaix-os/includes/hal/cpu.h
b/lunaix-os/includes/hal/cpu.h
index 2a06f298e2b0e55c277c09b72e4726c3d3668d42..af8863e0b1194d2524cb8e7b707f807d3542310e 100644
(file)
--- a/
lunaix-os/includes/hal/cpu.h
+++ b/
lunaix-os/includes/hal/cpu.h
@@
-1,7
+1,7
@@
#ifndef __LUNAIX_CPU_H
#define __LUNAIX_CPU_H
#ifndef __LUNAIX_CPU_H
#define __LUNAIX_CPU_H
-typedef unsigned
long
reg32;
+typedef unsigned
int
reg32;
typedef unsigned short reg16;
typedef struct {
typedef unsigned short reg16;
typedef struct {
diff --git
a/lunaix-os/includes/lunaix/mm/page.h
b/lunaix-os/includes/lunaix/mm/page.h
index c9818396870b7d3e3c9337b4f3a6def5409f73df..29232580b6afeca0fb4e8a45da68f1bc1ace96cc 100644
(file)
--- a/
lunaix-os/includes/lunaix/mm/page.h
+++ b/
lunaix-os/includes/lunaix/mm/page.h
@@
-54,8
+54,8
@@
// 用来获取特定的页表的虚拟地址
#define PT_VADDR(pd_offset) (PT_BASE_VADDR | (pd_offset << 12))
// 用来获取特定的页表的虚拟地址
#define PT_VADDR(pd_offset) (PT_BASE_VADDR | (pd_offset << 12))
-typedef unsigned
int
ptd_t;
-typedef unsigned
int
pt_t;
+typedef unsigned
long
ptd_t;
+typedef unsigned
long
pt_t;
typedef unsigned int pt_attr;
typedef unsigned int pt_attr;
diff --git
a/lunaix-os/kernel/asm/x86/interrupts.c
b/lunaix-os/kernel/asm/x86/interrupts.c
index 39682a38a2c850e8df3b1e4a7dee6da55eec347c..686c43de3ec6771cf4cda3a0780d63743ce19772 100644
(file)
--- a/
lunaix-os/kernel/asm/x86/interrupts.c
+++ b/
lunaix-os/kernel/asm/x86/interrupts.c
@@
-2,7
+2,6
@@
#include <libc/stdio.h>
void isr0 (isr_param* param) {
#include <libc/stdio.h>
void isr0 (isr_param* param) {
- tty_clear();
printf("[PANIC] Exception (%d) CS=0x%X, EIP=0x%X", param->vector, param->cs, param->eip);
}
printf("[PANIC] Exception (%d) CS=0x%X, EIP=0x%X", param->vector, param->cs, param->eip);
}
diff --git
a/lunaix-os/kernel/k_main.c
b/lunaix-os/kernel/k_main.c
index 3a7e200f562e1d8ed15e9705c01e7c42dcb82f59..731ba9b14e8266b2b5132b077638e739b70289a3 100644
(file)
--- a/
lunaix-os/kernel/k_main.c
+++ b/
lunaix-os/kernel/k_main.c
@@
-15,9
+15,9
@@
#include <libc/stdio.h>
#include <libc/stdio.h>
-extern
void
__kernel_start;
-extern
void
__kernel_end;
-extern
void
__init_hhk_end;
+extern
uint8_t
__kernel_start;
+extern
uint8_t
__kernel_end;
+extern
uint8_t
__init_hhk_end;
void
_kernel_init(multiboot_info_t* mb_info)
void
_kernel_init(multiboot_info_t* mb_info)
@@
-35,12
+35,12
@@
_kernel_init(multiboot_info_t* mb_info)
#pragma region INIT_MM
// 初始化物理内存管理器
#pragma region INIT_MM
// 初始化物理内存管理器
- pmm_init(MEM_1MB +
mb_info->mem_upper << 10
);
+ pmm_init(MEM_1MB +
(mb_info->mem_upper << 10)
);
vmm_init();
#pragma endregion
// 初始化VGA
vmm_init();
#pragma endregion
// 初始化VGA
- tty_init(VGA_BUFFER_PADDR);
+ tty_init(
(void*)
VGA_BUFFER_PADDR);
tty_set_theme(VGA_COLOR_GREEN, VGA_COLOR_BLACK);
printf("[KERNEL] === Initialization === \n");
tty_set_theme(VGA_COLOR_GREEN, VGA_COLOR_BLACK);
printf("[KERNEL] === Initialization === \n");
@@
-82,17
+82,21
@@
_kernel_init(multiboot_info_t* mb_info)
// 重映射VGA文本缓冲区(以后会变成显存,i.e., framebuffer)
for (size_t i = 0; i < vga_buf_pgs; i++)
{
// 重映射VGA文本缓冲区(以后会变成显存,i.e., framebuffer)
for (size_t i = 0; i < vga_buf_pgs; i++)
{
- vmm_map_page(VGA_BUFFER_VADDR + (i << 12), VGA_BUFFER_PADDR + (i << 12), PG_PREM_RW, PG_PREM_RW);
+ vmm_map_page(
+ (void*)(VGA_BUFFER_VADDR + (i << 12)),
+ (void*)(VGA_BUFFER_PADDR + (i << 12)),
+ PG_PREM_RW, PG_PREM_RW
+ );
}
// 更新VGA缓冲区位置至虚拟地址
}
// 更新VGA缓冲区位置至虚拟地址
- tty_set_buffer(VGA_BUFFER_VADDR);
+ tty_set_buffer(
(void*)
VGA_BUFFER_VADDR);
printf("[MM] Mapped VGA to %p.\n", VGA_BUFFER_VADDR);
// 为内核创建一个专属栈空间。
for (size_t i = 0; i < (K_STACK_SIZE >> 12); i++) {
printf("[MM] Mapped VGA to %p.\n", VGA_BUFFER_VADDR);
// 为内核创建一个专属栈空间。
for (size_t i = 0; i < (K_STACK_SIZE >> 12); i++) {
- vmm_alloc_page(
K_STACK_START + (i << 12
), PG_PREM_RW, PG_PREM_RW);
+ vmm_alloc_page(
(void*)(K_STACK_START + (i << 12)
), PG_PREM_RW, PG_PREM_RW);
}
printf("[MM] Allocated %d pages for stack start at %p\n", K_STACK_SIZE>>12, K_STACK_START);
}
printf("[MM] Allocated %d pages for stack start at %p\n", K_STACK_SIZE>>12, K_STACK_START);
@@
-107,7
+111,7
@@
_kernel_post_init() {
// 清除 hhk_init 与前1MiB的映射
for (size_t i = 0; i < hhk_init_pg_count; i++) {
// 清除 hhk_init 与前1MiB的映射
for (size_t i = 0; i < hhk_init_pg_count; i++) {
- vmm_unmap_page((i << 12));
+ vmm_unmap_page((
void*)(
i << 12));
}
printf("[KERNEL] === Post Initialization Done === \n\n");
}
}
printf("[KERNEL] === Post Initialization Done === \n\n");
}
@@
-115,7
+119,7
@@
_kernel_post_init() {
void
_kernel_main()
{
void
_kernel_main()
{
- char
*
buf[64];
+ char buf[64];
printf("Hello higher half kernel world!\nWe are now running in virtual "
"address space!\n\n");
printf("Hello higher half kernel world!\nWe are now running in virtual "
"address space!\n\n");
@@
-123,7
+127,7
@@
_kernel_main()
cpu_get_brand(buf);
printf("CPU: %s\n\n", buf);
cpu_get_brand(buf);
printf("CPU: %s\n\n", buf);
-
uintptr_t
k_start = vmm_v2p(&__kernel_start);
+
void*
k_start = vmm_v2p(&__kernel_start);
printf("The kernel's base address mapping: %p->%p\n", &__kernel_start, k_start);
// __asm__("int $0\n");
}
\ No newline at end of file
printf("The kernel's base address mapping: %p->%p\n", &__kernel_start, k_start);
// __asm__("int $0\n");
}
\ No newline at end of file
diff --git
a/lunaix-os/kernel/mm/pmm.c
b/lunaix-os/kernel/mm/pmm.c
index 47087fdd3dad383b518d547137e9a1a68162f67e..304d19dc47192f49606d546a777916bf90207034 100644
(file)
--- a/
lunaix-os/kernel/mm/pmm.c
+++ b/
lunaix-os/kernel/mm/pmm.c
@@
-93,7
+93,7
@@
void*
pmm_alloc_page()
{
// Next fit approach. Maximize the throughput!
pmm_alloc_page()
{
// Next fit approach. Maximize the throughput!
- uintptr_t good_page_found = NULL;
+ uintptr_t good_page_found =
(uintptr_t)
NULL;
size_t old_pg_ptr = pg_lookup_ptr;
size_t upper_lim = max_pg;
uint8_t chunk = 0;
size_t old_pg_ptr = pg_lookup_ptr;
size_t upper_lim = max_pg;
uint8_t chunk = 0;
diff --git
a/lunaix-os/kernel/mm/vmm.c
b/lunaix-os/kernel/mm/vmm.c
index 364332e186ee7621ecea955a90f64030c21c5dbc..a076a976cbbe2fa9f495bc9cafcc6af932f7b328 100644
(file)
--- a/
lunaix-os/kernel/mm/vmm.c
+++ b/
lunaix-os/kernel/mm/vmm.c
@@
-1,52
+1,57
@@
+#include <libc/string.h>
#include <lunaix/mm/page.h>
#include <lunaix/mm/page.h>
-#include <lunaix/mm/vmm.h>
#include <lunaix/mm/pmm.h>
#include <lunaix/mm/pmm.h>
-#include <l
ibc/string
.h>
+#include <l
unaix/mm/vmm
.h>
// TODO: Move these nasty inline asm stuff into hal
// These should be arch dependent
// TODO: Move these nasty inline asm stuff into hal
// These should be arch dependent
-ptd_t* get_pd() {
+ptd_t*
+get_pd()
+{
ptd_t* pd;
ptd_t* pd;
- #ifdef __ARCH_IA32
- __asm__(
- "movl %%cr3, %0\n"
- "andl $0xfffff000, %0"
- : "=r"(pd)
- );
- #endif
- return P2V(pd);
+#ifdef __ARCH_IA32
+ __asm__("movl %%cr3, %0\n"
+ "andl $0xfffff000, %0"
+ : "=r"(pd));
+#endif
+ return (ptd_t*)P2V(pd);
}
}
-void
set_pd(ptd_t* pd) {
- #ifdef __ARCH_IA32
- __asm__(
- "movl %0, %%eax\n"
-
"andl $0xfffff00
0, %%eax\n"
-
"movl %%eax, %%cr3
\n"
- :
- : "r" (pd)
- );
-
#endif
+void
+set_pd(ptd_t* pd)
+{
+#ifdef __ARCH_IA32
+
__asm__("movl %
0, %%eax\n"
+
"andl $0xfffff000, %%eax
\n"
+ "movl %%eax, %%cr3\n"
+ :
+
: "r"(pd)
);
+#endif
}
}
-void vmm_init() {
+void
+vmm_init()
+{
// TODO: something here?
}
// TODO: something here?
}
-ptd_t* vmm_init_pd() {
+ptd_t*
+vmm_init_pd()
+{
ptd_t* dir = pmm_alloc_page();
ptd_t* dir = pmm_alloc_page();
- for (size_t i = 0; i < 1024; i++)
- {
+ for (size_t i = 0; i < 1024; i++) {
dir[i] = 0;
}
dir[i] = 0;
}
-
+
// 自己映射自己,方便我们在软件层面进行查表地址转换
dir[1023] = PDE(T_SELF_REF_PERM, dir);
return dir;
}
// 自己映射自己,方便我们在软件层面进行查表地址转换
dir[1023] = PDE(T_SELF_REF_PERM, dir);
return dir;
}
-void* vmm_map_page(void* va, void* pa, pt_attr dattr, pt_attr tattr) {
+void*
+vmm_map_page(void* va, void* pa, pt_attr dattr, pt_attr tattr)
+{
// 显然,对空指针进行映射没有意义。
if (!pa || !va) {
return NULL;
// 显然,对空指针进行映射没有意义。
if (!pa || !va) {
return NULL;
@@
-57,8
+62,8
@@
void* vmm_map_page(void* va, void* pa, pt_attr dattr, pt_attr tattr) {
ptd_t* ptd = (ptd_t*)PTD_BASE_VADDR;
// 在页表与页目录中找到一个可用的空位进行映射(位于va或其附近)
ptd_t* ptd = (ptd_t*)PTD_BASE_VADDR;
// 在页表与页目录中找到一个可用的空位进行映射(位于va或其附近)
- ptd_t
*
pde = ptd[pd_offset];
- pt_t* pt = (
uintptr_t
)PT_VADDR(pd_offset);
+ ptd_t pde = ptd[pd_offset];
+ pt_t* pt = (
pt_t*
)PT_VADDR(pd_offset);
while (pde && pd_offset < 1024) {
if (pt_offset == 1024) {
pd_offset++;
while (pde && pd_offset < 1024) {
if (pt_offset == 1024) {
pd_offset++;
@@
-69,11
+74,11
@@
void* vmm_map_page(void* va, void* pa, pt_attr dattr, pt_attr tattr) {
// 页表有空位,只需要开辟一个新的 PTE
if (pt && !pt[pt_offset]) {
pt[pt_offset] = PTE(tattr, pa);
// 页表有空位,只需要开辟一个新的 PTE
if (pt && !pt[pt_offset]) {
pt[pt_offset] = PTE(tattr, pa);
- return V_ADDR(pd_offset, pt_offset, PG_OFFSET(va));
+ return
(void*)
V_ADDR(pd_offset, pt_offset, PG_OFFSET(va));
}
pt_offset++;
}
}
pt_offset++;
}
-
+
// 页目录与所有页表已满!
if (pd_offset > 1024) {
return NULL;
// 页目录与所有页表已满!
if (pd_offset > 1024) {
return NULL;
@@
-81,21
+86,23
@@
void* vmm_map_page(void* va, void* pa, pt_attr dattr, pt_attr tattr) {
// 页目录有空位,需要开辟一个新的 PDE
uint8_t* new_pt_pa = pmm_alloc_page();
// 页目录有空位,需要开辟一个新的 PDE
uint8_t* new_pt_pa = pmm_alloc_page();
-
+
// 物理内存已满!
if (!new_pt_pa) {
return NULL;
}
// 物理内存已满!
if (!new_pt_pa) {
return NULL;
}
-
+
ptd[pd_offset] = PDE(dattr, new_pt_pa);
ptd[pd_offset] = PDE(dattr, new_pt_pa);
-
+
memset((void*)PT_VADDR(pd_offset), 0, PM_PAGE_SIZE);
pt[pt_offset] = PTE(tattr, pa);
memset((void*)PT_VADDR(pd_offset), 0, PM_PAGE_SIZE);
pt[pt_offset] = PTE(tattr, pa);
- return V_ADDR(pd_offset, pt_offset, PG_OFFSET(va));
+ return
(void*)
V_ADDR(pd_offset, pt_offset, PG_OFFSET(va));
}
}
-void* vmm_alloc_page(void* vpn, pt_attr dattr, pt_attr tattr) {
+void*
+vmm_alloc_page(void* vpn, pt_attr dattr, pt_attr tattr)
+{
void* pp = pmm_alloc_page();
void* result = vmm_map_page(vpn, pp, dattr, tattr);
if (!result) {
void* pp = pmm_alloc_page();
void* result = vmm_map_page(vpn, pp, dattr, tattr);
if (!result) {
@@
-104,31
+111,35
@@
void* vmm_alloc_page(void* vpn, pt_attr dattr, pt_attr tattr) {
return result;
}
return result;
}
-void vmm_unmap_page(void* vpn) {
+void
+vmm_unmap_page(void* vpn)
+{
uintptr_t pd_offset = PD_INDEX(vpn);
uintptr_t pt_offset = PT_INDEX(vpn);
uintptr_t pd_offset = PD_INDEX(vpn);
uintptr_t pt_offset = PT_INDEX(vpn);
- ptd_t* self_pde = PTD_BASE_VADDR;
+ ptd_t* self_pde =
(ptd_t*)
PTD_BASE_VADDR;
ptd_t pde = self_pde[pd_offset];
if (pde) {
pt_t* pt = (pt_t*)PT_VADDR(pd_offset);
uint32_t pte = pt[pt_offset];
ptd_t pde = self_pde[pd_offset];
if (pde) {
pt_t* pt = (pt_t*)PT_VADDR(pd_offset);
uint32_t pte = pt[pt_offset];
- if (IS_CACHED(pte) && pmm_free_page(pte)) {
-
// 刷新TLB
-
#ifdef __ARCH_IA32
- __asm__("invlpg (%0)" ::
"r"((uintptr_t)vpn) : "memory");
-
#endif
+ if (IS_CACHED(pte) && pmm_free_page(
(void*)
pte)) {
+// 刷新TLB
+#ifdef __ARCH_IA32
+ __asm__("invlpg (%0)" ::"r"((uintptr_t)vpn) : "memory");
+#endif
}
pt[pt_offset] = 0;
}
}
}
pt[pt_offset] = 0;
}
}
-void* vmm_v2p(void* va) {
+void*
+vmm_v2p(void* va)
+{
uintptr_t pd_offset = PD_INDEX(va);
uintptr_t pt_offset = PT_INDEX(va);
uintptr_t po = PG_OFFSET(va);
uintptr_t pd_offset = PD_INDEX(va);
uintptr_t pt_offset = PT_INDEX(va);
uintptr_t po = PG_OFFSET(va);
- ptd_t* self_pde = PTD_BASE_VADDR;
+ ptd_t* self_pde =
(ptd_t*)
PTD_BASE_VADDR;
ptd_t pde = self_pde[pd_offset];
if (pde) {
ptd_t pde = self_pde[pd_offset];
if (pde) {
diff --git
a/lunaix-os/libs/libc/stdlib/itoa.c
b/lunaix-os/libs/libc/stdlib/itoa.c
index d7920b4354b7f6023e8426af211e0ee4826675c5..affc2f5fe6f3d4f969485feb3184a08427f3c73d 100644
(file)
--- a/
lunaix-os/libs/libc/stdlib/itoa.c
+++ b/
lunaix-os/libs/libc/stdlib/itoa.c
@@
-8,22
+8,16
@@
char*
__uitoa_internal(unsigned int value, char* str, int base, unsigned int* size)
{
unsigned int ptr = 0;
__uitoa_internal(unsigned int value, char* str, int base, unsigned int* size)
{
unsigned int ptr = 0;
- if (value == 0) {
- str[0] = '0';
+ do {
+ str[ptr] = base_char[value % base];
+ value = value / base;
ptr++;
ptr++;
- } else {
- while (value) {
- str[ptr] = base_char[value % base];
- value = value / base;
- ptr++;
- }
-
- for (unsigned int i = 0; i < (ptr >> 1); i++) {
- char c = str[i];
- str[i] = str[ptr - i - 1];
- str[ptr - i - 1] = c;
- }
+ } while (value);
+ for (unsigned int i = 0; i < (ptr >> 1); i++) {
+ char c = str[i];
+ str[i] = str[ptr - i - 1];
+ str[ptr - i - 1] = c;
}
str[ptr] = '\0';
if (size) {
}
str[ptr] = '\0';
if (size) {
diff --git
a/lunaix-os/makefile
b/lunaix-os/makefile
index 625743c9926001bf57b72e5aba57692a3a8b4e22..abcde29f211aee6157a09d3529e784bd343262be 100644
(file)
--- a/
lunaix-os/makefile
+++ b/
lunaix-os/makefile
@@
-20,16
+20,16
@@
$(ISO_DIR):
$(OBJECT_DIR)/%.S.o: %.S
@mkdir -p $(@D)
$(OBJECT_DIR)/%.S.o: %.S
@mkdir -p $(@D)
- @echo "
Compiling: $< ->
$@"
+ @echo "$@"
@$(CC) $(INCLUDES) -c $< -o $@
$(OBJECT_DIR)/%.c.o: %.c
@mkdir -p $(@D)
@$(CC) $(INCLUDES) -c $< -o $@
$(OBJECT_DIR)/%.c.o: %.c
@mkdir -p $(@D)
- @echo "
Compiling: $< ->
$@"
+ @echo "$@"
@$(CC) $(INCLUDES) -c $< -o $@ $(CFLAGS)
$(BIN_DIR)/$(OS_BIN): $(OBJECT_DIR) $(BIN_DIR) $(SRC)
@$(CC) $(INCLUDES) -c $< -o $@ $(CFLAGS)
$(BIN_DIR)/$(OS_BIN): $(OBJECT_DIR) $(BIN_DIR) $(SRC)
- @echo "
Linking ...
"
+ @echo "
Generating $(BIN_DIR)/$(OS_BIN)
"
@$(CC) -T linker.ld -o $(BIN_DIR)/$(OS_BIN) $(SRC) $(LDFLAGS)
$(BUILD_DIR)/$(OS_ISO): $(ISO_DIR) $(BIN_DIR)/$(OS_BIN) GRUB_TEMPLATE
@$(CC) -T linker.ld -o $(BIN_DIR)/$(OS_BIN) $(SRC) $(LDFLAGS)
$(BUILD_DIR)/$(OS_ISO): $(ISO_DIR) $(BIN_DIR)/$(OS_BIN) GRUB_TEMPLATE