Initial Commit, project structure and build system.

This commit is contained in:
2025-10-18 23:52:08 +02:00
commit 6f587de022
9 changed files with 121 additions and 0 deletions

21
make/include/defaults.mk Normal file
View File

@@ -0,0 +1,21 @@
CC ?= i686-w64-mingw32-gcc
CFLAGS = -Wall -Wextra -pedantic -Werror -std=c23
SRC_DIR = src
SRC_DIR_COMMON = $(SRC_DIR)/common
SRC_DIR_RUNTIME = $(SRC_DIR)/runtime
SRC_DIR_LOADER = $(SRC_DIR)/loader
SOURCES_COMMON := $(shell find $(SRC_DIR_COMMON) -name '*.c')
SOURCES_RUNTIME := $(shell find $(SRC_DIR_RUNTIME) -name '*.c')
SOURCES_LOADER := $(shell find $(SRC_DIR_LOADER) -name '*.c')
BUILD_DIR ?= build
OBJECTS_COMMON = $(SOURCES_COMMON:%.c=$(BUILD_DIR)/%.o)
OBJECTS_RUNTIME = $(SOURCES_RUNTIME:%.c=$(BUILD_DIR)/%.o)
OBJECTS_LOADER = $(SOURCES_LOADER:%.c=$(BUILD_DIR)/%.o)
DEPS_COMMON = $(SOURCES_COMMON:%.c=$(BUILD_DIR)/%.d)
DEPS_RUNTIME = $(SOURCES_RUNTIME:%.c=$(BUILD_DIR)/%.d)
DEPS_LOADER = $(SOURCES_LOADER:%.c=$(BUILD_DIR)/%.d)

9
make/include/shared.mk Normal file
View File

@@ -0,0 +1,9 @@
$(TARGET): $(OBJECTS)
@mkdir -p $(dir $@)
$(CC) $(OBJECTS) $(LDFLAGS) -o $@
$(BUILD_DIR)/%.o: %.c
@mkdir -p $(dir $@)
$(CC) $(CFLAGS) -MMD -MP -c $< -o $@
-include $(DEPS)

19
make/loader.mk Normal file
View File

@@ -0,0 +1,19 @@
.PHONY: all
include make/include/defaults.mk
CFLAGS += -I$(BUILD_DIR)/stub
LDFLAGS +=
TARGET = $(BUILD_DIR)/loader.exe
OBJECTS = $(OBJECTS_COMMON) $(OBJECTS_LOADER)
DEPS = $(DEPS_COMMON) $(DEPS_LOADER)
STUB = $(BUILD_DIR)/stub/stub.bin
all: $(STUB) $(TARGET)
$(STUB): $(SRC_DIR)/stub/stub.asm
@mkdir -p $(dir $@)
nasm -f bin $< -o $@
include make/include/shared.mk
$(OBJECTS_LOADER): $(STUB)

9
make/runtime.mk Normal file
View File

@@ -0,0 +1,9 @@
include make/include/defaults.mk
CFLAGS +=
LDFLAGS += -shared
TARGET = $(BUILD_DIR)/runtime.dll
OBJECTS = $(OBJECTS_COMMON) $(OBJECTS_RUNTIME)
DEPS = $(DEPS_COMMON) $(DEPS_RUNTIME)
include make/include/shared.mk

20
make/test.mk Normal file
View File

@@ -0,0 +1,20 @@
.PHONY: all test
include make/include/defaults.mk
SOURCES_TEST := $(shell find tests/ -name '*.c')
OBJECTS_TEST = $(SOURCES_TEST:%.c=$(BUILD_DIR)/%.o)
DEPS_TEST = $(SOURCES_TEST:%.c=$(BUILD_DIR)/%.d)
CFLAGS += -Isrc -D__STDC_NO_ATOMICS__ -DMUNIT_TEST_NAME_LEN=45
LDFLAGS +=
TARGET = $(BUILD_DIR)/binprobe-tests.exe
OBJECTS = $(OBJECTS_COMMON) $(OBJECTS_TEST)
DEPS = $(DEPS_COMMON) $(DEPS_TEST)
all: $(TARGET)
test: $(TARGET)
WINEDEBUG=-all wine $(TARGET)
include make/include/shared.mk