diff --git a/Libraries/LibCompress/BrotliDictionary.cpp b/Libraries/LibCompress/BrotliDictionary.cpp index 93f245dde60..b972cf855bf 100644 --- a/Libraries/LibCompress/BrotliDictionary.cpp +++ b/Libraries/LibCompress/BrotliDictionary.cpp @@ -17,16 +17,22 @@ asm(".const_data\n" asm(".section .data, \"\",@\n" ".global brotli_dictionary_data\n" "brotli_dictionary_data:\n"); -#else +#elif !defined AK_OS_WINDOWS asm(".section .rodata\n" ".global brotli_dictionary_data\n" "brotli_dictionary_data:\n"); #endif -asm(".incbin \"" __FILE__ ".dict.bin\"\n" -#if (!defined(AK_OS_WINDOWS) && !defined(AK_OS_EMSCRIPTEN)) - ".previous\n"); +#ifdef AK_OS_WINDOWS +const +# include + ; // for clang-format #else +asm(".incbin \"" __FILE__ ".dict.bin\"\n" +# if (!defined(AK_OS_WINDOWS) && !defined(AK_OS_EMSCRIPTEN)) + ".previous\n"); +# else ); +# endif #endif namespace Compress { diff --git a/Libraries/LibCompress/CMakeLists.txt b/Libraries/LibCompress/CMakeLists.txt index e903a1ba5d8..fbaacc848e0 100644 --- a/Libraries/LibCompress/CMakeLists.txt +++ b/Libraries/LibCompress/CMakeLists.txt @@ -12,3 +12,20 @@ set(SOURCES serenity_lib(LibCompress compress) target_link_libraries(LibCompress PRIVATE LibCore LibCrypto) + +# FIXME: Get rid of this when #embed becomes available. +# Assuming xxd is available because it is part of the official git distro for Windows. +if (WIN32) + set(BINARY_FILE ${CMAKE_CURRENT_SOURCE_DIR}/BrotliDictionary.cpp.dict.bin) + set(HEADER_FILE ${CMAKE_CURRENT_BINARY_DIR}/BrotliDictionary.dict.h) + + add_custom_command( + OUTPUT ${HEADER_FILE} + COMMAND xxd -i -n brotli_dictionary_data ${BINARY_FILE} ${HEADER_FILE} + DEPENDS ${BINARY_FILE} + COMMENT "Generating ${HEADER_FILE} from ${BINARY_FILE}" + ) + + add_custom_target(GenerateHeader ALL DEPENDS ${HEADER_FILE}) + add_dependencies(LibCompress GenerateHeader) +endif()