diff --git a/CMakeLists.txt b/CMakeLists.txt
index 61977f3bfb55d1414307b5fc8109ed8f1e27cb5c..b2751a2ae3ebc03c2b7be0f2ee528db57c0e2148 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -7,25 +7,29 @@ find_program(UNZIP_PATH unzip REQUIRED)
 find_program(MAKE_PATH NAMES make REQUIRED)
 find_program(PATCH_PATH NAMES patch REQUIRED)
 find_program(ENV_PATH NAMES env REQUIRED)
+find_program(SH_PATH NAMES sh REQUIRED)
 
 if(CMAKE_C_COMPILER MATCHES "mingw")
 	set(MAKE_FLAGS MINGW32_NT-6.1 OSNAME=win32)
-endif()
-
-if("$ENV{CMAKE_BUILD_PARALLEL_LEVEL}" STREQUAL "")
-	set(MAKE_FLAGS ${MAKE_FLAGS} -j 32)
+	set(BUILD_CMD ${MAKE_PATH} ${MAKE_FLAGS}
 else()
-	set(MAKE_FLAGS ${MAKE_FLAGS} -j $ENV{CMAKE_BUILD_PARALLEL_LEVEL})
+	if("$ENV{CMAKE_BUILD_PARALLEL_LEVEL}" STREQUAL "")
+		set(MAKE_FLAGS ${MAKE_FLAGS} -j 32)
+	else()
+		set(MAKE_FLAGS ${MAKE_FLAGS} -j $ENV{CMAKE_BUILD_PARALLEL_LEVEL})
+	endif()
+	set(BUILD_CMD ${ENV_PATH} - PATH=$ENV{PATH} ${CROSS_MAKE_ENV} ${MAKE_PATH} ${MAKE_FLAGS}
 endif()
 
+
 ExternalProject_Add(
 	CryptlibBuild
 	DOWNLOAD_COMMAND "${UNZIP_PATH}" -oa "${CMAKE_CURRENT_SOURCE_DIR}/dist/cryptlib.zip" -d "<SOURCE_DIR>"
 	UPDATE_COMMAND ""
 	CONFIGURE_COMMAND ""
-	PATCH_COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/patch.sh" "${CMAKE_CURRENT_SOURCE_DIR}" "<SOURCE_DIR>"
+	PATCH_COMMAND ${SH_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/patch.sh" "${CMAKE_CURRENT_SOURCE_DIR}" "<SOURCE_DIR>"
 	BUILD_IN_SOURCE TRUE
-	BUILD_COMMAND ${ENV_PATH} - PATH=$ENV{PATH} ${CROSS_MAKE_ENV} ${MAKE_PATH} ${MAKE_FLAGS}
+	BUILD_COMMAND ${BUILD_CMD}
 	# This is actually an install byproduct but hey... ¯\_(ツ)_/¯
 	BUILD_BYPRODUCTS ${Cryptlib_BINARY_DIR}/libcl.a
 	INSTALL_COMMAND cp "<SOURCE_DIR>/cryptlib.h" "<SOURCE_DIR>/libcl.a" ${Cryptlib_BINARY_DIR}