diff --git a/Makefile b/Makefile index 873eb39ce..c2cba75e4 100644 --- a/Makefile +++ b/Makefile @@ -46,28 +46,8 @@ INSTALL_DIR=koreader-$(DIST)-$(MACHINE) # platform directories PLATFORM_DIR=platform COMMON_DIR=$(PLATFORM_DIR)/common -ANDROID_DIR=$(PLATFORM_DIR)/android -ANDROID_LAUNCHER_DIR:=$(ANDROID_DIR)/luajit-launcher -ANDROID_ASSETS:=$(ANDROID_LAUNCHER_DIR)/assets/module -ANDROID_LIBS_ROOT:=$(ANDROID_LAUNCHER_DIR)/libs -ANDROID_LIBS_ABI:=$(ANDROID_LIBS_ROOT)/$(ANDROID_ABI) -APPIMAGE_DIR=$(PLATFORM_DIR)/appimage -CERVANTES_DIR=$(PLATFORM_DIR)/cervantes -DEBIAN_DIR=$(PLATFORM_DIR)/debian -KINDLE_DIR=$(PLATFORM_DIR)/kindle -KOBO_DIR=$(PLATFORM_DIR)/kobo -MACOS_DIR=$(PLATFORM_DIR)/mac -POCKETBOOK_DIR=$(PLATFORM_DIR)/pocketbook -REMARKABLE_DIR=$(PLATFORM_DIR)/remarkable -SONY_PRSTUX_DIR=$(PLATFORM_DIR)/sony-prstux -UBUNTUTOUCH_DIR=$(PLATFORM_DIR)/ubuntu-touch -UBUNTUTOUCH_SDL_DIR:=$(UBUNTUTOUCH_DIR)/ubuntu-touch-sdl WIN32_DIR=$(PLATFORM_DIR)/win32 -# appimage setup -APPIMAGETOOL=appimagetool-x86_64.AppImage -APPIMAGETOOL_URL=https://github.com/AppImage/AppImageKit/releases/download/13/appimagetool-x86_64.AppImage - # files to link from main directory INSTALL_FILES=reader.lua setupkoenv.lua frontend resources defaults.lua datastorage.lua \ l10n tools README.md COPYING @@ -186,415 +166,10 @@ dist-clean: clean $(MAKE) -C $(KOR_BASE) dist-clean $(MAKE) -C doc clean -KINDLE_PACKAGE:=koreader-$(DIST)$(KODEDUG_SUFFIX)-$(VERSION).zip -KINDLE_PACKAGE_OTA:=koreader-$(DIST)$(KODEDUG_SUFFIX)-$(VERSION).targz -ZIP_EXCLUDE=-x "*.swp" -x "*.swo" -x "*.orig" -x "*.un~" -# Don't bundle launchpad on touch devices.. -ifeq ($(TARGET), kindle-legacy) -KINDLE_LEGACY_LAUNCHER:=launchpad +# Include target specific rules. +ifneq (,$(wildcard make/$(TARGET).mk)) + include make/$(TARGET).mk endif -kindleupdate: all - # ensure that the binaries were built for ARM - file $(INSTALL_DIR)/koreader/luajit | grep ARM || exit 1 - # remove old package if any - rm -f $(KINDLE_PACKAGE) - # Kindle launching scripts - ln -sf ../$(KINDLE_DIR)/extensions $(INSTALL_DIR)/ - ln -sf ../$(KINDLE_DIR)/launchpad $(INSTALL_DIR)/ - ln -sf ../../$(KINDLE_DIR)/koreader.sh $(INSTALL_DIR)/koreader - ln -sf ../../$(KINDLE_DIR)/libkohelper.sh $(INSTALL_DIR)/koreader - ln -sf ../../../../../$(KINDLE_DIR)/libkohelper.sh $(INSTALL_DIR)/extensions/koreader/bin - ln -sf ../../$(COMMON_DIR)/spinning_zsync $(INSTALL_DIR)/koreader - ln -sf ../../$(KINDLE_DIR)/wmctrl $(INSTALL_DIR)/koreader - # create new package - cd $(INSTALL_DIR) && pwd && \ - zip -9 -r \ - ../$(KINDLE_PACKAGE) \ - extensions koreader $(KINDLE_LEGACY_LAUNCHER) \ - -x "koreader/resources/fonts/*" "koreader/ota/*" \ - "koreader/resources/icons/src/*" "koreader/spec/*" \ - $(ZIP_EXCLUDE) - # generate kindleupdate package index file - zipinfo -1 $(KINDLE_PACKAGE) > \ - $(INSTALL_DIR)/koreader/ota/package.index - echo "koreader/ota/package.index" >> $(INSTALL_DIR)/koreader/ota/package.index - # update index file in zip package - cd $(INSTALL_DIR) && zip -u ../$(KINDLE_PACKAGE) \ - koreader/ota/package.index - # make gzip kindleupdate for zsync OTA update - # note that the targz file extension is intended to keep ISP from caching - # the file, see koreader#1644. - cd $(INSTALL_DIR) && \ - tar --hard-dereference -I"gzip --rsyncable" -cah --no-recursion -f ../$(KINDLE_PACKAGE_OTA) \ - -T koreader/ota/package.index - -KOBO_PACKAGE:=koreader-kobo$(KODEDUG_SUFFIX)-$(VERSION).zip -KOBO_PACKAGE_OTA:=koreader-kobo$(KODEDUG_SUFFIX)-$(VERSION).targz -koboupdate: all - # ensure that the binaries were built for ARM - file $(INSTALL_DIR)/koreader/luajit | grep ARM || exit 1 - # remove old package if any - rm -f $(KOBO_PACKAGE) - # Kobo launching scripts - cp $(KOBO_DIR)/koreader.png $(INSTALL_DIR)/koreader.png - cp $(KOBO_DIR)/*.sh $(INSTALL_DIR)/koreader - cp $(COMMON_DIR)/spinning_zsync $(INSTALL_DIR)/koreader - # create new package - cd $(INSTALL_DIR) && \ - zip -9 -r \ - ../$(KOBO_PACKAGE) \ - koreader -x "koreader/resources/fonts/*" \ - "koreader/resources/icons/src/*" "koreader/spec/*" \ - $(ZIP_EXCLUDE) - # generate koboupdate package index file - zipinfo -1 $(KOBO_PACKAGE) > \ - $(INSTALL_DIR)/koreader/ota/package.index - echo "koreader/ota/package.index" >> $(INSTALL_DIR)/koreader/ota/package.index - # update index file in zip package - cd $(INSTALL_DIR) && zip -u ../$(KOBO_PACKAGE) \ - koreader/ota/package.index koreader.png README_kobo.txt - # make gzip koboupdate for zsync OTA update - cd $(INSTALL_DIR) && \ - tar --hard-dereference -I"gzip --rsyncable" -cah --no-recursion -f ../$(KOBO_PACKAGE_OTA) \ - -T koreader/ota/package.index - -PB_PACKAGE:=koreader-pocketbook$(KODEDUG_SUFFIX)-$(VERSION).zip -PB_PACKAGE_OTA:=koreader-pocketbook$(KODEDUG_SUFFIX)-$(VERSION).targz -pbupdate: all - # ensure that the binaries were built for ARM - file $(INSTALL_DIR)/koreader/luajit | grep ARM || exit 1 - # remove old package if any - rm -f $(PB_PACKAGE) - # Pocketbook launching scripts - mkdir -p $(INSTALL_DIR)/applications - mkdir -p $(INSTALL_DIR)/system/bin - cp $(POCKETBOOK_DIR)/koreader.app $(INSTALL_DIR)/applications - cp $(POCKETBOOK_DIR)/system_koreader.app $(INSTALL_DIR)/system/bin/koreader.app - cp $(COMMON_DIR)/spinning_zsync $(INSTALL_DIR)/koreader - cp -rfL $(INSTALL_DIR)/koreader $(INSTALL_DIR)/applications - find $(INSTALL_DIR)/applications/koreader \ - -type f \( -name "*.gif" -o -name "*.html" -o -name "*.md" -o -name "*.txt" \) \ - -exec rm -vf {} \; - # create new package - cd $(INSTALL_DIR) && \ - zip -9 -r \ - ../$(PB_PACKAGE) \ - applications -x "applications/koreader/resources/fonts/*" \ - "applications/koreader/resources/icons/src/*" "applications/koreader/spec/*" \ - $(ZIP_EXCLUDE) - # generate koboupdate package index file - zipinfo -1 $(PB_PACKAGE) > \ - $(INSTALL_DIR)/applications/koreader/ota/package.index - echo "applications/koreader/ota/package.index" >> \ - $(INSTALL_DIR)/applications/koreader/ota/package.index - # hack file path when running tar in parent directory of koreader - sed -i -e 's/^/..\//' \ - $(INSTALL_DIR)/applications/koreader/ota/package.index - # update index file in zip package - cd $(INSTALL_DIR) && zip -ru ../$(PB_PACKAGE) \ - applications/koreader/ota/package.index system - # make gzip pbupdate for zsync OTA update - cd $(INSTALL_DIR)/applications && \ - tar --hard-dereference -I"gzip --rsyncable" -cah --no-recursion -f ../../$(PB_PACKAGE_OTA) \ - -T koreader/ota/package.index - -utupdate: all - # ensure that the binaries were built for ARM - file $(INSTALL_DIR)/koreader/luajit | grep ARM || exit 1 - # remove old package if any - rm -f koreader-ubuntu-touch-$(MACHINE)-$(VERSION).click - - ln -sf ../../$(UBUNTUTOUCH_DIR)/koreader.sh $(INSTALL_DIR)/koreader - ln -sf ../../$(UBUNTUTOUCH_DIR)/manifest.json $(INSTALL_DIR)/koreader - ln -sf ../../$(UBUNTUTOUCH_DIR)/koreader.apparmor $(INSTALL_DIR)/koreader - ln -sf ../../$(UBUNTUTOUCH_DIR)/koreader.apparmor.openstore $(INSTALL_DIR)/koreader - ln -sf ../../$(UBUNTUTOUCH_DIR)/koreader.desktop $(INSTALL_DIR)/koreader - ln -sf ../../$(UBUNTUTOUCH_DIR)/koreader.png $(INSTALL_DIR)/koreader - ln -sf ../../../$(UBUNTUTOUCH_DIR)/libSDL2.so $(INSTALL_DIR)/koreader/libs - - # create new package - cd $(INSTALL_DIR) && pwd && \ - zip -9 -r \ - ../koreader-$(DIST)-$(MACHINE)-$(VERSION).zip \ - koreader -x "koreader/resources/fonts/*" "koreader/ota/*" \ - "koreader/resources/icons/src/*" "koreader/spec/*" \ - $(ZIP_EXCLUDE) - - # generate ubuntu touch click package - rm -rf $(INSTALL_DIR)/tmp && mkdir -p $(INSTALL_DIR)/tmp - cd $(INSTALL_DIR)/tmp && \ - unzip ../../koreader-$(DIST)-$(MACHINE)-$(VERSION).zip && \ - click build koreader && \ - mv *.click ../../koreader-$(DIST)-$(MACHINE)-$(VERSION).click - -appimageupdate: all - # remove old package if any - rm -f koreader-appimage-$(MACHINE)-$(VERSION).appimage - - ln -sf ../../$(APPIMAGE_DIR)/AppRun $(INSTALL_DIR)/koreader - ln -sf ../../$(APPIMAGE_DIR)/koreader.appdata.xml $(INSTALL_DIR)/koreader - ln -sf ../../$(APPIMAGE_DIR)/koreader.desktop $(INSTALL_DIR)/koreader - ln -sf ../../resources/koreader.png $(INSTALL_DIR)/koreader - # TODO at best this is DebUbuntu specific - ln -sf /usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0 $(INSTALL_DIR)/koreader/libs/libSDL2.so - # required for our stock Ubuntu SDL even though we don't use sound - # the readlink is a half-hearted attempt at being generic; the echo libsndio.so.7.0 is specific to the nightly builds - ln -sf /usr/lib/x86_64-linux-gnu/$(shell readlink /usr/lib/x86_64-linux-gnu/libsndio.so || echo libsndio.so.7.0) $(INSTALL_DIR)/koreader/libs/ - # also copy libbsd.so.0, cf. https://github.com/koreader/koreader/issues/4627 - ln -sf /lib/x86_64-linux-gnu/libbsd.so.0 $(INSTALL_DIR)/koreader/libs/ -ifeq ("$(wildcard $(APPIMAGETOOL))","") - # download appimagetool - wget "$(APPIMAGETOOL_URL)" - chmod a+x "$(APPIMAGETOOL)" -endif - cd $(INSTALL_DIR) && pwd && \ - rm -rf tmp && mkdir -p tmp && \ - cp -Lr koreader tmp && \ - rm -rf tmp/koreader/ota && \ - rm -rf tmp/koreader/resources/icons/src && \ - rm -rf tmp/koreader/spec - - # generate AppImage - cd $(INSTALL_DIR)/tmp && \ - ARCH=x86_64 "$$OLDPWD/$(APPIMAGETOOL)" --appimage-extract-and-run koreader && \ - mv *.AppImage ../../koreader-$(DIST)-$(MACHINE)-$(VERSION).AppImage - -androidupdate: all - # Note: do not remove the module directory so there's no need - # for `mk7z.sh` to always recreate `assets.7z` from scratch. - rm -rfv $(ANDROID_LIBS_ROOT) - mkdir -p $(ANDROID_ASSETS) $(ANDROID_LIBS_ABI) - - # APK version - echo $(VERSION) > $(ANDROID_ASSETS)/version.txt - - # shared libraries are stored as raw assets - cp -pR $(INSTALL_DIR)/koreader/libs $(ANDROID_LAUNCHER_DIR)/assets - # in runtime luajit-launcher's libluajit.so will be loaded - rm -vf $(ANDROID_LAUNCHER_DIR)/assets/libs/libluajit.so - - # binaries are stored as shared libraries to prevent W^X exception on Android 10+ - # https://developer.android.com/about/versions/10/behavior-changes-10#execute-permission - cp -pR $(INSTALL_DIR)/koreader/sdcv $(ANDROID_LIBS_ABI)/libsdcv.so - echo "sdcv libsdcv.so" > $(ANDROID_ASSETS)/map.txt - - # assets are compressed manually and stored inside the APK. - cd $(INSTALL_DIR)/koreader && \ - ./tools/mk7z.sh \ - ../../$(ANDROID_ASSETS)/koreader.7z \ - "$$(git show -s --format='%ci')" \ - -m0=lzma2 -mx=9 \ - -- . \ - '-x!cache' \ - '-x!clipboard' \ - '-x!data/dict' \ - '-x!data/tessdata' \ - '-x!history' \ - '-x!l10n/templates' \ - '-x!libs' \ - '-x!ota' \ - '-x!resources/fonts*' \ - '-x!resources/icons/src*' \ - '-x!rocks/bin' \ - '-x!rocks/lib/luarocks' \ - '-x!screenshots' \ - '-x!sdcv' \ - '-x!spec' \ - '-x!tools' \ - '-xr!.*' \ - '-xr!COPYING' \ - '-xr!NOTES.txt' \ - '-xr!NOTICE' \ - '-xr!README.md' \ - ; - - # make the android APK - # Note: filter out the `--debug=…` make flag - # so the old crummy version provided by the - # NDK does not blow a gasket. - MAKEFLAGS='$(filter-out --debug=%,$(MAKEFLAGS))' \ - $(MAKE) -C $(ANDROID_LAUNCHER_DIR) $(if $(KODEBUG), debug, release) \ - ANDROID_APPNAME=KOReader \ - ANDROID_VERSION=$(ANDROID_VERSION) \ - ANDROID_NAME=$(ANDROID_NAME) \ - ANDROID_FLAVOR=$(ANDROID_FLAVOR) - - cp $(ANDROID_LAUNCHER_DIR)/bin/NativeActivity.apk \ - koreader-android-$(ANDROID_ARCH)$(KODEDUG_SUFFIX)-$(VERSION).apk - -debianupdate: all - mkdir -pv \ - $(INSTALL_DIR)/debian/usr/bin \ - $(INSTALL_DIR)/debian/usr/lib \ - $(INSTALL_DIR)/debian/usr/share/pixmaps \ - $(INSTALL_DIR)/debian/usr/share/applications \ - $(INSTALL_DIR)/debian/usr/share/doc/koreader \ - $(INSTALL_DIR)/debian/usr/share/man/man1 - - cp -pv resources/koreader.png $(INSTALL_DIR)/debian/usr/share/pixmaps - cp -pv $(DEBIAN_DIR)/koreader.desktop $(INSTALL_DIR)/debian/usr/share/applications - cp -pv $(DEBIAN_DIR)/copyright COPYING $(INSTALL_DIR)/debian/usr/share/doc/koreader - cp -pv $(DEBIAN_DIR)/koreader.sh $(INSTALL_DIR)/debian/usr/bin/koreader - cp -Lr $(INSTALL_DIR)/koreader $(INSTALL_DIR)/debian/usr/lib - - gzip -cn9 $(DEBIAN_DIR)/changelog > $(INSTALL_DIR)/debian/usr/share/doc/koreader/changelog.Debian.gz - gzip -cn9 $(DEBIAN_DIR)/koreader.1 > $(INSTALL_DIR)/debian/usr/share/man/man1/koreader.1.gz - - chmod 644 \ - $(INSTALL_DIR)/debian/usr/share/doc/koreader/changelog.Debian.gz \ - $(INSTALL_DIR)/debian/usr/share/doc/koreader/copyright \ - $(INSTALL_DIR)/debian/usr/share/man/man1/koreader.1.gz - - rm -rf \ - $(INSTALL_DIR)/debian/usr/lib/koreader/{ota,cache,clipboard,screenshots,spec,tools,resources/fonts,resources/icons/src} - -macosupdate: all - mkdir -p \ - $(INSTALL_DIR)/bundle/Contents/MacOS \ - $(INSTALL_DIR)/bundle/Contents/Resources - - cp -pv $(MACOS_DIR)/koreader.icns $(INSTALL_DIR)/bundle/Contents/Resources/icon.icns - cp -LR $(INSTALL_DIR)/koreader $(INSTALL_DIR)/bundle/Contents - cp -pRv $(MACOS_DIR)/menu.xml $(INSTALL_DIR)/bundle/Contents/MainMenu.xib - ibtool --compile "$(INSTALL_DIR)/bundle/Contents/Resources/Base.lproj/MainMenu.nib" "$(INSTALL_DIR)/bundle/Contents/MainMenu.xib" - rm -rfv "$(INSTALL_DIR)/bundle/Contents/MainMenu.xib" - -REMARKABLE_PACKAGE:=koreader-remarkable$(KODEDUG_SUFFIX)-$(VERSION).zip -REMARKABLE_PACKAGE_OTA:=koreader-remarkable$(KODEDUG_SUFFIX)-$(VERSION).targz -remarkableupdate: all - # ensure that the binaries were built for ARM - file $(INSTALL_DIR)/koreader/luajit | grep ARM || exit 1 - # remove old package if any - rm -f $(REMARKABLE_PACKAGE) - # Remarkable scripts - cp $(REMARKABLE_DIR)/* $(INSTALL_DIR)/koreader - cp $(COMMON_DIR)/spinning_zsync $(INSTALL_DIR)/koreader - # create new package - cd $(INSTALL_DIR) && \ - zip -9 -r \ - ../$(REMARKABLE_PACKAGE) \ - koreader -x "koreader/resources/fonts/*" \ - "koreader/resources/icons/src/*" "koreader/spec/*" \ - $(ZIP_EXCLUDE) - # generate update package index file - zipinfo -1 $(REMARKABLE_PACKAGE) > \ - $(INSTALL_DIR)/koreader/ota/package.index - echo "koreader/ota/package.index" >> $(INSTALL_DIR)/koreader/ota/package.index - # update index file in zip package - cd $(INSTALL_DIR) && zip -u ../$(REMARKABLE_PACKAGE) \ - koreader/ota/package.index - # make gzip remarkable update for zsync OTA update - cd $(INSTALL_DIR) && \ - tar -I"gzip --rsyncable" -cah --no-recursion -f ../$(REMARKABLE_PACKAGE_OTA) \ - -T koreader/ota/package.index - -SONY_PRSTUX_PACKAGE:=koreader-sony-prstux$(KODEDUG_SUFFIX)-$(VERSION).zip -SONY_PRSTUX_PACKAGE_OTA:=koreader-sony-prstux$(KODEDUG_SUFFIX)-$(VERSION).targz -sony-prstuxupdate: all - # ensure that the binaries were built for ARM - file $(INSTALL_DIR)/koreader/luajit | grep ARM || exit 1 - # remove old package if any - rm -f $(SONY_PRSTUX_PACKAGE) - # Sony PRSTUX launching scripts - cp $(SONY_PRSTUX_DIR)/*.sh $(INSTALL_DIR)/koreader - # create new package - cd $(INSTALL_DIR) && \ - zip -9 -r \ - ../$(SONY_PRSTUX_PACKAGE) \ - koreader -x "koreader/resources/fonts/*" \ - "koreader/resources/icons/src/*" "koreader/spec/*" \ - $(ZIP_EXCLUDE) - # generate update package index file - zipinfo -1 $(SONY_PRSTUX_PACKAGE) > \ - $(INSTALL_DIR)/koreader/ota/package.index - echo "koreader/ota/package.index" >> $(INSTALL_DIR)/koreader/ota/package.index - # update index file in zip package - cd $(INSTALL_DIR) && zip -u ../$(SONY_PRSTUX_PACKAGE) \ - koreader/ota/package.index - # make gzip sonyprstux update for zsync OTA update - cd $(INSTALL_DIR) && \ - tar --hard-dereference -I"gzip --rsyncable" -cah --no-recursion -f ../$(SONY_PRSTUX_PACKAGE_OTA) \ - -T koreader/ota/package.index - -CERVANTES_PACKAGE:=koreader-cervantes$(KODEDUG_SUFFIX)-$(VERSION).zip -CERVANTES_PACKAGE_OTA:=koreader-cervantes$(KODEDUG_SUFFIX)-$(VERSION).targz -cervantesupdate: all - # ensure that the binaries were built for ARM - file $(INSTALL_DIR)/koreader/luajit | grep ARM || exit 1 - # remove old package if any - rm -f $(CERVANTES_PACKAGE) - # Cervantes launching scripts - cp $(COMMON_DIR)/spinning_zsync $(INSTALL_DIR)/koreader/spinning_zsync.sh - cp $(CERVANTES_DIR)/*.sh $(INSTALL_DIR)/koreader - cp $(CERVANTES_DIR)/spinning_zsync $(INSTALL_DIR)/koreader - # create new package - cd $(INSTALL_DIR) && \ - zip -9 -r \ - ../$(CERVANTES_PACKAGE) \ - koreader -x "koreader/resources/fonts/*" \ - "koreader/resources/icons/src/*" "koreader/spec/*" \ - $(ZIP_EXCLUDE) - # generate update package index file - zipinfo -1 $(CERVANTES_PACKAGE) > \ - $(INSTALL_DIR)/koreader/ota/package.index - echo "koreader/ota/package.index" >> $(INSTALL_DIR)/koreader/ota/package.index - # update index file in zip package - cd $(INSTALL_DIR) && zip -u ../$(CERVANTES_PACKAGE) \ - koreader/ota/package.index - # make gzip cervantes update for zsync OTA update - cd $(INSTALL_DIR) && \ - tar --hard-dereference -I"gzip --rsyncable" -cah --no-recursion -f ../$(CERVANTES_PACKAGE_OTA) \ - -T koreader/ota/package.index - -update: -ifeq ($(TARGET), android) - make androidupdate -else ifeq ($(TARGET), appimage) - make appimageupdate -else ifeq ($(TARGET), cervantes) - make cervantesupdate -else ifeq ($(TARGET), kindle) - make kindleupdate -else ifeq ($(TARGET), kindle-legacy) - make kindleupdate -else ifeq ($(TARGET), kindlepw2) - make kindleupdate -else ifeq ($(TARGET), kobo) - make koboupdate -else ifeq ($(TARGET), pocketbook) - make pbupdate -else ifeq ($(TARGET), sony-prstux) - make sony-prstuxupdate -else ifeq ($(TARGET), remarkable) - make remarkableupdate -else ifeq ($(TARGET), ubuntu-touch) - make utupdate -else ifeq ($(TARGET), debian) - make debianupdate - $(CURDIR)/platform/debian/do_debian_package.sh $(INSTALL_DIR) -else ifeq ($(TARGET), debian-armel) - make debianupdate - $(CURDIR)/platform/debian/do_debian_package.sh $(INSTALL_DIR) armel -else ifeq ($(TARGET), debian-armhf) - make debianupdate - $(CURDIR)/platform/debian/do_debian_package.sh $(INSTALL_DIR) armhf -else ifeq ($(TARGET), debian-arm64) - make debianupdate - $(CURDIR)/platform/debian/do_debian_package.sh $(INSTALL_DIR) arm64 -else ifeq ($(TARGET), macos) - make macosupdate - $(CURDIR)/platform/mac/do_mac_bundle.sh $(INSTALL_DIR) -endif - -androiddev: androidupdate - $(MAKE) -C $(ANDROID_LAUNCHER_DIR) dev - -android-ndk: - $(MAKE) -C $(KOR_BASE)/toolchain $(ANDROID_NDK_HOME) - -android-sdk: - $(MAKE) -C $(KOR_BASE)/toolchain $(ANDROID_HOME) - # for gettext DOMAIN=koreader @@ -626,4 +201,4 @@ static-check: doc: make -C doc -.PHONY: all base clean doc test update +.PHONY: all base clean doc test diff --git a/make/android.mk b/make/android.mk new file mode 100644 index 000000000..0dcc1f394 --- /dev/null +++ b/make/android.mk @@ -0,0 +1,73 @@ +ANDROID_DIR = $(PLATFORM_DIR)/android +ANDROID_LAUNCHER_DIR = $(ANDROID_DIR)/luajit-launcher +ANDROID_ASSETS = $(ANDROID_LAUNCHER_DIR)/assets/module +ANDROID_LIBS_ROOT = $(ANDROID_LAUNCHER_DIR)/libs +ANDROID_LIBS_ABI = $(ANDROID_LIBS_ROOT)/$(ANDROID_ABI) + +android-ndk: + $(MAKE) -C $(KOR_BASE)/toolchain $(ANDROID_NDK_HOME) + +android-sdk: + $(MAKE) -C $(KOR_BASE)/toolchain $(ANDROID_HOME) + +androiddev: update + $(MAKE) -C $(ANDROID_LAUNCHER_DIR) dev + +update: all + # Note: do not remove the module directory so there's no need + # for `mk7z.sh` to always recreate `assets.7z` from scratch. + rm -rfv $(ANDROID_LIBS_ROOT) + mkdir -p $(ANDROID_ASSETS) $(ANDROID_LIBS_ABI) + # APK version + echo $(VERSION) > $(ANDROID_ASSETS)/version.txt + # shared libraries are stored as raw assets + cp -pR $(INSTALL_DIR)/koreader/libs $(ANDROID_LAUNCHER_DIR)/assets + # in runtime luajit-launcher's libluajit.so will be loaded + rm -vf $(ANDROID_LAUNCHER_DIR)/assets/libs/libluajit.so + # binaries are stored as shared libraries to prevent W^X exception on Android 10+ + # https://developer.android.com/about/versions/10/behavior-changes-10#execute-permission + cp -pR $(INSTALL_DIR)/koreader/sdcv $(ANDROID_LIBS_ABI)/libsdcv.so + echo "sdcv libsdcv.so" > $(ANDROID_ASSETS)/map.txt + # assets are compressed manually and stored inside the APK. + cd $(INSTALL_DIR)/koreader && \ + ./tools/mk7z.sh \ + ../../$(ANDROID_ASSETS)/koreader.7z \ + "$$(git show -s --format='%ci')" \ + -m0=lzma2 -mx=9 \ + -- . \ + '-x!cache' \ + '-x!clipboard' \ + '-x!data/dict' \ + '-x!data/tessdata' \ + '-x!history' \ + '-x!l10n/templates' \ + '-x!libs' \ + '-x!ota' \ + '-x!resources/fonts*' \ + '-x!resources/icons/src*' \ + '-x!rocks/bin' \ + '-x!rocks/lib/luarocks' \ + '-x!screenshots' \ + '-x!sdcv' \ + '-x!spec' \ + '-x!tools' \ + '-xr!.*' \ + '-xr!COPYING' \ + '-xr!NOTES.txt' \ + '-xr!NOTICE' \ + '-xr!README.md' \ + ; + # make the android APK + # Note: filter out the `--debug=…` make flag + # so the old crummy version provided by the + # NDK does not blow a gasket. + MAKEFLAGS='$(filter-out --debug=%,$(MAKEFLAGS))' \ + $(MAKE) -C $(ANDROID_LAUNCHER_DIR) $(if $(KODEBUG), debug, release) \ + ANDROID_APPNAME=KOReader \ + ANDROID_VERSION=$(ANDROID_VERSION) \ + ANDROID_NAME=$(ANDROID_NAME) \ + ANDROID_FLAVOR=$(ANDROID_FLAVOR) + cp $(ANDROID_LAUNCHER_DIR)/bin/NativeActivity.apk \ + koreader-android-$(ANDROID_ARCH)$(KODEDUG_SUFFIX)-$(VERSION).apk + +.PHONY: android-ndk android-sdk androiddev update diff --git a/make/appimage.mk b/make/appimage.mk new file mode 100644 index 000000000..1deb9ac7a --- /dev/null +++ b/make/appimage.mk @@ -0,0 +1,36 @@ +APPIMAGE_DIR = $(PLATFORM_DIR)/appimage + +APPIMAGETOOL = appimagetool-x86_64.AppImage +APPIMAGETOOL_URL = https://github.com/AppImage/AppImageKit/releases/download/13/appimagetool-x86_64.AppImage + +update: all + # remove old package if any + rm -f koreader-appimage-$(MACHINE)-$(VERSION).appimage + ln -sf ../../$(APPIMAGE_DIR)/AppRun $(INSTALL_DIR)/koreader + ln -sf ../../$(APPIMAGE_DIR)/koreader.appdata.xml $(INSTALL_DIR)/koreader + ln -sf ../../$(APPIMAGE_DIR)/koreader.desktop $(INSTALL_DIR)/koreader + ln -sf ../../resources/koreader.png $(INSTALL_DIR)/koreader + # TODO at best this is DebUbuntu specific + ln -sf /usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0 $(INSTALL_DIR)/koreader/libs/libSDL2.so + # required for our stock Ubuntu SDL even though we don't use sound + # the readlink is a half-hearted attempt at being generic; the echo libsndio.so.7.0 is specific to the nightly builds + ln -sf /usr/lib/x86_64-linux-gnu/$(shell readlink /usr/lib/x86_64-linux-gnu/libsndio.so || echo libsndio.so.7.0) $(INSTALL_DIR)/koreader/libs/ + # also copy libbsd.so.0, cf. https://github.com/koreader/koreader/issues/4627 + ln -sf /lib/x86_64-linux-gnu/libbsd.so.0 $(INSTALL_DIR)/koreader/libs/ +ifeq ("$(wildcard $(APPIMAGETOOL))","") + # download appimagetool + wget "$(APPIMAGETOOL_URL)" + chmod a+x "$(APPIMAGETOOL)" +endif + cd $(INSTALL_DIR) && pwd && \ + rm -rf tmp && mkdir -p tmp && \ + cp -Lr koreader tmp && \ + rm -rf tmp/koreader/ota && \ + rm -rf tmp/koreader/resources/icons/src && \ + rm -rf tmp/koreader/spec + # generate AppImage + cd $(INSTALL_DIR)/tmp && \ + ARCH=x86_64 "$$OLDPWD/$(APPIMAGETOOL)" --appimage-extract-and-run koreader && \ + mv *.AppImage ../../koreader-$(DIST)-$(MACHINE)-$(VERSION).AppImage + +.PHONY: update diff --git a/make/cervantes.mk b/make/cervantes.mk new file mode 100644 index 000000000..9b74794c6 --- /dev/null +++ b/make/cervantes.mk @@ -0,0 +1,33 @@ +CERVANTES_DIR = $(PLATFORM_DIR)/cervantes +CERVANTES_PACKAGE = koreader-cervantes$(KODEDUG_SUFFIX)-$(VERSION).zip +CERVANTES_PACKAGE_OTA = koreader-cervantes$(KODEDUG_SUFFIX)-$(VERSION).targz + +update: all + # ensure that the binaries were built for ARM + file $(INSTALL_DIR)/koreader/luajit | grep ARM || exit 1 + # remove old package if any + rm -f $(CERVANTES_PACKAGE) + # Cervantes launching scripts + cp $(COMMON_DIR)/spinning_zsync $(INSTALL_DIR)/koreader/spinning_zsync.sh + cp $(CERVANTES_DIR)/*.sh $(INSTALL_DIR)/koreader + cp $(CERVANTES_DIR)/spinning_zsync $(INSTALL_DIR)/koreader + # create new package + cd $(INSTALL_DIR) && \ + zip -9 -r \ + ../$(CERVANTES_PACKAGE) \ + koreader -x "koreader/resources/fonts/*" \ + "koreader/resources/icons/src/*" "koreader/spec/*" \ + $(ZIP_EXCLUDE) + # generate update package index file + zipinfo -1 $(CERVANTES_PACKAGE) > \ + $(INSTALL_DIR)/koreader/ota/package.index + echo "koreader/ota/package.index" >> $(INSTALL_DIR)/koreader/ota/package.index + # update index file in zip package + cd $(INSTALL_DIR) && zip -u ../$(CERVANTES_PACKAGE) \ + koreader/ota/package.index + # make gzip cervantes update for zsync OTA update + cd $(INSTALL_DIR) && \ + tar --hard-dereference -I"gzip --rsyncable" -cah --no-recursion -f ../$(CERVANTES_PACKAGE_OTA) \ + -T koreader/ota/package.index + +.PHONY: update diff --git a/make/debian.mk b/make/debian.mk new file mode 100644 index 000000000..18ae64280 --- /dev/null +++ b/make/debian.mk @@ -0,0 +1,25 @@ +DEBIAN_DIR = $(PLATFORM_DIR)/debian + +update: all + mkdir -pv \ + $(INSTALL_DIR)/debian/usr/bin \ + $(INSTALL_DIR)/debian/usr/lib \ + $(INSTALL_DIR)/debian/usr/share/pixmaps \ + $(INSTALL_DIR)/debian/usr/share/applications \ + $(INSTALL_DIR)/debian/usr/share/doc/koreader \ + $(INSTALL_DIR)/debian/usr/share/man/man1 + cp -pv resources/koreader.png $(INSTALL_DIR)/debian/usr/share/pixmaps + cp -pv $(DEBIAN_DIR)/koreader.desktop $(INSTALL_DIR)/debian/usr/share/applications + cp -pv $(DEBIAN_DIR)/copyright COPYING $(INSTALL_DIR)/debian/usr/share/doc/koreader + cp -pv $(DEBIAN_DIR)/koreader.sh $(INSTALL_DIR)/debian/usr/bin/koreader + cp -Lr $(INSTALL_DIR)/koreader $(INSTALL_DIR)/debian/usr/lib + gzip -cn9 $(DEBIAN_DIR)/changelog > $(INSTALL_DIR)/debian/usr/share/doc/koreader/changelog.Debian.gz + gzip -cn9 $(DEBIAN_DIR)/koreader.1 > $(INSTALL_DIR)/debian/usr/share/man/man1/koreader.1.gz + chmod 644 \ + $(INSTALL_DIR)/debian/usr/share/doc/koreader/changelog.Debian.gz \ + $(INSTALL_DIR)/debian/usr/share/doc/koreader/copyright \ + $(INSTALL_DIR)/debian/usr/share/man/man1/koreader.1.gz + rm -rf \ + $(INSTALL_DIR)/debian/usr/lib/koreader/{ota,cache,clipboard,screenshots,spec,tools,resources/fonts,resources/icons/src} + +.PHONY: update diff --git a/make/kindle-legacy.mk b/make/kindle-legacy.mk new file mode 100644 index 000000000..dbffaeb37 --- /dev/null +++ b/make/kindle-legacy.mk @@ -0,0 +1 @@ +include make/kindle.mk diff --git a/make/kindle.mk b/make/kindle.mk new file mode 100644 index 000000000..681a0a2bf --- /dev/null +++ b/make/kindle.mk @@ -0,0 +1,46 @@ +KINDLE_DIR = $(PLATFORM_DIR)/kindle +KINDLE_PACKAGE = koreader-$(DIST)$(KODEDUG_SUFFIX)-$(VERSION).zip +KINDLE_PACKAGE_OTA = koreader-$(DIST)$(KODEDUG_SUFFIX)-$(VERSION).targz +ZIP_EXCLUDE = -x "*.swp" -x "*.swo" -x "*.orig" -x "*.un~" + +# Don't bundle launchpad on touch devices.. +ifeq ($(TARGET), kindle-legacy) + KINDLE_LEGACY_LAUNCHER = launchpad +endif + +update: all + # ensure that the binaries were built for ARM + file $(INSTALL_DIR)/koreader/luajit | grep ARM || exit 1 + # remove old package if any + rm -f $(KINDLE_PACKAGE) + # Kindle launching scripts + ln -sf ../$(KINDLE_DIR)/extensions $(INSTALL_DIR)/ + ln -sf ../$(KINDLE_DIR)/launchpad $(INSTALL_DIR)/ + ln -sf ../../$(KINDLE_DIR)/koreader.sh $(INSTALL_DIR)/koreader + ln -sf ../../$(KINDLE_DIR)/libkohelper.sh $(INSTALL_DIR)/koreader + ln -sf ../../../../../$(KINDLE_DIR)/libkohelper.sh $(INSTALL_DIR)/extensions/koreader/bin + ln -sf ../../$(COMMON_DIR)/spinning_zsync $(INSTALL_DIR)/koreader + ln -sf ../../$(KINDLE_DIR)/wmctrl $(INSTALL_DIR)/koreader + # create new package + cd $(INSTALL_DIR) && pwd && \ + zip -9 -r \ + ../$(KINDLE_PACKAGE) \ + extensions koreader $(KINDLE_LEGACY_LAUNCHER) \ + -x "koreader/resources/fonts/*" "koreader/ota/*" \ + "koreader/resources/icons/src/*" "koreader/spec/*" \ + $(ZIP_EXCLUDE) + # generate kindleupdate package index file + zipinfo -1 $(KINDLE_PACKAGE) > \ + $(INSTALL_DIR)/koreader/ota/package.index + echo "koreader/ota/package.index" >> $(INSTALL_DIR)/koreader/ota/package.index + # update index file in zip package + cd $(INSTALL_DIR) && zip -u ../$(KINDLE_PACKAGE) \ + koreader/ota/package.index + # make gzip kindleupdate for zsync OTA update + # note that the targz file extension is intended to keep ISP from caching + # the file, see koreader#1644. + cd $(INSTALL_DIR) && \ + tar --hard-dereference -I"gzip --rsyncable" -cah --no-recursion -f ../$(KINDLE_PACKAGE_OTA) \ + -T koreader/ota/package.index + +.PHONY: update diff --git a/make/kindlepw2.mk b/make/kindlepw2.mk new file mode 100644 index 000000000..dbffaeb37 --- /dev/null +++ b/make/kindlepw2.mk @@ -0,0 +1 @@ +include make/kindle.mk diff --git a/make/kobo.mk b/make/kobo.mk new file mode 100644 index 000000000..4dc3fb27f --- /dev/null +++ b/make/kobo.mk @@ -0,0 +1,33 @@ +KOBO_DIR = $(PLATFORM_DIR)/kobo +KOBO_PACKAGE = koreader-kobo$(KODEDUG_SUFFIX)-$(VERSION).zip +KOBO_PACKAGE_OTA = koreader-kobo$(KODEDUG_SUFFIX)-$(VERSION).targz + +update: all + # ensure that the binaries were built for ARM + file $(INSTALL_DIR)/koreader/luajit | grep ARM || exit 1 + # remove old package if any + rm -f $(KOBO_PACKAGE) + # Kobo launching scripts + cp $(KOBO_DIR)/koreader.png $(INSTALL_DIR)/koreader.png + cp $(KOBO_DIR)/*.sh $(INSTALL_DIR)/koreader + cp $(COMMON_DIR)/spinning_zsync $(INSTALL_DIR)/koreader + # create new package + cd $(INSTALL_DIR) && \ + zip -9 -r \ + ../$(KOBO_PACKAGE) \ + koreader -x "koreader/resources/fonts/*" \ + "koreader/resources/icons/src/*" "koreader/spec/*" \ + $(ZIP_EXCLUDE) + # generate koboupdate package index file + zipinfo -1 $(KOBO_PACKAGE) > \ + $(INSTALL_DIR)/koreader/ota/package.index + echo "koreader/ota/package.index" >> $(INSTALL_DIR)/koreader/ota/package.index + # update index file in zip package + cd $(INSTALL_DIR) && zip -u ../$(KOBO_PACKAGE) \ + koreader/ota/package.index koreader.png README_kobo.txt + # make gzip koboupdate for zsync OTA update + cd $(INSTALL_DIR) && \ + tar --hard-dereference -I"gzip --rsyncable" -cah --no-recursion -f ../$(KOBO_PACKAGE_OTA) \ + -T koreader/ota/package.index + +.PHONY: update diff --git a/make/macos.mk b/make/macos.mk new file mode 100644 index 000000000..95906784e --- /dev/null +++ b/make/macos.mk @@ -0,0 +1,14 @@ +MACOS_DIR = $(PLATFORM_DIR)/mac + +update: all + mkdir -p \ + $(INSTALL_DIR)/bundle/Contents/MacOS \ + $(INSTALL_DIR)/bundle/Contents/Resources + cp -pv $(MACOS_DIR)/koreader.icns $(INSTALL_DIR)/bundle/Contents/Resources/icon.icns + cp -LR $(INSTALL_DIR)/koreader $(INSTALL_DIR)/bundle/Contents + cp -pRv $(MACOS_DIR)/menu.xml $(INSTALL_DIR)/bundle/Contents/MainMenu.xib + ibtool --compile "$(INSTALL_DIR)/bundle/Contents/Resources/Base.lproj/MainMenu.nib" "$(INSTALL_DIR)/bundle/Contents/MainMenu.xib" + rm -rfv "$(INSTALL_DIR)/bundle/Contents/MainMenu.xib" + $(CURDIR)/platform/mac/do_mac_bundle.sh $(INSTALL_DIR) + +.PHONY: update diff --git a/make/pocketbook.mk b/make/pocketbook.mk new file mode 100644 index 000000000..60ca78f19 --- /dev/null +++ b/make/pocketbook.mk @@ -0,0 +1,43 @@ +POCKETBOOK_DIR = $(PLATFORM_DIR)/pocketbook +PB_PACKAGE = koreader-pocketbook$(KODEDUG_SUFFIX)-$(VERSION).zip +PB_PACKAGE_OTA = koreader-pocketbook$(KODEDUG_SUFFIX)-$(VERSION).targz + +update: all + # ensure that the binaries were built for ARM + file $(INSTALL_DIR)/koreader/luajit | grep ARM || exit 1 + # remove old package if any + rm -f $(PB_PACKAGE) + # Pocketbook launching scripts + mkdir -p $(INSTALL_DIR)/applications + mkdir -p $(INSTALL_DIR)/system/bin + cp $(POCKETBOOK_DIR)/koreader.app $(INSTALL_DIR)/applications + cp $(POCKETBOOK_DIR)/system_koreader.app $(INSTALL_DIR)/system/bin/koreader.app + cp $(COMMON_DIR)/spinning_zsync $(INSTALL_DIR)/koreader + cp -rfL $(INSTALL_DIR)/koreader $(INSTALL_DIR)/applications + find $(INSTALL_DIR)/applications/koreader \ + -type f \( -name "*.gif" -o -name "*.html" -o -name "*.md" -o -name "*.txt" \) \ + -exec rm -vf {} \; + # create new package + cd $(INSTALL_DIR) && \ + zip -9 -r \ + ../$(PB_PACKAGE) \ + applications -x "applications/koreader/resources/fonts/*" \ + "applications/koreader/resources/icons/src/*" "applications/koreader/spec/*" \ + $(ZIP_EXCLUDE) + # generate pocketbook package index file + zipinfo -1 $(PB_PACKAGE) > \ + $(INSTALL_DIR)/applications/koreader/ota/package.index + echo "applications/koreader/ota/package.index" >> \ + $(INSTALL_DIR)/applications/koreader/ota/package.index + # hack file path when running tar in parent directory of koreader + sed -i -e 's/^/..\//' \ + $(INSTALL_DIR)/applications/koreader/ota/package.index + # update index file in zip package + cd $(INSTALL_DIR) && zip -ru ../$(PB_PACKAGE) \ + applications/koreader/ota/package.index system + # make gzip pbupdate for zsync OTA update + cd $(INSTALL_DIR)/applications && \ + tar --hard-dereference -I"gzip --rsyncable" -cah --no-recursion -f ../../$(PB_PACKAGE_OTA) \ + -T koreader/ota/package.index + +.PHONY: update diff --git a/make/remarkable.mk b/make/remarkable.mk new file mode 100644 index 000000000..26061af98 --- /dev/null +++ b/make/remarkable.mk @@ -0,0 +1,32 @@ +REMARKABLE_DIR = $(PLATFORM_DIR)/remarkable +REMARKABLE_PACKAGE = koreader-remarkable$(KODEDUG_SUFFIX)-$(VERSION).zip +REMARKABLE_PACKAGE_OTA = koreader-remarkable$(KODEDUG_SUFFIX)-$(VERSION).targz + +update: all + # ensure that the binaries were built for ARM + file $(INSTALL_DIR)/koreader/luajit | grep ARM || exit 1 + # remove old package if any + rm -f $(REMARKABLE_PACKAGE) + # Remarkable scripts + cp $(REMARKABLE_DIR)/* $(INSTALL_DIR)/koreader + cp $(COMMON_DIR)/spinning_zsync $(INSTALL_DIR)/koreader + # create new package + cd $(INSTALL_DIR) && \ + zip -9 -r \ + ../$(REMARKABLE_PACKAGE) \ + koreader -x "koreader/resources/fonts/*" \ + "koreader/resources/icons/src/*" "koreader/spec/*" \ + $(ZIP_EXCLUDE) + # generate update package index file + zipinfo -1 $(REMARKABLE_PACKAGE) > \ + $(INSTALL_DIR)/koreader/ota/package.index + echo "koreader/ota/package.index" >> $(INSTALL_DIR)/koreader/ota/package.index + # update index file in zip package + cd $(INSTALL_DIR) && zip -u ../$(REMARKABLE_PACKAGE) \ + koreader/ota/package.index + # make gzip remarkable update for zsync OTA update + cd $(INSTALL_DIR) && \ + tar -I"gzip --rsyncable" -cah --no-recursion -f ../$(REMARKABLE_PACKAGE_OTA) \ + -T koreader/ota/package.index + +.PHONY: update diff --git a/make/sony-prstux.mk b/make/sony-prstux.mk new file mode 100644 index 000000000..88733a00c --- /dev/null +++ b/make/sony-prstux.mk @@ -0,0 +1,31 @@ +SONY_PRSTUX_DIR = $(PLATFORM_DIR)/sony-prstux +SONY_PRSTUX_PACKAGE = koreader-sony-prstux$(KODEDUG_SUFFIX)-$(VERSION).zip +SONY_PRSTUX_PACKAGE_OTA = koreader-sony-prstux$(KODEDUG_SUFFIX)-$(VERSION).targz + +update: all + # ensure that the binaries were built for ARM + file $(INSTALL_DIR)/koreader/luajit | grep ARM || exit 1 + # remove old package if any + rm -f $(SONY_PRSTUX_PACKAGE) + # Sony PRSTUX launching scripts + cp $(SONY_PRSTUX_DIR)/*.sh $(INSTALL_DIR)/koreader + # create new package + cd $(INSTALL_DIR) && \ + zip -9 -r \ + ../$(SONY_PRSTUX_PACKAGE) \ + koreader -x "koreader/resources/fonts/*" \ + "koreader/resources/icons/src/*" "koreader/spec/*" \ + $(ZIP_EXCLUDE) + # generate update package index file + zipinfo -1 $(SONY_PRSTUX_PACKAGE) > \ + $(INSTALL_DIR)/koreader/ota/package.index + echo "koreader/ota/package.index" >> $(INSTALL_DIR)/koreader/ota/package.index + # update index file in zip package + cd $(INSTALL_DIR) && zip -u ../$(SONY_PRSTUX_PACKAGE) \ + koreader/ota/package.index + # make gzip sonyprstux update for zsync OTA update + cd $(INSTALL_DIR) && \ + tar --hard-dereference -I"gzip --rsyncable" -cah --no-recursion -f ../$(SONY_PRSTUX_PACKAGE_OTA) \ + -T koreader/ota/package.index + +.PHONY: update diff --git a/make/ubuntu-touch.mk b/make/ubuntu-touch.mk new file mode 100644 index 000000000..f4bdff07b --- /dev/null +++ b/make/ubuntu-touch.mk @@ -0,0 +1,30 @@ +UBUNTUTOUCH_DIR = $(PLATFORM_DIR)/ubuntu-touch +UBUNTUTOUCH_SDL_DIR = $(UBUNTUTOUCH_DIR)/ubuntu-touch-sdl + +update: all + # ensure that the binaries were built for ARM + file $(INSTALL_DIR)/koreader/luajit | grep ARM || exit 1 + # remove old package if any + rm -f koreader-ubuntu-touch-$(MACHINE)-$(VERSION).click + ln -sf ../../$(UBUNTUTOUCH_DIR)/koreader.sh $(INSTALL_DIR)/koreader + ln -sf ../../$(UBUNTUTOUCH_DIR)/manifest.json $(INSTALL_DIR)/koreader + ln -sf ../../$(UBUNTUTOUCH_DIR)/koreader.apparmor $(INSTALL_DIR)/koreader + ln -sf ../../$(UBUNTUTOUCH_DIR)/koreader.apparmor.openstore $(INSTALL_DIR)/koreader + ln -sf ../../$(UBUNTUTOUCH_DIR)/koreader.desktop $(INSTALL_DIR)/koreader + ln -sf ../../$(UBUNTUTOUCH_DIR)/koreader.png $(INSTALL_DIR)/koreader + ln -sf ../../../$(UBUNTUTOUCH_DIR)/libSDL2.so $(INSTALL_DIR)/koreader/libs + # create new package + cd $(INSTALL_DIR) && pwd && \ + zip -9 -r \ + ../koreader-$(DIST)-$(MACHINE)-$(VERSION).zip \ + koreader -x "koreader/resources/fonts/*" "koreader/ota/*" \ + "koreader/resources/icons/src/*" "koreader/spec/*" \ + $(ZIP_EXCLUDE) + # generate ubuntu touch click package + rm -rf $(INSTALL_DIR)/tmp && mkdir -p $(INSTALL_DIR)/tmp + cd $(INSTALL_DIR)/tmp && \ + unzip ../../koreader-$(DIST)-$(MACHINE)-$(VERSION).zip && \ + click build koreader && \ + mv *.click ../../koreader-$(DIST)-$(MACHINE)-$(VERSION).click + +.PHONY: update