Make it possible to build with hexchat's gtk
This commit is contained in:
parent
01c7a3bd9e
commit
5f5b157e1c
@ -93,9 +93,10 @@ else()
|
|||||||
set(MOO_OS_UNIX TRUE)
|
set(MOO_OS_UNIX TRUE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
set(MOO_BUILD_FROM_MSVC FALSE CACHE BOOL "Create a win32 build from MSVC gtk build")
|
||||||
set(MOO_BUILD_FROM_MINGW ${MOO_OS_WIN32} CACHE BOOL "Create a win32 build from mingw gtk build")
|
set(MOO_BUILD_FROM_MINGW ${MOO_OS_WIN32} CACHE BOOL "Create a win32 build from mingw gtk build")
|
||||||
|
|
||||||
if(NOT MOO_BUILD_FROM_MINGW)
|
if(NOT MOO_BUILD_FROM_MINGW AND NOT MOO_BUILD_FROM_MSVC)
|
||||||
find_package(PkgConfig REQUIRED)
|
find_package(PkgConfig REQUIRED)
|
||||||
pkg_check_modules(GTK REQUIRED gtk+-2.0)
|
pkg_check_modules(GTK REQUIRED gtk+-2.0)
|
||||||
pkg_check_modules(GMODULE REQUIRED gmodule-2.0)
|
pkg_check_modules(GMODULE REQUIRED gmodule-2.0)
|
||||||
@ -119,9 +120,24 @@ if(NOT MOO_BUILD_FROM_MINGW)
|
|||||||
pkg_check_modules(XLIB x11 xext xrender ice sm)
|
pkg_check_modules(XLIB x11 xext xrender ice sm)
|
||||||
pkg_check_modules(LIBXML2 REQUIRED libxml-2.0)
|
pkg_check_modules(LIBXML2 REQUIRED libxml-2.0)
|
||||||
else()
|
else()
|
||||||
|
|
||||||
|
if(MOO_BUILD_FROM_MINGW)
|
||||||
set(MOO_GTK_DIR "C:/Projects/gtk/release/target" CACHE PATH "Gtk root dir")
|
set(MOO_GTK_DIR "C:/Projects/gtk/release/target" CACHE PATH "Gtk root dir")
|
||||||
set(MOO_GTK_DIST_DIR "C:/Projects/gtk/release/bdist" CACHE PATH "Gtk binary dir")
|
set(MOO_GTK_DIST_DIR "C:/Projects/gtk/release/bdist" CACHE PATH "Gtk binary dir")
|
||||||
|
|
||||||
|
set(GTK_LIBRARIES libgtk-win32-2.0-0 libatk-1.0-0 libgdk-win32-2.0-0 libgdk_pixbuf-2.0-0
|
||||||
|
libpango-1.0-0 libpangocairo-1.0-0 libcairo-2
|
||||||
|
libgio-2.0-0 libgobject-2.0-0 libgmodule-2.0-0 libgthread-2.0-0 libglib-2.0-0 libintl-8)
|
||||||
|
set(LIBXML2_LIBRARIES "libxml2-2")
|
||||||
|
else()
|
||||||
|
set(MOO_GTK_DIR "C:/gtk-build/gtk/Win32" CACHE PATH "Gtk root dir")
|
||||||
|
set(MOO_GTK_DIST_DIR "C:/gtk-build/gtk/bdist" CACHE PATH "Gtk binary dir")
|
||||||
|
|
||||||
|
set(GTK_LIBRARIES atk-1.0 cairo gdk_pixbuf-2.0 gdk-win32-2.0 gio-2.0 glib-2.0 gmodule-2.0 gobject-2.0
|
||||||
|
gthread-2.0 gtk-win32-2.0 iconv intl libffi libpng16 pango-1.0 pangocairo-1.0 pixman-1 zlib1)
|
||||||
|
set(LIBXML2_LIBRARIES libxml2)
|
||||||
|
endif()
|
||||||
|
|
||||||
set(CMAKE_INSTALL_PREFIX ${MOO_GTK_DIR} CACHE PATH "CMake install prefix" FORCE)
|
set(CMAKE_INSTALL_PREFIX ${MOO_GTK_DIR} CACHE PATH "CMake install prefix" FORCE)
|
||||||
|
|
||||||
include_directories(SYSTEM "${MOO_GTK_DIR}/include")
|
include_directories(SYSTEM "${MOO_GTK_DIR}/include")
|
||||||
@ -136,10 +152,6 @@ else()
|
|||||||
include_directories(SYSTEM "${MOO_GTK_DIR}/include/libxml2")
|
include_directories(SYSTEM "${MOO_GTK_DIR}/include/libxml2")
|
||||||
|
|
||||||
set(GTK_LIBRARY_DIRS "${MOO_GTK_DIR}/lib")
|
set(GTK_LIBRARY_DIRS "${MOO_GTK_DIR}/lib")
|
||||||
set(GTK_LIBRARIES libgtk-win32-2.0-0 libatk-1.0-0 libgdk-win32-2.0-0 libgdk_pixbuf-2.0-0
|
|
||||||
libpango-1.0-0 libpangocairo-1.0-0 libcairo-2
|
|
||||||
libgio-2.0-0 libgobject-2.0-0 libgmodule-2.0-0 libgthread-2.0-0 libglib-2.0-0 libintl-8)
|
|
||||||
set(LIBXML2_LIBRARIES "libxml2-2")
|
|
||||||
|
|
||||||
set(ENV{PATH} "ENV{PATH};${MOO_GTK_DIR}/bin")
|
set(ENV{PATH} "ENV{PATH};${MOO_GTK_DIR}/bin")
|
||||||
|
|
||||||
|
@ -134,8 +134,11 @@ if(MOO_USE_PCH)
|
|||||||
SOURCE_CXX moo-pch.cpp)
|
SOURCE_CXX moo-pch.cpp)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(MOO_BUILD_FROM_MINGW)
|
||||||
|
LIST(APPEND MEDIT_LIBS libmooglib-0)
|
||||||
|
endif()
|
||||||
|
|
||||||
target_link_libraries(medit
|
target_link_libraries(medit
|
||||||
libmooglib-0
|
|
||||||
${GTK_LIBRARIES}
|
${GTK_LIBRARIES}
|
||||||
${GMODULE_LIBRARIES}
|
${GMODULE_LIBRARIES}
|
||||||
${LIBXML2_LIBRARIES}
|
${LIBXML2_LIBRARIES}
|
||||||
|
@ -21,7 +21,8 @@ const mgw_errno_t MGW_E_EXIST = { MGW_EEXIST };
|
|||||||
|
|
||||||
static mgw_time_t convert_time_t (time_t t)
|
static mgw_time_t convert_time_t (time_t t)
|
||||||
{
|
{
|
||||||
mgw_time_t result = { t };
|
mgw_time_t result;
|
||||||
|
result.value = t;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -34,8 +35,13 @@ static void convert_g_stat_buf (const GStatBuf* gbuf, MgwStatBuf* mbuf)
|
|||||||
|
|
||||||
mbuf->size = gbuf->st_size;
|
mbuf->size = gbuf->st_size;
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
mbuf->isreg = (gbuf->st_mode & _S_IFREG) != 0;
|
||||||
|
mbuf->isdir = (gbuf->st_mode & _S_IFDIR) != 0;
|
||||||
|
#else
|
||||||
mbuf->isreg = S_ISREG (gbuf->st_mode);
|
mbuf->isreg = S_ISREG (gbuf->st_mode);
|
||||||
mbuf->isdir = S_ISDIR (gbuf->st_mode);
|
mbuf->isdir = S_ISDIR (gbuf->st_mode);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef S_ISLNK
|
#ifdef S_ISLNK
|
||||||
mbuf->islnk = S_ISLNK (gbuf->st_mode);
|
mbuf->islnk = S_ISLNK (gbuf->st_mode);
|
||||||
@ -69,6 +75,7 @@ static void convert_g_stat_buf (const GStatBuf* gbuf, MgwStatBuf* mbuf)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef _MSC_VER
|
||||||
#define call_with_errno(err__, func__, rtype__, ...) \
|
#define call_with_errno(err__, func__, rtype__, ...) \
|
||||||
({ \
|
({ \
|
||||||
rtype__ result__; \
|
rtype__ result__; \
|
||||||
@ -78,6 +85,30 @@ static void convert_g_stat_buf (const GStatBuf* gbuf, MgwStatBuf* mbuf)
|
|||||||
(err__)->value = errno; \
|
(err__)->value = errno; \
|
||||||
result__; \
|
result__; \
|
||||||
})
|
})
|
||||||
|
#else // _MSC_VER
|
||||||
|
|
||||||
|
#define _call_with_errno(what__, result__) \
|
||||||
|
errno = 0; \
|
||||||
|
result__ = what__; \
|
||||||
|
if (err != NULL) \
|
||||||
|
err->value = errno; \
|
||||||
|
|
||||||
|
#define call_with_errno0(func__, result__) \
|
||||||
|
_call_with_errno((func__)(), result__)
|
||||||
|
|
||||||
|
#define call_with_errno1(func__, result__, a1__) \
|
||||||
|
_call_with_errno((func__)((a1__)), result__)
|
||||||
|
|
||||||
|
#define call_with_errno2(func__, result__, a1__, a2__) \
|
||||||
|
_call_with_errno((func__)((a1__), (a2__)), result__)
|
||||||
|
|
||||||
|
#define call_with_errno3(func__, result__, a1__, a2__, a3__) \
|
||||||
|
_call_with_errno((func__)((a1__), (a2__), (a3__)), result__)
|
||||||
|
|
||||||
|
#define call_with_errno4(func__, result__, a1__, a2__, a3__, a4__) \
|
||||||
|
_call_with_errno((func__)((a1__), (a2__), (a3__), (a4__)), result__)
|
||||||
|
|
||||||
|
#endif // _MSC_VER
|
||||||
|
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
@ -97,7 +128,8 @@ int
|
|||||||
mgw_stat (const gchar *filename, MgwStatBuf *buf, mgw_errno_t *err)
|
mgw_stat (const gchar *filename, MgwStatBuf *buf, mgw_errno_t *err)
|
||||||
{
|
{
|
||||||
GStatBuf gbuf = { 0 };
|
GStatBuf gbuf = { 0 };
|
||||||
int result = call_with_errno (err, g_stat, int, filename, &gbuf);
|
int result;
|
||||||
|
call_with_errno2 (g_stat, result, filename, &gbuf);
|
||||||
convert_g_stat_buf (&gbuf, buf);
|
convert_g_stat_buf (&gbuf, buf);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -106,7 +138,8 @@ int
|
|||||||
mgw_lstat (const gchar *filename, MgwStatBuf *buf, mgw_errno_t *err)
|
mgw_lstat (const gchar *filename, MgwStatBuf *buf, mgw_errno_t *err)
|
||||||
{
|
{
|
||||||
GStatBuf gbuf = { 0 };
|
GStatBuf gbuf = { 0 };
|
||||||
int result = call_with_errno (err, g_lstat, int, filename, &gbuf);
|
int result;
|
||||||
|
call_with_errno2 (g_lstat, result, filename, &gbuf);
|
||||||
convert_g_stat_buf (&gbuf, buf);
|
convert_g_stat_buf (&gbuf, buf);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -136,14 +169,17 @@ const struct tm *
|
|||||||
mgw_localtime_r (const mgw_time_t *timep, struct tm *result, mgw_errno_t *err)
|
mgw_localtime_r (const mgw_time_t *timep, struct tm *result, mgw_errno_t *err)
|
||||||
{
|
{
|
||||||
time_t t = timep->value;
|
time_t t = timep->value;
|
||||||
return call_with_errno (err, localtime_r, struct tm*, &t, result);
|
struct tm *ret;
|
||||||
|
call_with_errno2 (localtime_r, ret, &t, result);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
mgw_time_t
|
mgw_time_t
|
||||||
mgw_time (mgw_time_t *t, mgw_errno_t *err)
|
mgw_time (mgw_time_t *t, mgw_errno_t *err)
|
||||||
{
|
{
|
||||||
time_t t1;
|
time_t t1;
|
||||||
mgw_time_t result = { call_with_errno (err, time, time_t, &t1) };
|
mgw_time_t result;
|
||||||
|
call_with_errno1 (time, result.value, &t1);
|
||||||
if (t != NULL)
|
if (t != NULL)
|
||||||
t->value = t1;
|
t->value = t1;
|
||||||
return result;
|
return result;
|
||||||
@ -153,20 +189,26 @@ mgw_time (mgw_time_t *t, mgw_errno_t *err)
|
|||||||
guint64
|
guint64
|
||||||
mgw_ascii_strtoull (const gchar *nptr, gchar **endptr, guint base, mgw_errno_t *err)
|
mgw_ascii_strtoull (const gchar *nptr, gchar **endptr, guint base, mgw_errno_t *err)
|
||||||
{
|
{
|
||||||
return call_with_errno (err, g_ascii_strtoull, guint64, nptr, endptr, base);
|
guint64 result;
|
||||||
|
call_with_errno3 (g_ascii_strtoull, result, nptr, endptr, base);
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
gdouble
|
gdouble
|
||||||
mgw_ascii_strtod (const gchar *nptr, gchar **endptr, mgw_errno_t *err)
|
mgw_ascii_strtod (const gchar *nptr, gchar **endptr, mgw_errno_t *err)
|
||||||
{
|
{
|
||||||
return call_with_errno (err, g_ascii_strtod, double, nptr, endptr);
|
double result;
|
||||||
|
call_with_errno2 (g_ascii_strtod, result, nptr, endptr);
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
MGW_FILE *
|
MGW_FILE *
|
||||||
mgw_fopen (const char *filename, const char *mode, mgw_errno_t *err)
|
mgw_fopen (const char *filename, const char *mode, mgw_errno_t *err)
|
||||||
{
|
{
|
||||||
return (MGW_FILE*) call_with_errno (err, g_fopen, FILE*, filename, mode);
|
FILE* result;
|
||||||
|
call_with_errno2 (g_fopen, result, filename, mode);
|
||||||
|
return (MGW_FILE*) result;
|
||||||
}
|
}
|
||||||
|
|
||||||
int mgw_fclose (MGW_FILE *file)
|
int mgw_fclose (MGW_FILE *file)
|
||||||
@ -177,7 +219,9 @@ int mgw_fclose (MGW_FILE *file)
|
|||||||
gsize
|
gsize
|
||||||
mgw_fread(void *ptr, gsize size, gsize nmemb, MGW_FILE *stream, mgw_errno_t *err)
|
mgw_fread(void *ptr, gsize size, gsize nmemb, MGW_FILE *stream, mgw_errno_t *err)
|
||||||
{
|
{
|
||||||
return call_with_errno (err, fread, gsize, ptr, size, nmemb, (FILE*) stream);
|
gsize result;
|
||||||
|
call_with_errno4 (fread, result, ptr, size, nmemb, (FILE*) stream);
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
gsize
|
gsize
|
||||||
@ -202,7 +246,8 @@ mgw_fgets(char *s, int size, MGW_FILE *stream)
|
|||||||
MgwFd
|
MgwFd
|
||||||
mgw_open (const char *filename, int flags, int mode)
|
mgw_open (const char *filename, int flags, int mode)
|
||||||
{
|
{
|
||||||
MgwFd fd = { g_open (filename, flags, mode) };
|
MgwFd fd;
|
||||||
|
fd.value = g_open (filename, flags, mode);
|
||||||
return fd;
|
return fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -244,31 +289,41 @@ mgw_perror (const char *s)
|
|||||||
int
|
int
|
||||||
mgw_unlink (const char *path, mgw_errno_t *err)
|
mgw_unlink (const char *path, mgw_errno_t *err)
|
||||||
{
|
{
|
||||||
return call_with_errno (err, g_unlink, int, path);
|
int result;
|
||||||
|
call_with_errno1 (g_unlink, result, path);
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
mgw_remove (const char *path, mgw_errno_t *err)
|
mgw_remove (const char *path, mgw_errno_t *err)
|
||||||
{
|
{
|
||||||
return call_with_errno (err, g_remove, int, path);
|
int result;
|
||||||
|
call_with_errno1 (g_remove, result, path);
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
mgw_rename (const char *oldpath, const char *newpath, mgw_errno_t *err)
|
mgw_rename (const char *oldpath, const char *newpath, mgw_errno_t *err)
|
||||||
{
|
{
|
||||||
return call_with_errno (err, g_rename, int, oldpath, newpath);
|
int result;
|
||||||
|
call_with_errno2 (g_rename, result, oldpath, newpath);
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
mgw_mkdir (const gchar *filename, int mode, mgw_errno_t *err)
|
mgw_mkdir (const gchar *filename, int mode, mgw_errno_t *err)
|
||||||
{
|
{
|
||||||
return call_with_errno (err, g_mkdir, int, filename, mode);
|
int result;
|
||||||
|
call_with_errno2 (g_mkdir, result, filename, mode);
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
mgw_mkdir_with_parents (const gchar *pathname, gint mode, mgw_errno_t *err)
|
mgw_mkdir_with_parents (const gchar *pathname, gint mode, mgw_errno_t *err)
|
||||||
{
|
{
|
||||||
return call_with_errno (err, g_mkdir_with_parents, int, pathname, mode);
|
int result;
|
||||||
|
call_with_errno2 (g_mkdir_with_parents, result, pathname, mode);
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
@ -5,6 +5,13 @@
|
|||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
|
#define MOO_BUILTIN_MOO_GLIB 1
|
||||||
|
|
||||||
|
typedef struct mgw_errno_t mgw_errno_t;
|
||||||
|
typedef struct MGW_FILE MGW_FILE;
|
||||||
|
typedef struct MgwFd MgwFd;
|
||||||
|
typedef struct mgw_access_mode_t mgw_access_mode_t;
|
||||||
|
|
||||||
#ifndef __WIN32__
|
#ifndef __WIN32__
|
||||||
#define MGW_ERROR_IF_NOT_SHARED_LIBC
|
#define MGW_ERROR_IF_NOT_SHARED_LIBC
|
||||||
#else
|
#else
|
||||||
@ -12,11 +19,6 @@ G_BEGIN_DECLS
|
|||||||
#error "C libraries may not be shared between medit and glib"
|
#error "C libraries may not be shared between medit and glib"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef struct mgw_errno_t mgw_errno_t;
|
|
||||||
typedef struct MGW_FILE MGW_FILE;
|
|
||||||
typedef struct MgwFd MgwFd;
|
|
||||||
typedef struct mgw_access_mode_t mgw_access_mode_t;
|
|
||||||
|
|
||||||
enum mgw_errno_value_t
|
enum mgw_errno_value_t
|
||||||
{
|
{
|
||||||
MGW_ENOERROR = 0,
|
MGW_ENOERROR = 0,
|
||||||
@ -43,7 +45,7 @@ struct MgwFd
|
|||||||
int value;
|
int value;
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef __WIN32__
|
#if defined(__WIN32__) && !MOO_BUILTIN_MOO_GLIB
|
||||||
# ifdef MOO_GLIB_LIBRARY
|
# ifdef MOO_GLIB_LIBRARY
|
||||||
# define MOO_GLIB_VAR __declspec(dllexport)
|
# define MOO_GLIB_VAR __declspec(dllexport)
|
||||||
# else
|
# else
|
||||||
|
@ -67,7 +67,7 @@ struct _MooCmdClass
|
|||||||
#ifdef MOO_PATCHED_G_SPAWN_WIN32_HIDDEN_CONSOLE
|
#ifdef MOO_PATCHED_G_SPAWN_WIN32_HIDDEN_CONSOLE
|
||||||
#define MOO_SPAWN_WIN32_HIDDEN_CONSOLE G_SPAWN_WIN32_HIDDEN_CONSOLE
|
#define MOO_SPAWN_WIN32_HIDDEN_CONSOLE G_SPAWN_WIN32_HIDDEN_CONSOLE
|
||||||
#else
|
#else
|
||||||
#define MOO_SPAWN_WIN32_HIDDEN_CONSOLE 0
|
#define MOO_SPAWN_WIN32_HIDDEN_CONSOLE ((GSpawnFlags)0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
GType _moo_cmd_get_type (void) G_GNUC_CONST;
|
GType _moo_cmd_get_type (void) G_GNUC_CONST;
|
||||||
|
@ -173,6 +173,16 @@ LIST(APPEND built_mooutils_sources marshals.c)
|
|||||||
SET(mooutils_win32_sources
|
SET(mooutils_win32_sources
|
||||||
mooutils/mooutils-win32.c
|
mooutils/mooutils-win32.c
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if(MOO_BUILD_FROM_MSVC)
|
||||||
|
LIST(APPEND mooutils_sources
|
||||||
|
mooglib/moo-stat.h
|
||||||
|
mooglib/moo-time.h
|
||||||
|
mooglib/moo-glib.c
|
||||||
|
mooglib/moo-glib.h
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
SET(mooutils_unittest_sources
|
SET(mooutils_unittest_sources
|
||||||
mooutils/moo-test-utils.c
|
mooutils/moo-test-utils.c
|
||||||
mooutils/moo-test-utils.h
|
mooutils/moo-test-utils.h
|
||||||
|
Loading…
x
Reference in New Issue
Block a user