Commit Graph

43 Commits

Author SHA1 Message Date
Matthieu Gautier 661eb95df0 Use a specific cross_file on iOS cross compilation.
We need to set the property `needs_exe_wrapper` to true for
x86_64 cross compilation.

Else, meson will try to detect if we could run the cross
compiled executable, and because it is the same arch, it will
assume we can. So it will try to sanity check and execute the
cross compiled binary. Then fails.
2020-02-21 16:29:23 +01:00
Matthieu Gautier 7b6c79482a Make the dependency responsible to set the compilation env.
Instead of having the run_command function setting the
env from the buildEnv, this is the dependency that create the
env and then pass it to the run_command function.

This way, each dependency will be able to set a specific env.
2020-02-21 16:29:23 +01:00
Matthieu Gautier e27ede80cc Use correct arch_full name. 2020-02-21 15:12:17 +01:00
Matthieu Gautier 36366b2dd3 Better define of value in ios platform.
No real change, just better code to define it.
2020-02-21 15:12:17 +01:00
Matthieu Gautier c4295b1644 Do not set a specific compiler for ios 2020-02-21 15:12:17 +01:00
Matthieu Gautier 2774967e6d Set the pkg-config for cross-compiling.
This is needed for win32 on fedora.
It is better to use a specific pkg-config than setting a PKG_CONFIG_LIBDIR.
This avoid other CI (libzim/...) to set a env var specific to win32 build.
2020-01-20 22:55:50 +01:00
Matthieu Gautier 82617f6b94 Do not set `march` for android build.
We already build to the right architecture by using the arch_full triplet
gcc/g++/...
We don't need to set march when building android.
2020-01-20 22:55:21 +01:00
Matthieu Gautier 95138d207b Remove an unwanted print. 2019-12-05 12:32:13 +01:00
Matthieu Gautier a82d6430dc Remove support of kiwix-android and kiwix-custom-app. 2019-12-05 12:30:10 +01:00
Matthieu Gautier b6bbf9b098 Do not install gradle. Use gradlew script. 2019-12-05 12:30:10 +01:00
Matthieu Gautier 29be31ec03 Fix exe_wrapper.
This should be `exe_wrapper` not `exec_wrapper`.
2019-09-19 18:18:41 +02:00
Matthieu Gautier 0f13d99159 Remove unnecessary win32 libs.
It seems that those libraries are not needed (anymore ?).
Even more, `msvcr100` makes `kiwix-serve` crash when printing messages
on stdout/stderr.

`msvcr100` lib is necessary for ICU, because the default mingw's `msvcr`
doesn't provide `_free_locale` and `_create_locale`.

Most recent versions of mingw fix this and we do not need them.
On debian (travis CI) we use a old version of mingw and we need to force
the use of `msvcr100`.
2019-09-04 17:00:29 +02:00
Matthieu Gautier 3a1cd6ddb2 Build the kiwix-lib android "application" in kiwix-build.
This is not a real application as it is dependency for kiwix-android.
But it a app in the sens that it is packaged for android build system.
2019-07-24 10:25:52 +02:00
Chris Li 50ba90e67c fix macOS cross build 2019-06-24 19:30:18 +02:00
Matthieu Gautier 4868128551 Build for armeabi-v7a.
The main thing is to add the `-march` option when needed.
Ie, '-march=armv7-a` for arm.
Other compiler (arm64, x86, ...) don't support the march option so
we must not provide it.
2019-06-14 14:13:18 +02:00
Matthieu Gautier ef9755eff5 Remove android mips platforms
Also correctly rename Android classes.
2019-06-14 14:13:18 +02:00
Matthieu Gautier f9d5e0aa21 Use an already made archive for the armhf toolchains instead of git clone.
First, we don't need to clone all the git repository, we only need a
sub-directory.
Secondly, as we the base_deps archives only archive the sub-directory,
subsequent run of kiwix-build in the ci will try to do a git update on
a non git repository.

By making ourselves a tar archive, we simplify the process.

The archive on download.kiwix.org has been made with :
`tar czf raspberrypy-tools.tar.gz raspberrypi-tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64`
`raspberrypi-tools` being a clone of `https://github.com/raspberrypi/tools`
commit sha is 5caa7046982f0539cf5380f94da04b31129ed521
2019-05-02 17:43:11 +02:00
Matthieu Gautier 505961be4c Build in release mode.
- Dependency are installed "striped".
- Our project are build "debugoptimized" by default and "release" when
  building release instead of "debug"

We need to update the `base_deps_meta_version` as we are changing how
dependencies are compiled.
2019-02-19 17:23:14 +01:00
Matthieu Gautier c9210bb0e0 Allow kiwix-build to build shared libs linked statically with deps.
We need to be able to build libzim as shared lib while using all
other dependencies statically (to not have libxapian.so, ... to distribute)

