Skip to content

Commit

Permalink
Disable plugins which don't work on big endian when targeting BE
Browse files Browse the repository at this point in the history
This allows us to build on big endian without having to manually
disable problematic plugins.
  • Loading branch information
nemequ committed Sep 2, 2016
1 parent 3047884 commit a83aadf
Show file tree
Hide file tree
Showing 8 changed files with 21 additions and 1 deletion.
11 changes: 10 additions & 1 deletion cmake/SquashPlugin.cmake
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
include (AddCompilerFlags)
include (RequireStandard)
include (TestBigEndian)

function (SQUASH_PLUGIN)
set (options EXTRA_WARNINGS DEFAULT_DISABLED)
set (options EXTRA_WARNINGS DEFAULT_DISABLED NO_BIG_ENDIAN)
set (oneValueArgs NAME EXTERNAL_PKG EXTERNAL_PKG_PREFIX C_STANDARD CXX_STANDARD)
set (multiValueArgs SOURCES EMBED_SOURCES LIBRARIES LDFLAGS COMPILER_FLAGS EMBED_COMPILER_FLAGS INCLUDE_DIRS EMBED_INCLUDE_DIRS DEFINES EMBED_DEFINES ALLOW_UNDEFINED_DEFINES NO_UNDEFINED_DEFINES EMBED_TARGET)
cmake_parse_arguments(SQUASH_PLUGIN "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
Expand All @@ -19,6 +20,14 @@ function (SQUASH_PLUGIN)
option("ENABLE_${PLUGIN_NAME_UC}" "Enable ${SQUASH_PLUGIN_NAME} plugin" OFF)
endif ()

if (ENABLE_${PLUGIN_NAME_UC} AND SQUASH_PLUGIN_NO_BIG_ENDIAN)
test_big_endian(squash_plugin_is_be)
if(squash_plugin_is_be)
message(STATUS "${SQUASH_PLUGIN_NAME} not supported on big endian systems, disabling")
return()
endif()
endif()

if (NOT ENABLE_${PLUGIN_NAME_UC})
message(STATUS "${SQUASH_PLUGIN_NAME} plugin: disabled")
return ()
Expand Down
1 change: 1 addition & 0 deletions plugins/bsc/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ include (SquashPlugin)
squash_plugin (
NAME bsc
SOURCES squash-bsc.c
NO_BIG_ENDIAN
EMBED_SOURCES
libbsc/libbsc/bwt/divsufsort/divsufsort.c
libbsc/libbsc/adler32/adler32.cpp
Expand Down
1 change: 1 addition & 0 deletions plugins/gipfeli/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ include (SquashPlugin)

squash_plugin (
NAME gipfeli
NO_BIG_ENDIAN
SOURCES squash-gipfeli.cpp
CXX_STANDARD c++11
EMBED_SOURCES
Expand Down
1 change: 1 addition & 0 deletions plugins/lzfse/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ set_compiler_specific_flags(

squash_plugin (
NAME lzfse
NO_BIG_ENDIAN
SOURCES squash-lzfse.c
C_STANDARD c99
EMBED_SOURCES
Expand Down
5 changes: 5 additions & 0 deletions plugins/lzma/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,11 @@ else ()
list (APPEND lzma_embed_defines MYTHREAD_POSIX)
endif ()

test_big_endian(LZMA_IS_BIG_ENDIAN)
if(LZMA_IS_BIG_ENDIAN)
list (APPEND lzma_embed_defines "WORDS_BIGENDIAN")
endif(LZMA_IS_BIG_ENDIAN)

find_package(LZMA)

squash_plugin (
Expand Down
1 change: 1 addition & 0 deletions plugins/ncompress/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,6 @@ include (SquashPlugin)

squash_plugin (
NAME ncompress
NO_BIG_ENDIAN
SOURCES squash-ncompress.c
EMBED_SOURCES compress.c)
1 change: 1 addition & 0 deletions plugins/wflz/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ include (SquashPlugin)

squash_plugin (
NAME wflz
NO_BIG_ENDIAN
SOURCES squash-wflz.c
EMBED_SOURCES wflz/wfLZ.c
NO_UNDEFINED_DEFINES
Expand Down
1 change: 1 addition & 0 deletions plugins/zling/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ include (SquashPlugin)

squash_plugin (
NAME zling
NO_BIG_ENDIAN
SOURCES squash-zling.cpp
EMBED_SOURCES
libzling/src/libzling.cpp
Expand Down

0 comments on commit a83aadf

Please sign in to comment.