# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0

#####################################################################
#
# THIS IS A TEMPORARY SOLUTION
#
# Eventually, the software team is going to have a Meson-based flow
# for building OTBN software. When that exists, this code will go
# away.
#
#####################################################################

# A make fragment for assembling and linking the code snippets. This is
# included by ./Makefile, but can be included in other Makefiles too.
#
# The following variables must be set:
#
#    variable                      | description
#  --------------------------------+----------------------------------------
#    otbn-code-snippets-obj-dir    | Output directory for built objects
#    otbn-code-snippets-bin-dir    | Output directory for built binaries
#    otbn-code-snippets-util-dir   | Path to directory containing OTBN tooling
#
# The following variables may be set:
#
#    variable                      | description
#  --------------------------------+----------------------------------------
#    otbn-code-snippets-as         | Path to otbn-as (defaults to util dir)
#    otbn-code-snippets-ld         | Path to otbn-ld (defaults to util dir)
#
# The ugly "otbn-code-snippets-" prefix on variable names is so that this file
# can be included in other Makefiles without breaking anything.

ifndef otbn-code-snippets-obj-dir
$(error otbn-code-snippets-obj-dir not set.)
endif
ifndef otbn-code-snippets-bin-dir
$(error otbn-code-snippets-bin-dir not set.)
endif
ifndef otbn-code-snippets-util-dir
$(error otbn-code-snippets-util-dir not set.)
endif

# Default values for optional variables
otbn-code-snippets-as ?= $(otbn-code-snippets-util-dir)/otbn-as
otbn-code-snippets-ld ?= $(otbn-code-snippets-util-dir)/otbn-ld

# Get the list of all assembly files in this directory. Strip away directory
# and extension to get basenames (used for objects and binaries).
otbn-code-snippets-path      := $(dir $(realpath $(lastword $(MAKEFILE_LIST))))
otbn-code-snippets-asm-paths := $(wildcard $(otbn-code-snippets-path)*.s)
otbn-code-snippets-asm-basenames := $(notdir $(otbn-code-snippets-asm-paths))
otbn-code-snippets-basenames     := $(otbn-code-snippets-asm-basenames:.s=)

$(sort $(otbn-code-snippets-obj-dir) $(otbn-code-snippets-bin-dir)):
	mkdir -p $@

# Calculate lists of object and ELF files
otbn-code-snippets-objects := \
  $(foreach b,$(otbn-code-snippets-basenames),\
            $(otbn-code-snippets-obj-dir)/$(b).o)
otbn-code-snippets-elfs := \
  $(foreach b,$(otbn-code-snippets-basenames),\
            $(otbn-code-snippets-bin-dir)/$(b).elf)

# Define rules for assembling the source code to make objects
$(otbn-code-snippets-objects): \
  $(otbn-code-snippets-obj-dir)/%.o: \
  $(otbn-code-snippets-path)%.s $(otbn-code-snippets-as) \
   | $(otbn-code-snippets-obj-dir)
	$(otbn-code-snippets-as) -o $@ $<

# Define rules for linking objects to make ELFs
$(otbn-code-snippets-elfs): \
  $(otbn-code-snippets-bin-dir)/%.elf: \
  $(otbn-code-snippets-obj-dir)/%.o $(otbn-code-snippets-ld) \
   | $(otbn-code-snippets-bin-dir)
	$(otbn-code-snippets-ld) -o $@ $(otbn-ldflags) $< $(otbn-libs)

#
# Define any file-specific flags or dependencies
#

# rsa_1024_dec_test depends on code defined in modexp.s
$(otbn-code-snippets-bin-dir)/rsa_1024_dec_test.elf: \
  $(otbn-code-snippets-obj-dir)/modexp.o
$(otbn-code-snippets-bin-dir)/rsa_1024_dec_test.elf: \
  otbn-libs += $(otbn-code-snippets-obj-dir)/modexp.o