This add a new platform (static=False) that make all dependencies being
build in a static platform.
2019-02-04 17:01:28 +01:00
Matthieu Gautier 1b2b3efb54 Allow the platform itself to set on which platform we need to build the dep
For some complex build, we may want to build a dependency on another
platform that the target platform.
2019-02-04 17:01:28 +01:00
Matthieu Gautier 4f2786a031 Add missing import of pj in i586 platform 2019-01-10 16:50:47 +01:00
Matthieu Gautier 1d881d0612 Add the include dir in the meson_cross_file.
This is needed to have kiwix-lib find the `mustache.hpp` include when
cross compiling.
2019-01-09 18:29:58 +01:00
birros 8d58d8d7cb First version of a flatpak builder.
This commit add a first version code to build a flatpak of kiwix-desktop.
It is mainly based on the PR #254 of @birros (hence he is the author of this commit)

However there is some differences :
- I (@mgautier) create a new builder to run the flatpak build instead of using a new
  dependency.
- Use the flatpak platform to install org.kde.Platform and org.kde.Sdk

This code version doesn't correctly work but I wanted to commit the birros' code
without too many modification (even if there is a lot).
2018-11-27 09:43:52 +01:00
Matthieu Gautier 095eec303a Use the more recent msvcr100 instead of msvcr90. 2018-08-28 16:42:06 +02:00
Matthieu Gautier 5c83ba9d10 Fix compilation of kiwix-custom-app.
This is forgotten dependency. Not updated when we moved to multi-arch
build.
Now, it is fixed.
2018-07-19 16:19:55 +02:00
mhutti1 20ac697d43 Build with android logging library 2018-06-29 15:26:54 +02:00
Matthieu Gautier 63003d5bce Correctly extract platform from the dependency.
If the `dep` is a two char string (as "qt"), the `platform, name = dep`
will split the string and search for 't' dependency in 'q' platform.

So, we have to be sure that the dep is a tuple before splitting it.
2018-06-12 16:12:15 +02:00
Matthieu Gautier 369b805e59 Add ios_multi_arch fatlib.
Fix #113
2018-06-06 17:41:12 +02:00
Matthieu Gautier db82455f03 Be able to build multi-arch android apk.
By building kiwix-android on the `android` platform, we can now build
`kiwix-lib` on all `android_<arch>` platforms, and so have all
architectures in the same apk.

Fix #108
2018-06-06 17:41:12 +02:00
Matthieu Gautier 9b85791705 Gradle is a dependency of the android platform, not of other dependencies. 2018-06-06 17:41:11 +02:00
Matthieu Gautier 6de2cc80b6 Add an android metaPlatformInfo to build all android architecture. 2018-05-31 11:30:26 +02:00
Matthieu Gautier 74ba5885a0 Add a MetaPlatformInfo.
A metaplatform allow to regroup sereval platform together.
When a target is added to the platform, the target is dispatched/add to
all sub platforms.

As the step (metaplatformName, target) is not really added, we have to
track which steps are really added, so `add_targets` need to return the
list of added targets.
2018-05-31 11:30:26 +02:00
Matthieu Gautier 3eae47240b Make the platform responsible to add the targets. 2018-05-31 11:30:26 +02:00
Matthieu Gautier 7e8ed1a623 Correctly install packages. 2018-05-31 11:30:26 +02:00
Matthieu Gautier 4d6b6994bc Merge toolchain and dependencies.
Toolchain now became "simple" dependencies.
They are referenced by Platform.

Platform are now created at demande and a neutralPlatform now exists.
2018-05-31 11:30:25 +02:00
Matthieu Gautier 211c0f9651 buildEnv doesn't need to know about toolchains.
Having access to the platform is enough.
2018-05-31 11:25:59 +02:00
Matthieu Gautier 41d23b6249 Create the associated platform at demand. 2018-05-31 11:25:59 +02:00
Matthieu Gautier daad1c98c6 Make the options global. 2018-05-31 11:25:59 +02:00
Matthieu Gautier 041826d0e8 Move from target logic to steps logic.
This is the big change !!!!

Instead of handling target as primary object and prepare/build targets,
we are handling build steps.

A build step may be a source (preparation) or a build (of the source).
Actualy, a step is a tuple (context, Builder or Source).

The context define the context of the step. It can be :
- 'source', for a Source step
- 'neutral' or the name of a platform for Build step.

Target becomes a "Class only" class.
2018-05-31 11:25:59 +02:00
Matthieu Gautier 754df8df1d Make the platform responsible to create the buildenv.
It is now the platform who is responsible to:
- correctly add the toolchains as needed
- setup the cross environment
- create the cross files.
2018-05-31 11:25:54 +02:00
Matthieu Gautier a413c5f064 Fix root_path lookup in cmake_cross_file generation.
Sometime the root_path is dependent of the target platform and sometime
not. But sometime dependent of the build arch :/

[TODO] We should move the cross_file generation to the PlatformInfo class.
2018-05-22 17:47:21 +02:00
Matthieu Gautier b950feb893 Move Builder and BuildEnv in specific module.
Introduce also a "NeutralEnv", a build environment independent of the
targeted platform. All `Source` now build using the neutralEnv.

Most of toolchains are also using neutralEnv except android_ndk who is
specific to a platform.

As toolchain are neutral, platform specific environment variables are now
set by the platformInfo directly instead of the toolchain.
2018-05-22 16:58:39 +02:00
Matthieu Gautier 363bdf74ed Move target informations into a platforms module.
`TargetInfo`s are information about the target platform.
Let's rename them into PlatformInfo and move them in a specific module.
2018-05-22 16:58:02 +02:00