AnsweredAssumed Answered

trouble with make file.

Question asked by geurtse.arnold on Jul 18, 2012
Latest reply on Jul 19, 2012 by fm
Hello, 

i have some trouble with a make file (borrowed from clive)
when i compile it i get this eror
22:12:21 **** Incremental Build of configuration Build (GNU) for project rs232 ****
make all
Assembling file: startup_stm32f4xx.s
as -c -mcpu=cortex-m4 -mthumb -g -ggdb3 -Wa,-amhls=out/startup_stm32f4xx.lst  -DUSE_STDPERIPH_DRIVER  -DSTM32F4XX  -DUSE_STM32F4_DISCOVERY  -DHSEVALUE=8000000  -MD -MP -MF out/startup_stm32f4xx.d -I.  -ISTM32F4-Discovery  -ILibraries/CMSIS/ST/STM32F4xx/Include/  -ILibraries/CMSIS/Include/  -ILibraries/STM32F4xx_StdPeriph_Driver/inc/ startup_stm32f4xx.s -o out/startup_stm32f4xx.o
process_begin: CreateProcess(NULL, as -c -mcpu=cortex-m4 -mthumb -g -ggdb3 -Wa,-amhls=out/startup_stm32f4xx.lst -DUSE_STDPERIPH_DRIVER -DSTM32F4XX -DUSE_STM32F4_DISCOVERY -DHSEVALUE=8000000 -MD -MP -MF out/startup_stm32f4xx.d -I. -ISTM32F4-Discovery -ILibraries/CMSIS/ST/STM32F4xx/Include/ -ILibraries/CMSIS/Include/ -ILibraries/STM32F4xx_StdPeriph_Driver/inc/ startup_stm32f4xx.s -o out/startup_stm32f4xx.o, ...) failed.
make (e=2): Het systeem kan het opgegeven bestand niet vinden.
 
make: *** [out/startup_stm32f4xx.o] Error 2
 
22:12:22 Build Finished (took 534ms)

what could be wrong. the file startup_stm32f4.S is in the root dir of the project map, same dir as makefile is in.


this is what i have made of the make file 
#=============================================================================#
# project configuration
#=============================================================================#
 
# project name
PROJECT = rs232
 
# core type
CORE = cortex-m4
 
# linker script
LD_SCRIPT = stm32f4xx.ld
 
# output folder (absolute or relative path, leave empty for in-tree compilation)
OUT_DIR = out
 
# global definitions for C++, C and ASM (e.g. "symbol_with_value=0xDEAD symbol_without_value")
GLOBAL_DEFS = USE_STDPERIPH_DRIVER STM32F4XX USE_STM32F4_DISCOVERY HSEVALUE=8000000
 
# C++ definitions
CXX_DEFS =
# C definitions
C_DEFS =
 
# ASM definitions
AS_DEFS =
 
# include directories (absolute or relative paths to additional folders with
# headers, current folder is always included)
INC_DIRS = STM32F4-Discovery Libraries/CMSIS/ST/STM32F4xx/Include/ Libraries/CMSIS/Include/ Libraries/STM32F4xx_StdPeriph_Driver/inc/
 
# library directories (absolute or relative paths to additional folders with
# libraries)
LIB_DIRS =
 
# libraries (additional libraries for linking, e.g. "-lm -lsome_name" to link
# math library libm.a and libsome_name.a)
LIBS =
 
# additional directories with source files (absolute or relative paths to
# folders with source files, current folder is always included)
SRCS_DIRS = STM32F4-Discovery Libraries/STM32F4xx_StdPeriph_Driver/src/
 
# extension of C++ files
CXX_EXT = cpp
 
