Files
nt-lite/makefile.def
T

138 lines
5.2 KiB
Modula-2

# Shared x64 build rules. BUILD owns source scanning and object dependencies.
!include sources
!IF "$(AMD64)" != "1"
!ERROR nt-lite currently targets AMD64 only.
!ENDIF
ARCHDIR=amd64
OBJDIR=$(TARGETPATH)\$(ARCHDIR)
_OBJ_DIR=obj
BINDIR=$(BASEDIR)\bin
CC=cl
CXX=cl
AS=ml64
RC=rc
COMMON=/nologo /WX /O2 /GS- /Gs999999 /Gz /Gy /EHsc- /GR- /Oi- /Z7 /std:c17 /D_CRT_SECURE_NO_WARNINGS /D_CRT_NONSTDC_NO_WARNINGS /I"$(BASEDIR)\code\public" /I"$(BASEDIR)\code\common\include"
DRIVER_CFLAGS=$(COMMON) /W3
USER_CFLAGS=$(COMMON) /W3
KERNEL_CFLAGS=$(COMMON) /W3 /I"$(BASEDIR)\code\kernel\include"
POSIX_CFLAGS=/X /I"$(BASEDIR)\code\public\posix" /I"$(BASEDIR)\code\public\freestanding" $(USER_CFLAGS)
!IF "$(FLAVOR)" == "KERNEL"
CFLAGS=$(KERNEL_CFLAGS) $(EXTRA_CFLAGS)
!ELSEIF "$(FLAVOR)" == "BOOT"
CFLAGS=$(KERNEL_CFLAGS) $(EXTRA_CFLAGS)
!ELSEIF "$(FLAVOR)" == "LIBC"
CFLAGS=$(COMMON) /W3 $(EXTRA_CFLAGS)
!ELSEIF "$(FLAVOR)" == "COMMON"
CFLAGS=$(COMMON) /W3 $(EXTRA_CFLAGS)
!ELSEIF "$(FLAVOR)" == "ACPICA"
CFLAGS=$(COMMON) /W0 /DACPI_NTLITE /I"$(BASEDIR)\code\drivers\platform\acpi\third_party\acpica\include" /wd4100 /wd4101 /wd4127 /wd4214 /wd4244 /wd4267 /wd4706 /wd4702 $(EXTRA_CFLAGS)
!ELSEIF "$(FLAVOR)" == "LWIP"
CFLAGS=$(DRIVER_CFLAGS) /I"$(BASEDIR)\code\drivers\net\lwip\include" /I"$(BASEDIR)\code\drivers\net\lwip\third_party\lwip\src\include" /wd4005 /wd4100 /wd4103 /wd4127 /wd4244 /wd4267 /wd4706 $(EXTRA_CFLAGS)
!ELSEIF "$(FLAVOR)" == "EXT4"
CFLAGS=$(DRIVER_CFLAGS) /I"$(BASEDIR)\code\drivers\fs\ext4\include" /I"$(BASEDIR)\code\drivers\fs\ext4\third_party\lwext4\include" /DCONFIG_USE_DEFAULT_CFG=1 /DCONFIG_HAVE_OWN_ERRNO=1 /DCONFIG_DEBUG_PRINTF=0 /DCONFIG_DEBUG_ASSERT=0 /DCONFIG_BLOCK_DEV_ENABLE_STATS=0 /DCONFIG_EXT4_BLOCKDEVS_COUNT=8 /DCONFIG_EXT4_MOUNTPOINTS_COUNT=8 /wd4005 /wd4100 /wd4101 /wd4103 /wd4127 /wd4244 /wd4267 /wd4706 /wd4996 $(EXTRA_CFLAGS)
!ELSEIF "$(FLAVOR)" == "NTFS"
CFLAGS=$(DRIVER_CFLAGS) /I"$(BASEDIR)\code\drivers\fs\ntfs\ntfs3g\include" /I"$(BASEDIR)\code\drivers\fs\ntfs\ntfs3g\third_party\ntfs-3g\include" /I"$(BASEDIR)\code\drivers\fs\ntfs\ntfs3g\third_party\ntfs-3g\include\ntfs-3g" /DHAVE_CONFIG_H=1 /DNO_NTFS_DEVICE_DEFAULT_IO_OPS=1 /wd4005 /wd4018 /wd4100 /wd4101 /wd4103 /wd4127 /wd4133 /wd4146 /wd4244 /wd4267 /wd4305 /wd4311 /wd4312 /wd4706 /wd4996 $(EXTRA_CFLAGS)
!ELSEIF "$(FLAVOR)" == "POSIX"
CFLAGS=$(POSIX_CFLAGS) $(EXTRA_CFLAGS)
!ELSEIF "$(FLAVOR)" == "DRIVER"
CFLAGS=$(DRIVER_CFLAGS) $(EXTRA_CFLAGS)
!ELSE
CFLAGS=$(USER_CFLAGS) $(EXTRA_CFLAGS)
!ENDIF
CXXFLAGS=$(CFLAGS) /EHsc
ASFLAGS=/nologo $(EXTRA_ASFLAGS)
RCFLAGS=/nologo
LFLAGS=/nologo /NODEFAULTLIB /DEBUG
# Select the build before generated object rules.
all:
# Generated rules use the compiler and object-directory macros above.
!IF EXIST("obj\_objects.mac")
!include obj\_objects.mac
!ENDIF
OBJECTS=$(AMD64_OBJECTS)
!IF "$(TARGETTYPE)" == "LIBRARY"
TARGET=$(BINDIR)\$(TARGETNAME).lib
!ELSEIF "$(IMAGE_KIND)" == "EFI"
TARGET=$(BINDIR)\$(TARGETNAME).efi
!ELSEIF "$(IMAGE_KIND)" == "KERNEL"
TARGET=$(BINDIR)\$(TARGETNAME).exe
!ELSEIF "$(TARGETTYPE)" == "DRIVER"
TARGET=$(BINDIR)\$(TARGETNAME).sys
!ELSEIF "$(IMAGE_KIND)" == "DLL"
TARGET=$(BINDIR)\$(TARGETNAME).dll
!ELSEIF "$(TARGETTYPE)" == "PROGRAM"
TARGET=$(BINDIR)\$(TARGETNAME).exe
!ELSE
!ERROR Unsupported target type.
!ENDIF
!IF "$(PASS0ONLY)" == "1"
all:
@echo Pass zero complete.
!ELSEIF "$(TARGETTYPE)" == "LIBRARY"
# BUILD treats libraries as compile-pass targets.
all: $(TARGET)
!ELSEIF "$(NOLINK)" == "1"
all: $(OBJECTS)
!ELSE
all: $(TARGET)
!ENDIF
.SUFFIXES: .c .cpp .cxx .asm .obj
{.}.c{$(OBJDIR)}.obj:
@echo BUILDMSG: Compiling "$<"
@$(CC) $(CFLAGS) /c /Fo"$@" "$<"
{.}.cpp{$(OBJDIR)}.obj:
@echo BUILDMSG: Compiling "$<"
@$(CXX) $(CXXFLAGS) /c /Fo"$@" "$<"
{.}.asm{$(OBJDIR)}.obj:
@echo BUILDMSG: Compiling "$<"
@$(AS) $(ASFLAGS) /c /Fo"$@" "$<"
!IF "$(TARGETTYPE)" == "LIBRARY"
$(TARGET): $(OBJECTS)
@if not exist "$(BINDIR)" mkdir "$(BINDIR)"
@echo BUILDMSG: Archiving $(TARGET)
@lib /nologo /OUT:"$@" $(OBJECTS)
!ELSEIF "$(IMAGE_KIND)" == "EFI"
$(TARGET): $(OBJECTS) $(TARGETLIBS)
@if not exist "$(BINDIR)" mkdir "$(BINDIR)"
@echo BUILDMSG: Linking $(TARGET)
@link $(LFLAGS) /SUBSYSTEM:EFI_APPLICATION $(EXTRA_LFLAGS) /OUT:"$@" $(OBJECTS) $(TARGETLIBS)
!ELSEIF "$(IMAGE_KIND)" == "KERNEL"
$(TARGET): $(OBJECTS) $(TARGETLIBS)
@if not exist "$(BINDIR)" mkdir "$(BINDIR)"
@echo BUILDMSG: Linking $(TARGET)
@link $(LFLAGS) /SUBSYSTEM:NATIVE $(EXTRA_LFLAGS) /OUT:"$@" $(OBJECTS) $(TARGETLIBS)
!ELSEIF "$(IMAGE_KIND)" == "DLL"
$(TARGET): $(OBJECTS) $(TARGETLIBS)
@if not exist "$(BINDIR)" mkdir "$(BINDIR)"
@echo BUILDMSG: Linking $(TARGET)
@link $(LFLAGS) /SUBSYSTEM:NATIVE /DLL /IMPLIB:"$(BINDIR)\$(TARGETNAME).lib" $(EXTRA_LFLAGS) /OUT:"$@" $(OBJECTS) $(TARGETLIBS)
!ELSEIF "$(TARGETTYPE)" == "DRIVER"
$(TARGET): $(OBJECTS) $(TARGETLIBS)
@if not exist "$(BINDIR)" mkdir "$(BINDIR)"
@echo BUILDMSG: Linking $(TARGET)
@link $(LFLAGS) /SUBSYSTEM:NATIVE /DLL $(EXTRA_LFLAGS) /OUT:"$@" $(OBJECTS) $(TARGETLIBS)
!ELSE
$(TARGET): $(OBJECTS) $(TARGETLIBS)
@if not exist "$(BINDIR)" mkdir "$(BINDIR)"
@echo BUILDMSG: Linking $(TARGET)
@link $(LFLAGS) /SUBSYSTEM:NATIVE /DYNAMICBASE /HIGHENTROPYVA $(EXTRA_LFLAGS) /OUT:"$@" /PDB:"$(BINDIR)\$(TARGETNAME).pdb" $(OBJECTS) $(TARGETLIBS)
!ENDIF
clean:
@if exist "obj" rmdir /s /q "obj"