Update fp Makefile to generate softfloat

This commit is contained in:
Jordan Carlin 2024-09-28 20:20:06 -07:00
parent 7f0c2662b3
commit bf0c7fba95
No known key found for this signature in database

View File

@ -8,40 +8,57 @@
.NOTPARALLEL: .NOTPARALLEL:
.SECONDEXPANSION: .SECONDEXPANSION:
TESTFLOATS := ieee riscv DIR := $(shell pwd)
SOFTFLOAT_BUILD_DIR := ${WALLY}/addins/berkeley-softfloat-3/build/Linux-x86_64-GCC/
TESTFLOAT_BUILD_DIR := ${WALLY}/addins/berkeley-testfloat-3/build/Linux-x86_64-GCC/ # SoftFloat variables
SOFTFLOAT_DIR := ${WALLY}/addins/berkeley-softfloat-3
SOFTFLOAT_INCLUDE_DIR := source/include/
SOFTFLOAT_BUILD_DIR := build/Linux-x86_64-GCC/
SOFTFLOAT_ORIGINAL_BUILD_DIR := ${SOFTFLOAT_DIR}/${SOFTFLOAT_BUILD_DIR}
SOFTFLOAT_ORIGINAL_INCLUDE_DIR := ${SOFTFLOAT_DIR}/${SOFTFLOAT_INCLUDE_DIR}
SOFTFLOAT_LIB := softfloat.a
COPIED_SOFTFLOAT_LIB := softfloat/${SOFTFLOAT_BUILD_DIR}/${SOFTFLOAT_LIB}
ORIGINAL_SOFTFLOAT_LIB := ${SOFTFLOAT_ORIGINAL_BUILD_DIR}/${SOFTFLOAT_LIB}
# TestFloat variables
TESTFLOAT_DIR := ${WALLY}/addins/berkeley-testfloat-3
TESTFLOAT_BUILD_DIR := build/Linux-x86_64-GCC
TESTFLOAT_ORIGINAL_BUILD_DIR := ${TESTFLOAT_DIR}/${TESTFLOAT_BUILD_DIR}
TESTFLOAT_EXECUTABLES := testfloat testfloat_gen testfloat_ver testsoftfloat timesoftfloat TESTFLOAT_EXECUTABLES := testfloat testfloat_gen testfloat_ver testsoftfloat timesoftfloat
ORIGINAL_TESTFLOAT_EXECUTABLES := $(foreach item,${TESTFLOAT_EXECUTABLES},$(patsubst %,${TESTFLOAT_BUILD_DIR}%,${item})) ORIGINAL_TESTFLOAT_EXECUTABLES := $(foreach item,${TESTFLOAT_EXECUTABLES},$(patsubst %,${TESTFLOAT_ORIGINAL_BUILD_DIR}%,/${item}))
.PHONY: all ieee-softfloat riscv-softfloat ${TESTFLOATS} testfloat clean .PHONY: all ieee riscv clean
all: riscv ieee all: ieee riscv
${TESTFLOATS}: dir_$$@ $$@/testfloat_gen ieee riscv: ieee-testfloat #$$@/testfloat/${TESTFLOAT_BUILD_DIR}/testfloat
.PRECIOUS: %/testfloat_gen ieee-testfloat: ieee/testfloat/${TESTFLOAT_BUILD_DIR}/testfloat
%/testfloat_gen: ieee-softfloat: ieee/$(COPIED_SOFTFLOAT_LIB)
$(MAKE) $*-softfloat
$(MAKE) testfloat
cp -r ${ORIGINAL_TESTFLOAT_EXECUTABLES} $*/
ieee-softfloat: # .PRECIOUS: %/testfloat
$(MAKE) -C $(SOFTFLOAT_BUILD_DIR) clean %/testfloat/${TESTFLOAT_BUILD_DIR}/testfloat: %/$(COPIED_SOFTFLOAT_LIB)
$(MAKE) -C $(SOFTFLOAT_BUILD_DIR) $(MAKE) -C $(TESTFLOAT_ORIGINAL_BUILD_DIR) clean
$(MAKE) SOFTFLOAT_DIR=${DIR}/$*/softfloat -C $(TESTFLOAT_ORIGINAL_BUILD_DIR)
cp -r ${ORIGINAL_TESTFLOAT_EXECUTABLES} $*/testfloat/${TESTFLOAT_BUILD_DIR}/
$(MAKE) -C $(TESTFLOAT_ORIGINAL_BUILD_DIR) clean
riscv-softfloat: # Build specified version of SoftFloat, either IEEE or RISCV
$(MAKE) -C $(SOFTFLOAT_BUILD_DIR) clean riscv/$(COPIED_SOFTFLOAT_LIB): SPECIALIZE_TYPE = SPECIALIZE_TYPE=RISCV
$(MAKE) SPECIALIZE_TYPE=RISCV -C $(SOFTFLOAT_BUILD_DIR) %/$(COPIED_SOFTFLOAT_LIB): %/${SOFTFLOAT_INCLUDE_DIR}/softfloat.h
$(MAKE) -C $(SOFTFLOAT_ORIGINAL_BUILD_DIR) clean
$(MAKE) $(SPECIALIZE_TYPE) -C $(SOFTFLOAT_ORIGINAL_BUILD_DIR)
cp ${ORIGINAL_SOFTFLOAT_LIB} $*/${COPIED_SOFTFLOAT_LIB}
$(MAKE) -C $(SOFTFLOAT_ORIGINAL_BUILD_DIR) clean
testfloat: # Setup directories and link softfloat headers
$(MAKE) -C $(TESTFLOAT_BUILD_DIR) clean %/${SOFTFLOAT_INCLUDE_DIR}/softfloat.h:
$(MAKE) -C $(TESTFLOAT_BUILD_DIR) mkdir -p $*/softfloat/source/include
ln -sf ${SOFTFLOAT_ORIGINAL_INCLUDE_DIR}/* $*/softfloat/${SOFTFLOAT_INCLUDE_DIR}
dir_%: mkdir -p $*/softfloat/build/Linux-x86_64-GCC
mkdir -p $* mkdir -p $*/testfloat/${TESTFLOAT_BUILD_DIR}
clean: clean:
$(MAKE) -C $(SOFTFLOAT_BUILD_DIR) clean $(MAKE) -C $(SOFTFLOAT_ORIGINAL_BUILD_DIR) clean
$(MAKE) -C $(TESTFLOAT_BUILD_DIR) clean $(MAKE) -C $(TESTFLOAT_ORIGINAL_BUILD_DIR) clean
rm -f ieee/* riscv/* rm -rf ieee/* riscv/*