include_directories(. ../include)

if (UNIX)
	set(PERLASM_STYLE elf)
	set(ASM_EXT S)
	enable_language(ASM)
else()
	if (CMAKE_CL_64)
		message("Using masm")
		set(PERLASM_STYLE masm)
	else()
		message("Using win32n")
		set(PERLASM_STYLE win32n)
	endif()
	set(ASM_EXT asm)
	enable_language(ASM_MASM)
endif()

function(perlasm dest src)
	add_custom_command(
		OUTPUT ${dest}
		COMMAND perl ${CMAKE_CURRENT_SOURCE_DIR}/${src} ${PERLASM_STYLE} ${ARGN} > ${dest}
		DEPENDS
		${src}
		${PROJECT_SOURCE_DIR}/crypto/perlasm/x86_64-xlate.pl
		${PROJECT_SOURCE_DIR}/crypto/perlasm/x86gas.pl
		${PROJECT_SOURCE_DIR}/crypto/perlasm/x86asm.pl
		${PROJECT_SOURCE_DIR}/crypto/perlasm/x86asm.pl
		WORKING_DIRECTORY .
	)
endfunction()

if (${ARCH} STREQUAL "x86_64")
	set(
		CRYPTO_ARCH_SOURCES

		cpu-x86_64-asm.${ASM_EXT}
		cpu-intel.c
	)
endif()

if (${ARCH} STREQUAL "x86")
	set(
		CRYPTO_ARCH_SOURCES

		cpu-x86-asm.${ASM_EXT}
		cpu-intel.c
	)
endif()

if (${ARCH} STREQUAL "arm")
	set(
		CRYPTO_ARCH_SOURCES

		cpu-x86-asm.${ASM_EXT}
		cpu-arm.c
	)
endif()

# Level 0.1 - depends on nothing outside this set.
add_subdirectory(stack)
add_subdirectory(lhash)
add_subdirectory(err)
add_subdirectory(buf)
add_subdirectory(comp)
add_subdirectory(base64)
add_subdirectory(bytestring)

# Level 0.2 - depends on nothing but itself
add_subdirectory(sha)
add_subdirectory(md5)
add_subdirectory(modes)
add_subdirectory(aes)
add_subdirectory(des)
add_subdirectory(rc4)
add_subdirectory(conf)
add_subdirectory(chacha)
add_subdirectory(poly1305)

# Level 1, depends only on 0.*
add_subdirectory(digest)
add_subdirectory(cipher)
add_subdirectory(rand)
add_subdirectory(bio)
add_subdirectory(bn)
add_subdirectory(obj)
add_subdirectory(asn1)

# Level 2
add_subdirectory(engine)
add_subdirectory(dh)
add_subdirectory(dsa)
add_subdirectory(rsa)
add_subdirectory(ec)
add_subdirectory(ecdh)
add_subdirectory(ecdsa)
add_subdirectory(hmac)

# Level 3
add_subdirectory(evp)
add_subdirectory(pem)
add_subdirectory(x509)
add_subdirectory(x509v3)

# Level 4
add_subdirectory(pkcs8)

add_library(
	crypto
	STATIC

	crypto_error.c
	mem.c
	mem_clear.c
	thread.c
	ex_data.c
	ex_data_impl.c
	time_support.c
	directory_posix.c
	directory_win.c

	${CRYPTO_ARCH_SOURCES}

	$<TARGET_OBJECTS:stack>
	$<TARGET_OBJECTS:lhash>
	$<TARGET_OBJECTS:err>
	$<TARGET_OBJECTS:comp>
	$<TARGET_OBJECTS:base64>
	$<TARGET_OBJECTS:bytestring>
	$<TARGET_OBJECTS:sha>
	$<TARGET_OBJECTS:md5>
	$<TARGET_OBJECTS:digest>
	$<TARGET_OBJECTS:cipher>
	$<TARGET_OBJECTS:modes>
	$<TARGET_OBJECTS:aes>
	$<TARGET_OBJECTS:des>
	$<TARGET_OBJECTS:rc4>
	$<TARGET_OBJECTS:conf>
	$<TARGET_OBJECTS:chacha>
	$<TARGET_OBJECTS:poly1305>
	$<TARGET_OBJECTS:buf>
	$<TARGET_OBJECTS:bn>
	$<TARGET_OBJECTS:bio>
	$<TARGET_OBJECTS:rand>
	$<TARGET_OBJECTS:obj>
	$<TARGET_OBJECTS:asn1>
	$<TARGET_OBJECTS:engine>
	$<TARGET_OBJECTS:dh>
	$<TARGET_OBJECTS:dsa>
	$<TARGET_OBJECTS:rsa>
	$<TARGET_OBJECTS:ec>
	$<TARGET_OBJECTS:ecdh>
	$<TARGET_OBJECTS:ecdsa>
	$<TARGET_OBJECTS:hmac>
	$<TARGET_OBJECTS:evp>
	$<TARGET_OBJECTS:pem>
	$<TARGET_OBJECTS:x509>
	$<TARGET_OBJECTS:x509v3>
	$<TARGET_OBJECTS:pkcs8>
)

perlasm(cpu-x86_64-asm.${ASM_EXT} cpu-x86_64-asm.pl)
perlasm(cpu-x86-asm.${ASM_EXT} cpu-x86-asm.pl)