# rsa_1024_enc_test depends on code defined in modexp.s
$(otbn-code-snippets-bin-dir)/rsa_1024_enc_test.elf: \
  $(otbn-code-snippets-obj-dir)/modexp.o
$(otbn-code-snippets-bin-dir)/rsa_1024_enc_test.elf: \
  otbn-libs += $(otbn-code-snippets-obj-dir)/modexp.o

# rsa_verify_test depends on code defined in rsa_verify.s
$(otbn-code-snippets-bin-dir)/rsa_verify_test.elf: \
  $(otbn-code-snippets-obj-dir)/rsa_verify.o
$(otbn-code-snippets-bin-dir)/rsa_verify_test.elf: \
  otbn-libs += $(otbn-code-snippets-obj-dir)/rsa_verify.o

# rsa_verify_test_exp3 depends on code defined in rsa_verify.s
$(otbn-code-snippets-bin-dir)/rsa_verify_test_exp3.elf: \
  $(otbn-code-snippets-obj-dir)/rsa_verify.o
$(otbn-code-snippets-bin-dir)/rsa_verify_test_exp3.elf: \
  otbn-libs += $(otbn-code-snippets-obj-dir)/rsa_verify.o

# p256 curve point test depends on p256init, p256isoncurve, defined in p256.s
$(otbn-code-snippets-bin-dir)/p256_curve_point_test.elf: \
  $(otbn-code-snippets-obj-dir)/p256.o
$(otbn-code-snippets-bin-dir)/p256_curve_point_test.elf: \
  otbn-libs += $(otbn-code-snippets-obj-dir)/p256.o

# p256 scalar mult test depends on p256init, p256scalarmult, defined in p256.s
$(otbn-code-snippets-bin-dir)/p256_scalar_mult_test.elf: \
  $(otbn-code-snippets-obj-dir)/p256.o
$(otbn-code-snippets-bin-dir)/p256_scalar_mult_test.elf: \
  otbn-libs += $(otbn-code-snippets-obj-dir)/p256.o

# p256 ECDSA sign test depends on p256init, p256sign, defined in p256.s
$(otbn-code-snippets-bin-dir)/p256_ecdsa_sign_test.elf: \
  $(otbn-code-snippets-obj-dir)/p256.o
$(otbn-code-snippets-bin-dir)/p256_ecdsa_sign_test.elf: \
  otbn-libs += $(otbn-code-snippets-obj-dir)/p256.o

# p256 ECDSA verify test depends on p256init, p256verify, defined in p256.s
$(otbn-code-snippets-bin-dir)/p256_ecdsa_verify_test.elf: \
  $(otbn-code-snippets-obj-dir)/p256.o
$(otbn-code-snippets-bin-dir)/p256_ecdsa_verify_test.elf: \
  otbn-libs += $(otbn-code-snippets-obj-dir)/p256.o

# p256_ecdsa depends on p256init, p256verify, p256sign, defined in p256.s
$(otbn-code-snippets-bin-dir)/p256_ecdsa.elf: \
  $(otbn-code-snippets-obj-dir)/p256.o
$(otbn-code-snippets-bin-dir)/p256_ecdsa.elf: \
  otbn-libs += $(otbn-code-snippets-obj-dir)/p256.o

# p256 point addition test depends on proj_add defined in p256.s
$(otbn-code-snippets-bin-dir)/p256_proj_add_test.elf: \
  $(otbn-code-snippets-obj-dir)/p256.o
$(otbn-code-snippets-bin-dir)/p256_proj_add_test.elf: \
  otbn-libs += $(otbn-code-snippets-obj-dir)/p256.o

# rsa depends on code defined in modexp.s
$(otbn-code-snippets-bin-dir)/rsa.elf: \
  $(otbn-code-snippets-obj-dir)/modexp.o
$(otbn-code-snippets-bin-dir)/rsa.elf: \
  otbn-libs += $(otbn-code-snippets-obj-dir)/modexp.o

