2016-05-16 00:58:32 -07:00
|
|
|
#ifdef HAVE_CONFIG
|
|
|
|
# include "config.h"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include <unistd.h>
|
|
|
|
#include <Ecore.h>
|
|
|
|
#include <Ecore_File.h>
|
|
|
|
|
|
|
|
#include "Edi.h"
|
|
|
|
|
|
|
|
#include "edi_private.h"
|
|
|
|
|
2017-05-26 04:28:22 -07:00
|
|
|
#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__OpenBSD__) || defined(__NetBSD__)
|
|
|
|
#define MAKE_COMMAND " gmake"
|
|
|
|
#else
|
|
|
|
#define MAKE_COMMAND " make"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
2016-05-16 00:58:32 -07:00
|
|
|
static Eina_Bool
|
|
|
|
_make_project_supported(const char *path)
|
|
|
|
{
|
2017-02-19 08:22:53 -08:00
|
|
|
return edi_path_relative_exists(path, "Makefile") ||
|
2017-05-26 04:28:22 -07:00
|
|
|
edi_path_relative_exists(path, "makefile") ||
|
2017-02-19 08:22:53 -08:00
|
|
|
edi_path_relative_exists(path, "configure") ||
|
|
|
|
edi_path_relative_exists(path, "autogen.sh");
|
2016-05-16 00:58:32 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
static Eina_Bool
|
2016-09-30 13:47:05 -07:00
|
|
|
_make_file_hidden_is(const char *file)
|
2016-05-16 00:58:32 -07:00
|
|
|
{
|
2016-09-30 13:47:05 -07:00
|
|
|
if (!file || strlen(file) == 0)
|
2016-05-16 00:58:32 -07:00
|
|
|
return EINA_FALSE;
|
|
|
|
|
2016-11-29 20:00:48 -08:00
|
|
|
if (eina_str_has_extension(file, ".o") || eina_str_has_extension(file, ".so") ||
|
|
|
|
eina_str_has_extension(file, ".lo"))
|
2016-09-30 13:47:05 -07:00
|
|
|
return EINA_TRUE;
|
2016-11-29 20:00:48 -08:00
|
|
|
if (eina_str_has_extension(file, ".a") || eina_str_has_extension(file, ".la"))
|
2016-09-30 13:47:05 -07:00
|
|
|
return EINA_TRUE;
|
|
|
|
|
2016-05-16 00:58:32 -07:00
|
|
|
return EINA_FALSE;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_make_build_make(void)
|
|
|
|
{
|
|
|
|
chdir(edi_project_get());
|
2017-05-26 04:28:22 -07:00
|
|
|
ecore_exe_pipe_run(BEAR_COMMAND MAKE_COMMAND, ECORE_EXE_PIPE_READ_LINE_BUFFERED | ECORE_EXE_PIPE_READ |
|
2016-05-16 00:58:32 -07:00
|
|
|
ECORE_EXE_PIPE_ERROR_LINE_BUFFERED | ECORE_EXE_PIPE_ERROR |
|
2016-12-26 10:35:36 -08:00
|
|
|
ECORE_EXE_PIPE_WRITE | ECORE_EXE_USE_SH, NULL);
|
2016-05-16 00:58:32 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_make_build_configure(void)
|
|
|
|
{
|
|
|
|
chdir(edi_project_get());
|
2017-05-26 04:28:22 -07:00
|
|
|
ecore_exe_pipe_run("./configure && " BEAR_COMMAND MAKE_COMMAND,
|
2016-05-16 00:58:32 -07:00
|
|
|
ECORE_EXE_PIPE_READ_LINE_BUFFERED | ECORE_EXE_PIPE_READ |
|
|
|
|
ECORE_EXE_PIPE_ERROR_LINE_BUFFERED | ECORE_EXE_PIPE_ERROR |
|
2016-12-26 10:35:36 -08:00
|
|
|
ECORE_EXE_PIPE_WRITE | ECORE_EXE_USE_SH, NULL);
|
2016-05-16 00:58:32 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_make_build_autogen(void)
|
|
|
|
{
|
|
|
|
chdir(edi_project_get());
|
2017-05-26 04:28:22 -07:00
|
|
|
ecore_exe_pipe_run("./autogen.sh && " BEAR_COMMAND MAKE_COMMAND,
|
2016-05-16 00:58:32 -07:00
|
|
|
ECORE_EXE_PIPE_READ_LINE_BUFFERED | ECORE_EXE_PIPE_READ |
|
|
|
|
ECORE_EXE_PIPE_ERROR_LINE_BUFFERED | ECORE_EXE_PIPE_ERROR |
|
2016-12-26 10:35:36 -08:00
|
|
|
ECORE_EXE_PIPE_WRITE | ECORE_EXE_USE_SH, NULL);
|
2016-05-16 00:58:32 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_make_build(void)
|
|
|
|
{
|
2017-05-26 04:28:22 -07:00
|
|
|
if (edi_project_file_exists("Makefile") || edi_project_file_exists("makefile"))
|
2016-05-16 00:58:32 -07:00
|
|
|
_make_build_make();
|
|
|
|
else if (edi_project_file_exists("configure"))
|
|
|
|
_make_build_configure();
|
|
|
|
else if (edi_project_file_exists("autogen.sh"))
|
|
|
|
_make_build_autogen();
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_make_test(void)
|
|
|
|
{
|
|
|
|
chdir(edi_project_get());
|
|
|
|
ecore_exe_pipe_run("env CK_VERBOSITY=verbose make check", ECORE_EXE_PIPE_READ_LINE_BUFFERED | ECORE_EXE_PIPE_READ |
|
2016-12-26 10:35:36 -08:00
|
|
|
ECORE_EXE_PIPE_ERROR_LINE_BUFFERED | ECORE_EXE_PIPE_ERROR |
|
|
|
|
ECORE_EXE_PIPE_WRITE | ECORE_EXE_USE_SH, NULL);
|
2016-05-16 00:58:32 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_make_clean(void)
|
|
|
|
{
|
|
|
|
chdir(edi_project_get());
|
|
|
|
ecore_exe_pipe_run("make clean", ECORE_EXE_PIPE_READ_LINE_BUFFERED | ECORE_EXE_PIPE_READ |
|
2016-12-26 10:35:36 -08:00
|
|
|
ECORE_EXE_PIPE_ERROR_LINE_BUFFERED | ECORE_EXE_PIPE_ERROR |
|
|
|
|
ECORE_EXE_PIPE_WRITE | ECORE_EXE_USE_SH, NULL);
|
2016-05-16 00:58:32 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
Edi_Build_Provider _edi_build_provider_make =
|
|
|
|
{"make", _make_project_supported, _make_file_hidden_is,
|
|
|
|
_make_build, _make_test, _make_clean};
|