Commit Graph

183 Commits

Author SHA1 Message Date
Matthieu Gautier 88cc75475c Build libzim and libkiwix in debug mode on android.
Fix #623
2023-11-20 11:10:24 +01:00
Matthieu Gautier 861682ecaa Update emsdk version. 2023-11-17 12:28:14 +01:00
Emmanuel Engelhart 6a9093642c Bump-up aria2 to 1.37.0 2023-11-17 12:21:39 +01:00
renaud gaudin ac22caca6d
Don't set context.no_skip on meson builder
no_skip is thus computed automatically depending on project being our or not.
We dont want to skip configure on our own projetcs (limited impact, simplifies deps mgmt)
2023-11-15 08:50:38 +00:00
renaud gaudin a063b91349
Build CoreKiwix.xcframework
CoreKiwix.xcframework is the packaging format required by Kiwix apple (macOS/iOS) reader for libkiwix.
Naming will hopefully be revisited later (libkiwix.xcframework?)

This folder is a combination of all static archive (*.a): dependencies and libkiwix itself
for all apple-supported platforms: macOS x86_64, macOS arm64, iOS arm64 and iOS x86_64.
It also includes the headers.
Note: while iOS archs are separated in the framework, the macOS archs are bundled as a fat binary.

This thus adds:

- A new `apple_all_static` target that lists mentioned sub-platforms.
- A new `AppleXCFramework` virtual dependency and builder
  -  requires `libkiwix`
  - merges the archives into one per target
  - creates the fat binary for macOS
  - creates the xcframework
- `libkiwix_xcframework-VERSION.tar.gz` because platformname is xcframework
  - it only contains the xcframework but in libkiwix_xcframework-VERSION/lib folder
    Because with this virtual target, there are no other files
  - requires a new `xcframework` platform_name in builddef
- subplatforms deps and macOS/iOS _ok files to make_deps_archive

---

https://developer.apple.com/documentation/xcode/creating-a-multi-platform-binary-framework-bundle
2023-11-15 08:50:00 +00:00
renaud gaudin 09dacaa25e
disabled bitcode support, as deprecated since xcode14
See https://stackoverflow.com/questions/72543728/xcode-14-deprecates-bitcode-but-why
2023-11-09 08:14:52 +00:00
Matthieu Gautier 2a5a5c3a42 Correctly build ICU data when building for wasm.
When we use `--disable-tools` (ie, when we are cross-compiling), ICU
will build the data only if it detects we are cross-compiling.

This make sens until we cross-compiling for wasm.
Wasm output is a script file with the interpreter in the sdk we have
installed. So ICU's configure can run the test binary and so doesn't detect
we are cross-compiling.

So we have to patch ICU Makefile to make it build the ICU data anyway.
2023-11-02 17:33:51 +01:00
Matthieu Gautier beadc3b16c Use custom data.
ICU is used to:
- List locales (`locales_tree`)
- Get information about those locales in different languages (`lang_tree`)
- Remove accents (`translit`)

