mirror of
https://github.com/EQEmu/Server.git
synced 2026-06-24 01:08:21 +00:00
[Library] Update zlibng (#1255)
* Update zlibng * Set cmake path more directly in zlibng to hopefully fix an issue with the build on drone * I'm dumb, missing / in path * Mackal helps with a dumb gitignore issue * Adding all the files, not sure what's ignoring them and im tired of looking * Some tweaks to zlibng build to hopefully get it to build properly. works on msvc now
This commit is contained in:
@@ -0,0 +1,188 @@
|
||||
if(TARGET)
|
||||
set(COMPRESS_TARGET ${TARGET})
|
||||
set(DECOMPRESS_TARGET ${TARGET})
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED INPUT OR NOT DEFINED COMPRESS_TARGET OR NOT DEFINED DECOMPRESS_TARGET)
|
||||
message(FATAL_ERROR "Compress test arguments missing")
|
||||
endif()
|
||||
|
||||
# Set default values
|
||||
if(NOT DEFINED COMPARE)
|
||||
set(COMPARE ON)
|
||||
endif()
|
||||
if(NOT DEFINED COMPRESS_ARGS)
|
||||
set(COMPRESS_ARGS -c -k)
|
||||
endif()
|
||||
if(NOT DEFINED DECOMPRESS_ARGS)
|
||||
set(DECOMPRESS_ARGS -d -c)
|
||||
endif()
|
||||
if(NOT DEFINED GZIP_VERIFY)
|
||||
set(GZIP_VERIFY ON)
|
||||
endif()
|
||||
if(NOT DEFINED SUCCESS_EXIT)
|
||||
set(SUCCESS_EXIT 0)
|
||||
endif()
|
||||
|
||||
# Generate unique output path so multiple tests can be executed at the same time
|
||||
if(NOT OUTPUT)
|
||||
# Output name based on input and unique id
|
||||
string(RANDOM UNIQUE_ID)
|
||||
set(OUTPUT ${INPUT}-${UNIQUE_ID})
|
||||
else()
|
||||
# Output name appends unique id in case multiple tests with same output name
|
||||
string(RANDOM LENGTH 6 UNIQUE_ID)
|
||||
set(OUTPUT ${OUTPUT}-${UNIQUE_ID})
|
||||
endif()
|
||||
string(REPLACE ".gz" "" OUTPUT "${OUTPUT}")
|
||||
|
||||
macro(cleanup)
|
||||
# Cleanup temporary mingizip files
|
||||
file(REMOVE ${OUTPUT}.gz ${OUTPUT}.out)
|
||||
# Cleanup temporary gzip files
|
||||
file(REMOVE ${OUTPUT}.gzip.gz ${OUTPUT}.gzip.out)
|
||||
endmacro()
|
||||
|
||||
# Compress input file
|
||||
if(NOT EXISTS ${INPUT})
|
||||
message(FATAL_ERROR "Cannot find compress input: ${INPUT}")
|
||||
endif()
|
||||
|
||||
set(COMPRESS_COMMAND ${COMPRESS_TARGET} ${COMPRESS_ARGS})
|
||||
|
||||
execute_process(COMMAND ${CMAKE_COMMAND}
|
||||
"-DCOMMAND=${COMPRESS_COMMAND}"
|
||||
-DINPUT=${INPUT}
|
||||
-DOUTPUT=${OUTPUT}.gz
|
||||
"-DSUCCESS_EXIT=${SUCCESS_EXIT}"
|
||||
-P ${CMAKE_CURRENT_LIST_DIR}/run-and-redirect.cmake
|
||||
RESULT_VARIABLE CMD_RESULT)
|
||||
|
||||
if(CMD_RESULT)
|
||||
cleanup()
|
||||
message(FATAL_ERROR "Compress failed: ${CMD_RESULT}")
|
||||
endif()
|
||||
|
||||
# Decompress output
|
||||
if(NOT EXISTS ${OUTPUT}.gz)
|
||||
cleanup()
|
||||
message(FATAL_ERROR "Cannot find decompress input: ${OUTPUT}.gz")
|
||||
endif()
|
||||
|
||||
set(DECOMPRESS_COMMAND ${DECOMPRESS_TARGET} ${DECOMPRESS_ARGS})
|
||||
|
||||
execute_process(COMMAND ${CMAKE_COMMAND}
|
||||
"-DCOMMAND=${DECOMPRESS_COMMAND}"
|
||||
-DINPUT=${OUTPUT}.gz
|
||||
-DOUTPUT=${OUTPUT}.out
|
||||
"-DSUCCESS_EXIT=${SUCCESS_EXIT}"
|
||||
-P ${CMAKE_CURRENT_LIST_DIR}/run-and-redirect.cmake
|
||||
RESULT_VARIABLE CMD_RESULT)
|
||||
|
||||
if(CMD_RESULT)
|
||||
cleanup()
|
||||
message(FATAL_ERROR "Decompress failed: ${CMD_RESULT}")
|
||||
endif()
|
||||
|
||||
if(COMPARE)
|
||||
# Compare decompressed output with original input file
|
||||
execute_process(COMMAND ${CMAKE_COMMAND}
|
||||
-E compare_files ${INPUT} ${OUTPUT}.out
|
||||
RESULT_VARIABLE CMD_RESULT)
|
||||
|
||||
if(CMD_RESULT)
|
||||
cleanup()
|
||||
message(FATAL_ERROR "Compare minigzip decompress failed: ${CMD_RESULT}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(GZIP_VERIFY AND NOT "${COMPRESS_ARGS}" MATCHES "-T")
|
||||
# Transparent writing does not use gzip format
|
||||
find_program(GZIP gzip)
|
||||
if(GZIP)
|
||||
if(NOT EXISTS ${OUTPUT}.gz)
|
||||
cleanup()
|
||||
message(FATAL_ERROR "Cannot find gzip decompress input: ${OUTPUT}.gz")
|
||||
endif()
|
||||
|
||||
# Check gzip can decompress our compressed output
|
||||
set(GZ_DECOMPRESS_COMMAND ${GZIP} --decompress)
|
||||
|
||||
execute_process(COMMAND ${CMAKE_COMMAND}
|
||||
"-DCOMMAND=${GZ_DECOMPRESS_COMMAND}"
|
||||
-DINPUT=${OUTPUT}.gz
|
||||
-DOUTPUT=${OUTPUT}.gzip.out
|
||||
"-DSUCCESS_EXIT=${SUCCESS_EXIT}"
|
||||
-P ${CMAKE_CURRENT_LIST_DIR}/run-and-redirect.cmake
|
||||
RESULT_VARIABLE CMD_RESULT)
|
||||
|
||||
if(CMD_RESULT)
|
||||
cleanup()
|
||||
message(FATAL_ERROR "Gzip decompress failed: ${CMD_RESULT}")
|
||||
endif()
|
||||
|
||||
# Compare gzip output with original input file
|
||||
execute_process(COMMAND ${CMAKE_COMMAND}
|
||||
-E compare_files ${INPUT} ${OUTPUT}.gzip.out
|
||||
RESULT_VARIABLE CMD_RESULT)
|
||||
|
||||
if(CMD_RESULT)
|
||||
cleanup()
|
||||
message(FATAL_ERROR "Compare gzip decompress failed: ${CMD_RESULT}")
|
||||
endif()
|
||||
|
||||
if(NOT EXISTS ${OUTPUT}.gz)
|
||||
cleanup()
|
||||
message(FATAL_ERROR "Cannot find gzip compress input: ${INPUT}")
|
||||
endif()
|
||||
|
||||
# Compress input file with gzip
|
||||
set(GZ_COMPRESS_COMMAND ${GZIP} --stdout)
|
||||
|
||||
execute_process(COMMAND ${CMAKE_COMMAND}
|
||||
"-DCOMMAND=${GZ_COMPRESS_COMMAND}"
|
||||
-DINPUT=${INPUT}
|
||||
-DOUTPUT=${OUTPUT}.gzip.gz
|
||||
"-DSUCCESS_EXIT=${SUCCESS_EXIT}"
|
||||
-P ${CMAKE_CURRENT_LIST_DIR}/run-and-redirect.cmake
|
||||
RESULT_VARIABLE CMD_RESULT)
|
||||
|
||||
if(CMD_RESULT)
|
||||
cleanup()
|
||||
message(FATAL_ERROR "Gzip compress failed: ${CMD_RESULT}")
|
||||
endif()
|
||||
|
||||
if(NOT EXISTS ${OUTPUT}.gz)
|
||||
cleanup()
|
||||
message(FATAL_ERROR "Cannot find minigzip decompress input: ${OUTPUT}.gzip.gz")
|
||||
endif()
|
||||
|
||||
# Check minigzip can decompress gzip compressed output
|
||||
execute_process(COMMAND ${CMAKE_COMMAND}
|
||||
"-DCOMMAND=${DECOMPRESS_COMMAND}"
|
||||
-DINPUT=${OUTPUT}.gzip.gz
|
||||
-DOUTPUT=${OUTPUT}.gzip.out
|
||||
"-DSUCCESS_EXIT=${SUCCESS_EXIT}"
|
||||
-P ${CMAKE_CURRENT_LIST_DIR}/run-and-redirect.cmake
|
||||
RESULT_VARIABLE CMD_RESULT)
|
||||
|
||||
if(CMD_RESULT)
|
||||
cleanup()
|
||||
message(FATAL_ERROR "Minigzip decompress gzip failed: ${CMD_RESULT}")
|
||||
endif()
|
||||
|
||||
if(COMPARE)
|
||||
# Compare original input file with gzip decompressed output
|
||||
execute_process(COMMAND ${CMAKE_COMMAND}
|
||||
-E compare_files ${INPUT} ${OUTPUT}.gzip.out
|
||||
RESULT_VARIABLE CMD_RESULT)
|
||||
|
||||
if(CMD_RESULT)
|
||||
cleanup()
|
||||
message(FATAL_ERROR "Compare minigzip decompress gzip failed: ${CMD_RESULT}")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
cleanup()
|
||||
Reference in New Issue
Block a user