====== Compilation of the sources of an Epeios software ====== This page is about software having their own //Github// repository. This will be the case for all //Epeios// software, but this take some time to be completed, so what described on this page may not be accurate for all //Epeios// software.. More and more software in the //Epeios// project relies on third-party frameworks (//Node.js//, //Chromium Embeded Framework//...). However, these software do not interact directly with these frameworks, but through a wrapper (//NJSq// for //Node.js//, //XDHCEFq// for //Chromium Embeded Framework//...). Therefore, this software are typical dynamic libraries, which also uses only standard/system //C//%%/%%//C++// libraries (no ''v8.h'' or ''node.h'' header inclusion for components intended for //Node.js//, or ''capi/cef_...%%.%% h'' for components intended to be used with //Chromium Embedded Framework//, for example). Hence, only a standard //C++// development environment, as described below, is required to compile most //Epeios// software. Regarding he wrappers, in addition to a //C++// development environment, they will require elements specific to the environments for which they are intended. More details on these elements are available on the page dedicated to each wrapper. ===== GNU/Linux and other POSIX compliant OSes ===== For //GNU/Linux// (or other //POSIX//-compliant OSes, except //macOS//), to compile the software you have to launch the ''make'' command (the //GNU make// command and the proper development environment have to be installed) from the root directory of the package (where there should be a ''Makefile''). You can override the default compiler by defining the ''CXX'' environment variable or by passing a ''CXX'' argument to the ''make'' command. The two recognized compilers are //GNU GCC// (''CXX=g++'', which is the default one) and //Clang// (''CXX=clang++''). Apart from the common //IA-32// and //AMD64// architectures, you can also compile for both //AArch32// and //AArch64// ARM architectures. This means that you can compile for and on devices like the //Raspberry Pi// (or //Banana Pi//, or //ODROID//...) natively in 32-bit and even in 64-bit on the new ones, if the installed //GNU/Linux// distribution is also 64-bit. ===== macOS ===== To obtain //macOS// binaries, you have compile the software by launching the ''make'' command (you have to install //XCode// in order to do this) in the root directory of the package (where there should be a ''Makefile''). ===== Windows ===== In the ''releases'' section of the //Github// repository, you should find the //Windows// binaries. You also still need the sources of the software, because of all extra files needed to launch it (usually at least the ''.xlcl'' and ''.xcfg'' suffixed files ; see the documentation of the corresponding software component for more details). If you want to compile it, you will find a ''.vcxproj'' suffixed file, which can be used to compile the software using //Visual C++// from //Microsoft//. Additionally, under //Windows// with //Cygwin//, given you have the proper development environment, you can compile it by launching ''make'' from the root directory of the package (where there should be a ''Makefile''). This will give you a binary which uses the //Cygwin// //POSIX// API. If you want an application which directly uses the //Windows// //API//, you can use the //MinGW// compiler under //Cygwin//. You then have to launch ''make target=win''.