Tracing ICU without custom data, we also load `likelySubtags` and
`metadata`. Not sure why and what happen when missing but let's be
conservatives and include them.
2023-11-02 11:14:04 +01:00
Matthieu Gautier 717dcd801d Move to ICU 73.2 2023-11-02 11:14:04 +01:00
Matthieu Gautier 8cf6c39d11 Extend `ReleaseDownload` source to be composed of several archives. 2023-11-02 11:13:29 +01:00
Emmanuel Engelhart e966385069 Bump-up Xapian to version 1.4.23 2023-10-31 11:39:29 +01:00
Matthieu Gautier b57f83ed25 Move all toolchain installation in TOOLCHAIN directory.
This is a clearer install and it simplify the base_deps archive creation.
2023-10-24 10:53:31 +02:00
Matthieu Gautier 149c1d25fb Use musl toolchain with gcc 10.
We need a "old" gcc version to be able to run on "old" systems
(libstdc++.6.0.28)
2023-10-23 10:19:12 +02:00
Matthieu Gautier c3d3cc5a97 Add x86_64 musl toolchain and platform. 2023-10-23 10:19:12 +02:00
Matthieu Gautier f0ad7b126a Rename `arm_musl.py` to `musl.py`.
Those files will contain toolchain for musl. Not specific to arm.
2023-10-23 10:19:12 +02:00
Matthieu Gautier 7807e10325 Rename files containing toolchain to `tc_*` 2023-10-23 10:19:12 +02:00
Matthieu Gautier 65dd03e58f Move back to the old toolchain for aarch64
Fix #634
2023-08-11 16:18:25 +02:00
Matthieu Gautier 5884909b25 Add target aarch64_musl_*
I have to mention that adding a new cross compiled target never seems
so simple.
2023-06-14 15:57:49 +02:00
Matthieu Gautier 897e7f292c Switch (again) to new arm cross-compilation toolchain.
This introduce a difference between armv6 and armv8.
2023-05-22 19:03:57 +02:00
Emmanuel Engelhart 5057444acd
Disable decompression feature in libmagic 2023-05-20 13:23:25 +02:00
Emmanuel Engelhart e0d4eea050
Bump-up libmagic to version 5.44 2023-05-19 15:28:34 +02:00
Matthieu Gautier fd85b80b2c Move back to gcc 6.3.0 when compiling to aarch64. 2023-04-26 16:54:35 +02:00
Matthieu Gautier 5ef7e2a017 New version of xapian 1.4.22
Fix #599
2023-04-25 16:54:40 +02:00
Matthieu Gautier ab2cbdbe5b Introduce aarch64 target.
In opposition to 32 bits, it is adapted to all PI (as long as they are
in 64 bits).
2023-03-28 17:47:48 +02:00
Matthieu Gautier 4e88c6eb10 Correctly set the armhf toolchain to a 32 bits arch.
cross-gcc-10.3.0-pi_64.tar.gz for 64 bits architecture and armhf
is about 32 bits.

However, we know use a pi 2 and 3 and Stretch only[*] toolchains

[*] To be tested. Maybe the only is for the target compilation but binary
run elsewhere too.
2023-03-28 17:46:31 +02:00
Matthieu Gautier 31771fa35c Introduce MixedMixin
We will need to create "mixed linkage" library for other arch than native.
It is better to move associated code in a separate part.
2023-03-28 17:40:12 +02:00
Matthieu Gautier b8cd12a360 Update armhf toolschain. 2023-03-28 16:16:22 +02:00
Emmanuel Engelhart 7e88bf14a2
Bumpup libmicrohttpd to 0.9.76 2023-03-01 10:10:15 +01:00
Matthieu Gautier 1f8ccde487 "main" is now our default branch for all our projects. 2023-01-03 10:19:52 +01:00
Matthieu Gautier 344b9328c3 libzim and zim-tools are now using "main" for the default branch. 2022-12-22 14:32:13 +01:00
Matthieu Gautier d76819390e Do not always fallback to master. 2022-12-22 14:31:20 +01:00
Matthieu Gautier f6cd94366a Fix wasm compilation.
On wasm, we cannot do mmap. We have to do plain read.

Fix openzim/libzim#751
2022-12-06 19:01:38 +01:00
Matthieu Gautier cd0c2da542 Correctly compile libkiwix on native_mixed 2022-11-30 12:20:40 +01:00
Matthieu Gautier fd8044ba76 Reduce base dependencies to ony what needed on wasm. 2022-11-16 16:37:05 +01:00
Matthieu Gautier 6f8b82ad7d Fallback to lzma-5.2.6
Version 5.2.7 include this commit
https://git.tukaani.org/?p=xz.git;a=commit;h=31d80c6b261b24220776dfaeb8a04f80f80e0a24

With this change, compiling libzim mixed (libzim dynamic and dependencies,
so lzma, statically) fails at libzim linking with a
`src/libzim.so.8.0.1: version node not found for symbol lzma_get_progress@XZ_5.2.2`
error message.

This can be "workaround" by passing `--disable-symbol-versions` to
configure script but then, it is the compilation of kiwix-desktop in
native_dyn which falling with

