diff --git a/cpp.mk b/cpp.mk index 526db8de..b240025a 100644 --- a/cpp.mk +++ b/cpp.mk @@ -40,7 +40,7 @@ LIB_FLAGS=$(COMMON_CPP_FLAGS) $(FLAGS_64) $(WARNING_FLAGS) -mcmodel=small -fPIC LIB_LINK_FLAGS=$(COMMON_CPP_FLAGS) $(FLAGS_64) $(WARNING_FLAGS) -mcmodel=small -fPIC -Wl,-gc-sections PROGRAM_FLAGS=$(COMMON_CPP_FLAGS) $(FLAGS_64) $(WARNING_FLAGS) -I../../tlib/include/ -I../../printf/include/ -static -L../../tlib/debug/ -ltlib -mcmodel=small -fPIC -PROGRAM_LINK_FLAGS=$(COMMON_CPP_FLAGS) $(FLAGS_64) $(WARNING_FLAGS) $(COMMON_LINK_FLAGS) -static -L../../tlib/debug/ -ltlib -mcmodel=small -fPIC -z max-page-size=0x1000 -T ../linker.ld -Wl,-gc-sections +PROGRAM_LINK_FLAGS=$(COMMON_CPP_FLAGS) $(FLAGS_64) $(WARNING_FLAGS) $(COMMON_LINK_FLAGS) -static -L../../tlib/debug/ -mcmodel=small -fPIC -z max-page-size=0x1000 -T ../linker.ld NO_COLOR=\x1b[0m MODE_COLOR=\x1b[31;01m @@ -123,8 +123,7 @@ define program_link_executable debug/$(1): $(O_FILES) @ mkdir -p debug/ @ echo -e "$(MODE_COLOR)[debug]$(NO_COLOR) Link (program) $(FILE_COLOR)$$@$(NO_COLOR)" - @ $(CXX) -o debug/$(1) $(O_FILES) $(PROGRAM_LINK_FLAGS) - + @ $(CXX) -o debug/$(1) $(PROGRAM_LINK_FLAGS) ../../tlib/debug/src/crti.s.o $$(shell $(CXX) -print-file-name=crtbegin.o) $(O_FILES) -ltlib $$(shell $(CXX) -print-file-name=crtend.o) ../../tlib/debug/src/crtn.s.o link: debug/$(1) endef diff --git a/tlib/Makefile b/tlib/Makefile index c2fe37f6..d89502bc 100644 --- a/tlib/Makefile +++ b/tlib/Makefile @@ -2,22 +2,18 @@ default: debug/libtlib.a include ../cpp.mk -# Ask GCC for the crtbegin and crtend files -CRTBEGIN_OBJ:=$(shell $(CXX) $(LIB_FLAGS) -print-file-name=crtbegin.o) -CRTEND_OBJ:=$(shell $(CXX) $(LIB_FLAGS) -print-file-name=crtend.o) - -# The files provided directly by the compiler -SPECIAL_O_FILES=$(CRTBEGIN_OBJ) $(CRTEND_OBJ) - $(eval $(call tlib_compile_cpp_folder,src)) $(eval $(call compile_assembly_folder,src)) # Compile the assembly code -debug/libtlib.a: $(SPECIAL_O_FILES) $(O_FILES) +O_FILES := $(filter-out debug/src/crti.s.o,$(O_FILES)) +O_FILES := $(filter-out debug/src/crtn.s.o,$(O_FILES)) + +debug/libtlib.a: debug/src/crti.s.o debug/src/crtn.s.o $(O_FILES) @ mkdir -p debug/ @ echo -e "$(MODE_COLOR)[debug]$(NO_COLOR) Link (tlib) $(FILE_COLOR)$@$(NO_COLOR)" - @ ${AR} rcs debug/libtlib.a $(SPECIAL_O_FILES) $(O_FILES) + @ ${AR} rcs debug/libtlib.a $(O_FILES) -include $(D_FILES)