summaryrefslogtreecommitdiffstats
path: root/libopencm3/mk/README
diff options
context:
space:
mode:
Diffstat (limited to 'libopencm3/mk/README')
-rw-r--r--libopencm3/mk/README119
1 files changed, 119 insertions, 0 deletions
diff --git a/libopencm3/mk/README b/libopencm3/mk/README
new file mode 100644
index 0000000..59efbbb
--- /dev/null
+++ b/libopencm3/mk/README
@@ -0,0 +1,119 @@
+-------------------------------------------------------------------------------
+README
+-------------------------------------------------------------------------------
+
+ This directory contains makefile modular support files, that can be used in
+your project.
+
+ Each module is packaged with two inclusion makefiles, <module>-config.mk and
+<module>-rules.mk. The first one defines some new variables for the make, or
+appends values to the existing variables for the make. The second defines rules
+for support building.
+
+ So in your project, the <module>-config.mk should be included at some place,
+where you are defining variables (near the beginning of the file), and file
+<module>-rules.mk should be included in the rules part of makefile (somewhere
+near to the end of file).
+
+Example makefile using gcc compiler module:
+
+>>>>>>
+OBJS += foo.o bar.o
+
+CFLAGS += -O0 -g
+CPPFLAGS += -MD -MP $(@F).d
+CPPFLAGS += $(DEFS)
+CPPFLAGS += $(INCS)
+LDFLAGS += --static --nostartfiles
+LDLIBS += -Wl,--start-group -lc -lgcc -lnosys -Wl,--end-group
+# parameters for gcc module
+PREFIX = arm-elf
+
+include $(OPENCM3_DIR)/mk/gcc-config.mk
+
+.PHONY: clean all
+
+all: binary.images
+
+%.images: %.elf %.hex
+
+include $(OPENCM3_DIR)/mk/gcc-rules.mk
+
+clean:
+ $(Q)$(RM) -rf binary.* *.o *.d
+
+-include $(OBJS:.o=.d)
+<<<<<<
+
+
+MODULES
+=======
+
+-------------------------------------------------------------------------------
+gcc
+-------------------------------------------------------------------------------
+
+ This module adds an extended support for GCC toolchain. This adds rules,
+neccessary for compiling C and C++ files into elf binary, and rules for
+generation of bin, hex, or srec output files for flashing.
+
+Variables to control the build process (should be set in your makefile):
+------------------------------------------------------------------------
+
+CFLAGS C compiler flags
+CXXFLAGS C++ compiler flags
+CPPFLAGS C preprocessor flags (used for C and for C++ compiler)
+LDFLAGS Linker flags
+ARCH_FLAGS Architecture specification flags (-mcpu, -march etc )
+
+Variables to tell gcc about project dependencies and input files
+----------------------------------------------------------------
+
+LDSCRIPT Linker script file name (can be generated or fixed)
+LIBDEPS Array of library filenames that shoud be rebuilt if needed
+LDLIBS Array of libraries to be linked with (array of -l<libname>)
+OBJS Array of object files to be built
+
+
+-------------------------------------------------------------------------------
+genlink
+-------------------------------------------------------------------------------
+
+ This module adds an support for the user to the linker script generator. The
+linker script will be generated as the file $(DEVICE).ld in the project folder,
+and automatically used for the linking process.
+
+Variables to control the build process (should be set in your makefile):
+------------------------------------------------------------------------
+
+DEVICE The full device part name used for the compilation process.
+OPENCM3_DIR The root path of libopencm3 library.
+
+Output variables from this module:
+----------------------------------
+
+DEFS (appended)
+ - Appended definitions specified in chip database file.
+ ! Ensure that you have line 'CPPFLAGS += $(DEFS)' in your makefile.
+
+ARCH_FLAGS (replaced)
+ - Architecture build flags for specified chip.
+ * No needed to handle this variable if you use module <gcc> too.
+
+LDSCRIPT (replaced)
+ - Linker script generated file.
+ * No needed to handle this variable if you use module <gcc> too.
+
+OPENCM3_LIBNAME (replaced)
+ - The right libopencm3 library base name to be linked with.
+ ! Ensure that you have line 'LDLIBS += -l$(OPENCM3_LIBNAME)' in your makefile.
+ ! Ensure that you have line 'LDFLAGS += -L$(OPENCM3_DIR)/lib' in your makefile.
+ ! Ensure that you have rule '$(OPENCM3_DIR)/lib/lib$(OPENCM3_LIBNAME).a:'
+ to be the library archive succesfully built when needed.
+
+Temporary variables that you should not use in your makefile:
+-------------------------------------------------------------
+
+GENLINK_DEFS
+GENLINK_ARCH
+GENLINK_LIB