История изменений
Исправление ilammy, (текущая версия) :
Я что-то не пойму, где много дублирования? src/*
и libc/src*
— и всё?
Можно, например, перестать разбрасывать объектники по всему дереву, а наоборот — складывать их в иерархию внутри одной директории сборки. Тогда правила для сборки типов файлов можно будет писать только один раз.
$(BUILD)/obj/%.cpp.o: %.cpp
@mkdir -p $(@D)
$(CXX) $(TARGETFLAGS) $(CXXFLAGS) -MF"$(BUILD)/deps/$*.d" -MD -c $< -o $@
STARTUP_SRC += $(wildcard src/*.cpp)
STARTUP_SRC += $(wildcard libc/src/*.cpp)
STARTUP_OBJ = $(patsubst %, $(BUILD)/obj/%.o, $(STARTUP_SRC))
$(BUILD)/Startup: $(STARTUP_OBJ) Startup.ld
@mkdir -p $(@D)
$(LD) -T Startup.ld --export-dynamic $(filter %.o, $^) -o $@
clean:
rm -rf $(BUILD)
Исправление ilammy, :
Я что-то не пойму, где много дублирования? src/*
и libc/src*
— и всё?
Можно, например, перестать разбрасывать объектники по всему дереву, а наоборот — складывать их в иерархию внутри одной директории сборки. Тогда правила для сборки типов файлов можно будет писать только один раз.
$(BUILD)/obj/%.cpp.o: %.cpp
$(CXX) $(TARGETFLAGS) $(CXXFLAGS) -MF"$(BUILD)/deps/$*.d" -MD -c $< -o $@
STARTUP_SRC += $(wildcard src/*.cpp)
STARTUP_SRC += $(wildcard libc/src/*.cpp)
STARTUP_OBJ = $(patsubst %, $(BUILD)/obj/%.o, $(STARTUP_SRC))
$(BUILD)/Startup: $(STARTUP_OBJ) Startup.ld
$(LD) -T Startup.ld --export-dynamic $(filter %.o, $^) -o $@
clean:
rm -rf $(BUILD)
Исходная версия ilammy, :
Я что-то не пойму, где много дублирования? src/*
и libc/src*
— и всё?
Можно, например, перестать разбрасывать объектники по всему дереву, а наоборот — складывать их в иерархию внутри одной директории сборки. Тогда правила для сборки типов файлов можно будет писать только один раз.
$(BUILD)/obj/%.cpp.o: %.cpp
$(CXX) $(TARGETFLAGS) $(CXXFLAGS) -MF"$(BUILD)/deps/$*.d" -MD -c $< -o $@
STARTUP_SRC += $(wildcard src/*.cpp)
STARTUP_SRC += $(wildcard libc/src/*.cpp)
STARTUP_OBJ = $(patsubst %,$(BUILD)/obj/%.o, $(STARTUP_SRC))
$(BUILD)/Startup: $(STARTUP_OBJ) Startup.ld
$(LD) -T Startup.ld --export-dynamic $(filter %.o, $^) -o Startup
clean:
rm -rf $(BUILD)