mirror of
https://github.com/livingcomputermuseum/UniBone.git
synced 2026-01-13 15:27:09 +00:00
368 lines
11 KiB
Makefile
368 lines
11 KiB
Makefile
# Inherited from
|
|
# http://mythopoeic.org/bbb-pru-minimal/
|
|
#
|
|
# modified for cross compile and remote debugging on BBB
|
|
|
|
PROG = demo
|
|
# UNIBONE_DIR from environment
|
|
UNIBONE_ROOT = $(UNIBONE_DIR)
|
|
|
|
PRU_PACKAGE_ROOT = $(UNIBONE_ROOT)/91_3rd_party/am335x_pru_package
|
|
|
|
COMMON_SRC_DIR= $(UNIBONE_ROOT)/90_common/src
|
|
SHARED_SRC_DIR= $(UNIBONE_ROOT)/10.01_base/2_src/shared
|
|
PRU0_BASE_SRC_DIR= $(UNIBONE_ROOT)/10.01_base/2_src/pru0
|
|
PRU1_BASE_SRC_DIR= $(UNIBONE_ROOT)/10.01_base/2_src/pru1
|
|
PRU_DEPLOY_DIR=$(UNIBONE_ROOT)/10.01_base/4_deploy
|
|
BASE_SRC_DIR= $(UNIBONE_ROOT)/10.01_base/2_src/arm
|
|
DEVICE_SRC_DIR= $(UNIBONE_ROOT)/10.02_devices/2_src
|
|
DEVEXER_SRC_DIR= $(UNIBONE_ROOT)/10.04_device_exerciser/2_src
|
|
|
|
# PRUSSDRV includes
|
|
PRUSS_INCLUDE_DIR = $(PRU_PACKAGE_ROOT)/include
|
|
# ARM LIBRARIES
|
|
PRUSS_DRV_LIB = $(PRU_PACKAGE_ROOT)/bin-bbb/libprussdrv.a
|
|
|
|
# -static: do not used shared libs, include all code into the binary
|
|
# (big binary, but BBB needs no shared libs of certain versions installed)
|
|
# Example: demo binary goes from 594K to 12.3MB !
|
|
LDFLAGS+= -static -lstdc++ -lpthread $(PRUSS_DRV_LIB)
|
|
|
|
# compiler flags and libraries
|
|
ifeq ($(MAKE_CONFIGURATION),RELEASE)
|
|
CC_DBG_FLAGS = -O3 -Wall -Wextra -DDBG
|
|
else ifeq ($(MAKE_CONFIGURATION),DBG)
|
|
CC_DBG_FLAGS = -ggdb3 -O0 -Wall -Wextra -DDBG
|
|
else
|
|
$(error Set MAKE_CONFIGURATION to RELEASE or DBG!)
|
|
endif
|
|
|
|
ifeq ($(MAKE_TARGET_ARCH),BBB)
|
|
# cross compile on x64 for BBB
|
|
CC=$(BBB_CC)
|
|
OS_CCDEFS = -DARM -U__STRICT_ANSI__
|
|
OBJDIR=$(abspath ../4_deploy)
|
|
else
|
|
# local compile on BBB
|
|
OS_CCDEFS = -DARM -U__STRICT_ANSI__
|
|
OBJDIR=$(abspath ../4_deploy)
|
|
endif
|
|
|
|
|
|
|
|
CCFLAGS= \
|
|
-std=c++11 \
|
|
-I$(PRUSS_INCLUDE_DIR) \
|
|
-I. \
|
|
-I$(SHARED_SRC_DIR) \
|
|
-I$(COMMON_SRC_DIR) \
|
|
-I$(BASE_SRC_DIR) \
|
|
-I$(DEVICE_SRC_DIR) \
|
|
-I$(DEVEXER_SRC_DIR) \
|
|
-I$(OBJDIR) \
|
|
-I$(PRU_DEPLOY_DIR) \
|
|
-c \
|
|
$(CCDEFS) $(CC_DBG_FLAGS) $(OS_CCDEFS)
|
|
# OBJDIR in includes because of $(PRU_CODE)
|
|
# no -std=c99
|
|
|
|
|
|
# PRU program code library. Binaries as C arrays
|
|
# ! Path to PRU_DEPLOY_DIR MUST NOT CONTAIn SPACES !
|
|
# ! dont use wildcards, as .../4_deply/.. may be empty !
|
|
PRU0_CODE_LIST= \
|
|
$(PRU_DEPLOY_DIR)/pru0_code_all_array.c
|
|
|
|
PRU1_CODE_LIST= \
|
|
$(PRU_DEPLOY_DIR)/pru1_code_unibus_array.c \
|
|
$(PRU_DEPLOY_DIR)/pru1_code_test_array.c
|
|
|
|
|
|
|
|
OBJECTS = $(OBJDIR)/application.o \
|
|
$(OBJDIR)/getopt2.o \
|
|
$(OBJDIR)/menus.o \
|
|
$(OBJDIR)/menu_gpio.o \
|
|
$(OBJDIR)/menu_panel.o \
|
|
$(OBJDIR)/menu_mailbox.o \
|
|
$(OBJDIR)/menu_buslatches.o \
|
|
$(OBJDIR)/menu_unibus_signals.o \
|
|
$(OBJDIR)/menu_masterslave.o \
|
|
$(OBJDIR)/menu_interrupts.o \
|
|
$(OBJDIR)/menu_ddrmem_slave_only.o \
|
|
$(OBJDIR)/menu_devices.o \
|
|
$(OBJDIR)/menu_device_exercisers.o \
|
|
$(OBJDIR)/devexer.o \
|
|
$(OBJDIR)/devexer_rl.o \
|
|
$(OBJDIR)/memoryimage.o \
|
|
$(OBJDIR)/cpu.o \
|
|
$(OBJDIR)/ka11.o \
|
|
$(OBJDIR)/rl0102.o \
|
|
$(OBJDIR)/rl11.o \
|
|
$(OBJDIR)/rk11.o \
|
|
$(OBJDIR)/rk05.o \
|
|
$(OBJDIR)/uda.o \
|
|
$(OBJDIR)/mscp_server.o \
|
|
$(OBJDIR)/mscp_drive.o \
|
|
$(OBJDIR)/rh11.o \
|
|
$(OBJDIR)/massbus_rp.o \
|
|
$(OBJDIR)/rp_drive.o \
|
|
$(OBJDIR)/rs232.o \
|
|
$(OBJDIR)/rs232adapter.o \
|
|
$(OBJDIR)/dl11w.o \
|
|
$(OBJDIR)/storagedrive.o \
|
|
$(OBJDIR)/storagecontroller.o \
|
|
$(OBJDIR)/demo_io.o \
|
|
$(OBJDIR)/testcontroller.o \
|
|
$(OBJDIR)/device.o \
|
|
$(OBJDIR)/unibusdevice.o \
|
|
$(OBJDIR)/unibuscpu.o \
|
|
$(OBJDIR)/parameter.o \
|
|
$(OBJDIR)/panel.o \
|
|
$(OBJDIR)/priorityrequest.o \
|
|
$(OBJDIR)/unibusadapter.o \
|
|
$(OBJDIR)/unibus.o \
|
|
$(OBJDIR)/gpios.o \
|
|
$(OBJDIR)/stringgrid.o \
|
|
$(OBJDIR)/mcout.o \
|
|
$(OBJDIR)/inputline.o \
|
|
$(OBJDIR)/kbhit.o \
|
|
$(OBJDIR)/bitcalc.o \
|
|
$(OBJDIR)/pru.o \
|
|
$(OBJDIR)/mailbox.o \
|
|
$(OBJDIR)/ddrmem.o \
|
|
$(OBJDIR)/iopageregister.o \
|
|
$(OBJDIR)/logsource.o \
|
|
$(OBJDIR)/logger.o \
|
|
$(OBJDIR)/utils.o \
|
|
$(OBJDIR)/compile_timestamp.o
|
|
|
|
# create needed directories
|
|
$(shell mkdir -p $(PRU_DEPLOY_DIR) $(OBJDIR))
|
|
|
|
# rule to print a variable.
|
|
# use: make print-VARIALBE
|
|
print-% : ; @echo $* = $($*)
|
|
|
|
|
|
|
|
all: $(OBJDIR)/$(PROG)
|
|
|
|
pru: $(PRU0_CODE_LIST) $(PRU1_CODE_LIST)
|
|
|
|
clean:
|
|
rm -f $(OBJDIR)/$(PROG) $(OBJECTS) $(OBJDIR)/* $(PRU_DEPLOY_DIR)/*
|
|
|
|
.PHONY: all pru clean
|
|
|
|
|
|
# TODO
|
|
# auto dependencies of header files
|
|
# http://scottmcpeak.com/autodepend/autodepend.html
|
|
# gcc -MM $(CCFLAGS) $< >$(OBJDIR)*.c > ***.d
|
|
|
|
# executable depends on its objects AND the PRU objects
|
|
$(OBJDIR)/$(PROG) : pru $(OBJECTS)
|
|
$(CC) -o $@ $(OBJECTS) $(LDFLAGS)
|
|
# force recompile on next build
|
|
rm -f $(OBJDIR)/compile_timestamp.o
|
|
file $@
|
|
|
|
|
|
$(OBJDIR)/application.o : application.cpp application.hpp $(PRU_DEPLOY_DIR)/$(PRU0_CODE) $(PRU_DEPLOY_DIR)/$(PRU1_CODE)
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
|
|
$(OBJDIR)/menus.o : menus.cpp application.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/menu_gpio.o : menu_gpio.cpp application.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/menu_panel.o : menu_panel.cpp application.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/menu_mailbox.o : menu_mailbox.cpp application.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/menu_buslatches.o : menu_buslatches.cpp application.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/menu_unibus_signals.o : menu_unibus_signals.cpp application.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/menu_masterslave.o : menu_masterslave.cpp application.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/menu_interrupts.o : menu_interrupts.cpp application.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/menu_devices.o : menu_devices.cpp application.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/menu_device_exercisers.o : menu_device_exercisers.cpp application.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/menu_ddrmem_slave_only.o : menu_ddrmem_slave_only.cpp application.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/memoryimage.o : $(BASE_SRC_DIR)/memoryimage.cpp $(BASE_SRC_DIR)/memoryimage.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/devexer.o : $(DEVEXER_SRC_DIR)/devexer.cpp $(DEVEXER_SRC_DIR)/devexer.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/devexer_rl.o : $(DEVEXER_SRC_DIR)/devexer_rl.cpp $(DEVEXER_SRC_DIR)/devexer_rl.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/cpu.o : $(DEVICE_SRC_DIR)/cpu.cpp $(DEVICE_SRC_DIR)/cpu.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/ka11.o : $(DEVICE_SRC_DIR)/cpu20/ka11.c $(DEVICE_SRC_DIR)/cpu20/ka11.h
|
|
$(CC) $(CCFLAGS) -x c++ -Wno-parentheses $< -o $@
|
|
|
|
$(OBJDIR)/rl0102.o : $(DEVICE_SRC_DIR)/rl0102.cpp $(DEVICE_SRC_DIR)/rl0102.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/rl11.o : $(DEVICE_SRC_DIR)/rl11.cpp $(DEVICE_SRC_DIR)/rl11.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/rk05.o : $(DEVICE_SRC_DIR)/rk05.cpp $(DEVICE_SRC_DIR)/rk05.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/rk11.o : $(DEVICE_SRC_DIR)/rk11.cpp $(DEVICE_SRC_DIR)/rk11.hpp
|
|
$(CC) $(CCFLAGS) -Wno-missing-field-initializers $< -o $@
|
|
|
|
$(OBJDIR)/uda.o : $(DEVICE_SRC_DIR)/uda.cpp $(DEVICE_SRC_DIR)/uda.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/mscp_server.o : $(DEVICE_SRC_DIR)/mscp_server.cpp $(DEVICE_SRC_DIR)/mscp_server.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/mscp_drive.o : $(DEVICE_SRC_DIR)/mscp_drive.cpp $(DEVICE_SRC_DIR)/mscp_drive.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/rh11.o : $(DEVICE_SRC_DIR)/rh11.cpp $(DEVICE_SRC_DIR)/rh11.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/massbus_device.o : $(DEVICE_SRC_DIR)/massbus_device.cpp $(DEVICE_SRC_DIR)/massbus_device.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/massbus_rp.o : $(DEVICE_SRC_DIR)/massbus_rp.cpp $(DEVICE_SRC_DIR)/massbus_rp.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/rp_drive.o : $(DEVICE_SRC_DIR)/rp_drive.cpp $(DEVICE_SRC_DIR)/rp_drive.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/rs232.o : $(DEVICE_SRC_DIR)/rs232.cpp $(DEVICE_SRC_DIR)/rs232.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/rs232adapter.o : $(DEVICE_SRC_DIR)/rs232adapter.cpp $(DEVICE_SRC_DIR)/rs232adapter.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/dl11w.o : $(DEVICE_SRC_DIR)/dl11w.cpp $(DEVICE_SRC_DIR)/dl11w.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/storagedrive.o : $(BASE_SRC_DIR)/storagedrive.cpp $(BASE_SRC_DIR)/storagedrive.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/storagecontroller.o : $(BASE_SRC_DIR)/storagecontroller.cpp $(BASE_SRC_DIR)/storagecontroller.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/demo_io.o : $(DEVICE_SRC_DIR)/demo_io.cpp $(DEVICE_SRC_DIR)/demo_io.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/testcontroller.o : $(DEVICE_SRC_DIR)/testcontroller.cpp $(DEVICE_SRC_DIR)/testcontroller.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/unibusdevice.o : $(BASE_SRC_DIR)/unibusdevice.cpp $(BASE_SRC_DIR)/unibusdevice.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/unibuscpu.o : $(BASE_SRC_DIR)/unibuscpu.cpp $(BASE_SRC_DIR)/unibuscpu.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/device.o : $(BASE_SRC_DIR)/device.cpp $(BASE_SRC_DIR)/device.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/parameter.o : $(BASE_SRC_DIR)/parameter.cpp $(BASE_SRC_DIR)/parameter.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/panel.o : $(DEVICE_SRC_DIR)/panel.cpp $(DEVICE_SRC_DIR)/panel.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/unibus.o : $(BASE_SRC_DIR)/unibus.cpp $(SHARED_SRC_DIR)/unibus.h
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/getopt2.o : $(COMMON_SRC_DIR)/getopt2.cpp $(COMMON_SRC_DIR)/getopt2.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/stringgrid.o : $(COMMON_SRC_DIR)/stringgrid.cpp $(COMMON_SRC_DIR)/stringgrid.hpp
|
|
$(CC) $(CCFLAGS) -xc++ $< -o $@
|
|
|
|
$(OBJDIR)/mcout.o : $(COMMON_SRC_DIR)/mcout.c $(COMMON_SRC_DIR)/mcout.h
|
|
$(CC) $(CCFLAGS) -xc++ $< -o $@
|
|
|
|
$(OBJDIR)/inputline.o : $(COMMON_SRC_DIR)/inputline.cpp $(COMMON_SRC_DIR)/inputline.hpp
|
|
$(CC) $(CCFLAGS) -xc++ $< -o $@
|
|
|
|
$(OBJDIR)/kbhit.o : $(COMMON_SRC_DIR)/kbhit.c $(COMMON_SRC_DIR)/kbhit.h
|
|
$(CC) $(CCFLAGS) -xc++ $< -o $@
|
|
|
|
$(OBJDIR)/bitcalc.o : $(COMMON_SRC_DIR)/bitcalc.cpp $(COMMON_SRC_DIR)/bitcalc.h
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/gpios.o : $(BASE_SRC_DIR)/gpios.cpp $(BASE_SRC_DIR)/gpios.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/logsource.o : $(COMMON_SRC_DIR)/logsource.cpp $(COMMON_SRC_DIR)/logsource.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/logger.o : $(COMMON_SRC_DIR)/logger.cpp $(COMMON_SRC_DIR)/logger.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/utils.o : $(BASE_SRC_DIR)/utils.cpp $(BASE_SRC_DIR)/utils.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/compile_timestamp.o : $(COMMON_SRC_DIR)/compile_timestamp.cpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/pru.o : $(BASE_SRC_DIR)/pru.cpp $(BASE_SRC_DIR)/pru.hpp $(PRU0_CODE_LIST) $(PRU1_CODE_LIST)
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
# files with PRU code and addresses
|
|
$(OBJDIR)/pru0_config.o : $(PRU_DEPLOY_DIR)/$(PRU0_CODE)
|
|
$(CC) $(CCFLAGS) -xc++ $< -o $@
|
|
|
|
$(OBJDIR)/pru1_config.o : $(PRU_DEPLOY_DIR)/$(PRU1_CODE)
|
|
$(CC) $(CCFLAGS) -xc++ $< -o $@
|
|
|
|
$(OBJDIR)/mailbox.o : $(BASE_SRC_DIR)/mailbox.cpp $(SHARED_SRC_DIR)/mailbox.h
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/ddrmem.o : $(BASE_SRC_DIR)/ddrmem.cpp $(SHARED_SRC_DIR)/ddrmem.h
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/iopageregister.o : $(BASE_SRC_DIR)/iopageregister.cpp $(SHARED_SRC_DIR)/iopageregister.h
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/priorityrequest.o : $(BASE_SRC_DIR)/priorityrequest.cpp $(BASE_SRC_DIR)/priorityrequest.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
$(OBJDIR)/unibusadapter.o : $(BASE_SRC_DIR)/unibusadapter.cpp $(BASE_SRC_DIR)/unibusadapter.hpp
|
|
$(CC) $(CCFLAGS) $< -o $@
|
|
|
|
# the binary images for each of the 2 PRUs is generated with the clpru compiler
|
|
# and converted to a C array source code by hexpru -- array
|
|
# $(SHARED_SRC_DIR)/*.h $(SHARED_SRC_DIR)/*.c
|
|
$(PRU0_CODE_LIST): $(PRU0_BASE_SRC_DIR)/*.h $(PRU0_BASE_SRC_DIR)/*.c $(SHARED_SRC_DIR)/*.h
|
|
$(MAKE) -C $(PRU0_BASE_SRC_DIR) $@
|
|
echo PRU0 codefile $@ created
|
|
# cp $(PRU_DEPLOY_DIR)/$(PRU0_CODE).[hc]
|
|
|
|
$(PRU1_CODE_LIST): $(PRU1_BASE_SRC_DIR)/*.h $(PRU1_BASE_SRC_DIR)/*.c $(SHARED_SRC_DIR)/*.h
|
|
$(MAKE) -C $(PRU1_BASE_SRC_DIR) $@
|
|
echo PRU1 codefile $@ created
|
|
# cp $(PRU_DEPLOY_DIR)/$(PRU0_CODE).[hc]
|
|
|
|
|