Use make flags to help control where the library is installed
Where the library is installed has quite an affect on what -L and -I flags are used. If you install into the toolchain, you don't want to use them at all, but if you install out of tree (/opt/mycm3 for example) you need to specify the -L and -I flags. Update the documentation and the example makefiles to support this
This commit is contained in:
parent
507a1742dc
commit
f1f1aa84f3
6
Makefile
6
Makefile
@ -19,7 +19,13 @@
|
|||||||
|
|
||||||
PREFIX ?= arm-none-eabi
|
PREFIX ?= arm-none-eabi
|
||||||
#PREFIX ?= arm-elf
|
#PREFIX ?= arm-elf
|
||||||
|
|
||||||
|
ifeq ($(DETECT_TOOLCHAIN),)
|
||||||
DESTDIR ?= /usr/local
|
DESTDIR ?= /usr/local
|
||||||
|
else
|
||||||
|
DESTDIR ?= $(shell dirname $(shell readlink -f $(shell which $(PREFIX)-gcc)))/..
|
||||||
|
endif
|
||||||
|
|
||||||
INCDIR = $(DESTDIR)/$(PREFIX)/include
|
INCDIR = $(DESTDIR)/$(PREFIX)/include
|
||||||
LIBDIR = $(DESTDIR)/$(PREFIX)/lib
|
LIBDIR = $(DESTDIR)/$(PREFIX)/lib
|
||||||
SHAREDIR = $(DESTDIR)/$(PREFIX)/share/libopencm3/scripts
|
SHAREDIR = $(DESTDIR)/$(PREFIX)/share/libopencm3/scripts
|
||||||
|
24
README
24
README
@ -48,7 +48,8 @@ Example projects
|
|||||||
|
|
||||||
The library ships with a few small example projects which illustrate how
|
The library ships with a few small example projects which illustrate how
|
||||||
individual subsystems of the microcontrollers can be configured and used with
|
individual subsystems of the microcontrollers can be configured and used with
|
||||||
libopencm3.
|
libopencm3. The makefiles are generally useable for your own projects with
|
||||||
|
only minimal changes for the libopencm3 install path (See Installation)
|
||||||
|
|
||||||
For flashing the 'miniblink' example (after you built libopencm3 and the
|
For flashing the 'miniblink' example (after you built libopencm3 and the
|
||||||
examples by typing 'make' at the top-level directory) onto the Olimex
|
examples by typing 'make' at the top-level directory) onto the Olimex
|
||||||
@ -79,16 +80,23 @@ Installation
|
|||||||
|
|
||||||
$ make install
|
$ make install
|
||||||
|
|
||||||
This will install the library in /usr/local. If you want to install it
|
This will install the library into /usr/local. (permissions permitting)
|
||||||
elsewhere, use the following syntax:
|
|
||||||
|
|
||||||
$ DESTDIR=/opt make install
|
If you want to install it elsewhere, use the following syntax:
|
||||||
|
|
||||||
The recommended location is to install into your toolchain directory, e.g.
|
$ make DESTDIR=/opt/libopencm3 install
|
||||||
/home/someuser/sat for a toolchain built using the summon-arm-toolchain
|
|
||||||
script from https://github.com/esden/summon-arm-toolchain.
|
|
||||||
|
|
||||||
$ DESTDIR=~/sat make install
|
If you want to attempt to install into your toolchain, use this:
|
||||||
|
|
||||||
|
$ make DETECT_TOOLCHAIN=1 install
|
||||||
|
|
||||||
|
Note: If you install this into your toolchain, you don't need to pass
|
||||||
|
any extra -L or -I flags into your projects. However, this also means
|
||||||
|
you must NOT pass any -L or -I flags that point into the toolchain. This
|
||||||
|
_will_ confuse the linker. (ie, for summon-arm-toolchain, do NOT pass
|
||||||
|
-L/home/user/sat/lib) Common symptoms of confusing
|
||||||
|
the linker are hard faults caused by branches into arm code.
|
||||||
|
You can use objdump to check for this in your final elf.
|
||||||
|
|
||||||
|
|
||||||
Coding style and development guidelines
|
Coding style and development guidelines
|
||||||
|
@ -45,6 +45,15 @@ LDFLAGS += --static -Wl,--start-group -lc -lgcc -lnosys -Wl,--end-group \
|
|||||||
-L$(TOOLCHAIN_DIR)/lib \
|
-L$(TOOLCHAIN_DIR)/lib \
|
||||||
-T$(LDSCRIPT) -nostartfiles -Wl,--gc-sections \
|
-T$(LDSCRIPT) -nostartfiles -Wl,--gc-sections \
|
||||||
$(ARCH_FLAGS) -mfix-cortex-m3-ldrd
|
$(ARCH_FLAGS) -mfix-cortex-m3-ldrd
|
||||||
|
|
||||||
|
ifneq ($(OPENCM3_DIR),)
|
||||||
|
CFLAGS += -I$(OPENCM3_DIR)/include
|
||||||
|
LDFLAGS += -L$(OPENCM3_DIR)/lib -L$(OPENCM3_DIR)/lib/stm32/f1
|
||||||
|
SCRIPT_DIR = $(OPENCM3_DIR)/share
|
||||||
|
else
|
||||||
|
SCRIPT_DIR = $(shell dirname $(shell readlink -f $(shell which $(PREFIX)-gcc)))/../$(PREFIX)/share
|
||||||
|
endif
|
||||||
|
|
||||||
OBJS += $(BINARY).o
|
OBJS += $(BINARY).o
|
||||||
|
|
||||||
OOCD ?= openocd
|
OOCD ?= openocd
|
||||||
@ -53,6 +62,9 @@ OOCD_BOARD ?= olimex_stm32_h103
|
|||||||
# Black magic probe specific variables
|
# Black magic probe specific variables
|
||||||
# Set the BMP_PORT to a serial port and then BMP is used for flashing
|
# Set the BMP_PORT to a serial port and then BMP is used for flashing
|
||||||
BMP_PORT ?=
|
BMP_PORT ?=
|
||||||
|
# texane/stlink can be used by uncommenting this...
|
||||||
|
# or defining it in your own makefiles
|
||||||
|
#STLINK_PORT ?= :4242
|
||||||
|
|
||||||
# Be silent per default, but 'make V=1' will show all compiler calls.
|
# Be silent per default, but 'make V=1' will show all compiler calls.
|
||||||
ifneq ($(V),1)
|
ifneq ($(V),1)
|
||||||
@ -107,6 +119,7 @@ clean:
|
|||||||
$(Q)rm -f *.srec
|
$(Q)rm -f *.srec
|
||||||
$(Q)rm -f *.list
|
$(Q)rm -f *.list
|
||||||
|
|
||||||
|
ifeq ($(STLINK_PORT),)
|
||||||
ifeq ($(BMP_PORT),)
|
ifeq ($(BMP_PORT),)
|
||||||
ifeq ($(OOCD_SERIAL),)
|
ifeq ($(OOCD_SERIAL),)
|
||||||
%.flash: %.hex
|
%.flash: %.hex
|
||||||
@ -140,6 +153,14 @@ else
|
|||||||
-x $(TOOLCHAIN_DIR)/scripts/black_magic_probe_flash.scr \
|
-x $(TOOLCHAIN_DIR)/scripts/black_magic_probe_flash.scr \
|
||||||
$(*).elf
|
$(*).elf
|
||||||
endif
|
endif
|
||||||
|
else
|
||||||
|
%.flash: %.elf
|
||||||
|
@echo " GDB $(*).elf (flash)"
|
||||||
|
$(Q)$(GDB) --batch \
|
||||||
|
-ex 'target extended-remote $(STLINK_PORT)' \
|
||||||
|
-x $(SCRIPT_DIR)/libopencm3/scripts/stlink_flash.scr \
|
||||||
|
$(*).elf
|
||||||
|
endif
|
||||||
|
|
||||||
.PHONY: images clean
|
.PHONY: images clean
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user