CMake archive extract syntax

CMake 3.18 added file(ARCHIVE_EXTRACT), which is much more robust and easy to use than the prior syntax.

# recommended
file(ARCHIVE_EXTRACT ${archive} ${out_dir})

# older, less robust
file(MAKE_DIRECTORY ${out_dir})

execute_process(
COMMAND ${CMAKE_COMMAND} -E tar xf ${archive}
WORKING_DIRECTORY ${out_dir}
RESULT_VARIABLE ret
)
if(NOT ret EQUAL 0)
  message(FATAL_ERROR "extract ${archive} => ${out_dir}    ${ret}")
endif()