Makefile Corregido - Errores principales

Makefile corregido


# Makefile para gestionar la compilación y organización de archivos de bootloaders

# Variables
SUBDIRS = bootloader_arm bootloader_riscv bootloader_x64 bootloader_x86
DIR_BIN = bin
DIR_IMG = img
MULTIBOOTLOADER = $(DIR_IMG)/multibootloaders.img

# Crear los directorios si no existen
DIRECTORIES = $(DIR_BIN) $(DIR_IMG)

# Target principal
all: create_dirs compile_subdirs organize_files $(MULTIBOOTLOADER)
    @echo "Multibootloaders creado exitosamente."

# Crear directorios necesarios
create_dirs:
    @mkdir -p $(DIRECTORIES)
    @echo "Directorios creados: $(DIRECTORIES)"

# Compilar cada subdirectorio
compile_subdirs:
    @for dir in $(SUBDIRS); do \
        echo "Compilando en $$dir..."; \
        $(MAKE) -C $$dir; \
        echo "Compilación completada en $$dir"; \
    done

# Mover archivos .bin generados a DIR_BIN
organize_files:
    @find $(SUBDIRS) -name "*.bin" -exec mv {} $(DIR_BIN)/ \;
    @echo "Archivos binarios movidos a $(DIR_BIN)"
    @find $(SUBDIRS) -name "*.elf" -exec rm {} \;
    @echo "Archivos .elf eliminados"
    @find $(SUBDIRS) -name "*.o" -exec rm {} \;
    @echo "Archivos .o eliminados"

# Crear el archivo multibootloaders
$(MULTIBOOTLOADER): $(DIR_BIN)/*.bin
    @cat $(DIR_BIN)/*.bin > $@
    @echo "Archivo multibootloaders creado: $@"

# Limpieza
clean:
    @echo "Limpiando archivos generados..."
    @for dir in $(SUBDIRS); do \
        $(MAKE) -C $$dir clean; \
    done
    rm -rf $(DIRECTORIES)
    @echo "Limpieza completada."

# Indicar que estos objetivos no son archivos reales
.PHONY: all clean create_dirs compile_subdirs organize_files
    

Descripción de los cambios realizados

  • Separación de responsabilidades: Las tareas se dividieron en objetivos claros como create_dirs, compile_subdirs, organize_files y clean.
  • Uso correcto de find: Los subdirectorios se pasan directamente a find, evitando errores relacionados con dependencias vacías.
  • Eliminación de duplicados: Se eliminaron las definiciones redundantes del objetivo $(SUBDIRS).
  • Mensajes claros: Se añadieron mensajes informativos en cada paso del proceso para facilitar el seguimiento.

Uso del Makefile

1. Para compilar y organizar los archivos:


make
    

Esto compila los subdirectorios, organiza los archivos generados y crea el archivo multibootloaders.

2. Para limpiar los archivos generados:


make clean
    

Esto elimina los archivos y directorios generados durante la compilación.

 

Destacado

Bootloader Avanzado en Ensamblador

Bootloader Avanzado en Ensamblador Características del Bootloader Se carga en la dirección 0x7C00 (BIOS). ...