 +  source_group(whrlpool\\asm FILES ${whrlpool_asm_srcs})
 +  list(APPEND asm_srcs ${whrlpool_asm_srcs})
 +  ##########
-+  if(UNIX) # gcc can compile .s files with the C compiler
-+    set_property(SOURCE ${asm_srcs} PROPERTY LANGUAGE C)
-+  endif()
 +  list(APPEND ${lib_name}_libsrcs ${asm_srcs})
 +endif()
 +########################################

+DEFINE_LHASH_OF(FUNCTION);
diff --git a/crypto/CMakeLists.txt b/crypto/CMakeLists.txt
new file mode 100644
index 0000000000..e502a5785e
--- /dev/null
+++ b/crypto/CMakeLists.txt
@@ -0,0 +1,1811 @@
+set(lib_name crypto)
+########################################
+set(gen_file buildinf.h)

diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000000..df9ec9b66e
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,113 @@
+cmake_minimum_required(VERSION 3.20)
+project(openssl LANGUAGES C ASM)
+include(flags OPTIONAL)
+########################################
+set_property(GLOBAL PROPERTY USE_FOLDERS ON) # enables MSVC Solution Folders