# p384_proj_add_test depends on p384_proj_add defined in p384.s
$(otbn-code-snippets-bin-dir)/p384_proj_add_test.elf: \
  $(otbn-code-snippets-obj-dir)/p384_base.o
$(otbn-code-snippets-bin-dir)/p384_proj_add_test.elf: \
  otbn-libs += $(otbn-code-snippets-obj-dir)/p384_base.o

# code in p384_sign.s depends on code defined in p384_base.s
$(otbn-code-snippets-bin-dir)/p384_sign.elf: \
  $(otbn-code-snippets-obj-dir)/p384_base.o
$(otbn-code-snippets-bin-dir)/p384_sign.elf: \
  otbn-libs += $(otbn-code-snippets-obj-dir)/p384_base.o

# p384_scalar_mult_test depends on scalar_mult_p384 defined in p384_sign.s
$(otbn-code-snippets-bin-dir)/p384_scalar_mult_test.elf: \
  $(otbn-code-snippets-obj-dir)/p384_sign.o \
  $(otbn-code-snippets-obj-dir)/p384_base.o
$(otbn-code-snippets-bin-dir)/p384_scalar_mult_test.elf: \
  otbn-libs += $(otbn-code-snippets-obj-dir)/p384_sign.o \
               $(otbn-code-snippets-obj-dir)/p384_base.o

# p384_base_mult_test depends on p384_base_mult defined in p384_sign.s
$(otbn-code-snippets-bin-dir)/p384_base_mult_test.elf: \
  $(otbn-code-snippets-obj-dir)/p384_sign.o \
  $(otbn-code-snippets-obj-dir)/p384_base.o
$(otbn-code-snippets-bin-dir)/p384_base_mult_test.elf: \
  otbn-libs += $(otbn-code-snippets-obj-dir)/p384_sign.o \
               $(otbn-code-snippets-obj-dir)/p384_base.o

# p384_ecdsa_sign_test depends on p384_sign defined in p384_sign.s
$(otbn-code-snippets-bin-dir)/p384_ecdsa_sign_test.elf: \
  $(otbn-code-snippets-obj-dir)/p384_sign.o \
  $(otbn-code-snippets-obj-dir)/p384_base.o
$(otbn-code-snippets-bin-dir)/p384_ecdsa_sign_test.elf: \
  otbn-libs += $(otbn-code-snippets-obj-dir)/p384_sign.o \
               $(otbn-code-snippets-obj-dir)/p384_base.o

# code in p384_verify.s depends on code defined in p384_base.s
$(otbn-code-snippets-bin-dir)/p384_verify.elf: \
  $(otbn-code-snippets-obj-dir)/p384_base.o
$(otbn-code-snippets-bin-dir)/p384_verify.elf: \
  otbn-libs += $(otbn-code-snippets-obj-dir)/p384_base.o

# p384_ecdsa_verifiy_test depends on p384_verify defined in p384_verify.s
$(otbn-code-snippets-bin-dir)/p384_ecdsa_verify_test.elf: \
  $(otbn-code-snippets-obj-dir)/p384_verify.o \
  $(otbn-code-snippets-obj-dir)/p384_base.o
$(otbn-code-snippets-bin-dir)/p384_ecdsa_verify_test.elf: \
  otbn-libs += $(otbn-code-snippets-obj-dir)/p384_verify.o \
               $(otbn-code-snippets-obj-dir)/p384_base.o

# p384_isoncurve_test depends on p384_isoncurve defined in p384_verify.s
$(otbn-code-snippets-bin-dir)/p384_isoncurve_test.elf: \
  $(otbn-code-snippets-obj-dir)/p384_verify.o \
  $(otbn-code-snippets-obj-dir)/p384_base.o
$(otbn-code-snippets-bin-dir)/p384_isoncurve_test.elf: \
  otbn-libs += $(otbn-code-snippets-obj-dir)/p384_verify.o \
               $(otbn-code-snippets-obj-dir)/p384_base.o