# wildcard for C++ source files (all files with CXX_EXT extension found in
# current folder and SRCS_DIRS folders will be compiled and linked)
CXX_SRCS = $(wildcard $(patsubst %, %/*.$(CXX_EXT), . $(SRCS_DIRS)))
 
# extension of C files
C_EXT = c
 
# wildcard for C source files (all files with C_EXT extension found in current
# folder and SRCS_DIRS folders will be compiled and linked)
C_SRCS = $(wildcard $(patsubst %, %/*.$(C_EXT), . $(SRCS_DIRS)))
 
# extension of ASM files
AS_EXT = s
 
# wildcard for ASM source files (all files with AS_EXT extension found in
# current folder and SRCS_DIRS folders will be compiled and linked)
AS_SRCS = $(wildcard $(patsubst %, %/*.$(AS_EXT), . $(SRCS_DIRS)))
 
# optimization flags ("-O0" - no optimization, "-O1" - optimize, "-O2" -
# optimize even more, "-Os" - optimize for size or "-O3" - optimize yet more)
OPTIMIZATION = -Os
 
# set to 1 to optimize size by removing unused code and data during link phase
REMOVE_UNUSED = 1
 
# set to 1 to compile and link additional code required for C++
USES_CXX = 0
 
# define warning options here
CXX_WARNINGS = -Wall -Wextra
C_WARNINGS = -Wall -Wstrict-prototypes -Wextra
 
# C++ language standard ("c++98", "gnu++98" - default, "c++0x", "gnu++0x")
CXX_STD = gnu++98
 
# C language standard ("c89" / "iso9899:1990", "iso9899:199409",
# "c99" / "iso9899:1999", "gnu89" - default, "gnu99")
C_STD = gnu89
 
#=============================================================================#
# set the VPATH according to SRCS_DIRS
#=============================================================================#
 
VPATH = $(SRCS_DIRS)
 
#=============================================================================#
# when using output folder, append trailing slash to its name
#=============================================================================#
 
ifeq ($(strip $(OUT_DIR)), )
    OUT_DIR_F =
else
    OUT_DIR_F = $(strip $(OUT_DIR))/
endif
 
#=============================================================================#
# various compilation flags
#=============================================================================#
 
# core flags
CORE_FLAGS = -mcpu=$(CORE) -mthumb
 
# flags for C++ compiler
CXX_FLAGS = -std=$(CXX_STD) -g -ggdb3 -fno-rtti -fno-exceptions -fverbose-asm -Wa,-ahlms=$(OUT_DIR_F)$(notdir $(<:.$(CXX_EXT)=.lst))
 
# flags for C compiler
C_FLAGS = -std=$(C_STD) -g -ggdb3 -fverbose-asm -Wa,-ahlms=$(OUT_DIR_F)$(notdir $(<:.$(C_EXT)=.lst))
 
# flags for assembler
AS_FLAGS = -g -ggdb3 -Wa,-amhls=$(OUT_DIR_F)$(notdir $(<:.$(AS_EXT)=.lst))
 
# flags for linker
LD_FLAGS = -T$(LD_SCRIPT) -g -Wl,-Map=$(OUT_DIR_F)$(PROJECT).map,--cref,--no-warn-mismatch
 
# process option for removing unused code
ifeq ($(REMOVE_UNUSED), 1)
    LD_FLAGS += -Wl,--gc-sections
    OPTIMIZATION += -ffunction-sections -fdata-sections
endif
 
# if __USES_CXX is defined for ASM then code for global/static constructors /
# destructors is compiled; if -nostartfiles option for linker is added then C++
# initialization / finalization code is not linked
ifeq ($(USES_CXX), 1)
    AS_DEFS += __USES_CXX
else
    LD_FLAGS += -nostartfiles
endif
 
#=============================================================================#
# do some formatting
#=============================================================================#
 
CXX_OBJS = $(addprefix $(OUT_DIR_F), $(notdir $(CXX_SRCS:.$(CXX_EXT)=.o)))
C_OBJS = $(addprefix $(OUT_DIR_F), $(notdir $(C_SRCS:.$(C_EXT)=.o)))
AS_OBJS = $(addprefix $(OUT_DIR_F), $(notdir $(AS_SRCS:.$(AS_EXT)=.o)))
OBJS = $(AS_OBJS) $(C_OBJS) $(CXX_OBJS) $(USER_OBJS)
DEPS = $(OBJS:.o=.d)
INC_DIRS_F = -I. $(patsubst %, -I%, $(INC_DIRS))
LIB_DIRS_F = $(patsubst %, -L%, $(LIB_DIRS))
GLOBAL_DEFS_F = $(patsubst %, -D%, $(GLOBAL_DEFS))
CXX_DEFS_F = $(patsubst %, -D%, $(CXX_DEFS))
C_DEFS_F = $(patsubst %, -D%, $(C_DEFS))
AS_DEFS_F = $(patsubst %, -D%, $(AS_DEFS))
 
ELF = $(OUT_DIR_F)$(PROJECT).elf
HEX = $(OUT_DIR_F)$(PROJECT).hex
BIN = $(OUT_DIR_F)$(PROJECT).bin
LSS = $(OUT_DIR_F)$(PROJECT).lss
DMP = $(OUT_DIR_F)$(PROJECT).dmp
 
# format final flags for tools, request dependancies for C++, C and asm
CXX_FLAGS_F = $(CORE_FLAGS) $(OPTIMIZATION) $(CXX_WARNINGS) $(CXX_FLAGS) $(GLOBAL_DEFS_F) $(CXX_DEFS_F) -MD -MP -MF $(OUT_DIR_F)$(@F:.o=.d) $(INC_DIRS_F)
C_FLAGS_F = $(CORE_FLAGS) $(OPTIMIZATION) $(C_WARNINGS) $(C_FLAGS) $(GLOBAL_DEFS_F) $(C_DEFS_F) -MD -MP -MF $(OUT_DIR_F)$(@F:.o=.d) $(INC_DIRS_F)
AS_FLAGS_F = $(CORE_FLAGS) $(AS_FLAGS) $(GLOBAL_DEFS_F) $(AS_DEFS_F) -MD -MP -MF $(OUT_DIR_F)$(@F:.o=.d) $(INC_DIRS_F)
LD_FLAGS_F = $(CORE_FLAGS) $(LD_FLAGS) $(LIB_DIRS_F)
 
#contents of output directory
GENERATED = $(wildcard $(patsubst %, $(OUT_DIR_F)*.%, bin d dmp elf hex lss lst map o))
 
#=============================================================================#
# make all
#=============================================================================#
 
all : make_output_dir $(ELF) $(LSS) $(DMP) $(HEX) $(BIN) print_size
 
# make object files dependent on Makefile
$(OBJS) : Makefile
# make .elf file dependent on linker script
$(ELF) : $(LD_SCRIPT)
 
#-----------------------------------------------------------------------------#
# linking - objects -> elf
#-----------------------------------------------------------------------------#
 
$(ELF) : $(OBJS)
    @echo 'Linking target: $(ELF)'
    $(CXX) $(LD_FLAGS_F) $(OBJS) $(LIBS) -o $@
    @echo ' '
 
#-----------------------------------------------------------------------------#
# compiling - C++ source -> objects
#-----------------------------------------------------------------------------#
 
$(OUT_DIR_F)%.o : %.$(CXX_EXT)
    @echo 'Compiling file: $<'
    $(CXX) -c $(CXX_FLAGS_F) $< -o $@
    @echo ' '
 
#-----------------------------------------------------------------------------#
# compiling - C source -> objects
#-----------------------------------------------------------------------------#
 
$(OUT_DIR_F)%.o : %.$(C_EXT)
    @echo 'Compiling file: $<'
    $(CC) -c $(C_FLAGS_F) $< -o $@
    @echo ' '
 
#-----------------------------------------------------------------------------#
# assembling - ASM source -> objects
#-----------------------------------------------------------------------------#
 
$(OUT_DIR_F)%.o : %.$(AS_EXT)
    @echo 'Assembling file: $<'
    $(AS) -c $(AS_FLAGS_F) $< -o $@
    @echo ' '
 
#-----------------------------------------------------------------------------#
# memory images - elf -> hex, elf -> bin
#-----------------------------------------------------------------------------#
 
$(HEX) : $(ELF)
    @echo 'Creating IHEX image: $(HEX)'
    $(OBJCOPY) -O ihex $< $@
    @echo ' '
 
$(BIN) : $(ELF)
    @echo 'Creating binary image: $(BIN)'
    $(OBJCOPY) -O binary $< $@
    @echo ' '
 
#-----------------------------------------------------------------------------#
# memory dump - elf -> dmp
#-----------------------------------------------------------------------------#
 
$(DMP) : $(ELF)
    @echo 'Creating memory dump: $(DMP)'
    $(OBJDUMP) -x --syms $< > $@
    @echo ' '
 
#-----------------------------------------------------------------------------#
# extended listing - elf -> lss
#-----------------------------------------------------------------------------#
 
$(LSS) : $(ELF)
    @echo 'Creating extended listing: $(LSS)'
    $(OBJDUMP) -S $< > $@
    @echo ' '
 
#-----------------------------------------------------------------------------#
# print the size of the objects and the .elf file
#-----------------------------------------------------------------------------#
 
print_size :
    @echo 'Size of modules:'
    $(SIZE) -B -t --common $(OBJS) $(USER_OBJS)
    @echo ' '
    @echo 'Size of target .elf file:'
    $(SIZE) -B $(ELF)
    @echo ' '
 
#-----------------------------------------------------------------------------#
# create the desired output directory
#-----------------------------------------------------------------------------#
 
make_output_dir :
    $(shell mkdir $(OUT_DIR_F) 2>/dev/null)
 
#=============================================================================#
# make clean
#=============================================================================#
 
clean:
ifeq ($(strip $(OUT_DIR_F)), )
    @echo 'Removing all generated output files'
else
    @echo 'Removing all generated output files from output directory: $(OUT_DIR_F)'
endif
ifneq ($(strip $(GENERATED)), )
    $(RM) $(GENERATED)
else
    @echo 'Nothing to remove...'
endif
 
#=============================================================================#
# global exports
#=============================================================================#
 
.PHONY: all clean dependents
 
.SECONDARY:
 
# include dependancy files
-include $(DEPS)

Outcomes