macro(append_to_parent_scope var)
  list(APPEND ${var} ${ARGN})
  set(${var} "${${var}}" PARENT_SCOPE)
endmacro()

function(add_perlasm_target dest src)
  get_filename_component(dir ${dest} DIRECTORY)
  if(dir STREQUAL "")
    set(dir ".")
  endif()

  add_custom_command(
    OUTPUT ${dest}
    COMMAND ${CMAKE_COMMAND} -E make_directory ${dir}
    COMMAND ${PERL_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/${src} ${ARGN}
            ${dest}
    DEPENDS
    ${src}
    ${PROJECT_SOURCE_DIR}/crypto/perlasm/arm-xlate.pl
    ${PROJECT_SOURCE_DIR}/crypto/perlasm/ppc-xlate.pl
    ${PROJECT_SOURCE_DIR}/crypto/perlasm/x86_64-xlate.pl
    ${PROJECT_SOURCE_DIR}/crypto/perlasm/x86asm.pl
    ${PROJECT_SOURCE_DIR}/crypto/perlasm/x86gas.pl
    ${PROJECT_SOURCE_DIR}/crypto/perlasm/x86masm.pl
    ${PROJECT_SOURCE_DIR}/crypto/perlasm/x86nasm.pl
    WORKING_DIRECTORY .
  )
endfunction()

# perlasm generates perlasm output from a given file. arch specifies the
# architecture. dest specifies the basename of the output file. The list of
# generated files will be appended to ${var}_ASM and ${var}_NASM depending on
# the assembler used.
function(perlasm var arch dest src)
  if(arch STREQUAL "aarch64")
    add_perlasm_target("${dest}-apple.S" ${src} ios64)
    add_perlasm_target("${dest}-linux.S" ${src} linux64)
    add_perlasm_target("${dest}-win.S" ${src} win64)
    append_to_parent_scope("${var}_ASM" "${dest}-apple.S" "${dest}-linux.S" "${dest}-win.S")
  elseif(arch STREQUAL "arm")
    add_perlasm_target("${dest}-apple.S" ${src} ios32)
    add_perlasm_target("${dest}-linux.S" ${src} linux32)
    append_to_parent_scope("${var}_ASM" "${dest}-apple.S" "${dest}-linux.S")
  elseif(arch STREQUAL "ppc64le")
    add_perlasm_target("${dest}-linux.S" ${src} linux64le)
    append_to_parent_scope("${var}_ASM" "${dest}-linux.S")
  elseif(arch STREQUAL "x86")
    add_perlasm_target("${dest}-apple.S" ${src} macosx -fPIC -DOPENSSL_IA32_SSE2)
    add_perlasm_target("${dest}-linux.S" ${src} elf -fPIC -DOPENSSL_IA32_SSE2)
    add_perlasm_target("${dest}-win.asm" ${src} win32n -DOPENSSL_IA32_SSE2)
    append_to_parent_scope("${var}_ASM" "${dest}-apple.S" "${dest}-linux.S")
    append_to_parent_scope("${var}_NASM" "${dest}-win.asm")
  elseif(arch STREQUAL "x86_64")
    add_perlasm_target("${dest}-apple.S" ${src} macosx)
    add_perlasm_target("${dest}-linux.S" ${src} elf)
    add_perlasm_target("${dest}-win.asm" ${src} nasm)
    append_to_parent_scope("${var}_ASM" "${dest}-apple.S" "${dest}-linux.S")
    append_to_parent_scope("${var}_NASM" "${dest}-win.asm")
  else()
    message(FATAL_ERROR "Unknown perlasm architecture: $arch")
  endif()
endfunction()