```
/usr/bin/ld: /usr/lib64/libsystemd.so.0: undefined reference to `lzma_code@XZ_5.0'
/usr/bin/ld: /usr/lib64/libsystemd.so.0: undefined reference to `lzma_end@XZ_5.0'
/usr/bin/ld: /usr/lib64/libsystemd.so.0: undefined reference to `lzma_stream_decoder@XZ_5.0'
/usr/bin/ld: /usr/lib64/libxml2.so.2: undefined reference to `lzma_auto_decoder@XZ_5.0'
/usr/bin/ld: /usr/lib64/libxml2.so.2: undefined reference to `lzma_properties_decode@XZ_5.0'
```

Probably because some native dependencies (Qt ?) use versionned symbols.

This have to be fixed somehow but until then, let's go back to 5.2.6
2022-11-16 16:37:05 +01:00
Matthieu Gautier 180fb249f6 Add a support to compile libzim for wasm.
`icu4c_wasm.patch` is build by :
 - Copying config.sub from liblzma source as new version of config.sub there
   knows about wasm architecture.
 - Copying `mh-linux` on `mh-unknown` as specified in (origin) `mh-unknown`.
   This is because icu4c configure doesn't detect `emscripten` platform and
   "fallback" to `mh-unknown`.
2022-11-16 16:37:05 +01:00
Matthieu Gautier b8c120b179 Pass the path of the patch in the command line instead of as stdin.
This way, we can see the applied patch in the log.
2022-11-16 10:46:06 +01:00
Matthieu Gautier a7809b33fc Update lzma version to 5.2.7
On top of using a more recent version (which is good it itself),
version 5.2.7 use a autotools version which knows about wasm.
2022-11-16 10:46:06 +01:00
Matthieu Gautier ce82860b85 Introduce configure and make wrapper.
This way, we can use small wrapper tools from sdk to run configure and
make.
2022-11-16 10:45:57 +01:00
Matthieu Gautier 3847844c54 Update android_ndk to version r21e
To do this, we need to update the android api to 24.
We lost all users using a android under api 24.
2022-09-29 09:45:15 +02:00
Matthieu Gautier bcbb164d49 Build libzim dynamically on android. 2022-06-28 12:23:35 +02:00
Matthieu Gautier aa4250dd41 Build libkiwix with the right new option on android 2022-06-09 10:30:37 +02:00
Matthieu Gautier 72c271a74c Remove LibkiwixApp
The project was used to assemble all android compilation in one
multiplatform java archive.

This allow use to remove android_sdk and Gradle builder
2022-06-09 10:28:59 +02:00
Matthieu Gautier b7a3187b45 Update version of zstd.
No need to update base_deps_meta_version as it is already updated in
this same PR.
2022-04-11 18:08:08 +02:00
Emmanuel Engelhart 500d3bec86 Use zlib 1.2.12 2022-04-11 17:47:56 +02:00
Matthieu Gautier 8b9b74d577 Better flatpak command options.
This mainly add the option `--nointeractive` when installing the sdk.
2022-03-10 16:21:14 +01:00
Matthieu Gautier fe74ad7aff Do not compile libkiwix on android with werror
The java wrapper is using deprecated methods,
so we cannot compile with `werror`.
2022-01-18 11:42:16 +01:00
Matthieu Gautier 462538f4a5 Do not try to cross compile aria2.
Aria2 is a special case. We actually don't really need to compile it.
kiwix-desktop through libkiwix use the aria2c binary but we always
use (package) the system binary or a prebuild release.

And we don't cross compile kiwix-desktop to windows, so we don't need
aria2c neither.
2021-12-24 13:08:29 +01:00
Matthieu Gautier ea7fa1f207 Remove unnecessary aria2 patch
This patch was to compile libaria2 on android.
But we don't compile it for android since a long time.
As it doesn't apply anymore, let's remove it.
2021-12-23 18:50:50 +01:00
Emmanuel Engelhart 71b1c2799a Update aria2c to 1.36.0 2021-12-23 18:50:50 +01:00