chore: code update, but no new feature
This commit is contained in:
parent
0d4c772300
commit
6ff773de41
9
Makefile
9
Makefile
|
@ -10,11 +10,20 @@ INCDIR = /usr/include
|
||||||
ASMDIR = /usr/asm
|
ASMDIR = /usr/asm
|
||||||
|
|
||||||
AS = fasm
|
AS = fasm
|
||||||
|
CC ?= gcc
|
||||||
RM = rm -f
|
RM = rm -f
|
||||||
|
|
||||||
MK_BUGREPORT := \"https://git.cute.engineering/d0p1/StupidOS/issues\"
|
MK_BUGREPORT := \"https://git.cute.engineering/d0p1/StupidOS/issues\"
|
||||||
MK_COMMIT := \"$(shell git rev-parse --short HEAD)\"
|
MK_COMMIT := \"$(shell git rev-parse --short HEAD)\"
|
||||||
|
|
||||||
|
ifneq (,$(findstring cl,$(CC)))
|
||||||
|
CFLAGS = /TC /D MK_COMMIT="$(MK_COMMIT)" /DMK_BUGREPORT="$(MK_BUGREPORT)" /INCLUDE:$(TOPDIR)include
|
||||||
|
LDFLAGS = /SUBSYSTEM:CONSOLE
|
||||||
|
else
|
||||||
|
CFLAGS = -DMK_COMMIT="$(MK_COMMIT)" -DMK_BUGREPORT="$(MK_BUGREPORT)" -I$(TOPDIR)include
|
||||||
|
LDFLAGS =
|
||||||
|
endif
|
||||||
|
|
||||||
SUBDIRS := external tools include boot kernel lib bin
|
SUBDIRS := external tools include boot kernel lib bin
|
||||||
|
|
||||||
TARGET = stupid.tar.gz floppy1440.img floppy2880.img
|
TARGET = stupid.tar.gz floppy1440.img floppy2880.img
|
||||||
|
|
49
boot/bootsect/hdd.asm
Normal file
49
boot/bootsect/hdd.asm
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
;; File: floppy.asm
|
||||||
|
format binary
|
||||||
|
use16
|
||||||
|
|
||||||
|
include '../common/const.inc'
|
||||||
|
include '../common/macro.inc'
|
||||||
|
|
||||||
|
jmp short _start
|
||||||
|
|
||||||
|
OEM_identifier db 'STUPID '
|
||||||
|
bytes_per_sector dw 512
|
||||||
|
sectors_per_cluster db 0
|
||||||
|
reserved_sectors dw 0
|
||||||
|
FAT_count db 0
|
||||||
|
root_dir_entries dw 0
|
||||||
|
total_sectors dw 0
|
||||||
|
media_desc_type db 0
|
||||||
|
sectors_per_FAT dw 0
|
||||||
|
sectors_per_track dw 18
|
||||||
|
heads_per_cylinder dw 2
|
||||||
|
hidden_sectors dd 0
|
||||||
|
large_sector_count dd 0
|
||||||
|
; Extended Boot Record
|
||||||
|
drive_number db 0
|
||||||
|
reserved db 0
|
||||||
|
signature db 0
|
||||||
|
volume_id dd 0xB00B135 ; hope mine will grow :'(
|
||||||
|
volume_label db 'Stupid Boot'
|
||||||
|
system_id db ' '
|
||||||
|
|
||||||
|
|
||||||
|
_start:
|
||||||
|
mov [drive_number], dl
|
||||||
|
|
||||||
|
; ensure int 13h extension
|
||||||
|
mov ah, 0x41
|
||||||
|
mov bx, 0x55AA
|
||||||
|
int 0x13
|
||||||
|
jc .error_lba
|
||||||
|
|
||||||
|
.error_lba:
|
||||||
|
mov si, msg_error_13ext
|
||||||
|
jmp .error_print
|
||||||
|
|
||||||
|
|
||||||
|
msg_error_13ext db "We don't support CHS", CR, LF, 0
|
||||||
|
|
||||||
|
rb 0x7C00+512-2-$
|
||||||
|
db 0x55, 0xAA
|
|
@ -20,6 +20,7 @@
|
||||||
mov di, MBR_BASE
|
mov di, MBR_BASE
|
||||||
rep movsw
|
rep movsw
|
||||||
jmp 0x0:start
|
jmp 0x0:start
|
||||||
|
|
||||||
start:
|
start:
|
||||||
; set LBA
|
; set LBA
|
||||||
mov ah, 0x41
|
mov ah, 0x41
|
||||||
|
|
|
@ -36,6 +36,8 @@ _start:
|
||||||
call a20_enable
|
call a20_enable
|
||||||
jc .error_a20
|
jc .error_a20
|
||||||
|
|
||||||
|
xchg bx, bx
|
||||||
|
|
||||||
; check drive type
|
; check drive type
|
||||||
; dl <= 0x7F == floppy
|
; dl <= 0x7F == floppy
|
||||||
; dl >= 0x80 == hard drive
|
; dl >= 0x80 == hard drive
|
||||||
|
@ -55,10 +57,15 @@ _start:
|
||||||
@@:
|
@@:
|
||||||
; detect filesystem (FAT12/16 or StpdFS)
|
; detect filesystem (FAT12/16 or StpdFS)
|
||||||
; load kernel from filesystem
|
; load kernel from filesystem
|
||||||
|
; +---------+--------+---------+
|
||||||
|
; | bootsec | sect 1 | stpd sb |
|
||||||
|
; +---------+--------+---------+
|
||||||
|
; for now fat12 is asumed
|
||||||
|
|
||||||
|
|
||||||
; fetch memory map from bios
|
; fetch memory map from bios
|
||||||
call memory_get_map
|
call memory_get_map
|
||||||
jc .error_memory
|
jc .error_memory
|
||||||
|
|
||||||
; video information
|
; video information
|
||||||
call video_setup
|
call video_setup
|
||||||
|
@ -121,7 +128,8 @@ multiboot:
|
||||||
; get kernel from module
|
; get kernel from module
|
||||||
|
|
||||||
common32:
|
common32:
|
||||||
mov dword [0xb8000], 0x07690748
|
xchg bx, bx
|
||||||
|
mov dword [0xB8000], 0x07690748
|
||||||
|
|
||||||
; paging
|
; paging
|
||||||
; identity map first 1MB
|
; identity map first 1MB
|
||||||
|
|
|
@ -29,7 +29,51 @@ bios_log_time:
|
||||||
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
;; Function: bios_log_number
|
||||||
|
;;
|
||||||
|
;; Parameters:
|
||||||
|
;; XX - number
|
||||||
|
;;
|
||||||
|
bios_log_number:
|
||||||
|
push ebp
|
||||||
|
mov ebp, esp
|
||||||
|
sub esp, 10
|
||||||
|
|
||||||
|
leave
|
||||||
|
ret
|
||||||
|
|
||||||
|
;; Function: bios_log_hex
|
||||||
|
;;
|
||||||
bios_log_hex:
|
bios_log_hex:
|
||||||
|
push bp
|
||||||
|
mov ebp, esp
|
||||||
|
sub esp, 12
|
||||||
|
mov si, hex_prefix
|
||||||
|
call bios_print
|
||||||
|
|
||||||
|
or edi, edi
|
||||||
|
jz .print_zero
|
||||||
|
.loop:
|
||||||
|
or edi, edi
|
||||||
|
jz .print_number
|
||||||
|
rol edi, 4
|
||||||
|
mov eax, edi
|
||||||
|
and eax, 0xF
|
||||||
|
mov al, [hex_digits + eax]
|
||||||
|
mov [esp], al
|
||||||
|
inc esp
|
||||||
|
jmp .loop
|
||||||
|
.print_zero:
|
||||||
|
mov al, '0'
|
||||||
|
mov ah, 0x0E
|
||||||
|
int 0x10
|
||||||
|
jmp .end
|
||||||
|
.print_number:
|
||||||
|
mov [esp], byte 0
|
||||||
|
mov si, [ebp - 12]
|
||||||
|
call bios_print
|
||||||
|
.end:
|
||||||
|
leave
|
||||||
ret
|
ret
|
||||||
|
|
||||||
;; Function: bios_log
|
;; Function: bios_log
|
||||||
|
@ -43,12 +87,50 @@ bios_log:
|
||||||
call bios_log_time
|
call bios_log_time
|
||||||
pop si
|
pop si
|
||||||
|
|
||||||
|
.loop:
|
||||||
|
mov al, [si]
|
||||||
|
or al, al
|
||||||
|
jz .end
|
||||||
|
cmp al, '%'
|
||||||
|
jne .putchar
|
||||||
|
inc si
|
||||||
|
mov al, [si]
|
||||||
|
cmp al, '%'
|
||||||
|
je .putchar
|
||||||
|
cmp al, 's'
|
||||||
|
jne .check_x
|
||||||
|
mov di, si
|
||||||
|
pop ax
|
||||||
|
pop si
|
||||||
|
push ax
|
||||||
call bios_print
|
call bios_print
|
||||||
|
mov si, di
|
||||||
|
jmp .next
|
||||||
|
.check_x:
|
||||||
|
cmp al, 'x'
|
||||||
|
jne .unknown_format
|
||||||
|
pop ax
|
||||||
|
pop edi
|
||||||
|
push ax
|
||||||
|
push si
|
||||||
|
call bios_log_hex
|
||||||
|
pop si
|
||||||
|
jmp .next
|
||||||
|
.unknown_format:
|
||||||
|
mov al, '?'
|
||||||
|
.putchar:
|
||||||
|
mov ah, 0x0E
|
||||||
|
int 0x10
|
||||||
|
.next:
|
||||||
|
inc si
|
||||||
|
jmp .loop
|
||||||
|
.end:
|
||||||
mov si, endline
|
mov si, endline
|
||||||
call bios_print
|
call bios_print
|
||||||
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
time db '[00:00.00] ', 0
|
time db '[00:00.00] ', 0
|
||||||
|
hex_prefix db '0x', 0
|
||||||
|
hex_digits db '0123456789ABCDEF'
|
||||||
endline db CR, LF, 0
|
endline db CR, LF, 0
|
||||||
|
|
|
@ -1,46 +1,48 @@
|
||||||
KBASE = 0xC0000000
|
KBASE = 0xC0000000
|
||||||
PSIZE = 0x1000
|
PSIZE = 0x1000
|
||||||
|
|
||||||
; --------- VERSION -------------
|
STPDBOOT_MAGIC = 0x53545044
|
||||||
VERSION_MAJOR = 1
|
|
||||||
VERSION_MINOR = 0
|
; --------- VERSION -------------
|
||||||
|
VERSION_MAJOR = 1
|
||||||
; --------- Registers ------------
|
VERSION_MINOR = 0
|
||||||
CR0_PE = 0x00000001
|
|
||||||
CR0_MP = 0x00000002
|
; --------- Registers ------------
|
||||||
CR0_EM = 0x00000004
|
CR0_PE = 0x00000001
|
||||||
CR0_TS = 0x00000008
|
CR0_MP = 0x00000002
|
||||||
CR0_ET = 0x00000010
|
CR0_EM = 0x00000004
|
||||||
CR0_NE = 0x00000020
|
CR0_TS = 0x00000008
|
||||||
CR0_WP = 0x00010000
|
CR0_ET = 0x00000010
|
||||||
CR0_AM = 0x00040000
|
CR0_NE = 0x00000020
|
||||||
CR0_NW = 0x20000000
|
CR0_WP = 0x00010000
|
||||||
CR0_CD = 0x40000000
|
CR0_AM = 0x00040000
|
||||||
CR0_PG = 0x80000000
|
CR0_NW = 0x20000000
|
||||||
|
CR0_CD = 0x40000000
|
||||||
CR3_PWT = 0x08
|
CR0_PG = 0x80000000
|
||||||
CR3_PCD = 0x10
|
|
||||||
|
CR3_PWT = 0x08
|
||||||
CR4_VME = 0x0000001
|
CR3_PCD = 0x10
|
||||||
CR4_PVI = 0x0000002
|
|
||||||
CR4_TSD = 0x0000004
|
CR4_VME = 0x0000001
|
||||||
CR4_DE = 0x0000008
|
CR4_PVI = 0x0000002
|
||||||
CR4_PSE = 0x0000010
|
CR4_TSD = 0x0000004
|
||||||
CR4_PAE = 0x0000020
|
CR4_DE = 0x0000008
|
||||||
CR4_MCE = 0x0000040
|
CR4_PSE = 0x0000010
|
||||||
CR4_PGE = 0x0000080
|
CR4_PAE = 0x0000020
|
||||||
CR4_PCE = 0x0000100
|
CR4_MCE = 0x0000040
|
||||||
CR4_OSDXSR = 0x0000200
|
CR4_PGE = 0x0000080
|
||||||
CR4_OSXMMEXCPT = 0x0000400
|
CR4_PCE = 0x0000100
|
||||||
CR4_UMIP = 0x0000800
|
CR4_OSDXSR = 0x0000200
|
||||||
CR4_VMXE = 0x0002000
|
CR4_OSXMMEXCPT = 0x0000400
|
||||||
CR4_SMXE = 0x0004000
|
CR4_UMIP = 0x0000800
|
||||||
CR4_FSGSBASE = 0x0010000
|
CR4_VMXE = 0x0002000
|
||||||
CR4_PCIDE = 0x0020000
|
CR4_SMXE = 0x0004000
|
||||||
CR4_OSXSAVE = 0x0040000
|
CR4_FSGSBASE = 0x0010000
|
||||||
CR4_SMEP = 0x0100000
|
CR4_PCIDE = 0x0020000
|
||||||
CR4_SMAP = 0x0200000
|
CR4_OSXSAVE = 0x0040000
|
||||||
CR4_PKE = 0x0400000
|
CR4_SMEP = 0x0100000
|
||||||
CR4_CET = 0x0800000
|
CR4_SMAP = 0x0200000
|
||||||
CR4_PKS = 0x1000000
|
CR4_PKE = 0x0400000
|
||||||
|
CR4_CET = 0x0800000
|
||||||
|
CR4_PKS = 0x1000000
|
||||||
|
|
||||||
|
|
22
kernel/intro.txt
Normal file
22
kernel/intro.txt
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
About: kernel memory map
|
||||||
|
|
||||||
|
>
|
||||||
|
> Physical map
|
||||||
|
> +---------------+
|
||||||
|
> | |
|
||||||
|
> +---------------+
|
||||||
|
> | ISA hole ? |
|
||||||
|
> 0x00F00000 +---------------+
|
||||||
|
> | RAM |
|
||||||
|
> +---------------+
|
||||||
|
> | kernel |
|
||||||
|
> 0x00100000 +---------------+
|
||||||
|
> | ROM |
|
||||||
|
> 0x000BFFFF +---------------+
|
||||||
|
> | video display |
|
||||||
|
> | memory |
|
||||||
|
> 0x0009FFFF +---------------+
|
||||||
|
> | RAM |
|
||||||
|
> | |
|
||||||
|
> 0x00000000 +---------------+
|
||||||
|
>
|
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
jmp kmain
|
jmp kmain
|
||||||
|
|
||||||
|
include 'klog.inc'
|
||||||
include 'mm/mm.inc'
|
include 'mm/mm.inc'
|
||||||
|
|
||||||
;; Function: kmain
|
;; Function: kmain
|
||||||
|
@ -17,7 +18,16 @@
|
||||||
;;
|
;;
|
||||||
kmain:
|
kmain:
|
||||||
; TODO: interupt, vmm
|
; TODO: interupt, vmm
|
||||||
nop
|
cmp eax, STPDBOOT_MAGIC
|
||||||
|
jne .halt
|
||||||
|
|
||||||
|
KLOG_INIT
|
||||||
|
|
||||||
|
KLOG "kernel alive"
|
||||||
|
|
||||||
|
.halt:
|
||||||
|
hlt
|
||||||
|
jmp $
|
||||||
|
|
||||||
_edata:
|
_edata:
|
||||||
|
|
||||||
|
|
5
kernel/klog.inc
Normal file
5
kernel/klog.inc
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
macro KLOG_INIT {
|
||||||
|
}
|
||||||
|
|
||||||
|
macro KLOG msg {
|
||||||
|
}
|
0
kernel/mm/pmm.inc
Normal file
0
kernel/mm/pmm.inc
Normal file
|
@ -3,40 +3,19 @@
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
#include <libgen.h>
|
||||||
#define MBR_MAGIC0 0x55
|
#include "mbr.h"
|
||||||
#define MBR_MAGIC1 0xAA
|
|
||||||
|
|
||||||
#define MBR_PART_BOOTABLE (1 << 7)
|
|
||||||
|
|
||||||
enum {
|
|
||||||
MBR_PART_TYPE_EMPTY = 0x00,
|
|
||||||
MBR_PART_TYPE_FAT12 = 0x01,
|
|
||||||
MBR_PART_TYPE_FAT16 = 0x04,
|
|
||||||
MBR_PART_TYPE_GPT_PROTECTIVE = 0xEE,
|
|
||||||
MBR_PART_TYPE_EFI = 0xEF
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct partition {
|
|
||||||
uint8_t attributes;
|
|
||||||
uint8_t chs_start[3];
|
|
||||||
uint8_t type;
|
|
||||||
uint8_t chs_last_sector[3];
|
|
||||||
uint32_t lba_start;
|
|
||||||
uint32_t sectors_count;
|
|
||||||
} __attribute__((packed)) Partition;
|
|
||||||
|
|
||||||
typedef struct mbr_header {
|
|
||||||
uint8_t raw[436];
|
|
||||||
uint8_t uid[10];
|
|
||||||
struct partition part[4];
|
|
||||||
uint8_t magic[2];
|
|
||||||
} __attribute__((packed)) MBRHeader;
|
|
||||||
|
|
||||||
static char *prg_name = NULL;
|
static char *prg_name = NULL;
|
||||||
static int dump_info = 0;
|
static int dump_info = 0;
|
||||||
static const char *diskpath = NULL;
|
static const char *diskpath = NULL;
|
||||||
static FILE *diskfd = NULL;
|
static FILE *diskfp = NULL;
|
||||||
|
static FILE *partfp[4] = {
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL
|
||||||
|
};
|
||||||
static MBRHeader header;
|
static MBRHeader header;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -88,8 +67,9 @@ usage(int retcode)
|
||||||
printf("\t-h\tdisplay this help and exit\n");
|
printf("\t-h\tdisplay this help and exit\n");
|
||||||
printf("\t-V\toutput version information.\n");
|
printf("\t-V\toutput version information.\n");
|
||||||
printf("\t-d\tdump disk information\n");
|
printf("\t-d\tdump disk information\n");
|
||||||
|
printf("\t-p0-3\t\n");
|
||||||
printf("\t-o out\twrite to file 'out'\n");
|
printf("\t-o out\twrite to file 'out'\n");
|
||||||
printf("\t-e\textract parts\n");
|
printf("\t-e\textract\n");
|
||||||
printf("\t-i img\t\n");
|
printf("\t-i img\t\n");
|
||||||
printf("\nReport bugs to <%s>\n", MK_BUGREPORT);
|
printf("\nReport bugs to <%s>\n", MK_BUGREPORT);
|
||||||
}
|
}
|
||||||
|
@ -107,7 +87,8 @@ version(void)
|
||||||
int
|
int
|
||||||
main(int argc, char **argv)
|
main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
prg_name = argv[0];
|
char c;
|
||||||
|
prg_name = basename(argv[0]);
|
||||||
|
|
||||||
while ((argc > 1) && (argv[1][0] == '-'))
|
while ((argc > 1) && (argv[1][0] == '-'))
|
||||||
{
|
{
|
||||||
|
@ -122,6 +103,23 @@ main(int argc, char **argv)
|
||||||
case 'd':
|
case 'd':
|
||||||
dump_info = 1;
|
dump_info = 1;
|
||||||
break;
|
break;
|
||||||
|
case 'p':
|
||||||
|
c = argv[1][2] - '0';
|
||||||
|
argv++;
|
||||||
|
argc--;
|
||||||
|
if (c != 0 && c != 1 && c != 2 && c != 3)
|
||||||
|
{
|
||||||
|
usage(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
partfp[c] = fopen(argv[2], "rb");
|
||||||
|
if (partfp[c] == NULL)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "%s: %s\n", diskpath, strerror(errno));
|
||||||
|
return (EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'e':
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
usage(EXIT_FAILURE);
|
usage(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
@ -133,14 +131,14 @@ main(int argc, char **argv)
|
||||||
if (argc <= 1) usage(EXIT_FAILURE);
|
if (argc <= 1) usage(EXIT_FAILURE);
|
||||||
|
|
||||||
diskpath = argv[1];
|
diskpath = argv[1];
|
||||||
diskfd = fopen(diskpath, "rb");
|
diskfp = fopen(diskpath, "rb");
|
||||||
if (diskfd == NULL)
|
if (diskfp == NULL)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "%s: %s\n", diskpath, strerror(errno));
|
fprintf(stderr, "%s: %s\n", diskpath, strerror(errno));
|
||||||
return (EXIT_FAILURE);
|
return (EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fread(&header, sizeof(uint8_t), sizeof(MBRHeader), diskfd) != sizeof(MBRHeader))
|
if (fread(&header, sizeof(uint8_t), sizeof(MBRHeader), diskfp) != sizeof(MBRHeader))
|
||||||
{
|
{
|
||||||
fprintf(stderr, "%s: can't read mbr header\n", diskpath);
|
fprintf(stderr, "%s: can't read mbr header\n", diskpath);
|
||||||
return (EXIT_FAILURE);
|
return (EXIT_FAILURE);
|
||||||
|
|
35
sbin/parted/mbr.h
Normal file
35
sbin/parted/mbr.h
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
#ifndef PARTED_MBR_H
|
||||||
|
# define PARTED_MBR_H 1
|
||||||
|
|
||||||
|
# include <stdint.h>
|
||||||
|
|
||||||
|
# define MBR_MAGIC0 0x55
|
||||||
|
# define MBR_MAGIC1 0xAA
|
||||||
|
|
||||||
|
# define MBR_PART_BOOTABLE (1 << 7)
|
||||||
|
|
||||||
|
enum {
|
||||||
|
MBR_PART_TYPE_EMPTY = 0x00,
|
||||||
|
MBR_PART_TYPE_FAT12 = 0x01,
|
||||||
|
MBR_PART_TYPE_FAT16 = 0x04,
|
||||||
|
MBR_PART_TYPE_GPT_PROTECTIVE = 0xEE,
|
||||||
|
MBR_PART_TYPE_EFI = 0xEF
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct partition {
|
||||||
|
uint8_t attributes;
|
||||||
|
uint8_t chs_start[3];
|
||||||
|
uint8_t type;
|
||||||
|
uint8_t chs_last_sector[3];
|
||||||
|
uint32_t lba_start;
|
||||||
|
uint32_t sectors_count;
|
||||||
|
} __attribute__((packed)) Partition;
|
||||||
|
|
||||||
|
typedef struct mbr_header {
|
||||||
|
uint8_t raw[436];
|
||||||
|
uint8_t uid[10];
|
||||||
|
struct partition part[4];
|
||||||
|
uint8_t magic[2];
|
||||||
|
} __attribute__((packed)) MBRHeader;
|
||||||
|
|
||||||
|
#endif /* !PARTED_MBR_H */
|
|
@ -1,11 +1,5 @@
|
||||||
CC = gcc
|
|
||||||
RM = rm -f
|
|
||||||
|
|
||||||
TARGET = fat$(EXEXT) coff-ld$(EXEXT) parted$(EXEXT) mkfs.stpd$(EXEXT)
|
TARGET = fat$(EXEXT) coff-ld$(EXEXT) parted$(EXEXT) mkfs.stpd$(EXEXT)
|
||||||
|
|
||||||
CFLAGS = -DMK_COMMIT="$(MK_COMMIT)" -DMK_BUGREPORT="$(MK_BUGREPORT)" -I../include
|
|
||||||
LDFLAGS =
|
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: $(TARGET)
|
all: $(TARGET)
|
||||||
|
|
||||||
|
@ -16,7 +10,11 @@ coff-ld$(EXEXT): coff-ld.c
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LDFLAGS)
|
$(CC) -o $@ $^ $(CFLAGS) $(LDFLAGS)
|
||||||
|
|
||||||
parted$(EXEXT): ../sbin/parted/main.c
|
parted$(EXEXT): ../sbin/parted/main.c
|
||||||
|
ifneq (,$(findstring cl,$(CC)))
|
||||||
|
$(CC) /Fo:$@ $^ $(CFLAGS) $(LDFLAGS)
|
||||||
|
else
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LDFLAGS)
|
$(CC) -o $@ $^ $(CFLAGS) $(LDFLAGS)
|
||||||
|
endif
|
||||||
|
|
||||||
mkfs.stpd$(EXEXT): ../sbin/mkfs.stpd/main.c
|
mkfs.stpd$(EXEXT): ../sbin/mkfs.stpd/main.c
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LDFLAGS)
|
$(CC) -o $@ $^ $(CFLAGS) $(LDFLAGS)
|
||||||
|
|
Loading…
Reference in a new issue