1
0
mirror of https://github.com/livingcomputermuseum/UniBone.git synced 2026-01-13 15:27:09 +00:00
Josh Dersch 311b5f48a7 Further RH11/RP0x implementation. Boots 2.11BSD then falls over; code is currently a tangly mess.
Started cleanup of old code that got mangled by someone running "indent" over it.  Ugh.
2020-01-25 03:09:49 +01:00

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]