www-content/pages/Compiling_the_native_Window...

150 lines
6.2 KiB
Plaintext
Raw Normal View History

====Compiling the native Windows EFL ====
=== Preparing the build environment ===
The steps below correspond to the preparation of the **EFL native windows** compilation environment.
<note important>
**[Note!]**
These steps were tested on Windows server 2019 64bit and Windows 10 64bit.
</note>
Except for topic 6 (Environment variables) that can be consulted during the process of preparing the environment, the ideal is that the steps are fulfilled in the proposed order.
- Visual Studio installation
- Meson
- LLVM
- Vcpkg
- Environment variables
- Compiling the EFL
----
=== 1 - Visual Studio installation ===
* Download the software from the official website: [[https://visualstudio.microsoft.com/|Visual Studio]];
* Choose the option you want. The most basic and free version is the [[https://visualstudio.microsoft.com/pt-br/thank-you-downloading-visual-studio/?sku=Community&rel=16 |Community]] version;
* After installation add the build package for C and C++;
* If there is no list of options for including the package, complete the installation and, in the Start Menu, search for Visual Studio Installer. You can add the package to C/C++, update or check if it was successfully installed.
----
=== 2 - Meson ===
2.1. Install [[https://pypi.org/project/meson/|Meson]] using the following command on the terminal (CMD or Developer Command Prompt from Visual Studio):
<code>
> pip install --user meson
</code>
> The version of meson used in this tutorial is the **0.53.2**. It is possible to directly install this version with:
> <code>> pip install meson==0.53.2</code>
> To check the installed version, use ''meson --version'' (or use ''pip freeze'' to check all installed packages and their versions).
> Check the python version installed on your Windows. In this tutorial we are using Python 3.8
2.2. At the end of the previous step, open a new terminal, type the command below and press enter:
<code>
> meson --version
</code>
The result should look like this:
<code>
0.53.2
</code>
If the command is not recognized, finish the environment variables step and try again. For additional help, check [[https://mesonbuild.com|The meson Official documentation]].
----
=== 3 - LLVM ===
3.1. Download LLVM from [[https://github.com/llvm/llvm-project/releases/|LLVM's official page]]. The version used in this tutorial is 9.0.1.
> Upon entering the corresponding section with the chosen version, a file with the following description (in this case with version 9.0.1) must be located: ''LLVM-9.0.1-win64.exe''. Download this file.
3.2. When installing, it is important to select at least one of the options below:
>[x] Add LLVM to the system PATH for all users.
>[x] Add LLVM to thr system PATH for current user.
In this tutorial, we install it in ''C:\Program Files\LLVM''.
----
=== 4. VCPKG ===
Vcpkg is not strictly necessary, since you could install each of the dependencies separately and make sure cmake finds it, but it is a more convenient way to do so and it is supported by EFL's current build system.
To manage dependencies with vcpkg:
4.1. Follow the **Vcpkg Installation Guide** in [[https://github.com/microsoft/vcpkg|Vcpkg's Github Repository]].
4.2. Install the following dependencies:
- OpenSSL;
- Freetype;
- Check;
- Libpng;
- Zlib.
Or, in a single command line (considering vcpkg is in your PATH or that you're inside vcpkg's directory):
<code>
> vcpkg install openssl freetype check libpng zlib
</code>
This way vcpkg will download, setup and install all of those dependencies.
----
=== 7 Windows Environment Variables ===
* This module aims to check environment variables.
==Python==
<note important>
**[OBS:]**
Python paths in this tutorial consider that the current installed Python version is 3.8. Don't forget to check the respective paths according to the location of your current Python installation.
</note>
During python installation, you can select the option to add python environment variables automatically. If there is a problem with Meson, check the existing variables and add as shown below:
* Open the windows environment variable editor, for the variables corresponding to the user, locate **''path''** and double-click it (or click the Edit button). In the next window, click the "New" button and add the following directories:
* <code>C:\Users\<your-username>\AppData\Roaming\Python\Python38\Scripts</code>
* <code>C:\Python38</code>
* <code>C:\Python38\Scripts</code>
==OpenSSL==
In case you're using a custom OpenSSL installation (not the one from vcpkg), you may want to set ''OPENSSL_DIR'' environment variable in order to EFL search for your installation instead of vcpkg's. For this:
* Open the windows environment variable editor. In user's variable list, click **New**:
* Set **Variable name** to:
* <code>OPENSSL_DIR</code>
* Set **Variable value** to your OpenSSL installation path, for example:
* <code>C:\Users\<your-username>\AppData\Local\efl\openssl</code>
* For clarification: ''OPENSSL_DIR'' must point to the directory where the file ''libssl.lib'' and the directory ''include/'' are located.
The current build system will also warn you about this file.
----
=== 7 - Compiling EFL ===
* Choose a directory to clone **EFL** repository;
* Clone the [[https://github.com/expertisesolutions/efl.git|EFL Native Windows Repository]] repository.
* Open Visual Studio's **Developer Command Prompt** in the EFL directory and run the following command:
* <code>> configure.bat</code>
* If an error occurs in this step, it is generally due to opening a regular Command Prompt (instead of VS's Developer Command Prompt). In that case, you may manually setup the developer prompt by entering the following command:
* <code> > "C:\Program Files (x86)\Microsoft Visual Studio\<VS version>\<VS edition>\VC\Auxiliary\Build\vcvars64.bat"</code>
* If it still does not work, try to:
- Delete the ''build'' directory;
- Delete every subdirectory inside ''subprojects'' (**NOTE: Do NOT delete the .wrap files!**)
* After you finish, rerun **configure.bat**, execute **build.bat**:
* <code>> build.bat</code>