lol
at 18.09-beta 174 lines 5.4 kB view raw
1diff --git a/cmake/dependencies.cmake b/cmake/dependencies.cmake 2index ea133a3..916606c 100644 3--- a/cmake/dependencies.cmake 4+++ b/cmake/dependencies.cmake 5@@ -224,21 +224,23 @@ if(NOT USE_SYSTEM_XZ) 6 LIBRARY_DIRS <INSTALL_DIR>/lib/ 7 LIBRARIES "<INSTALL_DIR>/lib/liblzma.a" 8 INCLUDE_DIRS "<SOURCE_DIR>/src/liblzma/api/" 9 ) 10 else() 11 message(STATUS "Using system xz") 12 13 import_pkgconfig_target(TARGET_NAME xz PKGCONFIG_TARGET liblzma STATIC) 14 endif() 15 16+set(USE_SYSTEM_SQUASHFUSE OFF CACHE BOOL "Use system squashfuse instead of building our own") 17 18+if(NOT USE_SYSTEM_SQUASHFUSE) 19 # as distros don't provide suitable squashfuse and squashfs-tools, those dependencies are bundled in, can, and should 20 # be used from this repository 21 # TODO: implement out-of-source builds for squashfuse, as for the other dependencies 22 configure_file( 23 ${CMAKE_CURRENT_SOURCE_DIR}/src/patch-squashfuse.sh.in 24 ${CMAKE_CURRENT_BINARY_DIR}/patch-squashfuse.sh 25 @ONLY 26 ) 27 28 ExternalProject_Add(squashfuse-EXTERNAL 29@@ -259,20 +261,34 @@ ExternalProject_Add(squashfuse-EXTERNAL 30 BUILD_IN_SOURCE ON 31 INSTALL_COMMAND ${MAKE} install 32 ) 33 34 import_external_project( 35 TARGET_NAME squashfuse 36 EXT_PROJECT_NAME squashfuse-EXTERNAL 37 LIBRARIES "<SOURCE_DIR>/.libs/libsquashfuse.a;<SOURCE_DIR>/.libs/libsquashfuse_ll.a;<SOURCE_DIR>/.libs/libfuseprivate.a" 38 INCLUDE_DIRS "<SOURCE_DIR>" 39 ) 40+else() 41+ message(STATUS "Using system squashfsfuse from ${SQUASHFUSE}") 42+ 43+ add_library(squashfuse INTERFACE IMPORTED GLOBAL) 44+ 45+ set(squashfuse_INCLUDE_DIRS "${SQUASHFUSE}/include") 46+ set(squashfuse_LIBRARIES "${SQUASHFUSE}/lib/libsquashfuse.a;${SQUASHFUSE}/lib/libsquashfuse_ll.a;${SQUASHFUSE}/lib/libfuseprivate.a") 47+ 48+ set_property( 49+ TARGET squashfuse 50+ PROPERTY INTERFACE_LINK_LIBRARIES ${squashfuse_LIBRARIES} 51+ ) 52+ include_directories(${squashfuse_INCLUDE_DIRS}) 53+endif() 54 55 56 set(USE_SYSTEM_INOTIFY_TOOLS OFF CACHE BOOL "Use system libinotifytools instead of building our own") 57 58 if(NOT USE_SYSTEM_INOTIFY_TOOLS) 59 message(STATUS "Downloading and building inotify-tools") 60 61 # TODO: build out of source 62 ExternalProject_Add(inotify-tools-EXTERNAL 63 URL https://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz 64@@ -345,20 +361,23 @@ if(NOT USE_SYSTEM_GTEST) 65 INCLUDE_DIRS "<INSTALL_DIR>/include/" 66 ) 67 else() 68 message(STATUS "Using system GTest") 69 70 import_find_pkg_target(gtest GTest GTEST) 71 endif() 72 endif() 73 74 75+set(USE_SYSTEM_MKSQUASHFS OFF CACHE BOOL "Use system mksquashfs instead of downloading and building our own") 76+ 77+if(NOT USE_SYSTEM_MKSQUASHFS) 78 # TODO: allow using system wide mksquashfs 79 set(mksquashfs_cflags "-DXZ_SUPPORT ${CFLAGS}") 80 81 if(xz_LIBRARIES MATCHES "\\.a$") 82 set(mksquashfs_ldflags "${xz_LIBRARIES}") 83 else() 84 set(mksquashfs_ldflags "-l${xz_LIBRARIES}") 85 endif() 86 87 if(xz_INCLUDE_DIRS) 88@@ -385,20 +404,25 @@ ExternalProject_Add(mksquashfs 89 INSTALL_COMMAND ${MAKE} -C squashfs-tools/ install INSTALL_DIR=<INSTALL_DIR> 90 ) 91 92 ExternalProject_Get_Property(mksquashfs INSTALL_DIR) 93 set(mksquashfs_INSTALL_DIR "${INSTALL_DIR}") 94 mark_as_advanced(mksquashfs_INSTALL_DIR) 95 96 # for later use when packaging as an AppImage 97 set(mksquashfs_BINARY "${mksquashfs_INSTALL_DIR}/mksquashfs") 98 mark_as_advanced(mksquashfs_BINARY) 99+else() 100+ message(STATUS "Using system mksquashfs") 101+ 102+ set(mksquashfs_BINARY "mksquashfs") 103+endif() 104 105 106 #### build dependency configuration #### 107 108 # only have to build custom xz when not using system libxz 109 if(TARGET xz-EXTERNAL) 110 if(TARGET squashfuse-EXTERNAL) 111 ExternalProject_Add_StepDependencies(squashfuse-EXTERNAL configure xz-EXTERNAL) 112 endif() 113 if(TARGET mksquashfs) 114diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt 115index 3f25442..974ed0e 100644 116--- a/src/CMakeLists.txt 117+++ b/src/CMakeLists.txt 118@@ -197,27 +197,27 @@ target_include_directories(digest_md5 119 120 target_link_libraries(digest_md5 121 PRIVATE 122 libglib 123 ) 124 125 126 # install binaries 127 if(AUXILIARY_FILES_DESTINATION) 128 install( 129- PROGRAMS ${mksquashfs_INSTALL_DIR}/mksquashfs ${CMAKE_CURRENT_BINARY_DIR}/runtime 130+ PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/runtime 131 DESTINATION ${AUXILIARY_FILES_DESTINATION} 132 COMPONENT applications 133 ) 134 else() 135 install( 136- PROGRAMS ${mksquashfs_INSTALL_DIR}/mksquashfs ${CMAKE_CURRENT_BINARY_DIR}/runtime 137+ PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/runtime 138 DESTINATION bin 139 COMPONENT applications 140 ) 141 endif() 142 143 install( 144 TARGETS AppRun appimagetool digest validate 145 RUNTIME DESTINATION bin COMPONENT applications 146 LIBRARY DESTINATION lib COMPONENT applications 147 ARCHIVE DESTINATION lib/static COMPONENT applications 148diff --git a/src/shared.c b/src/shared.c 149index cf5fd5c..4f48dbc 100644 150--- a/src/shared.c 151+++ b/src/shared.c 152@@ -34,21 +34,21 @@ 153 #include <sys/stat.h> 154 #include <sys/types.h> 155 #include <dirent.h> 156 #include <errno.h> 157 158 #include <glib.h> 159 #include <glib/gprintf.h> 160 #include <glib/gstdio.h> 161 #include <gio/gio.h> 162 163-#include "squashfuse.h" 164+#include <squashfuse.h> 165 #include <squashfs_fs.h> 166 #include "getsection.h" 167 #include "elf.h" 168 169 #include "xdg-basedir.h" 170 171 // own header 172 #include "shared.h" 173 174 #if HAVE_LIBARCHIVE3 == 1 // CentOS