summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2022-12-29 11:02:46 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2022-12-29 11:02:46 (GMT)
commit41db261acccf3494aa93b71a181cde9e8605a841 (patch)
tree07a00f88920a8e601268d415131630052ef85988 /src
parentc27f884ec1d18d9cff0d19d6ba8de1dd54d991c4 (diff)
Refactor Makefiles to exclude GTK on demand.
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.am60
-rw-r--r--src/analysis/Makefile.am8
-rw-r--r--src/analysis/binary.c33
-rw-r--r--src/analysis/block-int.h8
-rw-r--r--src/analysis/block.c10
-rw-r--r--src/analysis/block.h8
-rw-r--r--src/analysis/contents/Makefile.am11
-rw-r--r--src/analysis/db/Makefile.am8
-rw-r--r--src/analysis/db/items/Makefile.am11
-rw-r--r--src/analysis/db/items/comment.c2
-rw-r--r--src/analysis/db/items/move.c12
-rw-r--r--src/analysis/db/misc/Makefile.am11
-rw-r--r--src/analysis/disass/Makefile.am7
-rw-r--r--src/analysis/disass/area.h2
-rw-r--r--src/analysis/disass/block.c14
-rw-r--r--src/analysis/disass/disassembler.c6
-rw-r--r--src/analysis/disass/fetch.h2
-rw-r--r--src/analysis/disass/instructions.h2
-rw-r--r--src/analysis/disass/limit.c2
-rw-r--r--src/analysis/disass/output.h2
-rw-r--r--src/analysis/disass/routines.h2
-rw-r--r--src/analysis/human/Makefile.am8
-rw-r--r--src/analysis/human/asm/Makefile.am11
-rw-r--r--src/analysis/loaded-int.h8
-rw-r--r--src/analysis/loaded.c32
-rw-r--r--src/analysis/loaded.h16
-rw-r--r--src/analysis/project.c6
-rw-r--r--src/analysis/project.h8
-rw-r--r--src/analysis/routine.c7
-rw-r--r--src/analysis/routine.h3
-rw-r--r--src/analysis/storage/Makefile.am11
-rw-r--r--src/analysis/types/Makefile.am11
-rw-r--r--src/arch/Makefile.am45
-rw-r--r--src/arch/instruction.c14
-rw-r--r--src/arch/instructions/Makefile.am18
-rw-r--r--src/arch/instructions/raw.c2
-rw-r--r--src/arch/instructions/undefined.c2
-rw-r--r--src/arch/operand-int.h6
-rw-r--r--src/arch/operand.c6
-rw-r--r--src/arch/operand.h4
-rw-r--r--src/arch/operands/Makefile.am12
-rw-r--r--src/arch/operands/immediate.c14
-rw-r--r--src/arch/operands/known.c2
-rw-r--r--src/arch/operands/target.c14
-rw-r--r--src/common/Makefile.am9
-rw-r--r--src/core/Makefile.am10
-rw-r--r--src/core/collections.h2
-rw-r--r--src/core/columns.h59
-rw-r--r--src/core/logs.c13
-rw-r--r--src/debug/Makefile.am11
-rw-r--r--src/format/Makefile.am11
-rw-r--r--src/format/format-int.h1
-rw-r--r--src/format/format.h1
-rw-r--r--src/format/known.h1
-rw-r--r--src/format/strsym.c2
-rw-r--r--src/format/symbol.c18
-rw-r--r--src/glibext/Makefile.am75
-rw-r--r--src/glibext/buffercache-int.h2
-rw-r--r--src/glibext/buffercache.c168
-rw-r--r--src/glibext/buffercache.h28
-rw-r--r--src/glibext/bufferline.c15
-rw-r--r--src/glibext/bufferline.h8
-rw-r--r--src/glibext/configuration.h23
-rw-r--r--src/glibext/delayed-int.h2
-rw-r--r--src/glibext/delayed.c8
-rw-r--r--src/glibext/delayed.h5
-rw-r--r--src/glibext/gbinarycursor.c1
-rw-r--r--src/glibext/gbinportion-int.h2
-rw-r--r--src/glibext/gbinportion.c113
-rw-r--r--src/glibext/gbinportion.h22
-rw-r--r--src/glibext/generators/Makefile.am20
-rw-r--r--src/glibext/generators/hex.c31
-rw-r--r--src/glibext/generators/prologue.c37
-rw-r--r--src/glibext/generators/rborder.c37
-rw-r--r--src/glibext/glinecursor-int.h2
-rw-r--r--src/glibext/glinecursor.h6
-rw-r--r--src/glibext/linecolumn.c20
-rw-r--r--src/glibext/linecolumn.h14
-rw-r--r--src/glibext/linesegment.c67
-rw-r--r--src/glibext/linesegment.h26
-rw-r--r--src/glibext/notifier.h74
-rw-r--r--src/glibext/seq.h2
-rw-r--r--src/gtkext/Makefile.am6
-rw-r--r--src/gtkext/graph/Makefile.am11
-rw-r--r--src/gtkext/gtkblockdisplay.h16
-rw-r--r--src/gtkext/gtkstatusstack.c2
-rw-r--r--src/gtkext/hexdisplay.h13
-rw-r--r--src/gtkext/rendering.h2
-rw-r--r--src/gui/Makefile.am6
-rw-r--r--src/gui/core/Makefile.am9
-rw-r--r--src/gui/dialogs/Makefile.am9
-rw-r--r--src/gui/menus/Makefile.am11
-rw-r--r--src/gui/panels/Makefile.am9
-rw-r--r--src/gui/panels/strings.c2
-rw-r--r--src/gui/tb/Makefile.am9
-rw-r--r--src/hub.c6
-rw-r--r--src/main.c66
-rw-r--r--src/mangling/Makefile.am11
-rw-r--r--src/plugins/Makefile.am11
-rw-r--r--src/plugins/pglist.h4
-rw-r--r--src/plugins/plugin-int.h6
-rw-r--r--src/plugins/plugin.c12
-rw-r--r--src/plugins/plugin.h8
103 files changed, 1165 insertions, 491 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index 321b472..55a8f05 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -4,6 +4,9 @@ lib_LTLIBRARIES = libchrysacore.la
bin_PROGRAMS = chrysalide chrysalide-hub
+AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/intl
+
+
############################################################
# Bibliothèque dynamique
@@ -17,27 +20,45 @@ GOBJECT_LEAKS_SOURCES = gleak.h gleak.c
endif
-libchrysacore_la_SOURCES = \
+
+if BUILD_GTK_SUPPORT
+
+ GTKEXT_LIBADD = \
+ gtkext/libgtkext.la
+
+ GTKEXT_SUBDIR = \
+ gtkext
+
+ GUI_LIBADD = \
+ gui/libgui.la
+
+ GUI_SUBDIR = \
+ gui
+
+endif
+
+
+libchrysacore_la_SOURCES = \
$(GOBJECT_LEAKS_SOURCES)
# -ldl: dladdr(), dlerror()
libchrysacore_la_LDFLAGS = \
-avoid-version -ldl \
- $(LIBGTK_LIBS) $(LIBXML_LIBS) \
+ $(TOOLKIT_LIBS) $(LIBXML_LIBS) \
$(LIBSQLITE_LIBS) $(LIBARCHIVE_LIBS) \
$(LIBCURL_LIBS)
-libchrysacore_la_LIBADD = \
- analysis/libanalysis.la \
- arch/libarch.la \
- common/libcommon.la \
- core/libcore.la \
- debug/libdebug.la \
- format/libformat.la \
- glibext/libglibext.la \
- gtkext/libgtkext.la \
- gui/libgui.la \
- mangling/libmangling.la \
+libchrysacore_la_LIBADD = \
+ analysis/libanalysis.la \
+ arch/libarch.la \
+ common/libcommon.la \
+ core/libcore.la \
+ debug/libdebug.la \
+ format/libformat.la \
+ glibext/libglibext.la \
+ $(GTKEXT_LIBADD) \
+ $(GUI_LIBADD) \
+ mangling/libmangling.la \
plugins/libplugins.la
@@ -52,15 +73,11 @@ chrysalide_SOURCES = \
main.c
-AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/intl $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS) `pkg-config --cflags gthread-2.0` $(LIBPYTHON_CFLAGS)
+chrysalide_CFLAGS = $(TOOLKIT_CFLAGS) $(LIBXML_CFLAGS) $(LIBPYTHON_CFLAGS)
-AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS)
-
-
-chrysalide_LDFLAGS = $(LIBGTK_LIBS) -L/usr/X11R6/lib -ldl -lm $(LIBXML_LIBS) `pkg-config --libs gthread-2.0` $(LIBPYTHON_LIBS) $(LIBARCHIVE_LIBS) $(LIBSQLITE_LIBS) \
+chrysalide_LDFLAGS = $(TOOLKIT_LIBS) -L/usr/X11R6/lib -ldl -lm $(LIBXML_LIBS) $(LIBPYTHON_LIBS) $(LIBARCHIVE_LIBS) $(LIBSQLITE_LIBS) \
-L.libs -lchrysacore
-
chrysalide_LDADD = $(LIBINTL)
@@ -74,8 +91,9 @@ EXTRA_chrysalide_hub_DEPENDENCIES = $(lib_LTLIBRARIES)
chrysalide_hub_SOURCES = \
hub.c
+chrysalide_hub_CFLAGS = $(TOOLKIT_CFLAGS) $(LIBXML_CFLAGS)
-chrysalide_hub_LDFLAGS = $(LIBGTK_LIBS) -L.libs -lchrysacore
+chrysalide_hub_LDFLAGS = $(TOOLKIT_LIBS) $(LIBXML_LIBS) -L.libs -lchrysacore
@@ -85,4 +103,4 @@ chrysalide_hub_LDFLAGS = $(LIBGTK_LIBS) -L.libs -lchrysacore
# glibext doit être traité en premier, à cause des marshals GLib
-SUBDIRS = core glibext gtkext analysis arch format common debug gui mangling plugins
+SUBDIRS = core glibext $(GTKEXT_SUBDIR) analysis arch format common debug $(GUI_SUBDIR) mangling plugins
diff --git a/src/analysis/Makefile.am b/src/analysis/Makefile.am
index 1dd83cb..39dd2dd 100644
--- a/src/analysis/Makefile.am
+++ b/src/analysis/Makefile.am
@@ -18,6 +18,8 @@ libanalysis_la_SOURCES = \
type.h type.c \
variable.h variable.c
+libanalysis_la_CFLAGS = $(TOOLKIT_CFLAGS) $(LIBXML_CFLAGS)
+
libanalysis_la_LIBADD = \
contents/libanalysiscontents.la \
db/libanalysisdb.la \
@@ -26,16 +28,10 @@ libanalysis_la_LIBADD = \
storage/libanalysisstorage.la \
types/libanalysistypes.la
-libanalysis_la_LDFLAGS =
-
devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
dev_HEADERS = $(libanalysis_la_SOURCES:%c=)
-AM_CPPFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS)
-
-AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS)
-
SUBDIRS = contents db disass human storage types
diff --git a/src/analysis/binary.c b/src/analysis/binary.c
index 41f148a..0f0ff93 100644
--- a/src/analysis/binary.c
+++ b/src/analysis/binary.c
@@ -43,17 +43,18 @@
#include "../common/cpp.h"
#include "../common/xdg.h"
#include "../core/collections.h"
+#include "../core/columns.h"
#include "../core/logs.h"
#include "../core/params.h"
#include "../core/processors.h"
#include "../format/known.h"
#include "../glibext/gbinarycursor.h"
-#include "../glibext/gloadedpanel.h"
-#include "../gtkext/easygtk.h"
-#include "../gtkext/gtkblockdisplay.h"
-#include "../gtkext/gtkdisplaypanel.h"
-#include "../gtkext/gtkgraphdisplay.h"
-#include "../gtkext/hexdisplay.h"
+#ifdef HAVE_GTK_SUPPORT
+# include "../glibext/gloadedpanel.h"
+# include "../gtkext/easygtk.h"
+# include "../gtkext/gtkdisplaypanel.h"
+# include "../gtkext/gtkgraphdisplay.h"
+#endif
@@ -168,6 +169,8 @@ static void on_binary_processor_changed(GArchProcessor *, GArchInstruction *, gb
/* Fournit le désignation associée à l'élément chargé. */
static char *g_loaded_binary_describe(const GLoadedBinary *, bool);
+#ifdef HAVE_GTK_SUPPORT
+
/* Détermine le nombre de vues disponibles pour un contenu. */
static unsigned int g_loaded_binary_count_views(const GLoadedBinary *);
@@ -186,6 +189,8 @@ static unsigned int g_loaded_binary_get_view_index(GLoadedBinary *, GtkWidget *)
/* Fournit toutes les options d'affichage pour un contenu. */
static GDisplayOptions *g_loaded_binary_get_display_options(const GLoadedBinary *, unsigned int);
+#endif
+
/* ---------------------------------------------------------------------------------- */
@@ -231,6 +236,8 @@ static void g_loaded_binary_class_init(GLoadedBinaryClass *klass)
loaded->describe = (describe_loaded_fc)g_loaded_binary_describe;
+#ifdef HAVE_GTK_SUPPORT
+
loaded->count_views = (count_loaded_views_fc)g_loaded_binary_count_views;
loaded->get_view_name = (get_loaded_view_name_fc)g_loaded_binary_get_view_name;
loaded->build_def_view = (build_loaded_def_view_fc)g_loaded_binary_build_default_view;
@@ -239,6 +246,8 @@ static void g_loaded_binary_class_init(GLoadedBinaryClass *klass)
loaded->get_options = (get_loaded_options_fc)g_loaded_binary_get_display_options;
+#endif
+
}
@@ -1466,7 +1475,9 @@ static bool g_loaded_binary_analyze(GLoadedBinary *binary, bool connect, bool ca
char *desc; /* Description humaine associée*/
bool has_virt; /* Présence de virtuel ? */
GProcContext *context; /* Contexte de suivi dédié */
+#ifdef HAVE_GTK_SUPPORT
GWidthTracker *tracker; /* Gestionnaire de largeur */
+#endif
/* Interprétation du format associé */
@@ -1512,12 +1523,16 @@ static bool g_loaded_binary_analyze(GLoadedBinary *binary, bool connect, bool ca
{
output_disassembly(binary, context, status, &binary->disass_cache);
+#ifdef HAVE_GTK_SUPPORT
+
tracker = g_buffer_cache_get_width_tracker(binary->disass_cache);
g_width_tracker_build_initial_cache(tracker, gid, status);
g_object_unref(G_OBJECT(tracker));
+#endif
+
}
g_object_unref(G_OBJECT(context));
@@ -1661,6 +1676,9 @@ static char *g_loaded_binary_describe(const GLoadedBinary *binary, bool full)
}
+#ifdef HAVE_GTK_SUPPORT
+
+
/******************************************************************************
* *
* Paramètres : binary = contenu chargé à consulter. *
@@ -1872,3 +1890,6 @@ static GDisplayOptions *g_loaded_binary_get_display_options(const GLoadedBinary
return result;
}
+
+
+#endif
diff --git a/src/analysis/block-int.h b/src/analysis/block-int.h
index faa0e1f..869042c 100644
--- a/src/analysis/block-int.h
+++ b/src/analysis/block-int.h
@@ -44,12 +44,16 @@ typedef int (* block_compare_links_fc) (const block_link_t *, const block_link_t
/* Fournit les détails des origines d'un bloc de code donné. */
typedef block_link_t * (* block_get_links_fc) (const GCodeBlock *, const GBlockList *, size_t *);
+#ifdef HAVE_GTK_SUPPORT
+
/* Fournit la représentation graphique d'un bloc de code. */
typedef GBufferView * (* block_build_view_fc) (const GCodeBlock *, segcnt_list *);
/* Construit un ensemble d'indications pour bloc. */
typedef char *(* block_build_tooltip_fc) (const GCodeBlock *);
+#endif
+
/* Description d'un bloc de code (instance) */
struct _GCodeBlock
@@ -64,7 +68,9 @@ struct _GCodeBlock
size_t index; /* Indice dans une liste */
size_t rank; /* Rang dans l'exécution */
+#ifdef HAVE_GTK_SUPPORT
GBufferView *view; /* Représentation construite */
+#endif
};
@@ -77,8 +83,10 @@ struct _GCodeBlockClass
block_compare_links_fc cmp_links; /* Comparaison de liens */
block_get_links_fc get_src; /* Obtention des origines */
block_get_links_fc get_dest; /* Obtention des destinations */
+#ifdef HAVE_GTK_SUPPORT
block_build_view_fc build; /* Construction d'une vue */
block_build_tooltip_fc build_tooltip; /* Construction d'une bulle */
+#endif
};
diff --git a/src/analysis/block.c b/src/analysis/block.c
index 119dc86..a60d7ed 100644
--- a/src/analysis/block.c
+++ b/src/analysis/block.c
@@ -139,7 +139,9 @@ static void g_code_block_init(GCodeBlock *block)
block->index = (size_t)-1;
block->rank = (size_t)-1;
+#ifdef HAVE_GTK_SUPPORT
block->view = NULL;
+#endif
}
@@ -158,7 +160,9 @@ static void g_code_block_init(GCodeBlock *block)
static void g_code_block_dispose(GCodeBlock *block)
{
+#ifdef HAVE_GTK_SUPPORT
g_clear_object(&block->view);
+#endif
G_OBJECT_CLASS(g_code_block_parent_class)->dispose(G_OBJECT(block));
@@ -322,6 +326,9 @@ void g_code_block_set_rank(GCodeBlock *block, size_t rank)
}
+#ifdef HAVE_GTK_SUPPORT
+
+
/******************************************************************************
* *
* Paramètres : block = bloc de code à manipuler. *
@@ -383,6 +390,9 @@ char *g_code_block_build_tooltip(const GCodeBlock *block)
}
+#endif
+
+
/* ---------------------------------------------------------------------------------- */
/* DEFINITION DE LIAISONS ENTRE BLOCS DE CODE */
diff --git a/src/analysis/block.h b/src/analysis/block.h
index 63f0be0..08cfeb4 100644
--- a/src/analysis/block.h
+++ b/src/analysis/block.h
@@ -33,7 +33,9 @@
#include "../arch/instruction.h"
#include "../arch/vmpa.h"
#include "../common/bits.h"
-#include "../glibext/bufferview.h"
+#ifdef HAVE_GTK_SUPPORT
+# include "../glibext/bufferview.h"
+#endif
#include "../glibext/linesegment.h"
@@ -74,12 +76,16 @@ size_t g_code_block_get_rank(const GCodeBlock *);
/* Définit le rang du bloc de code dans le flot d'exécution. */
void g_code_block_set_rank(GCodeBlock *, size_t);
+#ifdef HAVE_GTK_SUPPORT
+
/* Fournit la représentation graphique d'un bloc de code. */
GBufferView *g_code_block_get_view(GCodeBlock *, segcnt_list *);
/* Construit un ensemble d'indications pour bloc. */
char *g_code_block_build_tooltip(const GCodeBlock *);
+#endif
+
/* ------------------- DEFINITION DE LIAISONS ENTRE BLOCS DE CODE ------------------- */
diff --git a/src/analysis/contents/Makefile.am b/src/analysis/contents/Makefile.am
index 66e3cac..1263f42 100644
--- a/src/analysis/contents/Makefile.am
+++ b/src/analysis/contents/Makefile.am
@@ -8,18 +8,9 @@ libanalysiscontents_la_SOURCES = \
memory.h memory.c \
restricted.h restricted.c
-libanalysiscontents_la_LIBADD =
-
-libanalysiscontents_la_LDFLAGS =
+libanalysiscontents_la_CFLAGS = $(TOOLKIT_CFLAGS)
devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
dev_HEADERS = $(libanalysiscontents_la_SOURCES:%c=)
-
-
-AM_CPPFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS)
-
-AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS)
-
-SUBDIRS =
diff --git a/src/analysis/db/Makefile.am b/src/analysis/db/Makefile.am
index 8f8242c..b9325e0 100644
--- a/src/analysis/db/Makefile.am
+++ b/src/analysis/db/Makefile.am
@@ -21,20 +21,16 @@ libanalysisdb_la_SOURCES = \
server.h server.c \
snapshot.h snapshot.c
+libanalysisdb_la_CFLAGS = $(TOOLKIT_CFLAGS) $(LIBXML_CFLAGS) $(LIBARCHIVE_CFLAGS) $(LIBSQLITE_CFLAGS) $(LIBSSL_CFLAGS)
+
libanalysisdb_la_LIBADD = \
items/libanalysisdbitems.la \
misc/libanalysisdbmisc.la
-libanalysisdb_la_LDFLAGS = $(LIBSSL_LIBS)
-
devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
dev_HEADERS = $(libanalysisdb_la_SOURCES:%c=)
-AM_CPPFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS) $(LIBARCHIVE_CFLAGS) $(LIBSQLITE_CFLAGS) $(LIBSSL_CFLAGS)
-
-AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS)
-
SUBDIRS = items misc
diff --git a/src/analysis/db/items/Makefile.am b/src/analysis/db/items/Makefile.am
index b9ce117..f8f70d5 100644
--- a/src/analysis/db/items/Makefile.am
+++ b/src/analysis/db/items/Makefile.am
@@ -7,18 +7,9 @@ libanalysisdbitems_la_SOURCES = \
move.h move.c \
switcher.h switcher.c
-libanalysisdbitems_la_LIBADD =
-
-libanalysisdbitems_la_LDFLAGS =
+libanalysisdbitems_la_CFLAGS = $(TOOLKIT_CFLAGS) $(LIBXML_CFLAGS) $(LIBSQLITE_CFLAGS)
devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
dev_HEADERS = $(libanalysisdbitems_la_SOURCES:%c=)
-
-
-AM_CPPFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS) $(LIBARCHIVE_CFLAGS) $(LIBSQLITE_CFLAGS)
-
-AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS)
-
-SUBDIRS =
diff --git a/src/analysis/db/items/comment.c b/src/analysis/db/items/comment.c
index da7a4c0..fb27f60 100644
--- a/src/analysis/db/items/comment.c
+++ b/src/analysis/db/items/comment.c
@@ -39,9 +39,9 @@
#include "../../human/asm/lang.h"
#include "../../../common/array.h"
#include "../../../common/extstr.h"
+#include "../../../core/columns.h"
#include "../../../glibext/gbinarycursor.h"
#include "../../../glibext/linegen-int.h"
-#include "../../../gtkext/gtkblockdisplay.h"
diff --git a/src/analysis/db/items/move.c b/src/analysis/db/items/move.c
index af1c8c1..d009456 100644
--- a/src/analysis/db/items/move.c
+++ b/src/analysis/db/items/move.c
@@ -35,9 +35,13 @@
#include "../collection-int.h"
#include "../item-int.h"
-#include "../../../gui/core/global.h"
+#ifdef HAVE_GTK_SUPPORT
+# include "../../../gui/core/global.h"
+#endif
#include "../../../glibext/gbinarycursor.h"
-#include "../../../glibext/gloadedpanel.h"
+#ifdef HAVE_GTK_SUPPORT
+# include "../../../glibext/gloadedpanel.h"
+#endif
@@ -410,6 +414,8 @@ static char *g_db_move_build_label(GDbMove *move)
static bool g_db_move_run(const GDbMove *move, GLineCursor *cursor)
{
+#ifdef HAVE_GTK_SUPPORT
+
GLoadedPanel *panel; /* Afficheur effectif de code */
typedef struct _move_params
@@ -465,6 +471,8 @@ static bool g_db_move_run(const GDbMove *move, GLineCursor *cursor)
if (panel != NULL)
g_object_unref(G_OBJECT(panel));
+#endif
+
return true;
}
diff --git a/src/analysis/db/misc/Makefile.am b/src/analysis/db/misc/Makefile.am
index 6d4af6c..fc3cab2 100644
--- a/src/analysis/db/misc/Makefile.am
+++ b/src/analysis/db/misc/Makefile.am
@@ -6,18 +6,7 @@ libanalysisdbmisc_la_SOURCES = \
snapshot.h snapshot.c \
timestamp.h timestamp.c
-libanalysisdbmisc_la_LIBADD =
-
-libanalysisdbmisc_la_LDFLAGS =
-
devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
dev_HEADERS = $(libanalysisdbmisc_la_SOURCES:%c=)
-
-
-AM_CPPFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS) $(LIBARCHIVE_CFLAGS) $(LIBSQLITE_CFLAGS)
-
-AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS)
-
-SUBDIRS =
diff --git a/src/analysis/disass/Makefile.am b/src/analysis/disass/Makefile.am
index 5631468..fe840c6 100644
--- a/src/analysis/disass/Makefile.am
+++ b/src/analysis/disass/Makefile.am
@@ -15,14 +15,9 @@ libanalysisdisass_la_SOURCES = \
rank.h rank.c \
routines.h routines.c
-libanalysisdisass_la_LDFLAGS =
+libanalysisdisass_la_CFLAGS = $(TOOLKIT_CFLAGS) $(LIBXML_CFLAGS)
devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
dev_HEADERS = $(libanalysisdisass_la_SOURCES:%c=)
-
-
-AM_CPPFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS)
-
-AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS)
diff --git a/src/analysis/disass/area.h b/src/analysis/disass/area.h
index 12c4617..0817419 100644
--- a/src/analysis/disass/area.h
+++ b/src/analysis/disass/area.h
@@ -30,7 +30,7 @@
#include "../../format/preload.h"
#include "../../format/symbol.h"
#include "../../glibext/delayed.h"
-#include "../../gtkext/gtkstatusstack.h"
+#include "../../glibext/notifier.h"
diff --git a/src/analysis/disass/block.c b/src/analysis/disass/block.c
index ea1441f..973fd56 100644
--- a/src/analysis/disass/block.c
+++ b/src/analysis/disass/block.c
@@ -34,9 +34,9 @@
#include "../block-int.h"
#include "../../arch/instructions/raw.h"
#include "../../common/extstr.h"
+#include "../../core/columns.h"
#include "../../core/params.h"
#include "../../glibext/gbinarycursor.h"
-#include "../../gtkext/gtkblockdisplay.h"
@@ -88,12 +88,16 @@ static block_link_t *g_basic_block_get_sources(const GBasicBlock *, const GBlock
/* Fournit les détails des destinations de bloc de code. */
static block_link_t *g_basic_block_get_destinations(const GBasicBlock *, const GBlockList *, size_t *);
+#ifdef HAVE_GTK_SUPPORT
+
/* Fournit la représentation graphique d'un bloc de code. */
static GBufferView *g_basic_block_build_view(const GBasicBlock *, segcnt_list *);
/* Construit un ensemble d'indications pour bloc. */
static char *g_basic_block_build_tooltip(const GBasicBlock *);
+#endif
+
/* ---------------------------------------------------------------------------------- */
@@ -133,8 +137,10 @@ static void g_basic_block_class_init(GBasicBlockClass *class)
block->cmp_links = (block_compare_links_fc)g_basic_block_compare_links;
block->get_src = (block_get_links_fc)g_basic_block_get_sources;
block->get_dest = (block_get_links_fc)g_basic_block_get_destinations;
+#ifdef HAVE_GTK_SUPPORT
block->build = (block_build_view_fc)g_basic_block_build_view;
block->build_tooltip = (block_build_tooltip_fc)g_basic_block_build_tooltip;
+#endif
}
@@ -466,6 +472,9 @@ static block_link_t *g_basic_block_get_destinations(const GBasicBlock *block, co
}
+#ifdef HAVE_GTK_SUPPORT
+
+
/******************************************************************************
* *
* Paramètres : block = bloc de code à manipuler. *
@@ -856,6 +865,9 @@ static char *g_basic_block_build_tooltip(const GBasicBlock *block)
}
+#endif
+
+
/******************************************************************************
* *
* Paramètres : block = bloc d'instructions à consulter. *
diff --git a/src/analysis/disass/disassembler.c b/src/analysis/disass/disassembler.c
index 4056c59..7ea127d 100644
--- a/src/analysis/disass/disassembler.c
+++ b/src/analysis/disass/disassembler.c
@@ -38,11 +38,11 @@
#include "routines.h"
#include "../human/asm/lang.h"
#include "../../arch/storage.h"
+#include "../../core/columns.h"
#include "../../core/global.h"
#include "../../core/params.h"
#include "../../core/nproc.h"
#include "../../glibext/generators/prologue.h"
-#include "../../gtkext/gtkblockdisplay.h"
#include "../../plugins/pglist.h"
@@ -391,7 +391,9 @@ void output_disassembly(GLoadedBinary *binary, GProcContext *context, GtkStatusS
GBinContent *content; /* Contenu bianire manipulé */
GCodingLanguage *lang; /* Langage de sortie préféré */
int offset; /* Décalage des étiquettes */
+#ifdef HAVE_GTK_SUPPORT
GWidthTracker *tracker; /* Gestionnaire de largeurs */
+#endif
char **text; /* Contenu brute à imprimer */
char *desc; /* Désignation du binaire */
const gchar *checksum; /* Identifiant de binaire */
@@ -409,9 +411,11 @@ void output_disassembly(GLoadedBinary *binary, GProcContext *context, GtkStatusS
g_generic_config_get_value(get_main_configuration(), MPK_LABEL_OFFSET, &offset);
+#ifdef HAVE_GTK_SUPPORT
tracker = g_buffer_cache_get_width_tracker(*cache);
g_width_tracker_set_column_min_width(tracker, DLC_ASSEMBLY_LABEL, offset);
g_object_unref(G_OBJECT(tracker));
+#endif
g_buffer_cache_wlock(*cache);
diff --git a/src/analysis/disass/fetch.h b/src/analysis/disass/fetch.h
index 7afabc6..44b5424 100644
--- a/src/analysis/disass/fetch.h
+++ b/src/analysis/disass/fetch.h
@@ -27,7 +27,7 @@
#include "../binary.h"
#include "../../glibext/delayed.h"
-#include "../../gtkext/gtkstatusstack.h"
+#include "../../glibext/notifier.h"
diff --git a/src/analysis/disass/instructions.h b/src/analysis/disass/instructions.h
index c0cd4ac..24fe982 100644
--- a/src/analysis/disass/instructions.h
+++ b/src/analysis/disass/instructions.h
@@ -28,7 +28,7 @@
#include "../routine.h"
#include "../../arch/processor.h"
#include "../../format/executable.h"
-#include "../../gtkext/gtkstatusstack.h"
+#include "../../glibext/notifier.h"
diff --git a/src/analysis/disass/limit.c b/src/analysis/disass/limit.c
index 1e460e0..2caefd6 100644
--- a/src/analysis/disass/limit.c
+++ b/src/analysis/disass/limit.c
@@ -76,7 +76,7 @@ void compute_routine_limit(GBinSymbol *symbol, const vmpa2t *next, GArchProcesso
/* Dans tous les cas, on va se référer à la portion contenante... */
- portion = g_binary_portion_find_at_addr(portions, &addr, (GdkRectangle []) { { 0 } });
+ portion = g_binary_portion_find_at_addr(portions, &addr);
assert(portion != NULL);
range = g_binary_portion_get_range(portion);
diff --git a/src/analysis/disass/output.h b/src/analysis/disass/output.h
index 20729d2..2213840 100644
--- a/src/analysis/disass/output.h
+++ b/src/analysis/disass/output.h
@@ -29,7 +29,7 @@
#include "../human/lang.h"
#include "../../format/preload.h"
#include "../../glibext/buffercache.h"
-#include "../../gtkext/gtkstatusstack.h"
+#include "../../glibext/notifier.h"
diff --git a/src/analysis/disass/routines.h b/src/analysis/disass/routines.h
index 9a2c308..af8e814 100644
--- a/src/analysis/disass/routines.h
+++ b/src/analysis/disass/routines.h
@@ -27,7 +27,7 @@
#include "../binary.h"
#include "../routine.h"
-#include "../../gtkext/gtkstatusstack.h"
+#include "../../glibext/notifier.h"
diff --git a/src/analysis/human/Makefile.am b/src/analysis/human/Makefile.am
index bd5fa9f..a8e98e6 100644
--- a/src/analysis/human/Makefile.am
+++ b/src/analysis/human/Makefile.am
@@ -6,19 +6,15 @@ libanalysishuman_la_SOURCES = \
lang-int.h \
lang.h lang.c
+libanalysishuman_la_CFLAGS = $(TOOLKIT_CFLAGS)
+
libanalysishuman_la_LIBADD = \
asm/libanalysishumanasm.la
-libanalysishuman_la_LDFLAGS =
-
devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
dev_HEADERS = $(libanalysishuman_la_SOURCES:%c=)
-AM_CPPFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS) $(LIBARCHIVE_CFLAGS) $(LIBSQLITE_CFLAGS)
-
-AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS)
-
SUBDIRS = asm
diff --git a/src/analysis/human/asm/Makefile.am b/src/analysis/human/asm/Makefile.am
index 9dbf717..a3ab6a4 100644
--- a/src/analysis/human/asm/Makefile.am
+++ b/src/analysis/human/asm/Makefile.am
@@ -5,18 +5,9 @@ noinst_LTLIBRARIES = libanalysishumanasm.la
libanalysishumanasm_la_SOURCES = \
lang.h lang.c
-libanalysishumanasm_la_LIBADD =
-
-libanalysishumanasm_la_LDFLAGS =
+libanalysishumanasm_la_CFLAGS = $(TOOLKIT_CFLAGS)
devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
dev_HEADERS = $(libanalysishumanasm_la_SOURCES:%c=)
-
-
-AM_CPPFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS) $(LIBARCHIVE_CFLAGS) $(LIBSQLITE_CFLAGS)
-
-AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS)
-
-SUBDIRS =
diff --git a/src/analysis/loaded-int.h b/src/analysis/loaded-int.h
index 62534a6..f91e85d 100644
--- a/src/analysis/loaded-int.h
+++ b/src/analysis/loaded-int.h
@@ -48,6 +48,8 @@ typedef bool (* analyze_loaded_fc) (GLoadedContent *, bool, bool, wgroup_id_t, G
/* Fournit le désignation associée à l'élément chargé. */
typedef char * (* describe_loaded_fc) (const GLoadedContent *, bool);
+#ifdef HAVE_GTK_SUPPORT
+
/* Détermine le nombre de vues disponibles pour un contenu. */
typedef unsigned int (* count_loaded_views_fc) (const GLoadedContent *);
@@ -66,6 +68,8 @@ typedef unsigned int (* get_loaded_view_index_fc) (GLoadedContent *, GtkWidget *
/* Fournit toutes les options d'affichage pour un contenu. */
typedef GDisplayOptions * (* get_loaded_options_fc) (const GLoadedContent *, unsigned int);
+#endif
+
/* Accès à un contenu binaire quelconque (instance) */
struct _GLoadedContent
@@ -91,6 +95,8 @@ struct _GLoadedContentClass
describe_loaded_fc describe; /* Description de contenu */
+#ifdef HAVE_GTK_SUPPORT
+
count_loaded_views_fc count_views; /* Compteur de vues */
get_loaded_view_name_fc get_view_name; /* Désignation d'une vue donnée*/
build_loaded_def_view_fc build_def_view;/* Mise en place initiale */
@@ -99,6 +105,8 @@ struct _GLoadedContentClass
get_loaded_options_fc get_options; /* Obtention de liste d'options*/
+#endif
+
/* Signaux */
void (* analyzed) (GLoadedContent *, gboolean);
diff --git a/src/analysis/loaded.c b/src/analysis/loaded.c
index 9ec2f74..02caeff 100644
--- a/src/analysis/loaded.c
+++ b/src/analysis/loaded.c
@@ -32,8 +32,10 @@
#include "../core/global.h"
#include "../core/queue.h"
#include "../glibext/chrysamarshal.h"
-#include "../glibext/gloadedpanel.h"
-#include "../glibext/named-int.h"
+#ifdef HAVE_GTK_SUPPORT
+# include "../glibext/gloadedpanel.h"
+# include "../glibext/named-int.h"
+#endif
#include "../glibext/seq.h"
#include "../plugins/pglist.h"
@@ -60,9 +62,13 @@ static void g_loaded_content_class_init(GLoadedContentClass *);
/* Initialise un contenu chargé. */
static void g_loaded_content_init(GLoadedContent *);
+#ifdef HAVE_GTK_SUPPORT
+
/* Procède à l'initialisation de l'interface de composant nommé. */
static void g_loaded_content_named_init(GNamedWidgetIface *);
+#endif
+
/* Supprime toutes les références externes. */
static void g_loaded_content_dispose(GLoadedContent *);
@@ -89,8 +95,12 @@ static void on_loaded_content_analysis_completed(GSeqWork *, analysis_data_t *);
/* Détermine le type d'une interface pour l'intégration de contenu chargé. */
+#ifdef HAVE_GTK_SUPPORT
G_DEFINE_TYPE_WITH_CODE(GLoadedContent, g_loaded_content, G_TYPE_OBJECT,
G_IMPLEMENT_INTERFACE(G_TYPE_NAMED_WIDGET, g_loaded_content_named_init));
+#else
+G_DEFINE_TYPE(GLoadedContent, g_loaded_content, G_TYPE_OBJECT);
+#endif
/******************************************************************************
@@ -143,6 +153,9 @@ static void g_loaded_content_init(GLoadedContent *content)
}
+#ifdef HAVE_GTK_SUPPORT
+
+
/******************************************************************************
* *
* Paramètres : iface = interface GLib à initialiser. *
@@ -163,6 +176,9 @@ static void g_loaded_content_named_init(GNamedWidgetIface *iface)
}
+#endif
+
+
/******************************************************************************
* *
* Paramètres : content = instance d'objet GLib à traiter. *
@@ -577,6 +593,9 @@ char **g_loaded_content_detect_obfuscators(const GLoadedContent *content, bool v
/* ---------------------------------------------------------------------------------- */
+#ifdef HAVE_GTK_SUPPORT
+
+
/******************************************************************************
* *
* Paramètres : content = contenu chargé à consulter. *
@@ -745,12 +764,18 @@ GDisplayOptions *g_loaded_content_get_display_options(const GLoadedContent *cont
}
+#endif
+
+
/* ---------------------------------------------------------------------------------- */
/* VUES ET BASCULEMENT ENTRE LES VUES */
/* ---------------------------------------------------------------------------------- */
+#ifdef HAVE_GTK_SUPPORT
+
+
/******************************************************************************
* *
* Paramètres : panel = panneau affichant un contenu binaire. *
@@ -866,3 +891,6 @@ GtkWidget *get_loaded_panel_from_built_view(GtkWidget *view)
return result;
}
+
+
+#endif
diff --git a/src/analysis/loaded.h b/src/analysis/loaded.h
index 406375c..040dacb 100644
--- a/src/analysis/loaded.h
+++ b/src/analysis/loaded.h
@@ -27,13 +27,17 @@
#include <glib-object.h>
#include <stdbool.h>
-#include <gtk/gtk.h>
+#ifdef HAVE_GTK_SUPPORT
+# include <gtk/gtk.h>
+#endif
#include "content.h"
#include "../common/xml.h"
#include "../glibext/gdisplayoptions.h"
-#include "../gtkext/gtkdockstation.h"
+#ifdef HAVE_GTK_SUPPORT
+# include "../gtkext/gtkdockstation.h"
+#endif
@@ -87,6 +91,8 @@ char **g_loaded_content_detect_obfuscators(const GLoadedContent *, bool, size_t
/* --------------------------- GESTION DYNAMIQUE DES VUES --------------------------- */
+#ifdef HAVE_GTK_SUPPORT
+
/* Détermine le nombre de vues disponibles pour un contenu. */
unsigned int g_loaded_content_count_views(const GLoadedContent *);
@@ -105,11 +111,15 @@ unsigned int g_loaded_content_get_view_index(GLoadedContent *, GtkWidget *);
/* Fournit toutes les options d'affichage pour un contenu. */
GDisplayOptions *g_loaded_content_get_display_options(const GLoadedContent *, unsigned int);
+#endif
+
/* ----------------------- VUES ET BASCULEMENT ENTRE LES VUES ----------------------- */
+#ifdef HAVE_GTK_SUPPORT
+
/* Fournit la station d'accueil d'un panneau d'affichage. */
GtkDockStation *get_dock_station_for_view_panel(GtkWidget *);
@@ -119,6 +129,8 @@ GtkWidget *get_scroll_window_for_view_panel(GtkWidget *);
/* Fournit le panneau chargé inclus dans un affichage. */
GtkWidget *get_loaded_panel_from_built_view(GtkWidget *);
+#endif
+
#endif /* _ANALYSIS_LOADED_H */
diff --git a/src/analysis/project.c b/src/analysis/project.c
index 682dfb9..c966195 100644
--- a/src/analysis/project.c
+++ b/src/analysis/project.c
@@ -1365,6 +1365,9 @@ static void on_new_content_resolved(GContentResolver *resolver, wgroup_id_t wid,
/* ---------------------------------------------------------------------------------- */
+#ifdef HAVE_GTK_SUPPORT
+
+
/******************************************************************************
* *
* Paramètres : - *
@@ -1437,3 +1440,6 @@ void push_project_into_recent_list(const GStudyProject *project)
g_generic_config_set_value(get_main_configuration(), MPK_LAST_PROJECT, project->filename);
}
+
+
+#endif
diff --git a/src/analysis/project.h b/src/analysis/project.h
index e8c6365..c058444 100644
--- a/src/analysis/project.h
+++ b/src/analysis/project.h
@@ -25,7 +25,9 @@
#define _ANALYSIS_PROJECT_H
-#include <gtk/gtk.h>
+#ifdef HAVE_GTK_SUPPORT
+# include <gtk/gtk.h>
+#endif
#include "loaded.h"
@@ -115,12 +117,16 @@ GLoadedContent **g_study_project_get_contents(GStudyProject *, size_t *);
/* ------------------------- GESTION GLOBALISEE DES PROJETS ------------------------- */
+#ifdef HAVE_GTK_SUPPORT
+
/* Fournit le gestionnaire des projets connus. */
GtkRecentManager *get_project_manager(void);
/* Place un projet au sommet de la pile des projets récents. */
void push_project_into_recent_list(const GStudyProject *);
+#endif
+
#endif /* _PROJECT_H */
diff --git a/src/analysis/routine.c b/src/analysis/routine.c
index 41bf451..de066dc 100644
--- a/src/analysis/routine.c
+++ b/src/analysis/routine.c
@@ -37,9 +37,9 @@
#include "routine-int.h"
#include "../arch/instructions/raw.h"
#include "../common/extstr.h"
+#include "../core/columns.h"
#include "../core/params.h"
#include "../glibext/gbinarycursor.h"
-#include "../gtkext/gtkblockdisplay.h"
@@ -1047,6 +1047,8 @@ void g_binary_routine_print_code(const GBinRoutine *routine, GLangOutput *lang,
+#ifdef HAVE_GTK_SUPPORT
+
/******************************************************************************
* *
@@ -1334,3 +1336,6 @@ char *g_binary_routine_build_tooltip(const GBinRoutine *routine, const GLoadedBi
return result;
}
+
+
+#endif
diff --git a/src/analysis/routine.h b/src/analysis/routine.h
index f148406..2e5e22d 100644
--- a/src/analysis/routine.h
+++ b/src/analysis/routine.h
@@ -133,10 +133,13 @@ char *g_binary_routine_to_string(const GBinRoutine *, bool);
+#ifdef HAVE_GTK_SUPPORT
/* Construit un petit résumé concis de la routine. */
char *g_binary_routine_build_tooltip(const GBinRoutine *, const GLoadedBinary *);
+#endif
+
#endif /* _ANALYSIS_ROUTINE_H */
diff --git a/src/analysis/storage/Makefile.am b/src/analysis/storage/Makefile.am
index aee0faf..3eb287b 100644
--- a/src/analysis/storage/Makefile.am
+++ b/src/analysis/storage/Makefile.am
@@ -13,18 +13,9 @@ libanalysisstorage_la_SOURCES = \
storage.h storage.c \
tpmem.h tpmem.c
-libanalysisstorage_la_LIBADD =
-
-libanalysisstorage_la_LDFLAGS = $(LIBSSL_LIBS)
+libanalysisstorage_la_CFLAGS = $(TOOLKIT_CFLAGS) $(LIBXML_CFLAGS)
devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
dev_HEADERS = $(libanalysisstorage_la_SOURCES:%c=)
-
-
-AM_CPPFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS) $(LIBARCHIVE_CFLAGS) $(LIBSQLITE_CFLAGS) $(LIBSSL_CFLAGS)
-
-AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS)
-
-SUBDIRS =
diff --git a/src/analysis/types/Makefile.am b/src/analysis/types/Makefile.am
index e3cbda0..bc6ff14 100644
--- a/src/analysis/types/Makefile.am
+++ b/src/analysis/types/Makefile.am
@@ -12,18 +12,9 @@ libanalysistypes_la_SOURCES = \
proto.h proto.c \
template.h template.c
-libanalysistypes_la_LIBADD =
-
-libanalysistypes_la_LDFLAGS =
+libanalysistypes_la_CFLAGS = $(TOOLKIT_CFLAGS)
devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
dev_HEADERS = $(libanalysistypes_la_SOURCES:%c=)
-
-
-AM_CPPFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS)
-
-AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS)
-
-SUBDIRS =
diff --git a/src/arch/Makefile.am b/src/arch/Makefile.am
index 8a2eea3..bdfceb7 100644
--- a/src/arch/Makefile.am
+++ b/src/arch/Makefile.am
@@ -1,29 +1,29 @@
noinst_LTLIBRARIES = libarch.la
-libarch_la_SOURCES = \
- archbase.h archbase.c \
- context-int.h \
- context.h context.c \
- instriter.h instriter.c \
- instruction-int.h \
- instruction.h instruction.c \
- link.h link.c \
- operand-int.h operand-int.c \
- operand.h operand.c \
- post.h post.c \
- processor-int.h \
- processor.h processor.c \
- register-int.h \
- register.h register.c \
- storage.h storage.c \
+libarch_la_SOURCES = \
+ archbase.h archbase.c \
+ context-int.h \
+ context.h context.c \
+ instriter.h instriter.c \
+ instruction-int.h \
+ instruction.h instruction.c \
+ link.h link.c \
+ operand-int.h operand-int.c \
+ operand.h operand.c \
+ post.h post.c \
+ processor-int.h \
+ processor.h processor.c \
+ register-int.h \
+ register.h register.c \
+ storage.h storage.c \
vmpa.h vmpa.c
-libarch_la_LIBADD = \
- instructions/libarchinstructions.la \
- operands/libarchoperands.la
+libarch_la_CFLAGS = $(TOOLKIT_CFLAGS) $(LIBXML_CFLAGS)
-libarch_la_LDFLAGS =
+libarch_la_LIBADD = \
+ instructions/libarchinstructions.la \
+ operands/libarchoperands.la
devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
@@ -31,9 +31,4 @@ devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
dev_HEADERS = $(libarch_la_SOURCES:%c=)
-AM_CPPFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS)
-
-AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS)
-
-
SUBDIRS = instructions operands
diff --git a/src/arch/instruction.c b/src/arch/instruction.c
index 4de16d6..7fb9c4a 100644
--- a/src/arch/instruction.c
+++ b/src/arch/instruction.c
@@ -35,11 +35,11 @@
#include "instruction-int.h"
#include "storage.h"
#include "../analysis/storage/serialize-int.h"
+#include "../core/columns.h"
#include "../core/logs.h"
#include "../core/processors.h"
#include "../glibext/gbinarycursor.h"
#include "../glibext/linegen-int.h"
-#include "../gtkext/gtkblockdisplay.h"
@@ -81,12 +81,16 @@ bool g_arch_instruction_store_destinations(GArchInstruction *, GObjectStorage *,
/* Indique le nombre de ligne prêtes à être générées. */
static size_t g_arch_instruction_count_lines(const GArchInstruction *);
+#ifdef HAVE_GTK_SUPPORT
+
/* Retrouve l'emplacement correspondant à une position donnée. */
static void g_arch_instruction_compute_cursor(const GArchInstruction *, gint, size_t, size_t, GLineCursor **);
/* Détermine si le conteneur s'inscrit dans une plage donnée. */
static int g_arch_instruction_contain_cursor(const GArchInstruction *, size_t, size_t, const GLineCursor *);
+#endif
+
/* Renseigne sur les propriétés liées à un générateur. */
static BufferLineFlags g_arch_instruction_get_flags2(const GArchInstruction *, size_t, size_t);
@@ -195,8 +199,10 @@ static void g_arch_instruction_init(GArchInstruction *instr)
static void g_arch_instruction_generator_init(GLineGeneratorInterface *iface)
{
iface->count = (linegen_count_lines_fc)g_arch_instruction_count_lines;
+#ifdef HAVE_GTK_SUPPORT
iface->compute = (linegen_compute_fc)g_arch_instruction_compute_cursor;
iface->contain = (linegen_contain_fc)g_arch_instruction_contain_cursor;
+#endif
iface->get_flags = (linegen_get_flags_fc)g_arch_instruction_get_flags2;
iface->print = (linegen_print_fc)g_arch_instruction_print;
@@ -1835,6 +1841,9 @@ static size_t g_arch_instruction_count_lines(const GArchInstruction *instr)
}
+#ifdef HAVE_GTK_SUPPORT
+
+
/******************************************************************************
* *
* Paramètres : instr = générateur à consulter. *
@@ -1891,6 +1900,9 @@ static int g_arch_instruction_contain_cursor(const GArchInstruction *instr, size
}
+#endif
+
+
/******************************************************************************
* *
* Paramètres : instr = générateur à consulter. *
diff --git a/src/arch/instructions/Makefile.am b/src/arch/instructions/Makefile.am
index 24d3eb5..28cf90f 100644
--- a/src/arch/instructions/Makefile.am
+++ b/src/arch/instructions/Makefile.am
@@ -1,24 +1,14 @@
noinst_LTLIBRARIES = libarchinstructions.la
-libarchinstructions_la_SOURCES = \
- raw.h raw.c \
- undefined-int.h \
+libarchinstructions_la_SOURCES = \
+ raw.h raw.c \
+ undefined-int.h \
undefined.h undefined.c
-libarchinstructions_la_LIBADD =
-
-libarchinstructions_la_LDFLAGS =
+libarchinstructions_la_CFLAGS = $(TOOLKIT_CFLAGS) $(LIBXML_CFLAGS)
devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
dev_HEADERS = $(libarchinstructions_la_SOURCES:%c=)
-
-
-AM_CPPFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS)
-
-AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS)
-
-
-SUBDIRS =
diff --git a/src/arch/instructions/raw.c b/src/arch/instructions/raw.c
index 6340e46..26282fa 100644
--- a/src/arch/instructions/raw.c
+++ b/src/arch/instructions/raw.c
@@ -35,7 +35,7 @@
#include "../instruction-int.h"
#include "../operands/immediate.h"
#include "../operands/target.h"
-#include "../../gtkext/gtkblockdisplay.h"
+#include "../../core/columns.h"
diff --git a/src/arch/instructions/undefined.c b/src/arch/instructions/undefined.c
index 7ed5db9..15c63e7 100644
--- a/src/arch/instructions/undefined.c
+++ b/src/arch/instructions/undefined.c
@@ -31,7 +31,7 @@
#include "undefined-int.h"
-#include "../../gtkext/gtkblockdisplay.h"
+#include "../../core/columns.h"
diff --git a/src/arch/operand-int.h b/src/arch/operand-int.h
index e78c2b0..3973287 100644
--- a/src/arch/operand-int.h
+++ b/src/arch/operand-int.h
@@ -48,9 +48,13 @@ typedef GArchOperand * (* get_inner_operand_fc) (const GArchOperand *, const cha
/* Traduit un opérande en version humainement lisible. */
typedef void (* operand_print_fc) (const GArchOperand *, GBufferLine *);
+#ifdef HAVE_GTK_SUPPORT
+
/* Construit un petit résumé concis de l'opérande. */
typedef char * (* operand_build_tooltip_fc) (const GArchOperand *, const GLoadedBinary *);
+#endif
+
/* Fournit une liste de candidats embarqués par un candidat. */
typedef GArchOperand ** (* operand_list_inners_fc) (const GArchOperand *, size_t *);
@@ -113,7 +117,9 @@ struct _GArchOperandClass
get_inner_operand_fc get_inner; /* Récupération d'un opérande */
operand_print_fc print; /* Texte humain équivalent */
+#ifdef HAVE_GTK_SUPPORT
operand_build_tooltip_fc build_tooltip; /* Construction de description */
+#endif
operand_list_inners_fc list_inner; /* Récupération d'internes */
operand_update_inners_fc update_inner; /* Mise à jour des éléments */
diff --git a/src/arch/operand.c b/src/arch/operand.c
index f262373..ab7eeab 100644
--- a/src/arch/operand.c
+++ b/src/arch/operand.c
@@ -408,6 +408,9 @@ void g_arch_operand_print(const GArchOperand *operand, GBufferLine *line)
}
+#ifdef HAVE_GTK_SUPPORT
+
+
/******************************************************************************
* *
* Paramètres : operand = opérande à consulter. *
@@ -438,6 +441,9 @@ char *g_arch_operand_build_tooltip(const GArchOperand *operand, const GLoadedBin
}
+#endif
+
+
/******************************************************************************
* *
* Paramètres : operand = opérande à venir modifier. *
diff --git a/src/arch/operand.h b/src/arch/operand.h
index a93e898..62d2969 100644
--- a/src/arch/operand.h
+++ b/src/arch/operand.h
@@ -88,9 +88,13 @@ GArchOperand *g_arch_operand_get_inner_operand_from_path(const GArchOperand *, c
/* Traduit un opérande en version humainement lisible. */
void g_arch_operand_print(const GArchOperand *, GBufferLine *);
+#ifdef HAVE_GTK_SUPPORT
+
/* Construit un petit résumé concis de l'opérande. */
char *g_arch_operand_build_tooltip(const GArchOperand *, const GLoadedBinary *);
+#endif
+
/* Ajoute une information complémentaire à un opérande. */
bool g_arch_operand_set_flag(GArchOperand *, ArchOperandFlag);
diff --git a/src/arch/operands/Makefile.am b/src/arch/operands/Makefile.am
index 4371457..f2a8767 100644
--- a/src/arch/operands/Makefile.am
+++ b/src/arch/operands/Makefile.am
@@ -18,19 +18,9 @@ libarchoperands_la_SOURCES = \
targetable-int.h \
targetable.h targetable.c
-libarchoperands_la_LIBADD =
-
-libarchoperands_la_LDFLAGS =
+libarchoperands_la_CFLAGS = $(TOOLKIT_CFLAGS) $(LIBXML_CFLAGS)
devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
dev_HEADERS = $(libarchoperands_la_SOURCES:%c=)
-
-
-AM_CPPFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS)
-
-AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS)
-
-
-SUBDIRS =
diff --git a/src/arch/operands/immediate.c b/src/arch/operands/immediate.c
index 0df8bbb..9cb60a1 100644
--- a/src/arch/operands/immediate.c
+++ b/src/arch/operands/immediate.c
@@ -43,7 +43,7 @@
#include "../../common/asm.h"
#include "../../common/extstr.h"
#include "../../common/sort.h"
-#include "../../gtkext/gtkblockdisplay.h"
+#include "../../core/columns.h"
@@ -82,9 +82,13 @@ static void g_imm_operand_print(const GImmOperand *, GBufferLine *);
/* Compare un opérande avec un autre. */
static int g_imm_operand_compare(const GImmOperand *, const GImmOperand *, bool);
+#ifdef HAVE_GTK_SUPPORT
+
/* Construit un petit résumé concis de l'opérande. */
static char *g_imm_operand_build_tooltip(const GImmOperand *, const GLoadedBinary *);
+#endif
+
/* Fournit l'empreinte d'un candidat à une centralisation. */
static guint g_imm_operand_hash(const GImmOperand *, bool);
@@ -148,7 +152,9 @@ static void g_imm_operand_class_init(GImmOperandClass *klass)
operand->compare = (operand_compare_fc)g_imm_operand_compare;
operand->print = (operand_print_fc)g_imm_operand_print;
+#ifdef HAVE_GTK_SUPPORT
operand->build_tooltip = (operand_build_tooltip_fc)g_imm_operand_build_tooltip;
+#endif
operand->hash = (operand_hash_fc)g_imm_operand_hash;
@@ -1226,6 +1232,9 @@ static int g_imm_operand_compare(const GImmOperand *a, const GImmOperand *b, boo
}
+#ifdef HAVE_GTK_SUPPORT
+
+
/******************************************************************************
* *
* Paramètres : operand = opérande à consulter. *
@@ -1314,6 +1323,9 @@ static char *g_imm_operand_build_tooltip(const GImmOperand *operand, const GLoad
}
+#endif
+
+
/******************************************************************************
* *
* Paramètres : operand = objet dont l'instance se veut unique. *
diff --git a/src/arch/operands/known.c b/src/arch/operands/known.c
index 152bdac..5402879 100644
--- a/src/arch/operands/known.c
+++ b/src/arch/operands/known.c
@@ -32,8 +32,8 @@
#include "immediate-int.h"
#include "rename-int.h"
#include "../../analysis/db/misc/rlestr.h"
+#include "../../core/columns.h"
#include "../../core/logs.h"
-#include "../../gtkext/gtkblockdisplay.h"
diff --git a/src/arch/operands/target.c b/src/arch/operands/target.c
index 068d060..e33e1ee 100644
--- a/src/arch/operands/target.c
+++ b/src/arch/operands/target.c
@@ -41,7 +41,7 @@
#include "../../format/format.h"
#include "../../format/strsym.h"
#include "../../glibext/gbinarycursor.h"
-#include "../../gtkext/gtkblockdisplay.h"
+#include "../../core/columns.h"
@@ -74,9 +74,13 @@ static int g_target_operand_compare(const GTargetOperand *, const GTargetOperand
/* Traduit un opérande en version humainement lisible. */
static void g_target_operand_print(const GTargetOperand *, GBufferLine *);
+#ifdef HAVE_GTK_SUPPORT
+
/* Construit un petit résumé concis de l'opérande. */
static char *g_target_operand_build_tooltip(const GTargetOperand *, const GLoadedBinary *);
+#endif
+
/* Fournit l'empreinte d'un candidat à une centralisation. */
static guint g_target_operand_hash(const GTargetOperand *, bool);
@@ -132,7 +136,9 @@ static void g_target_operand_class_init(GTargetOperandClass *klass)
operand->compare = (operand_compare_fc)g_target_operand_compare;
operand->print = (operand_print_fc)g_target_operand_print;
+#ifdef HAVE_GTK_SUPPORT
operand->build_tooltip = (operand_build_tooltip_fc)g_target_operand_build_tooltip;
+#endif
operand->hash = (operand_hash_fc)g_target_operand_hash;
@@ -382,6 +388,9 @@ GArchOperand *g_target_operand_new(MemoryDataSize size, const vmpa2t *addr)
}
+#ifdef HAVE_GTK_SUPPORT
+
+
/******************************************************************************
* *
* Paramètres : operand = opérande à consulter. *
@@ -462,6 +471,9 @@ static char *g_target_operand_build_tooltip(const GTargetOperand *operand, const
}
+#endif
+
+
/******************************************************************************
* *
* Paramètres : operand = structure dont le contenu est à consulter. *
diff --git a/src/common/Makefile.am b/src/common/Makefile.am
index 28e5459..9a8fdf2 100644
--- a/src/common/Makefile.am
+++ b/src/common/Makefile.am
@@ -31,16 +31,9 @@ libcommon_la_SOURCES = \
xdg.h xdg.c \
xml.h xml.c
-libcommon_la_LDFLAGS = $(LIBGTK_LIBS) $(LIBXML_LIBS) $(LIBCURL_LIBS)
+libcommon_la_CFLAGS = $(TOOLKIT_CFLAGS) $(LIBXML_CFLAGS) $(LIBCURL_CFLAGS)
devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
dev_HEADERS = $(libcommon_la_SOURCES:%c=)
-
-
-AM_CPPFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS) $(LIBCURL_CFLAGS)
-
-AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS)
-
-SUBDIRS =
diff --git a/src/core/Makefile.am b/src/core/Makefile.am
index 12dcddd..ac1ae14 100644
--- a/src/core/Makefile.am
+++ b/src/core/Makefile.am
@@ -3,6 +3,7 @@ noinst_LTLIBRARIES = libcore.la
libcore_la_SOURCES = \
collections.h collections.c \
+ columns.h \
core.h core.c \
demanglers.h demanglers.c \
global.h global.c \
@@ -13,16 +14,9 @@ libcore_la_SOURCES = \
processors.h processors.c \
queue.h queue.c
-libcore_la_LDFLAGS = $(LIBGTK_LIBS) $(LIBXML_LIBS)
+libcore_la_CFLAGS = $(TOOLKIT_CFLAGS) $(LIBXML_CFLAGS)
devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
dev_HEADERS = $(libcore_la_SOURCES:%c=)
-
-
-AM_CPPFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS)
-
-AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS)
-
-SUBDIRS =
diff --git a/src/core/collections.h b/src/core/collections.h
index 69da6f7..87f2435 100644
--- a/src/core/collections.h
+++ b/src/core/collections.h
@@ -49,4 +49,4 @@ void delete_collections_list(GList **);
-#endif /* _ANALYSIS_DB_COLLECTION_H */
+#endif /* _CORE_COLLECTIONS_H */
diff --git a/src/core/columns.h b/src/core/columns.h
new file mode 100644
index 0000000..81f78f8
--- /dev/null
+++ b/src/core/columns.h
@@ -0,0 +1,59 @@
+
+/* Chrysalide - Outil d'analyse de fichiers binaires
+ * columns.h - prototypes pour l'énumération globale des colonnes de rendu
+ *
+ * Copyright (C) 2022 Cyrille Bagard
+ *
+ * This file is part of Chrysalide.
+ *
+ * Chrysalide is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Chrysalide is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Chrysalide. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#ifndef _CORE_COLUMNS_H
+#define _CORE_COLUMNS_H
+
+
+
+/* Désignation des colonnes d'une ligne */
+typedef enum _DisassLineColumn
+{
+ DLC_PHYSICAL, /* Position physique */
+ DLC_VIRTUAL, /* Adresse virtuelle */
+ DLC_BINARY, /* Contenu sous forme binaire */
+ DLC_ASSEMBLY_LABEL, /* Etiquette dans les données */
+ DLC_ASSEMBLY_HEAD, /* Instruction pour assembleur */
+ DLC_ASSEMBLY, /* Code pour assembleur */
+ DLC_COMMENTS, /* Commentaires éventuels */
+
+ DLC_COUNT,
+
+} DisassLineColumn;
+
+
+/* Désignation des colonnes d'une ligne */
+typedef enum _HexLineColumn
+{
+ HLC_PHYSICAL, /* Position physique */
+ HLC_BINARY, /* Données binaires brutes */
+ HLC_PADDING, /* Espacement forcé */
+ HLC_TRANSLATION, /* Traduction de contenu */
+
+ HLC_COUNT,
+
+} HexLineColumn;
+
+
+
+#endif /* _CORE_COLUMNS_H */
diff --git a/src/core/logs.c b/src/core/logs.c
index 2769bd5..9385020 100644
--- a/src/core/logs.c
+++ b/src/core/logs.c
@@ -29,8 +29,10 @@
#include "../common/extstr.h"
-#include "../gui/core/items.h"
-#include "../gui/panels/log.h"
+#ifdef HAVE_GTK_SUPPORT
+# include "../gui/core/items.h"
+# include "../gui/panels/log.h"
+#endif
@@ -107,10 +109,14 @@ void set_log_verbosity(LogMessageType level)
void log_simple_message(LogMessageType type, const char *msg)
{
+#ifdef HAVE_GTK_SUPPORT
GEditorItem *item; /* Eventuel affichage présent */
+#endif
if (type >= _verbosity)
{
+#ifdef HAVE_GTK_SUPPORT
+
item = find_editor_item_by_type(G_TYPE_LOG_PANEL);
if (item != NULL)
@@ -120,6 +126,9 @@ void log_simple_message(LogMessageType type, const char *msg)
}
else
+
+#endif
+
print_message_without_gui(type, msg);
}
diff --git a/src/debug/Makefile.am b/src/debug/Makefile.am
index 6cfc90f..ce21776 100644
--- a/src/debug/Makefile.am
+++ b/src/debug/Makefile.am
@@ -12,18 +12,9 @@ libdebug_la_SOURCES = \
stream-int.h \
stream.h stream.c
-libdebug_la_LIBADD =
-
-libdebug_la_CFLAGS = $(AM_CFLAGS)
+libdebug_la_CFLAGS = $(TOOLKIT_CFLAGS) $(LIBXML_CFLAGS)
devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
dev_HEADERS = $(libdebug_la_SOURCES:%c=)
-
-
-AM_CPPFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS)
-
-AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS)
-
-SUBDIRS =
diff --git a/src/format/Makefile.am b/src/format/Makefile.am
index 2004f93..305cd92 100644
--- a/src/format/Makefile.am
+++ b/src/format/Makefile.am
@@ -19,18 +19,9 @@ libformat_la_SOURCES = \
symbol-int.h \
symbol.h symbol.c
-libformat_la_LIBADD =
-
-libformat_la_LDFLAGS =
+libformat_la_CFLAGS = $(TOOLKIT_CFLAGS) $(LIBXML_CFLAGS)
devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
dev_HEADERS = $(libformat_la_SOURCES:%c=)
-
-
-AM_CPPFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS)
-
-AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS)
-
-SUBDIRS =
diff --git a/src/format/format-int.h b/src/format/format-int.h
index 3e6ae3e..f18bb24 100644
--- a/src/format/format-int.h
+++ b/src/format/format-int.h
@@ -31,7 +31,6 @@
#include "known-int.h"
#include "preload.h"
#include "../glibext/objhole.h"
-#include "../gtkext/gtkstatusstack.h"
#include "../mangling/demangler.h"
diff --git a/src/format/format.h b/src/format/format.h
index a23782c..f9aa430 100644
--- a/src/format/format.h
+++ b/src/format/format.h
@@ -34,6 +34,7 @@
#include "../analysis/content.h"
#include "../arch/context.h"
#include "../glibext/delayed.h"
+#include "../glibext/notifier.h"
diff --git a/src/format/known.h b/src/format/known.h
index 8319a63..dcc8669 100644
--- a/src/format/known.h
+++ b/src/format/known.h
@@ -31,6 +31,7 @@
#include "../analysis/content.h"
#include "../glibext/delayed.h"
+#include "../glibext/notifier.h"
diff --git a/src/format/strsym.c b/src/format/strsym.c
index d585434..c352a0e 100644
--- a/src/format/strsym.c
+++ b/src/format/strsym.c
@@ -33,7 +33,7 @@
#include "symbol-int.h"
#include "../arch/operands/feeder-int.h"
#include "../common/alloc.h"
-#include "../gtkext/gtkblockdisplay.h"
+#include "../core/columns.h"
diff --git a/src/format/symbol.c b/src/format/symbol.c
index b20426d..934eee3 100644
--- a/src/format/symbol.c
+++ b/src/format/symbol.c
@@ -31,9 +31,11 @@
#include "symbol-int.h"
#include "../analysis/db/misc/rlestr.h"
-#include "../glibext/gbinarycursor.h"
+#include "../core/columns.h"
+#ifdef HAVE_GTK_SUPPORT
+# include "../glibext/gbinarycursor.h"
+#endif
#include "../glibext/linegen-int.h"
-#include "../gtkext/gtkblockdisplay.h"
@@ -66,12 +68,16 @@ static void g_binary_symbol_finalize(GBinSymbol *);
/* Indique le nombre de ligne prêtes à être générées. */
static size_t g_binary_symbol_count_lines(const GBinSymbol *);
+#ifdef HAVE_GTK_SUPPORT
+
/* Retrouve l'emplacement correspondant à une position donnée. */
static void g_binary_symbol_compute_cursor(const GBinSymbol *, gint, size_t, size_t, GLineCursor **);
/* Détermine si le conteneur s'inscrit dans une plage donnée. */
static int g_binary_symbol_contain_cursor(const GBinSymbol *, size_t, size_t, const GLineCursor *);
+#endif
+
/* Renseigne sur les propriétés liées à un générateur. */
static BufferLineFlags g_binary_symbol_get_line_flags(const GBinSymbol *, size_t, size_t);
@@ -177,8 +183,10 @@ static void g_binary_symbol_init(GBinSymbol *symbol)
static void g_binary_symbol_interface_init(GLineGeneratorInterface *iface)
{
iface->count = (linegen_count_lines_fc)g_binary_symbol_count_lines;
+#ifdef HAVE_GTK_SUPPORT
iface->compute = (linegen_compute_fc)g_binary_symbol_compute_cursor;
iface->contain = (linegen_contain_fc)g_binary_symbol_contain_cursor;
+#endif
iface->get_flags = (linegen_get_flags_fc)g_binary_symbol_get_line_flags;
iface->print = (linegen_print_fc)g_binary_symbol_print;
@@ -784,6 +792,9 @@ static size_t g_binary_symbol_count_lines(const GBinSymbol *symbol)
}
+#ifdef HAVE_GTK_SUPPORT
+
+
/******************************************************************************
* *
* Paramètres : symbol = générateur à consulter. *
@@ -851,6 +862,9 @@ static int g_binary_symbol_contain_cursor(const GBinSymbol *symbol, size_t index
}
+#endif
+
+
/******************************************************************************
* *
* Paramètres : symbol = générateur à consulter. *
diff --git a/src/glibext/Makefile.am b/src/glibext/Makefile.am
index 6bcf4b8..67fe0d8 100644
--- a/src/glibext/Makefile.am
+++ b/src/glibext/Makefile.am
@@ -3,53 +3,56 @@ BUILT_SOURCES = chrysamarshal.h chrysamarshal.c
noinst_LTLIBRARIES = libglibext.la
-libglibext_la_SOURCES = \
- buffercache-int.h \
- buffercache.h buffercache.c \
- bufferline.h bufferline.c \
- bufferview.h bufferview.c \
- chrysamarshal.h chrysamarshal.c \
- configuration-int.h \
- configuration.h configuration.c \
- delayed-int.h \
- delayed.h delayed.c \
- gbinarycursor.h gbinarycursor.c \
- gbinportion-int.h \
- gbinportion.h gbinportion.c \
- gdisplayoptions.h gdisplayoptions.c \
- glinecursor-int.h \
- glinecursor.h glinecursor.c \
- gloadedpanel-int.h \
- gloadedpanel.h gloadedpanel.c \
- gnhash.h gnhash.c \
- linecolumn.h linecolumn.c \
- linegen-int.h \
- linegen.h linegen.c \
- linesegment.h linesegment.c \
- named-int.h \
- named.h named.c \
- objhole.h \
- proto.h \
- seq.h seq.c \
- signal.h signal.c \
- singleton.h singleton.c \
+libglibext_la_SOURCES = \
+ buffercache-int.h \
+ buffercache.h buffercache.c \
+ bufferline.h bufferline.c \
+ chrysamarshal.h chrysamarshal.c \
+ configuration-int.h \
+ configuration.h configuration.c \
+ delayed-int.h \
+ delayed.h delayed.c \
+ gbinarycursor.h gbinarycursor.c \
+ gbinportion-int.h \
+ gbinportion.h gbinportion.c \
+ gdisplayoptions.h gdisplayoptions.c \
+ glinecursor-int.h \
+ glinecursor.h glinecursor.c \
+ gnhash.h gnhash.c \
+ linecolumn.h linecolumn.c \
+ linegen-int.h \
+ linegen.h linegen.c \
+ notifier.h \
+ objhole.h \
+ proto.h \
+ seq.h seq.c \
+ signal.h signal.c \
+ singleton.h singleton.c \
+ linesegment.h linesegment.c
+
+if BUILD_GTK_SUPPORT
+
+libglibext_la_SOURCES += \
+ bufferview.h bufferview.c \
+ gloadedpanel-int.h \
+ gloadedpanel.h gloadedpanel.c \
+ named-int.h \
+ named.h named.c \
widthtracker.h widthtracker.c
+endif
+
+libglibext_la_CFLAGS = $(TOOLKIT_CFLAGS) $(LIBXML_CFLAGS)
+
libglibext_la_LIBADD = \
generators/libglibextgenerators.la
-libglibext_la_LDFLAGS =
-
devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
dev_HEADERS = $(libglibext_la_SOURCES:%c=)
-AM_CPPFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS)
-
-AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS)
-
SUBDIRS = generators
diff --git a/src/glibext/buffercache-int.h b/src/glibext/buffercache-int.h
index 36e4369..4991bd0 100644
--- a/src/glibext/buffercache-int.h
+++ b/src/glibext/buffercache-int.h
@@ -68,7 +68,9 @@ struct _GBufferCache
GBinContent *content; /* Contenu binaire global */
+#ifdef HAVE_GTK_SUPPORT
GWidthTracker *tracker; /* Suivi des largeurs */
+#endif
cache_info *lines; /* Liste des lignes intégrées */
size_t count; /* Quantité en cache */
diff --git a/src/glibext/buffercache.c b/src/glibext/buffercache.c
index fd2adc5..ed1068c 100644
--- a/src/glibext/buffercache.c
+++ b/src/glibext/buffercache.c
@@ -59,9 +59,13 @@ static void get_cache_info_cursor(const cache_info *, size_t, gint, GLineCursor
/* Suivit les variations du compteur de références d'une ligne. */
static void on_line_ref_toggle(cache_info *, GBufferLine *, gboolean);
+#ifdef HAVE_GTK_SUPPORT
+
/* Fournit la ligne de tampon correspondant aux générateurs. */
static GBufferLine *get_cache_info_line(cache_info *, const GWidthTracker *, size_t, const GBinContent *);
+#endif
+
/* Force la réinitialisation d'une éventuelle ligne cachée. */
static void _reset_cache_info_line_unlocked(cache_info *);
@@ -367,6 +371,9 @@ static void on_line_ref_toggle(cache_info *info, GBufferLine *line, gboolean las
}
+#ifdef HAVE_GTK_SUPPORT
+
+
/******************************************************************************
* *
* Paramètres : info = informations sur une ligne à venir manipuler. *
@@ -422,6 +429,9 @@ static GBufferLine *get_cache_info_line(cache_info *info, const GWidthTracker *t
}
+#endif
+
+
/******************************************************************************
* *
* Paramètres : info = informations sur une ligne à venir manipuler. *
@@ -547,7 +557,9 @@ static void g_buffer_cache_init(GBufferCache *cache)
cache->used = 0;
g_rw_lock_init(&cache->access);
+#ifdef HAVE_GTK_SUPPORT
cache->tracker = NULL;
+#endif
}
@@ -587,7 +599,9 @@ static void g_buffer_cache_dispose(GBufferCache *cache)
}
+#ifdef HAVE_GTK_SUPPORT
g_clear_object(&cache->tracker);
+#endif
G_OBJECT_CLASS(g_buffer_cache_parent_class)->dispose(G_OBJECT(cache));
@@ -656,7 +670,9 @@ GBufferCache *g_buffer_cache_new(GBinContent *content, size_t col_count, size_t
g_object_ref(G_OBJECT(content));
}
+#ifdef HAVE_GTK_SUPPORT
result->tracker = g_width_tracker_new(result, col_count, opt_count);
+#endif
return result;
@@ -758,6 +774,9 @@ gint g_buffer_cache_get_text_position(const GBufferCache *cache)
}
+#ifdef HAVE_GTK_SUPPORT
+
+
/******************************************************************************
* *
* Paramètres : cache = composant GLib à consulter. *
@@ -783,6 +802,9 @@ GWidthTracker *g_buffer_cache_get_width_tracker(const GBufferCache *cache)
}
+#endif
+
+
/******************************************************************************
* *
* Paramètres : cache = cache de lignes à mettre à jour. *
@@ -905,7 +927,7 @@ static size_t g_buffer_cache_compute_repetition(GBufferCache *cache, size_t inde
void g_buffer_cache_insert_at(GBufferCache *cache, size_t index, GLineGenerator *generator, BufferLineFlags flags, bool before, bool after)
{
-#ifndef NDEBUG
+#if !defined(NDEBUG) && defined(HAVE_GTK_SUPPORT)
GLineCursor *gen_cursor; /* Position du générateur */
GLineCursor *line_cursor; /* Position de la ligne */
int ret; /* Bilan de comparaison */
@@ -919,7 +941,7 @@ void g_buffer_cache_insert_at(GBufferCache *cache, size_t index, GLineGenerator
assert(!(before && after));
-#ifndef NDEBUG
+#if !defined(NDEBUG) && defined(HAVE_GTK_SUPPORT)
if (!before && !after)
{
@@ -981,7 +1003,9 @@ void g_buffer_cache_insert_at(GBufferCache *cache, size_t index, GLineGenerator
cache->used += needed;
+#ifdef HAVE_GTK_SUPPORT
g_width_tracker_update_added(cache->tracker, index, needed);
+#endif
g_signal_emit_by_name(cache, "size-changed", true, index, needed);
@@ -991,7 +1015,9 @@ void g_buffer_cache_insert_at(GBufferCache *cache, size_t index, GLineGenerator
{
extend_cache_info(&cache->lines[index], generator, flags);
+#ifdef HAVE_GTK_SUPPORT
g_width_tracker_update(cache->tracker, index);
+#endif
if (needed > 1)
{
@@ -1005,7 +1031,9 @@ void g_buffer_cache_insert_at(GBufferCache *cache, size_t index, GLineGenerator
cache->used += needed - 1;
+#ifdef HAVE_GTK_SUPPORT
g_width_tracker_update_added(cache->tracker, index + 1, needed - 1);
+#endif
}
@@ -1051,7 +1079,9 @@ void g_buffer_cache_delete_at(GBufferCache *cache, size_t index)
cache->used--;
+#ifdef HAVE_GTK_SUPPORT
g_width_tracker_update_deleted(cache->tracker, index, index);
+#endif
g_signal_emit_by_name(cache, "size-changed", false, index, 1);
@@ -1170,7 +1200,9 @@ GLineGenerator *g_buffer_cache_delete_type_at(GBufferCache *cache, size_t index,
cache->used--;
+#ifdef HAVE_GTK_SUPPORT
g_width_tracker_update_deleted(cache->tracker, delete, delete);
+#endif
g_signal_emit_by_name(cache, "size-changed", false, delete, 1);
@@ -1235,7 +1267,9 @@ void g_buffer_cache_append(GBufferCache *cache, GLineGenerator *generator, Buffe
cache->used += count;
+#ifdef HAVE_GTK_SUPPORT
g_width_tracker_update_added(cache->tracker, index, count);
+#endif
g_signal_emit_by_name(cache, "size-changed", true, index, count);
@@ -1292,7 +1326,9 @@ void g_buffer_cache_extend_with(GBufferCache *cache, size_t count, GLineGenerato
if (added > 0)
{
+#ifdef HAVE_GTK_SUPPORT
g_width_tracker_update_added(cache->tracker, index, added);
+#endif
g_signal_emit_by_name(cache, "size-changed", true, index, added);
@@ -1349,7 +1385,9 @@ void g_buffer_cache_truncate(GBufferCache *cache, size_t max)
cache->used = max;
+#ifdef HAVE_GTK_SUPPORT
g_width_tracker_update_deleted(cache->tracker, max, max + removed - 1);
+#endif
g_signal_emit_by_name(cache, "size-changed", false, max, removed);
@@ -1358,6 +1396,9 @@ void g_buffer_cache_truncate(GBufferCache *cache, size_t max)
}
+#ifdef HAVE_GTK_SUPPORT
+
+
/******************************************************************************
* *
* Paramètres : cache = tampon de lignes à venir consulter. *
@@ -1384,6 +1425,9 @@ void g_buffer_cache_get_line_cursor(GBufferCache *cache, size_t index, gint x, G
}
+#endif
+
+
/******************************************************************************
* *
* Paramètres : cache = tampon de lignes à venir consulter. *
@@ -1508,6 +1552,62 @@ void g_buffer_cache_remove_line_flag(GBufferCache *cache, size_t index, BufferLi
/******************************************************************************
* *
+* Paramètres : cache = tampon de lignes à consulter. *
+* start = point de départ du parcours. *
+* flag = propriétés à retrouver si possible. *
+* *
+* Description : Avance autant que possible vers une ligne idéale. *
+* *
+* Retour : Indice de la ligne recherchée, si elle existe. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+size_t g_buffer_cache_look_for_flag(GBufferCache *cache, size_t start, BufferLineFlags flag)
+{
+ size_t result; /* Indice de ligne à retourner */
+ GLineCursor *init; /* Localisation de départ */
+ size_t i; /* Boucle de parcours */
+ GLineCursor *next; /* Localisation suivante */
+ int ret; /* Bilan de comparaison */
+
+ assert(!g_rw_lock_writer_trylock(&cache->access));
+
+ assert(start < cache->used);
+
+ result = start;
+
+ get_cache_info_cursor(&cache->lines[start], start, 0, &init);
+
+ for (i = start + 1; i < cache->used; i++)
+ {
+ get_cache_info_cursor(&cache->lines[i], i, 0, &next);
+
+ ret = g_line_cursor_compare(init, next);
+
+ g_object_unref(G_OBJECT(next));
+
+ if (ret != 0)
+ break;
+
+ if ((g_buffer_cache_get_line_flags(cache, i) & flag) != 0)
+ {
+ result = i;
+ break;
+ }
+
+ }
+
+ g_object_unref(G_OBJECT(init));
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
* Paramètres : cache = tampon de lignes à venir consulter. *
* index = indice de la ligne visée par l'opération. *
* *
@@ -1536,6 +1636,9 @@ void g_buffer_cache_refresh_line(GBufferCache *cache, size_t index)
}
+#ifdef HAVE_GTK_SUPPORT
+
+
/******************************************************************************
* *
* Paramètres : cache = tampon de lignes à consulter. *
@@ -1659,6 +1762,9 @@ void g_buffer_cache_draw(const GBufferCache *cache, cairo_t *cr, size_t first, s
}
+#endif
+
+
/******************************************************************************
* *
* Paramètres : cache = tampon de lignes à consulter. *
@@ -1766,60 +1872,7 @@ size_t g_buffer_cache_find_index_by_cursor(GBufferCache *cache, const GLineCurso
}
-/******************************************************************************
-* *
-* Paramètres : cache = tampon de lignes à consulter. *
-* start = point de départ du parcours. *
-* flag = propriétés à retrouver si possible. *
-* *
-* Description : Avance autant que possible vers une ligne idéale. *
-* *
-* Retour : Indice de la ligne recherchée, si elle existe. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-size_t g_buffer_cache_look_for_flag(GBufferCache *cache, size_t start, BufferLineFlags flag)
-{
- size_t result; /* Indice de ligne à retourner */
- GLineCursor *init; /* Localisation de départ */
- size_t i; /* Boucle de parcours */
- GLineCursor *next; /* Localisation suivante */
- int ret; /* Bilan de comparaison */
-
- assert(!g_rw_lock_writer_trylock(&cache->access));
-
- assert(start < cache->used);
-
- result = start;
-
- get_cache_info_cursor(&cache->lines[start], start, 0, &init);
-
- for (i = start + 1; i < cache->used; i++)
- {
- get_cache_info_cursor(&cache->lines[i], i, 0, &next);
-
- ret = g_line_cursor_compare(init, next);
-
- g_object_unref(G_OBJECT(next));
-
- if (ret != 0)
- break;
-
- if ((g_buffer_cache_get_line_flags(cache, i) & flag) != 0)
- {
- result = i;
- break;
- }
-
- }
-
- g_object_unref(G_OBJECT(init));
-
- return result;
-
-}
+#ifdef HAVE_GTK_SUPPORT
/******************************************************************************
@@ -1888,3 +1941,6 @@ bool g_buffer_cache_get_cursor_coordinates(GBufferCache *cache, const GLineCurso
return result;
}
+
+
+#endif
diff --git a/src/glibext/buffercache.h b/src/glibext/buffercache.h
index e657fff..ec23b59 100644
--- a/src/glibext/buffercache.h
+++ b/src/glibext/buffercache.h
@@ -27,12 +27,16 @@
#include <glib-object.h>
#include <stdbool.h>
-#include <gdk/gdk.h>
+#ifdef HAVE_GTK_SUPPORT
+# include <gdk/gdk.h>
+#endif
#include "gdisplayoptions.h"
#include "linegen.h"
-#include "widthtracker.h"
+#ifdef HAVE_GTK_SUPPORT
+# include "widthtracker.h"
+#endif
@@ -72,9 +76,13 @@ gint g_buffer_cache_get_left_margin(const GBufferCache *);
/* Fournit la position de départ pour l'impression de texte. */
gint g_buffer_cache_get_text_position(const GBufferCache *);
+#ifdef HAVE_GTK_SUPPORT
+
/* Fournit un lien vers la structure de suivi de largeurs. */
GWidthTracker *g_buffer_cache_get_width_tracker(const GBufferCache *);
+#endif
+
/* Met à disposition un encadrement des accès aux lignes. */
void g_buffer_cache_lock_unlock(GBufferCache *, bool, bool);
@@ -107,9 +115,13 @@ void g_buffer_cache_extend_with(GBufferCache *, size_t, GLineGenerator *);
/* Réduit le tampon à une quantité de lignes précise. */
void g_buffer_cache_truncate(GBufferCache *, size_t);
+#ifdef HAVE_GTK_SUPPORT
+
/* Retrouve l'emplacement correspondant à une position de ligne. */
void g_buffer_cache_get_line_cursor(GBufferCache *, size_t, gint, GLineCursor **);
+#endif
+
/* Ajoute une propriété particulière à une ligne. */
void g_buffer_cache_add_line_flag(GBufferCache *, size_t, BufferLineFlags);
@@ -119,9 +131,14 @@ BufferLineFlags g_buffer_cache_get_line_flags(GBufferCache *, size_t);
/* Retire une propriété particulière attachée à une ligne. */
void g_buffer_cache_remove_line_flag(GBufferCache *, size_t, BufferLineFlags);
+/* Avance autant que possible vers une ligne idéale. */
+size_t g_buffer_cache_look_for_flag(GBufferCache *, size_t, BufferLineFlags);
+
/* Force la mise à jour du contenu d'une ligne donnée. */
void g_buffer_cache_refresh_line(GBufferCache *, size_t);
+#ifdef HAVE_GTK_SUPPORT
+
/* Retrouve une ligne au sein d'un tampon avec un indice. */
GBufferLine *g_buffer_cache_find_line_by_index(GBufferCache *, size_t);
@@ -131,18 +148,21 @@ void g_buffer_cache_collect_widths(GBufferCache *, size_t, size_t, size_t, gint
/* Imprime une partie choisie du tampon contenant des lignes. */
void g_buffer_cache_draw(const GBufferCache *, cairo_t *, size_t, size_t, const cairo_rectangle_int_t *, const GDisplayOptions *, const gint *, const segcnt_list *);
+#endif
+
/* Indique l'indice correspondant à une adresse donnée. */
size_t _g_buffer_cache_find_index_by_cursor(GBufferCache *, const GLineCursor *, bool, size_t, size_t);
/* Indique l'indice correspondant à une adresse donnée. */
size_t g_buffer_cache_find_index_by_cursor(GBufferCache *, const GLineCursor *, bool);
-/* Avance autant que possible vers une ligne idéale. */
-size_t g_buffer_cache_look_for_flag(GBufferCache *, size_t, BufferLineFlags);
+#ifdef HAVE_GTK_SUPPORT
/* Indique la position d'affichage d'une adresse donnée. */
bool g_buffer_cache_get_cursor_coordinates(GBufferCache *, const GLineCursor *, size_t, size_t, bool, gint *, gint *);
+#endif
+
#endif /* _GLIBEXT_BUFFERCACHE_H */
diff --git a/src/glibext/bufferline.c b/src/glibext/bufferline.c
index 85fe027..3fc08a4 100644
--- a/src/glibext/bufferline.c
+++ b/src/glibext/bufferline.c
@@ -33,7 +33,6 @@
#include "linecolumn.h"
#include "../common/extstr.h"
#include "../core/paths.h"
-#include "../gtkext/gtkblockdisplay.h"
@@ -70,8 +69,10 @@ struct _GBufferLineClass
{
GObjectClass parent; /* A laisser en premier */
+#ifdef HAVE_GTK_SUPPORT
cairo_surface_t *entrypoint_img; /* Image pour les entrées */
cairo_surface_t *bookmark_img; /* Image pour les signets */
+#endif
/* Signaux */
@@ -121,13 +122,17 @@ G_DEFINE_TYPE(GBufferLine, g_buffer_line, G_TYPE_OBJECT);
static void g_buffer_line_class_init(GBufferLineClass *class)
{
GObjectClass *object; /* Autre version de la classe */
+#ifdef HAVE_GTK_SUPPORT
gchar *filename; /* Chemin d'accès à utiliser */
+#endif
object = G_OBJECT_CLASS(class);
object->dispose = (GObjectFinalizeFunc/* ! */)g_buffer_line_dispose;
object->finalize = (GObjectFinalizeFunc)g_buffer_line_finalize;
+#ifdef HAVE_GTK_SUPPORT
+
filename = find_pixmap_file("entrypoint.png");
assert(filename != NULL);
@@ -142,6 +147,8 @@ static void g_buffer_line_class_init(GBufferLineClass *class)
g_free(filename);
+#endif
+
g_signal_new("content-changed",
G_TYPE_BUFFER_LINE,
G_SIGNAL_RUN_LAST,
@@ -885,6 +892,9 @@ void g_buffer_line_export(GBufferLine *line, buffer_export_context *ctx, BufferE
/* ---------------------------------------------------------------------------------- */
+#ifdef HAVE_GTK_SUPPORT
+
+
/******************************************************************************
* *
* Paramètres : line = ligne à venir consulter. *
@@ -1479,3 +1489,6 @@ void g_buffer_line_draw(GBufferLine *line, size_t index, cairo_t *cairo, gint x_
}
}
+
+
+#endif
diff --git a/src/glibext/bufferline.h b/src/glibext/bufferline.h
index 791fd5d..1690d15 100644
--- a/src/glibext/bufferline.h
+++ b/src/glibext/bufferline.h
@@ -31,7 +31,9 @@
#include "gdisplayoptions.h"
#include "linesegment.h"
-#include "widthtracker.h"
+#ifdef HAVE_GTK_SUPPORT
+# include "widthtracker.h"
+#endif
#include "../analysis/content.h"
#include "../arch/vmpa.h"
@@ -139,6 +141,8 @@ typedef struct _col_coord_t
} col_coord_t;
+#ifdef HAVE_GTK_SUPPORT
+
/* Fait remonter les largeurs requises par une ligne donnée. */
void g_buffer_line_collect_widths(const GBufferLine *, size_t, size_t, gint *, gint *);
@@ -160,6 +164,8 @@ bool g_buffer_line_find_near_coord(const GBufferLine *, size_t, col_coord_t *, G
/* Imprime la ligne de texte représentée. */
void g_buffer_line_draw(GBufferLine *, size_t, cairo_t *, gint, gint, GWidthTracker *, const GDisplayOptions *, const segcnt_list *);
+#endif
+
#endif /* _GLIBEXT_BUFFERLINE_H */
diff --git a/src/glibext/configuration.h b/src/glibext/configuration.h
index aac6dc7..b5dcc3c 100644
--- a/src/glibext/configuration.h
+++ b/src/glibext/configuration.h
@@ -27,7 +27,28 @@
#include <glib-object.h>
#include <stdbool.h>
-#include <gdk/gdk.h>
+#ifdef HAVE_GTK_SUPPORT
+# include <gdk/gdk.h>
+#endif
+
+
+#if !defined(HAVE_GTK_SUPPORT) && !defined(HOMEMADE_RGBA)
+
+# define HOMEMADE_RGBA
+
+/**
+ * Copie depuis /usr/include/gtk-3.0/gdk/gdkrgba.h
+ */
+typedef struct _GdkRGBA
+{
+ gdouble red;
+ gdouble green;
+ gdouble blue;
+ gdouble alpha;
+
+} GdkRGBA;
+
+#endif
diff --git a/src/glibext/delayed-int.h b/src/glibext/delayed-int.h
index dd780d0..4f84e86 100644
--- a/src/glibext/delayed-int.h
+++ b/src/glibext/delayed-int.h
@@ -28,8 +28,8 @@
#include "delayed.h"
+#include "notifier.h"
#include "../common/dllist.h"
-#include "../gtkext/gtkstatusstack.h"
diff --git a/src/glibext/delayed.c b/src/glibext/delayed.c
index ec4063d..321144b 100644
--- a/src/glibext/delayed.c
+++ b/src/glibext/delayed.c
@@ -33,7 +33,9 @@
#include "delayed-int.h"
#include "../core/nproc.h"
-#include "../gui/core/global.h"
+#ifdef HAVE_GTK_SUPPORT
+# include "../gui/core/global.h"
+#endif
@@ -612,7 +614,11 @@ static void *g_work_group_process(GWorkGroup *group)
g_mutex_unlock(&group->mutex);
+#ifdef HAVE_GTK_SUPPORT
status = get_global_status();
+#else
+ status = NULL;
+#endif
g_delayed_work_process(work, status);
g_object_unref(G_OBJECT(work));
diff --git a/src/glibext/delayed.h b/src/glibext/delayed.h
index 0fc7e7a..89eed12 100644
--- a/src/glibext/delayed.h
+++ b/src/glibext/delayed.h
@@ -31,11 +31,6 @@
-/* Abstration d'une gestion de barre de statut (instance) */
-typedef struct _GtkStatusStack GtkStatusStack;
-
-
-
/* -------------------------- TACHE DIFFEREE DANS LE TEMPS -------------------------- */
diff --git a/src/glibext/gbinarycursor.c b/src/glibext/gbinarycursor.c
index 5308fdf..76975a7 100644
--- a/src/glibext/gbinarycursor.c
+++ b/src/glibext/gbinarycursor.c
@@ -28,6 +28,7 @@
#include "glinecursor-int.h"
+#include "../analysis/binary.h"
diff --git a/src/glibext/gbinportion-int.h b/src/glibext/gbinportion-int.h
index b5c70c8..1e6ade3 100644
--- a/src/glibext/gbinportion-int.h
+++ b/src/glibext/gbinportion-int.h
@@ -36,7 +36,9 @@ struct _GBinPortion
char *code; /* Code de la couleur de fond */
+#ifdef HAVE_GTK_SUPPORT
cairo_surface_t *icon; /* Image de représentation */
+#endif
char *desc; /* Désignation humaine */
char **text; /* Lignes brutes à représenter */
diff --git a/src/glibext/gbinportion.c b/src/glibext/gbinportion.c
index 884c31d..4f16e9f 100644
--- a/src/glibext/gbinportion.c
+++ b/src/glibext/gbinportion.c
@@ -38,9 +38,9 @@
#include "../analysis/human/asm/lang.h"
#include "../common/extstr.h"
#include "../common/sort.h"
+#include "../core/columns.h"
#include "../glibext/gbinarycursor.h"
#include "../glibext/linegen-int.h"
-#include "../gtkext/gtkblockdisplay.h"
@@ -62,9 +62,13 @@ static void g_binary_portion_dispose(GBinPortion *);
/* Procède à la libération totale de la mémoire. */
static void g_binary_portion_finalize(GBinPortion *);
+#ifdef HAVE_GTK_SUPPORT
+
/* Détermine l'aire d'une sous-portion. */
static bool g_binary_portion_compute_sub_area(const GBinPortion *, phys_t, const GdkRectangle *, GdkRectangle *);
+#endif
+
/* ------------------------ OFFRE DE CAPACITES DE GENERATION ------------------------ */
@@ -73,12 +77,16 @@ static bool g_binary_portion_compute_sub_area(const GBinPortion *, phys_t, const
/* Indique le nombre de ligne prêtes à être générées. */
static size_t g_binary_portion_count_lines(const GBinPortion *);
+#ifdef HAVE_GTK_SUPPORT
+
/* Retrouve l'emplacement correspondant à une position donnée. */
static void g_binary_portion_compute_cursor(const GBinPortion *, gint, size_t, size_t, GLineCursor **);
/* Détermine si le conteneur s'inscrit dans une plage donnée. */
static int g_binary_portion_contain_cursor(const GBinPortion *, size_t, size_t, const GLineCursor *);
+#endif
+
/* Renseigne sur les propriétés liées à un générateur. */
static BufferLineFlags g_binary_portion_get_flags(const GBinPortion *, size_t, size_t);
@@ -93,12 +101,19 @@ static void g_binary_portion_print(GBinPortion *, GBufferLine *, size_t, size_t,
/* Détermine si une portion contient une adresse donnée. */
static bool g_binary_portion_contains_vmpa(const GBinPortion *, const vmpa2t *);
+#ifdef HAVE_GTK_SUPPORT
+
+/* Recherche la portion présente à une adresse donnée. */
+static GBinPortion *g_binary_portion_find_with_area_at_addr(GBinPortion *, const vmpa2t *, GdkRectangle *);
+
/* Détermine si une portion contient une position donnée. */
static bool g_binary_portion_contains_physical(const GBinPortion *, phys_t);
/* Détermine si une portion contient une adresse donnée. */
static bool g_binary_portion_contains_virtual(const GBinPortion *, virt_t);
+#endif
+
/* ---------------------------------------------------------------------------------- */
@@ -154,6 +169,10 @@ static void g_binary_portion_init(GBinPortion *portion)
portion->code = NULL;
+#ifdef HAVE_GTK_SUPPORT
+ portion->icon = NULL;
+#endif
+
portion->desc = NULL;
portion->text = NULL;
portion->lcount = 0;
@@ -181,8 +200,10 @@ static void g_binary_portion_init(GBinPortion *portion)
static void g_binary_portion_interface_init(GLineGeneratorInterface *iface)
{
iface->count = (linegen_count_lines_fc)g_binary_portion_count_lines;
+#ifdef HAVE_GTK_SUPPORT
iface->compute = (linegen_compute_fc)g_binary_portion_compute_cursor;
iface->contain = (linegen_contain_fc)g_binary_portion_contain_cursor;
+#endif
iface->get_flags = (linegen_get_flags_fc)g_binary_portion_get_flags;
iface->print = (linegen_print_fc)g_binary_portion_print;
@@ -232,8 +253,10 @@ static void g_binary_portion_finalize(GBinPortion *portion)
if (portion->code != NULL)
free(portion->code);
+#ifdef HAVE_GTK_SUPPORT
if (portion->icon != NULL)
cairo_surface_destroy(portion->icon);
+#endif
if (portion->desc != NULL)
free(portion->desc);
@@ -310,6 +333,9 @@ int g_binary_portion_compare(const GBinPortion **a, const GBinPortion **b)
}
+#ifdef HAVE_GTK_SUPPORT
+
+
/******************************************************************************
* *
* Paramètres : portion = description de partie à mettre à jour. *
@@ -360,6 +386,9 @@ cairo_surface_t *g_binary_portion_get_icon(const GBinPortion *portion)
}
+#endif
+
+
/******************************************************************************
* *
* Paramètres : portion = description de partie à mettre à jour. *
@@ -588,6 +617,9 @@ PortionAccessRights g_binary_portion_get_rights(const GBinPortion *portion)
}
+#ifdef HAVE_GTK_SUPPORT
+
+
/******************************************************************************
* *
* Paramètres : portion = description de partie à mettre à jour. *
@@ -669,6 +701,9 @@ void g_binary_portion_query_tooltip(GBinPortion *portion, GtkTooltip *tooltip)
}
+#ifdef HAVE_GTK_SUPPORT
+
+
/******************************************************************************
* *
* Paramètres : portion = portion mère à consulter. *
@@ -707,6 +742,9 @@ static bool g_binary_portion_compute_sub_area(const GBinPortion *portion, phys_t
}
+#endif
+
+
/******************************************************************************
* *
* Paramètres : portion = description de partie à consulter. *
@@ -762,6 +800,9 @@ void g_binary_portion_draw(const GBinPortion *portion, GtkStyleContext *context,
}
+#endif
+
+
/******************************************************************************
* *
* Paramètres : portion = portion principale à compléter. *
@@ -1025,6 +1066,9 @@ static size_t g_binary_portion_count_lines(const GBinPortion *portion)
}
+#ifdef HAVE_GTK_SUPPORT
+
+
/******************************************************************************
* *
* Paramètres : portion = générateur à consulter. *
@@ -1081,6 +1125,9 @@ static int g_binary_portion_contain_cursor(const GBinPortion *portion, size_t in
}
+#endif
+
+
/******************************************************************************
* *
* Paramètres : portion = générateur à consulter. *
@@ -1143,6 +1190,9 @@ static void g_binary_portion_print(GBinPortion *portion, GBufferLine *line, size
/* ---------------------------------------------------------------------------------- */
+#ifdef HAVE_GTK_SUPPORT
+
+
/******************************************************************************
* *
* Paramètres : portion = couche de portions à parcourir pour les recherches.*
@@ -1237,6 +1287,9 @@ GBinPortion *g_binary_portion_find_at_pos(GBinPortion *portion, gint x, GdkRecta
}
+#endif
+
+
/******************************************************************************
* *
* Paramètres : portion = portion mère à consulter. *
@@ -1276,6 +1329,55 @@ static bool g_binary_portion_contains_vmpa(const GBinPortion *portion, const vmp
* *
* Paramètres : portion = couche de portions à parcourir pour les recherches.*
* addr = adresse du point de recherche. *
+* *
+* Description : Recherche la portion présente à une adresse donnée. *
+* *
+* Retour : Portion trouvée à l'endroit indiqué. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+GBinPortion *g_binary_portion_find_at_addr(GBinPortion *portion, const vmpa2t *addr)
+{
+ GBinPortion *result; /* Portion à retourner */
+ phys_t full; /* Espace total représenté */
+ size_t i; /* Boucle de parcours #1 */
+ GBinPortion *sub; /* Portion incluse à traiter */
+
+ result = NULL;
+
+ full = get_mrange_length(&portion->range);
+
+ for (i = 0; i < portion->count && result == NULL; i++)
+ {
+ sub = portion->subs[i];
+
+ if (!g_binary_portion_contains_vmpa(sub, addr))
+ continue;
+
+ result = g_binary_portion_find_at_addr(sub, addr);
+
+ }
+
+ if (result == NULL)
+ {
+ result = portion;
+ g_object_ref(G_OBJECT(result));
+ }
+
+ return result;
+
+}
+
+
+#ifdef HAVE_GTK_SUPPORT
+
+
+/******************************************************************************
+* *
+* Paramètres : portion = couche de portions à parcourir pour les recherches.*
+* addr = adresse du point de recherche. *
* area = étendue de portion mère, puis celle trouvée. [OUT] *
* *
* Description : Recherche la portion présente à une adresse donnée. *
@@ -1286,7 +1388,7 @@ static bool g_binary_portion_contains_vmpa(const GBinPortion *portion, const vmp
* *
******************************************************************************/
-GBinPortion *g_binary_portion_find_at_addr(GBinPortion *portion, const vmpa2t *addr, GdkRectangle *area)
+static GBinPortion *g_binary_portion_find_with_area_at_addr(GBinPortion *portion, const vmpa2t *addr, GdkRectangle *area)
{
GBinPortion *result; /* Portion à retourner */
phys_t full; /* Espace total représenté */
@@ -1308,7 +1410,7 @@ GBinPortion *g_binary_portion_find_at_addr(GBinPortion *portion, const vmpa2t *a
if (!g_binary_portion_compute_sub_area(sub, full, area, &sub_area))
continue;
- result = g_binary_portion_find_at_addr(sub, addr, &sub_area);
+ result = g_binary_portion_find_with_area_at_addr(sub, addr, &sub_area);
if (result != NULL)
*area = sub_area;
@@ -1385,7 +1487,7 @@ bool get_binary_portion_pos_from_addr(GBinPortion *root, const vmpa2t *addr, con
owner_area = *area;
- owner = g_binary_portion_find_at_addr(root, addr, &owner_area);
+ owner = g_binary_portion_find_with_area_at_addr(root, addr, &owner_area);
if (owner == NULL) return false;
diff = compute_vmpa_diff(addr, get_mrange_addr(&owner->range));
@@ -1431,6 +1533,9 @@ gboolean query_tooltip_for_binary_portion(GBinPortion *root, gint x, gint y, con
}
+#endif
+
+
/******************************************************************************
* *
* Paramètres : portion = portion mère à consulter. *
diff --git a/src/glibext/gbinportion.h b/src/glibext/gbinportion.h
index 3a960b7..7bc1ee6 100644
--- a/src/glibext/gbinportion.h
+++ b/src/glibext/gbinportion.h
@@ -27,7 +27,9 @@
#include <glib-object.h>
#include <stdbool.h>
-#include <gtk/gtk.h>
+#ifdef HAVE_GTK_SUPPORT
+# include <gtk/gtk.h>
+#endif
#include "../arch/vmpa.h"
@@ -87,12 +89,16 @@ GBinPortion *g_binary_portion_new(const char *, const vmpa2t *, phys_t);
/* Etablit la comparaison ascendante entre deux portions. */
int g_binary_portion_compare(const GBinPortion **, const GBinPortion **);
+#ifdef HAVE_GTK_SUPPORT
+
/* Attribue à la portion une éventuelle image de représentation. */
void g_binary_portion_set_icon(GBinPortion *, cairo_surface_t *);
/* Fournit une éventuelle image de représentation de portion. */
cairo_surface_t *g_binary_portion_get_icon(const GBinPortion *);
+#endif
+
/* Attribue une description humaine à une partie de code. */
void g_binary_portion_set_desc(GBinPortion *, const char *);
@@ -117,12 +123,16 @@ void g_binary_portion_set_rights(GBinPortion *, PortionAccessRights);
/* Fournit les droits associés à une partie de code. */
PortionAccessRights g_binary_portion_get_rights(const GBinPortion *);
+#ifdef HAVE_GTK_SUPPORT
+
/* Prépare une astuce concernant une portion pour son affichage. */
void g_binary_portion_query_tooltip(GBinPortion *, GtkTooltip *);
/* Représente la portion sur une bande dédiée. */
void g_binary_portion_draw(const GBinPortion *, GtkStyleContext *, cairo_t *, const GdkRectangle *);
+#endif
+
/* Procède à l'inclusion d'une portion dans une autre. */
void g_binary_portion_include(GBinPortion *, GBinPortion *);
@@ -147,14 +157,20 @@ bool g_binary_portion_visit(GBinPortion *, visit_portion_fc, void *);
/* ------------------------ PARCOURS D'ENSEMBLES DE PORTIONS ------------------------ */
+#ifdef HAVE_GTK_SUPPORT
+
/* Compte le nombre de portions présentes dans une arborescence. */
size_t g_binary_portion_count(const GBinPortion *);
/* Recherche la portion présente à un point donné. */
GBinPortion *g_binary_portion_find_at_pos(GBinPortion *, gint, GdkRectangle *);
+#endif
+
/* Recherche la portion présente à une adresse donnée. */
-GBinPortion *g_binary_portion_find_at_addr(GBinPortion *, const vmpa2t *, GdkRectangle *);
+GBinPortion *g_binary_portion_find_at_addr(GBinPortion *, const vmpa2t *);
+
+#ifdef HAVE_GTK_SUPPORT
/* Fournit la position correspondant à une adresse donnée. */
bool get_binary_portion_addr_from_pos(GBinPortion *, gint, const GdkRectangle *, vmpa2t *);
@@ -165,6 +181,8 @@ bool get_binary_portion_pos_from_addr(GBinPortion *, const vmpa2t *, const GdkRe
/* Prépare une astuce concernant une portion pour son affichage. */
gboolean query_tooltip_for_binary_portion(GBinPortion *, gint, gint, const GdkRectangle *, GtkTooltip *);
+#endif
+
/* Fournit l'emplacement correspondant à une position physique. */
bool g_binary_portion_translate_offset_into_vmpa(const GBinPortion *, phys_t, vmpa2t *);
diff --git a/src/glibext/generators/Makefile.am b/src/glibext/generators/Makefile.am
index c448bb7..a332498 100644
--- a/src/glibext/generators/Makefile.am
+++ b/src/glibext/generators/Makefile.am
@@ -1,21 +1,21 @@
noinst_LTLIBRARIES = libglibextgenerators.la
-libglibextgenerators_la_SOURCES = \
- hex.h hex.c \
- prologue.h prologue.c \
- rborder.h rborder.c
-libglibextgenerators_la_LDFLAGS =
+libglibextgenerators_la_SOURCES = \
+ prologue.h prologue.c \
+ rborder.h rborder.c
+if BUILD_GTK_SUPPORT
-devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
+libglibextgenerators_la_SOURCES += \
+ hex.h hex.c
-dev_HEADERS = $(libglibextgenerators_la_SOURCES:%c=)
+endif
+libglibextgenerators_la_CFLAGS = $(TOOLKIT_CFLAGS) $(LIBXML_CFLAGS)
-AM_CPPFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS)
-AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS)
+devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
-SUBDIRS =
+dev_HEADERS = $(libglibextgenerators_la_SOURCES:%c=)
diff --git a/src/glibext/generators/hex.c b/src/glibext/generators/hex.c
index 7de2d6b..b182176 100644
--- a/src/glibext/generators/hex.c
+++ b/src/glibext/generators/hex.c
@@ -37,6 +37,9 @@
+/* --------------------------- RENDU AMIQUE D'HEXADECIMAL --------------------------- */
+
+
/* Tampon pour générateur de lignes hexadécimales (instance) */
struct _GHexGenerator
{
@@ -79,15 +82,24 @@ static void g_hex_generator_dispose(GHexGenerator *);
/* Procède à la libération totale de la mémoire. */
static void g_hex_generator_finalize(GHexGenerator *);
+
+
+/* ------------------------ OFFRE DE CAPACITES DE GENERATION ------------------------ */
+
+
/* Indique le nombre de ligne prêtes à être générées. */
static size_t g_hex_generator_count_lines(const GHexGenerator *);
+#ifdef HAVE_GTK_SUPPORT
+
/* Retrouve l'emplacement correspondant à une position donnée. */
static void g_hex_generator_compute_cursor(const GHexGenerator *, gint, size_t, size_t, GLineCursor **);
/* Détermine si le conteneur s'inscrit dans une plage donnée. */
static int g_hex_generator_contain_cursor(const GHexGenerator *, size_t, size_t, const GLineCursor *);
+#endif
+
/* Renseigne sur les propriétés liées à un générateur. */
static BufferLineFlags g_hex_generator_get_flags(const GHexGenerator *, size_t, size_t);
@@ -96,6 +108,11 @@ static void g_hex_generator_print(GHexGenerator *, GBufferLine *, size_t, size_t
+/* ---------------------------------------------------------------------------------- */
+/* RENDU AMIQUE D'HEXADECIMAL */
+/* ---------------------------------------------------------------------------------- */
+
+
/* Détermine le type du générateur de lignes hexadécimales à la volée. */
G_DEFINE_TYPE_WITH_CODE(GHexGenerator, g_hex_generator, G_TYPE_OBJECT,
G_IMPLEMENT_INTERFACE(G_TYPE_LINE_GENERATOR, g_hex_generator_interface_init));
@@ -186,8 +203,10 @@ static void g_hex_generator_init(GHexGenerator *generator)
static void g_hex_generator_interface_init(GLineGeneratorInterface *iface)
{
iface->count = (linegen_count_lines_fc)g_hex_generator_count_lines;
+#ifdef HAVE_GTK_SUPPORT
iface->compute = (linegen_compute_fc)g_hex_generator_compute_cursor;
iface->contain = (linegen_contain_fc)g_hex_generator_contain_cursor;
+#endif
iface->get_flags = (linegen_get_flags_fc)g_hex_generator_get_flags;
iface->print = (linegen_print_fc)g_hex_generator_print;
@@ -262,6 +281,12 @@ GHexGenerator *g_hex_generator_new(GBinContent *content)
}
+
+/* ---------------------------------------------------------------------------------- */
+/* OFFRE DE CAPACITES DE GENERATION */
+/* ---------------------------------------------------------------------------------- */
+
+
/******************************************************************************
* *
* Paramètres : generator = générateur à consulter. *
@@ -291,6 +316,9 @@ static size_t g_hex_generator_count_lines(const GHexGenerator *generator)
}
+#ifdef HAVE_GTK_SUPPORT
+
+
/******************************************************************************
* *
* Paramètres : generator = générateur à consulter. *
@@ -407,6 +435,9 @@ static int g_hex_generator_contain_cursor(const GHexGenerator *generator, size_t
}
+#endif
+
+
/******************************************************************************
* *
* Paramètres : generator = générateur à consulter. *
diff --git a/src/glibext/generators/prologue.c b/src/glibext/generators/prologue.c
index e19107b..944de8e 100644
--- a/src/glibext/generators/prologue.c
+++ b/src/glibext/generators/prologue.c
@@ -29,14 +29,19 @@
#include "../bufferline.h"
-#include "../gbinarycursor.h"
+#ifdef HAVE_GTK_SUPPORT
+# include "../gbinarycursor.h"
+#endif
#include "../linegen-int.h"
#include "../linesegment.h"
+#include "../../core/columns.h"
#include "../../format/executable.h"
-#include "../../gtkext/gtkblockdisplay.h"
+/* ------------------------- MARQUE D'INTRODUCTION DE RENDU ------------------------- */
+
+
/* Tampon pour générateur de lignes en prologue (instance) */
struct _GIntroGenerator
{
@@ -72,15 +77,24 @@ static void g_intro_generator_dispose(GIntroGenerator *);
/* Procède à la libération totale de la mémoire. */
static void g_intro_generator_finalize(GIntroGenerator *);
+
+
+/* ------------------------ OFFRE DE CAPACITES DE GENERATION ------------------------ */
+
+
/* Indique le nombre de ligne prêtes à être générées. */
static size_t g_intro_generator_count_lines(const GIntroGenerator *);
+#ifdef HAVE_GTK_SUPPORT
+
/* Retrouve l'emplacement correspondant à une position donnée. */
static void g_intro_generator_compute_cursor(const GIntroGenerator *, gint, size_t, size_t, GLineCursor **);
/* Détermine si le conteneur s'inscrit dans une plage donnée. */
static int g_intro_generator_contain_cursor(const GIntroGenerator *, size_t, size_t, const GLineCursor *);
+#endif
+
/* Renseigne sur les propriétés liées à un générateur. */
static BufferLineFlags g_intro_generator_get_flags(const GIntroGenerator *, size_t, size_t);
@@ -89,6 +103,11 @@ static void g_intro_generator_print(GIntroGenerator *, GBufferLine *, size_t, si
+/* ---------------------------------------------------------------------------------- */
+/* MARQUE D'INTRODUCTION DE RENDU */
+/* ---------------------------------------------------------------------------------- */
+
+
/* Détermine le type du générateur de lignes d'introduction à la volée. */
G_DEFINE_TYPE_WITH_CODE(GIntroGenerator, g_intro_generator, G_TYPE_OBJECT,
G_IMPLEMENT_INTERFACE(G_TYPE_LINE_GENERATOR, g_intro_generator_interface_init));
@@ -153,8 +172,10 @@ static void g_intro_generator_init(GIntroGenerator *generator)
static void g_intro_generator_interface_init(GLineGeneratorInterface *iface)
{
iface->count = (linegen_count_lines_fc)g_intro_generator_count_lines;
+#ifdef HAVE_GTK_SUPPORT
iface->compute = (linegen_compute_fc)g_intro_generator_compute_cursor;
iface->contain = (linegen_contain_fc)g_intro_generator_contain_cursor;
+#endif
iface->get_flags = (linegen_get_flags_fc)g_intro_generator_get_flags;
iface->print = (linegen_print_fc)g_intro_generator_print;
@@ -263,6 +284,12 @@ GIntroGenerator *g_intro_generator_new(const GBinFormat *format, const GCodingLa
}
+
+/* ---------------------------------------------------------------------------------- */
+/* OFFRE DE CAPACITES DE GENERATION */
+/* ---------------------------------------------------------------------------------- */
+
+
/******************************************************************************
* *
* Paramètres : generator = générateur à consulter. *
@@ -282,6 +309,9 @@ static size_t g_intro_generator_count_lines(const GIntroGenerator *generator)
}
+#ifdef HAVE_GTK_SUPPORT
+
+
/******************************************************************************
* *
* Paramètres : generator = générateur à consulter. *
@@ -338,6 +368,9 @@ static int g_intro_generator_contain_cursor(const GIntroGenerator *generator, si
}
+#endif
+
+
/******************************************************************************
* *
* Paramètres : generator = générateur à consulter. *
diff --git a/src/glibext/generators/rborder.c b/src/glibext/generators/rborder.c
index 97e7a22..b4db5d3 100644
--- a/src/glibext/generators/rborder.c
+++ b/src/glibext/generators/rborder.c
@@ -30,13 +30,18 @@
#include "../bufferline.h"
-#include "../gbinarycursor.h"
+#ifdef HAVE_GTK_SUPPORT
+# include "../gbinarycursor.h"
+#endif
#include "../linegen-int.h"
#include "../linesegment.h"
-#include "../../gtkext/gtkblockdisplay.h"
+#include "../../core/columns.h"
+/* -------------------------- MARQUE DE BORDURE DE ROUTINE -------------------------- */
+
+
/* Tampon pour générateur de délimitations de routines (instance) */
struct _GBorderGenerator
{
@@ -79,15 +84,24 @@ static void g_border_generator_dispose(GBorderGenerator *);
/* Procède à la libération totale de la mémoire. */
static void g_border_generator_finalize(GBorderGenerator *);
+
+
+/* ------------------------ OFFRE DE CAPACITES DE GENERATION ------------------------ */
+
+
/* Indique le nombre de ligne prêtes à être générées. */
static size_t g_border_generator_count_lines(const GBorderGenerator *);
+#ifdef HAVE_GTK_SUPPORT
+
/* Retrouve l'emplacement correspondant à une position donnée. */
static void g_border_generator_compute_cursor(const GBorderGenerator *, gint, size_t, size_t, GLineCursor **);
/* Détermine si le conteneur s'inscrit dans une plage donnée. */
static int g_border_generator_contain_cursor(const GBorderGenerator *, size_t, size_t, const GLineCursor *);
+#endif
+
/* Renseigne sur les propriétés liées à un générateur. */
static BufferLineFlags g_border_generator_get_flags(const GBorderGenerator *, size_t, size_t);
@@ -96,6 +110,11 @@ static void g_border_generator_print(GBorderGenerator *, GBufferLine *, size_t,
+/* ---------------------------------------------------------------------------------- */
+/* MARQUE DE BORDURE DE ROUTINE */
+/* ---------------------------------------------------------------------------------- */
+
+
/* Détermine le type du générateur de délimitations de routines à la volée. */
G_DEFINE_TYPE_WITH_CODE(GBorderGenerator, g_border_generator, G_TYPE_OBJECT,
G_IMPLEMENT_INTERFACE(G_TYPE_LINE_GENERATOR, g_border_generator_interface_init));
@@ -158,8 +177,10 @@ static void g_border_generator_init(GBorderGenerator *generator)
static void g_border_generator_interface_init(GLineGeneratorInterface *iface)
{
iface->count = (linegen_count_lines_fc)g_border_generator_count_lines;
+#ifdef HAVE_GTK_SUPPORT
iface->compute = (linegen_compute_fc)g_border_generator_compute_cursor;
iface->contain = (linegen_contain_fc)g_border_generator_contain_cursor;
+#endif
iface->get_flags = (linegen_get_flags_fc)g_border_generator_get_flags;
iface->print = (linegen_print_fc)g_border_generator_print;
@@ -240,6 +261,12 @@ GBorderGenerator *g_border_generator_new(GCodingLanguage *lang, const vmpa2t *ad
}
+
+/* ---------------------------------------------------------------------------------- */
+/* OFFRE DE CAPACITES DE GENERATION */
+/* ---------------------------------------------------------------------------------- */
+
+
/******************************************************************************
* *
* Paramètres : generator = générateur à consulter. *
@@ -259,6 +286,9 @@ static size_t g_border_generator_count_lines(const GBorderGenerator *generator)
}
+#ifdef HAVE_GTK_SUPPORT
+
+
/******************************************************************************
* *
* Paramètres : generator = générateur à consulter. *
@@ -315,6 +345,9 @@ static int g_border_generator_contain_cursor(const GBorderGenerator *generator,
}
+#endif
+
+
/******************************************************************************
* *
* Paramètres : generator = générateur à consulter. *
diff --git a/src/glibext/glinecursor-int.h b/src/glibext/glinecursor-int.h
index b440f76..5a2f84d 100644
--- a/src/glibext/glinecursor-int.h
+++ b/src/glibext/glinecursor-int.h
@@ -26,7 +26,7 @@
#include "glinecursor.h"
-#include "../gtkext/gtkstatusstack.h"
+#include "notifier.h"
diff --git a/src/glibext/glinecursor.h b/src/glibext/glinecursor.h
index 5c35c52..549dfbe 100644
--- a/src/glibext/glinecursor.h
+++ b/src/glibext/glinecursor.h
@@ -32,11 +32,7 @@
#include "../analysis/loaded.h"
#include "../common/packed.h"
#include "../common/sqlite.h"
-
-
-
-/* Depuis ../gtkext/gtkstatusstack.h : abstration d'une gestion de barre de statut (instance) */
-typedef struct _GtkStatusStack GtkStatusStack;
+#include "../glibext/notifier.h"
diff --git a/src/glibext/linecolumn.c b/src/glibext/linecolumn.c
index 38088d2..03fa179 100644
--- a/src/glibext/linecolumn.c
+++ b/src/glibext/linecolumn.c
@@ -49,7 +49,9 @@ void init_line_column(line_column *column)
column->segments = NULL;
column->count = 0;
+#ifdef HAVE_GTK_SUPPORT
column->max_width = 0;
+#endif
}
@@ -81,11 +83,16 @@ void reset_line_column(line_column *column)
column->count = 0;
+#ifdef HAVE_GTK_SUPPORT
column->max_width = 0;
+#endif
}
+#ifdef HAVE_GTK_SUPPORT
+
+
/******************************************************************************
* *
* Paramètres : column = colonne de ligne à mettre à jour. *
@@ -129,6 +136,9 @@ gint get_column_width(const line_column *column)
}
+#endif
+
+
/******************************************************************************
* *
* Paramètres : column = colonne de ligne à venir compléter. *
@@ -157,7 +167,9 @@ size_t append_text_to_line_column(line_column *column, const char *text, size_t
column->segments[result] = segment;
+#ifdef HAVE_GTK_SUPPORT
column->max_width += get_line_segment_width(segment);
+#endif
return result;
@@ -200,11 +212,16 @@ void replace_text_in_line_column(line_column *column, size_t index, const char *
column->segments[index] = segment;
+#ifdef HAVE_GTK_SUPPORT
refresh_line_column_width(column);
+#endif
}
+#ifdef HAVE_GTK_SUPPORT
+
+
/******************************************************************************
* *
* Paramètres : column = colonne de ligne de texte à consulter. *
@@ -432,6 +449,9 @@ void draw_line_column_segments(const line_column *column, cairo_t *cairo, gint x
}
+#endif
+
+
/******************************************************************************
* *
* Paramètres : column = colonne de ligne de texte à venir consulter. *
diff --git a/src/glibext/linecolumn.h b/src/glibext/linecolumn.h
index 05624c5..15baa4c 100644
--- a/src/glibext/linecolumn.h
+++ b/src/glibext/linecolumn.h
@@ -27,7 +27,9 @@
#include <stdbool.h>
#include <glib-object.h>
-#include <gdk/gdk.h>
+#ifdef HAVE_GTK_SUPPORT
+# include <gdk/gdk.h>
+#endif
#include "linesegment.h"
@@ -44,7 +46,9 @@ struct _line_column
line_segment **segments; /* Liste des segments contenus */
size_t count; /* Taille de cette liste */
+#ifdef HAVE_GTK_SUPPORT
int max_width; /* Largeur max. de l'espace */
+#endif
};
@@ -55,18 +59,24 @@ void init_line_column(line_column *);
/* Réinitialise une colonne de ligne. */
void reset_line_column(line_column *);
+#ifdef HAVE_GTK_SUPPORT
+
/* Recalcule la largeur d'une colonne de segments. */
void refresh_line_column_width(line_column *);
/* Fournit la quantité de pixels requise pour l'impression. */
gint get_column_width(const line_column *);
+#endif
+
/* Ajoute un fragment de texte à une colonne de ligne. */
size_t append_text_to_line_column(line_column *, const char *, size_t, RenderingTagType);
/* Remplace un fragment de texte dans une colonne de ligne. */
void replace_text_in_line_column(line_column *, size_t, const char *, size_t);
+#ifdef HAVE_GTK_SUPPORT
+
/* Indique l'indice du premier contenu de la colonne. */
bool get_line_column_first_content_index(const line_column *, size_t *);
@@ -85,6 +95,8 @@ line_segment *get_line_column_content_from_index(const line_column *, size_t);
/* Imprime le contenu d'une colonne de ligne de texte. */
void draw_line_column_segments(const line_column *, cairo_t *, gint, gint, const segcnt_list *);
+#endif
+
/* Donne le texte représenté par une colonne de ligne de texte. */
char *get_line_column_text(const line_column *, bool);
diff --git a/src/glibext/linesegment.c b/src/glibext/linesegment.c
index da6fbe2..ec8cc96 100644
--- a/src/glibext/linesegment.c
+++ b/src/glibext/linesegment.c
@@ -30,13 +30,14 @@
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
-#include <gtk/gtk.h>
#include "../common/extstr.h"
#include "../common/fnv1a.h"
#include "../core/paths.h"
-#include "../gtkext/rendering.h"
+#ifdef HAVE_GTK_SUPPORT
+# include "../gtkext/rendering.h"
+#endif
@@ -80,6 +81,9 @@ static const char *_segment_names[RTT_COUNT] = {
};
+
+#ifdef HAVE_GTK_SUPPORT
+
/* Compléments à Cairo */
#define CAIRO_FONT_SLANT_COUNT 3
@@ -96,6 +100,7 @@ typedef struct _segment_rendering
cairo_t *font_ctxts[CAIRO_FONTS_COUNT]; /* Contextes de police */
double x_advances[CAIRO_FONTS_COUNT]; /* Largeurs par caractère */
+
rendering_pattern_t patterns[RTT_COUNT];/* Modèles d'impression */
} segment_rendering;
@@ -104,6 +109,8 @@ typedef struct _segment_rendering
/* Configuration globale des rendus */
static segment_rendering _seg_params;
+#endif
+
/* ----------------------- ISOLATION DE CONTENUS PARTAGEABLES ----------------------- */
@@ -114,7 +121,11 @@ struct _line_segment
{
gint ref_count; /* Compteur de références */
- rendering_pattern_t *pattern; /* Propriétés du rendu */
+#ifdef HAVE_GTK_SUPPORT
+ rendering_pattern_t *pattern; /* Propriétés du rendu */
+#else
+ RenderingTagType type; /* Type de rendu attendu */
+#endif
fnv64_t hash; /* Empreinte pour comparaisons */
char text[0]; /* Texte brut conservé */
@@ -144,6 +155,8 @@ static void release_shared_segment_content(line_segment *);
/* -------------------- GESTION OPTIMALE D'UNE LISTE DE CONTENUS -------------------- */
+#ifdef HAVE_GTK_SUPPORT
+
/* Liste identifiant un ensemble de segments */
struct _segcnt_list
{
@@ -158,6 +171,8 @@ struct _segcnt_list
/* Indique si le contenu d'un segment est notable ou non. */
bool selection_list_has_segment_content(const segcnt_list *, const line_segment *);
+#endif
+
/* ---------------------------------------------------------------------------------- */
@@ -165,6 +180,9 @@ bool selection_list_has_segment_content(const segcnt_list *, const line_segment
/* ---------------------------------------------------------------------------------- */
+#ifdef HAVE_GTK_SUPPORT
+
+
/******************************************************************************
* *
* Paramètres : - *
@@ -223,6 +241,9 @@ bool load_segment_rendering_parameters(void)
}
+#endif
+
+
/* ---------------------------------------------------------------------------------- */
/* ISOLATION DE CONTENUS PARTAGEABLES */
@@ -309,7 +330,11 @@ static bool is_line_segment_equal(const line_segment *content, const line_segmen
{
bool result; /* Résultat à retourner */
+#ifdef HAVE_GTK_SUPPORT
result = (content->pattern == other->pattern);
+#else
+ result = (content->type == other->type);
+#endif
if (result)
result = (cmp_fnv_64a(content->hash, other->hash) == 0);
@@ -452,7 +477,11 @@ line_segment *get_new_line_segment(RenderingTagType type, const char *text, size
else
content = (line_segment *)malloc(sizeof(line_segment) + length + 1);
+#ifdef HAVE_GTK_SUPPORT
content->pattern = &_seg_params.patterns[type];
+#else
+ content->type = type;
+#endif
content->hash = fnv_64a_hash(text);
@@ -523,7 +552,11 @@ RenderingTagType get_line_segment_type(const line_segment *segment)
{
RenderingTagType result; /* Résultat à renvoyer */
+#ifdef HAVE_GTK_SUPPORT
result = (RenderingTagType)(segment->pattern - _seg_params.patterns);
+#else
+ result = segment->type;
+#endif
return result;
@@ -545,6 +578,16 @@ RenderingTagType get_line_segment_type(const line_segment *segment)
char *get_line_segment_text(const line_segment *segment, bool markup)
{
+#ifndef HAVE_GTK_SUPPORT
+
+ char *result; /* Description à renvoyer */
+
+ result = strdup(segment->text);
+
+ return result;
+
+#else
+
char *result; /* Description à renvoyer */
char color[7]; /* Couleur hexadécimale */
char *valid;
@@ -624,9 +667,14 @@ char *get_line_segment_text(const line_segment *segment, bool markup)
return result;
+#endif
+
}
+#ifdef HAVE_GTK_SUPPORT
+
+
/******************************************************************************
* *
* Paramètres : segment = fragment de texte à consulter. *
@@ -911,6 +959,9 @@ void export_line_segment_style(buffer_export_context *ctx, BufferExportType type
}
+#endif
+
+
/******************************************************************************
* *
* Paramètres : segment = fragment de texte à manipuler. *
@@ -927,12 +978,12 @@ void export_line_segment_style(buffer_export_context *ctx, BufferExportType type
void export_line_segment(const line_segment *segment, buffer_export_context *ctx, BufferExportType type)
{
- size_t index; /* Indice du modèle de rendu */
+ RenderingTagType index; /* Indice du modèle de rendu */
switch (type)
{
case BET_HTML:
- index = (segment->pattern - _seg_params.patterns);
+ index = get_line_segment_type(segment);
dprintf(ctx->fd, "<SPAN class=\"%s\">", _segment_names[index]);
break;
default:
@@ -959,6 +1010,9 @@ void export_line_segment(const line_segment *segment, buffer_export_context *ctx
/* ---------------------------------------------------------------------------------- */
+#ifdef HAVE_GTK_SUPPORT
+
+
/******************************************************************************
* *
* Paramètres : - *
@@ -1147,3 +1201,6 @@ bool selection_list_has_segment_content(const segcnt_list *list, const line_segm
return result;
}
+
+
+#endif
diff --git a/src/glibext/linesegment.h b/src/glibext/linesegment.h
index 3585ffb..99837f9 100644
--- a/src/glibext/linesegment.h
+++ b/src/glibext/linesegment.h
@@ -27,22 +27,31 @@
#include <glib-object.h>
#include <stdbool.h>
-#include <gdk/gdk.h>
-#include <pango/pango.h>
+#ifdef HAVE_GTK_SUPPORT
+# include <gdk/gdk.h>
+# include <pango/pango.h>
+#endif
+#ifdef HAVE_GTK_SUPPORT
/* Liste identifiant un ensemble de segments */
typedef struct _segcnt_list segcnt_list;
+#endif
+
/* ------------------------ NATURE POUR UN FRAGMENT DE TEXTE ------------------------ */
+#ifdef HAVE_GTK_SUPPORT
+
/* Procède à l'initialisation des paramètres de rendu de texte. */
bool load_segment_rendering_parameters(void);
+#endif
+
/* ----------------------- ISOLATION DE CONTENUS PARTAGEABLES ----------------------- */
@@ -127,6 +136,8 @@ RenderingTagType get_line_segment_type(const line_segment *);
/* Fournit le texte brut conservé dans le segment. */
char *get_line_segment_text(const line_segment *, bool);
+#ifdef HAVE_GTK_SUPPORT
+
/* Fournit la quantité de pixels requise pour l'impression. */
gint get_line_segment_width(const line_segment *);
@@ -139,6 +150,9 @@ bool move_caret_on_line_segment(const line_segment *, gint *, bool, GdkScrollDir
/* Imprime le fragment de texte représenté. */
void draw_line_segment(const line_segment *, cairo_t *, gint *, gint, const segcnt_list *);
+#endif
+
+
/* Types d'exportation */
typedef enum _BufferExportType
{
@@ -171,9 +185,13 @@ typedef struct _buffer_export_context
} buffer_export_context;
+#ifdef HAVE_GTK_SUPPORT
+
/* Exporte tous les styles utilisés par des segments. */
void export_line_segment_style(buffer_export_context *, BufferExportType);
+#endif
+
/* Exporte le fragment de texte représenté. */
void export_line_segment(const line_segment *, buffer_export_context *, BufferExportType);
@@ -182,6 +200,8 @@ void export_line_segment(const line_segment *, buffer_export_context *, BufferEx
/* -------------------- GESTION OPTIMALE D'UNE LISTE DE CONTENUS -------------------- */
+#ifdef HAVE_GTK_SUPPORT
+
/* Initilise une liste de contenus de segments. */
segcnt_list *init_segment_content_list(void);
@@ -200,6 +220,8 @@ bool reset_segment_content_list(segcnt_list *);
/* Marque le contenu d'un segment comme remarquable. */
bool add_segment_content_to_selection_list(segcnt_list *, const line_segment *);
+#endif
+
#endif /* _GLIBEXT_LINESEGMENT_H */
diff --git a/src/glibext/notifier.h b/src/glibext/notifier.h
new file mode 100644
index 0000000..c1023d6
--- /dev/null
+++ b/src/glibext/notifier.h
@@ -0,0 +1,74 @@
+
+/* Chrysalide - Outil d'analyse de fichiers binaires
+ * notifier.h - prototypes pour les opérations de comparaison d'objets
+ *
+ * Copyright (C) 2022 Cyrille Bagard
+ *
+ * This file is part of Chrysalide.
+ *
+ * Chrysalide is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Chrysalide is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Foobar. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#ifndef _GLIBEXT_NOTIFIER_H
+#define _GLIBEXT_NOTIFIER_H
+
+
+
+
+
+
+
+
+#ifdef HAVE_GTK_SUPPORT
+# include "../gtkext/gtkstatusstack.h"
+#else
+
+
+
+
+
+
+typedef void GtkStatusStack;
+
+
+
+/* -------------------------- STATUT DES SUIVIS D'ACTIVITE -------------------------- */
+
+
+/* Identifiant unique de rapport de progression */
+typedef unsigned long activity_id_t;
+
+/* Identifiant particulier pour une absence d'identifiant */
+#define NO_ACTIVITY_ID 0
+
+
+#define gtk_status_stack_update_current_location(a0, a1, a2, a3)
+#define gtk_status_stack_reset_current_location(a0)
+
+#define gtk_status_stack_add_activity(a0, a1, a2) 0
+#define gtk_status_stack_extend_activity(a0, a1, a2)
+#define gtk_status_stack_update_activity(a0, a1, a2)
+#define gtk_status_stack_update_activity_value(a0, a1, a2)
+#define gtk_status_stack_remove_activity(a0, a1)
+
+
+
+#endif
+
+
+
+
+
+#endif /* _GLIBEXT_NOTIFIER_H */
diff --git a/src/glibext/seq.h b/src/glibext/seq.h
index c00b4e2..f9051da 100644
--- a/src/glibext/seq.h
+++ b/src/glibext/seq.h
@@ -30,7 +30,7 @@
#include <sys/types.h>
-#include "../gtkext/gtkstatusstack.h"
+#include "notifier.h"
diff --git a/src/gtkext/Makefile.am b/src/gtkext/Makefile.am
index 8c46615..5bfc55f 100644
--- a/src/gtkext/Makefile.am
+++ b/src/gtkext/Makefile.am
@@ -32,7 +32,7 @@ libgtkext_la_SOURCES = \
libgtkext_la_LIBADD = \
graph/libgtkextgraph.la
-libgtkext_la_LDFLAGS =
+libgtkext_la_CFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS)
devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
@@ -40,10 +40,6 @@ devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
dev_HEADERS = $(libgtkext_la_SOURCES:%c=)
-AM_CPPFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS)
-
-AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS)
-
SUBDIRS = graph
diff --git a/src/gtkext/graph/Makefile.am b/src/gtkext/graph/Makefile.am
index c7f1d4b..ba7318e 100644
--- a/src/gtkext/graph/Makefile.am
+++ b/src/gtkext/graph/Makefile.am
@@ -11,18 +11,9 @@ libgtkextgraph_la_SOURCES = \
rank.h rank.c \
vspace.h vspace.c
-libgtkextgraph_la_LIBADD =
-
-libgtkextgraph_la_LDFLAGS =
+libgtkextgraph_la_CFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS)
devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
dev_HEADERS = $(_la_SOURCES:%c=)
-
-
-AM_CPPFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS)
-
-AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS)
-
-SUBDIRS =
diff --git a/src/gtkext/gtkblockdisplay.h b/src/gtkext/gtkblockdisplay.h
index 196fe2e..6c0879c 100644
--- a/src/gtkext/gtkblockdisplay.h
+++ b/src/gtkext/gtkblockdisplay.h
@@ -48,22 +48,6 @@ typedef struct _GtkBlockDisplay GtkBlockDisplay;
typedef struct _GtkBlockDisplayClass GtkBlockDisplayClass;
-/* Désignation des colonnes d'une ligne */
-typedef enum _DisassLineColumn
-{
- DLC_PHYSICAL, /* Position physique */
- DLC_VIRTUAL, /* Adresse virtuelle */
- DLC_BINARY, /* Contenu sous forme binaire */
- DLC_ASSEMBLY_LABEL, /* Etiquette dans les données */
- DLC_ASSEMBLY_HEAD, /* Instruction pour assembleur */
- DLC_ASSEMBLY, /* Code pour assembleur */
- DLC_COMMENTS, /* Commentaires éventuels */
-
- DLC_COUNT,
-
-} DisassLineColumn;
-
-
/* Détermine le type du composant d'affichage de bloc en langage d'assemblage. */
GType gtk_block_display_get_type(void);
diff --git a/src/gtkext/gtkstatusstack.c b/src/gtkext/gtkstatusstack.c
index 0b35e1b..499ea88 100644
--- a/src/gtkext/gtkstatusstack.c
+++ b/src/gtkext/gtkstatusstack.c
@@ -554,7 +554,7 @@ void gtk_status_stack_update_current_location(GtkStatusStack *stack, const GLoad
portions = g_exe_format_get_portions(format);
- portion = g_binary_portion_find_at_addr(portions, addr, (GdkRectangle []) { { 0 } });
+ portion = g_binary_portion_find_at_addr(portions, addr);
text = g_binary_portion_get_desc(portion);
diff --git a/src/gtkext/hexdisplay.h b/src/gtkext/hexdisplay.h
index 45a1da9..9190548 100644
--- a/src/gtkext/hexdisplay.h
+++ b/src/gtkext/hexdisplay.h
@@ -48,19 +48,6 @@ typedef struct _GtkHexDisplay GtkHexDisplay;
typedef struct _GtkHexDisplayClass GtkHexDisplayClass;
-/* Désignation des colonnes d'une ligne */
-typedef enum _HexLineColumn
-{
- HLC_PHYSICAL, /* Position physique */
- HLC_BINARY, /* Données binaires brutes */
- HLC_PADDING, /* Espacement forcé */
- HLC_TRANSLATION, /* Traduction de contenu */
-
- HLC_COUNT,
-
-} HexLineColumn;
-
-
/* Détermine le type du composant d'affichage sous forme hexadécimale. */
GType gtk_hex_display_get_type(void);
diff --git a/src/gtkext/rendering.h b/src/gtkext/rendering.h
index d80c096..9adfe1a 100644
--- a/src/gtkext/rendering.h
+++ b/src/gtkext/rendering.h
@@ -27,7 +27,7 @@
#include <stdbool.h>
-#include <gtk/gtk.h>
+#include <gdk/gdk.h>
diff --git a/src/gui/Makefile.am b/src/gui/Makefile.am
index fcb0298..058b36e 100644
--- a/src/gui/Makefile.am
+++ b/src/gui/Makefile.am
@@ -25,7 +25,7 @@ libgui_la_LIBADD = \
panels/libguipanels.la \
tb/libguitb.la
-libgui_la_LDFLAGS =
+libgui_la_CFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS)
devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
@@ -33,10 +33,6 @@ devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
dev_HEADERS = $(libgui_la_SOURCES:%c=)
-AM_CPPFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS)
-
-AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS)
-
SUBDIRS = core dialogs menus panels tb
diff --git a/src/gui/core/Makefile.am b/src/gui/core/Makefile.am
index ebe1278..2077c4b 100644
--- a/src/gui/core/Makefile.am
+++ b/src/gui/core/Makefile.am
@@ -20,7 +20,7 @@ libguicore_la_SOURCES = \
resources.h resources.c \
theme.h theme.c
-libguicore_la_LDFLAGS = $(LIBGTK_LIBS) $(LIBXML_LIBS)
+libguicore_la_CFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS)
devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
@@ -28,13 +28,6 @@ devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
dev_HEADERS = $(libguicore_la_SOURCES:%c=)
-AM_CPPFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS)
-
-AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS)
-
-SUBDIRS =
-
-
resources.c: gresource.xml $(RES_FILES)
glib-compile-resources --target=$@ --sourcedir=$(srcdir) --generate-source --c-name gui_core gresource.xml
diff --git a/src/gui/dialogs/Makefile.am b/src/gui/dialogs/Makefile.am
index a8e7b93..5716f14 100644
--- a/src/gui/dialogs/Makefile.am
+++ b/src/gui/dialogs/Makefile.am
@@ -31,7 +31,7 @@ libguidialogs_la_SOURCES = \
snapshots.h snapshots.c \
storage.h storage.c
-libguidialogs_la_LDFLAGS =
+libguidialogs_la_CFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS)
devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
@@ -39,13 +39,6 @@ devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
dev_HEADERS = $(libguidialogs_la_SOURCES:%c=)
-AM_CPPFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS)
-
-AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS)
-
-SUBDIRS =
-
-
resources.c: gresource.xml $(UI_FILES)
glib-compile-resources --target=$@ --sourcedir=$(srcdir) --generate-source --c-name gui_dialogs gresource.xml
diff --git a/src/gui/menus/Makefile.am b/src/gui/menus/Makefile.am
index 3959044..727c0cf 100644
--- a/src/gui/menus/Makefile.am
+++ b/src/gui/menus/Makefile.am
@@ -11,18 +11,9 @@ libguimenus_la_SOURCES = \
project.h project.c \
view.h view.c
-libguimenus_la_LDFLAGS =
-
-libguimenus_la_LIBADD = $(LIBINTL)
+libguimenus_la_CFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS)
devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
dev_HEADERS = $(libguimenus_la_SOURCES:%c=)
-
-
-AM_CPPFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS)
-
-AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS)
-
-SUBDIRS =
diff --git a/src/gui/panels/Makefile.am b/src/gui/panels/Makefile.am
index 0bde9bf..83e173b 100644
--- a/src/gui/panels/Makefile.am
+++ b/src/gui/panels/Makefile.am
@@ -33,7 +33,7 @@ libguipanels_la_SOURCES = \
view.h view.c \
welcome.h welcome.c
-libguipanels_la_LDFLAGS =
+libguipanels_la_CFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS)
devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
@@ -41,13 +41,6 @@ devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
dev_HEADERS = $(libguipanels_la_SOURCES:%c=)
-AM_CPPFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS)
-
-AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS)
-
-SUBDIRS =
-
-
resources.c: gresource.xml $(UI_FILES)
glib-compile-resources --target=$@ --sourcedir=$(srcdir) --generate-source --c-name gui_panels gresource.xml
diff --git a/src/gui/panels/strings.c b/src/gui/panels/strings.c
index f9d6b00..4627850 100644
--- a/src/gui/panels/strings.c
+++ b/src/gui/panels/strings.c
@@ -859,7 +859,7 @@ static void reload_strings_for_new_list_view(const GStringsPanel *panel, GtkStat
vmpa2_phys_to_string(addr, size, phys, NULL);
vmpa2_virt_to_string(addr, size, virt, NULL);
- portion = g_binary_portion_find_at_addr(portions, addr, (GdkRectangle []) { { 0 } });
+ portion = g_binary_portion_find_at_addr(portions, addr);
area = g_binary_portion_get_desc(portion);
g_object_unref(G_OBJECT(portion));
diff --git a/src/gui/tb/Makefile.am b/src/gui/tb/Makefile.am
index 3286757..a519d05 100644
--- a/src/gui/tb/Makefile.am
+++ b/src/gui/tb/Makefile.am
@@ -6,16 +6,9 @@ libguitb_la_SOURCES = \
tbitem-int.h \
tbitem.h tbitem.c
-libguitb_la_LDFLAGS =
+libguitb_la_CFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS)
devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
dev_HEADERS = $(libguitb_la_SOURCES:%c=)
-
-
-AM_CPPFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS)
-
-AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS)
-
-SUBDIRS =
diff --git a/src/hub.c b/src/hub.c
index 574bb1c..8a5b6f4 100644
--- a/src/hub.c
+++ b/src/hub.c
@@ -31,7 +31,9 @@
#include <stdlib.h>
#include <string.h>
#include <strings.h>
-#include <gtk/gtk.h>
+#ifdef HAVE_GTK_SUPPORT
+# include <gtk/gtk.h>
+#endif
#include <config.h>
@@ -354,7 +356,9 @@ int main(int argc, char **argv)
/* Initialisation de GTK */
g_set_prgname("Chrysalide Hub");
+#ifdef HAVE_GTK_SUPPORT
gtk_init(&argc, &argv);
+#endif
/* Initialisation du programme */
diff --git a/src/main.c b/src/main.c
index 356e796..4e9bf1c 100644
--- a/src/main.c
+++ b/src/main.c
@@ -31,7 +31,9 @@
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
-#include <gtk/gtk.h>
+#ifdef HAVE_GTK_SUPPORT
+# include <gtk/gtk.h>
+#endif
#include <config.h>
@@ -50,9 +52,11 @@
#include "core/paths.h"
#include "core/queue.h"
#include "glibext/delayed.h"
-#include "gui/editor.h"
-#include "gui/core/core.h"
-#include "gui/core/global.h"
+#ifdef HAVE_GTK_SUPPORT
+# include "gui/editor.h"
+# include "gui/core/core.h"
+# include "gui/core/global.h"
+#endif
#include "plugins/pglist.h"
@@ -63,9 +67,13 @@ static void show_chrysalide_help(const char *);
/* Affiche des indications sur la version courante du programme. */
static void show_chrysalide_version(void);
+#ifdef HAVE_GTK_SUPPORT
+
/* Recharge le dernier projet ouvert s'il existe. */
static gboolean load_last_project(GGenConfig *);
+#endif
+
/* Ouvre les éventuels fichiers fournis au démarrage. */
static int open_binaries(char **, int);
@@ -186,16 +194,20 @@ int main(int argc, char **argv)
bool show_help; /* Affichage de l'aide ? */
bool show_version; /* Affichage de la version ? */
LogMessageType verbosity; /* Niveau de filtre de message */
+#ifdef HAVE_GTK_SUPPORT
bool batch_mode; /* Exécution sans GUI ? */
+#endif
bool save; /* Sauvegarde du cache ? */
char *prj_filename; /* Chemin vers un projet */
int index; /* Indice d'argument */
int ret; /* Bilan d'un appel */
char *edir; /* Répertoire de base effectif */
bool status; /* Bilan d'opérations */
+#ifdef HAVE_GTK_SUPPORT
GtkWidget *editor; /* Fenêtre graphique */
GGenConfig *config; /* Configuration globale */
bool welcome; /* Affichage de la bienvenue ? */
+#endif
char resolved[PATH_MAX]; /* Résolution de nom de fichier*/
GStudyProject *project; /* Nouveau projet courant */
@@ -225,7 +237,9 @@ int main(int argc, char **argv)
show_version = false;
verbosity = LMT_INFO;
+#ifdef HAVE_GTK_SUPPORT
batch_mode = false;
+#endif
save = false;
prj_filename = NULL;
@@ -249,7 +263,9 @@ int main(int argc, char **argv)
break;
case 'b':
+#ifdef HAVE_GTK_SUPPORT
batch_mode = true;
+#endif
break;
case 's':
@@ -294,11 +310,15 @@ int main(int argc, char **argv)
/* Initialisation de GTK */
g_set_prgname("Chrysalide");
+#ifdef HAVE_GTK_SUPPORT
gtk_init(&argc, &argv);
+#endif
/* Initialisation du programme */
+#ifdef HAVE_GTK_SUPPORT
if (batch_mode)
+#endif
set_batch_mode();
set_log_verbosity(verbosity);
@@ -308,6 +328,8 @@ int main(int argc, char **argv)
/* Création de l'interface */
+#ifdef HAVE_GTK_SUPPORT
+
if (!batch_mode)
{
editor = create_editor();
@@ -330,8 +352,12 @@ int main(int argc, char **argv)
else
editor = NULL;
+#endif
+
init_all_plugins(true);
+#ifdef HAVE_GTK_SUPPORT
+
config = get_main_configuration();
if (!batch_mode)
@@ -340,6 +366,8 @@ int main(int argc, char **argv)
if (!status) goto exit_complete_gui;
}
+#endif
+
/* Lancement du serveur local */
status = ensure_internal_connections_setup();
@@ -354,6 +382,8 @@ int main(int argc, char **argv)
/* Charge le dernier projet ? */
+#ifdef HAVE_GTK_SUPPORT
+
if (batch_mode)
welcome = true;
else
@@ -363,6 +393,9 @@ int main(int argc, char **argv)
g_idle_add((GSourceFunc)load_last_project, config);
else
+
+#endif
+
{
if (prj_filename != NULL)
{
@@ -382,7 +415,11 @@ int main(int argc, char **argv)
if (ret == 0)
{
+#ifdef HAVE_GTK_SUPPORT
project = g_study_project_open(prj_filename, !batch_mode);
+#else
+ project = g_study_project_open(prj_filename, false);
+#endif
if (project == NULL) goto bad_project;
}
@@ -410,7 +447,12 @@ int main(int argc, char **argv)
result = open_binaries(argv + optind, argc - optind);
+#ifdef HAVE_GTK_SUPPORT
+
if (batch_mode)
+
+#endif
+
{
wait_for_all_global_works();
@@ -422,16 +464,22 @@ int main(int argc, char **argv)
}
+#ifdef HAVE_GTK_SUPPORT
+
else
gtk_main();
+#endif
+
set_current_project(NULL);
bad_project:
no_internal_server:
+#ifdef HAVE_GTK_SUPPORT
exit_complete_gui:
+#endif
#ifdef TRACK_GOBJECT_LEAKS
remember_gtypes_for_leaks();
@@ -439,6 +487,8 @@ int main(int argc, char **argv)
exit_all_plugins();
+#ifdef HAVE_GTK_SUPPORT
+
if (!batch_mode)
unload_all_gui_components();
@@ -449,6 +499,8 @@ int main(int argc, char **argv)
failed_to_load_editor:
+#endif
+
unload_all_core_components(true);
#ifdef TRACK_GOBJECT_LEAKS
@@ -462,6 +514,9 @@ int main(int argc, char **argv)
}
+#ifdef HAVE_GTK_SUPPORT
+
+
/******************************************************************************
* *
* Paramètres : cfg = configuration globale sur laquelle s'appuyer. *
@@ -492,6 +547,9 @@ static gboolean load_last_project(GGenConfig *cfg)
}
+#endif
+
+
/******************************************************************************
* *
* Paramètres : files = noms de fichier fournis en ligne de commande. *
diff --git a/src/mangling/Makefile.am b/src/mangling/Makefile.am
index c1a9427..4c868f7 100644
--- a/src/mangling/Makefile.am
+++ b/src/mangling/Makefile.am
@@ -7,18 +7,9 @@ libmangling_la_SOURCES = \
demangler-int.h \
demangler.h demangler.c
-libmangling_la_LDFLAGS =
-
-libmangling_la_LIBADD =
+libmangling_la_CFLAGS = $(TOOLKIT_CFLAGS) $(LIBXML_CFLAGS)
devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
dev_HEADERS = $(libmangling_la_SOURCES:%c=)
-
-
-AM_CPPFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS)
-
-AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS)
-
-SUBDIRS =
diff --git a/src/plugins/Makefile.am b/src/plugins/Makefile.am
index b4ac1d5..6cb8d34 100644
--- a/src/plugins/Makefile.am
+++ b/src/plugins/Makefile.am
@@ -11,18 +11,9 @@ libplugins_la_SOURCES = \
plugin.h plugin.c \
self.h
-libplugins_la_CFLAGS = $(AM_CFLAGS)
-
-libplugins_la_LDFLAGS =
+libplugins_la_CFLAGS = $(TOOLKIT_CFLAGS) $(LIBXML_CFLAGS)
devdir = $(includedir)/chrysalide/$(subdir:src/%=core/%)
dev_HEADERS = $(libplugins_la_SOURCES:%c=)
-
-
-AM_CPPFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS)
-
-AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS)
-
-SUBDIRS =
diff --git a/src/plugins/pglist.h b/src/plugins/pglist.h
index e0aec3f..9cc6aee 100644
--- a/src/plugins/pglist.h
+++ b/src/plugins/pglist.h
@@ -27,7 +27,9 @@
#include <stdbool.h>
-#include <gtk/gtk.h>
+#ifdef HAVE_GTK_SUPPORT
+# include <gtk/gtk.h>
+#endif
#include "plugin-def.h"
diff --git a/src/plugins/plugin-int.h b/src/plugins/plugin-int.h
index 88e0fbb..db1cbb0 100644
--- a/src/plugins/plugin-int.h
+++ b/src/plugins/plugin-int.h
@@ -57,6 +57,8 @@ typedef void (* pg_handle_content_fc) (const GPluginModule *, PluginAction, GBin
/* Procède à une opération liée à un contenu chargé. */
typedef void (* pg_handle_loaded_fc) (const GPluginModule *, PluginAction, GLoadedContent *, wgroup_id_t, GtkStatusStack *);
+#ifdef HAVE_GTK_SUPPORT
+
/* Complète une liste de resources pour thème. */
typedef void (* pg_include_theme_fc) (const GPluginModule *, PluginAction, gboolean, char ***, size_t *);
@@ -66,6 +68,8 @@ typedef void (* pg_notify_panel_fc) (const GPluginModule *, PluginAction, GPanel
/* Rend compte d'un affichage ou d'un retrait de panneau. */
typedef void (* pg_notify_docking_fc) (const GPluginModule *, PluginAction, GPanelItem *, bool);
+#endif
+
/* Assure l'interprétation d'un format en différé. */
typedef bool (* pg_handle_format_analysis_fc) (const GPluginModule *, PluginAction, GKnownFormat *, wgroup_id_t, GtkStatusStack *);
@@ -115,9 +119,11 @@ struct _GPluginModuleClass
pg_get_modname_fc get_modname; /* Fourniture du nom brut */
+#ifdef HAVE_GTK_SUPPORT
pg_include_theme_fc include_theme; /* Extension d'un thème */
pg_notify_panel_fc notify_panel; /* Création de panneau */
pg_notify_docking_fc notify_docking; /* Affichage ou retrait */
+#endif
pg_handle_content_fc handle_content; /* Explorations ou résolutions */
pg_handle_loaded_fc handle_loaded; /* Traitement de contenu chargé*/
diff --git a/src/plugins/plugin.c b/src/plugins/plugin.c
index e563817..1ef90fb 100644
--- a/src/plugins/plugin.c
+++ b/src/plugins/plugin.c
@@ -669,8 +669,10 @@ static void g_plugin_module_init_gclass(GPluginModuleClass *class, GModule *modu
switch (action)
{
case PGA_GUI_THEME:
+#ifdef HAVE_GTK_SUPPORT
load_plugin_symbol(module, "chrysalide_plugin_include_theme",
&class->include_theme);
+#endif
break;
default:
@@ -686,13 +688,17 @@ static void g_plugin_module_init_gclass(GPluginModuleClass *class, GModule *modu
switch (action)
{
case PGA_PANEL_CREATION:
+#ifdef HAVE_GTK_SUPPORT
load_plugin_symbol(module, "chrysalide_plugin_on_panel_creation",
&class->notify_panel);
+#endif
break;
case PGA_PANEL_DOCKING:
+#ifdef HAVE_GTK_SUPPORT
load_plugin_symbol(module, "chrysalide_plugin_on_panel_docking",
&class->notify_docking);
+#endif
break;
default:
@@ -1423,6 +1429,9 @@ gpointer g_plugin_module_build_type_instance(GPluginModule *plugin, PluginAction
}
+#ifdef HAVE_GTK_SUPPORT
+
+
/******************************************************************************
* *
* Paramètres : plugin = greffon à manipuler. *
@@ -1501,6 +1510,9 @@ void g_plugin_module_notify_panel_docking(const GPluginModule *plugin, PluginAct
}
+#endif
+
+
/******************************************************************************
* *
* Paramètres : plugin = greffon à manipuler. *
diff --git a/src/plugins/plugin.h b/src/plugins/plugin.h
index ff456b3..aac5f0d 100644
--- a/src/plugins/plugin.h
+++ b/src/plugins/plugin.h
@@ -36,8 +36,10 @@
#include "../format/known.h"
#include "../format/preload.h"
#include "../glibext/configuration.h"
-#include "../gtkext/gtkstatusstack.h"
+#include "../glibext/notifier.h"
+#ifdef HAVE_GTK_SUPPORT
#include "../gui/panel.h"
+#endif
@@ -119,6 +121,8 @@ void g_plugin_module_notify_plugins_loaded(GPluginModule *, PluginAction, void *
/* Crée une instance à partir d'un type dynamique externe. */
gpointer g_plugin_module_build_type_instance(GPluginModule *, PluginAction, GType);
+#ifdef HAVE_GTK_SUPPORT
+
/* Complète une liste de resources pour thème. */
void g_plugin_module_include_theme(const GPluginModule *, PluginAction, gboolean, char ***, size_t *);
@@ -128,6 +132,8 @@ void g_plugin_module_notify_panel_creation(const GPluginModule *, PluginAction,
/* Rend compte d'un affichage ou d'un retrait de panneau. */
void g_plugin_module_notify_panel_docking(const GPluginModule *, PluginAction, GPanelItem *, bool);
+#endif
+
/* Procède à une opération liée à un contenu binaire. */
void g_plugin_module_handle_binary_content(const GPluginModule *, PluginAction, GBinContent *, wgroup_id_t, GtkStatusStack *);