aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Makefile107
-rw-r--r--src/lua_interface.c2
-rw-r--r--src/textadept.c21
-rw-r--r--src/textadept.rc28
4 files changed, 121 insertions, 37 deletions
diff --git a/src/Makefile b/src/Makefile
index 07adba53..98095e4b 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -1,36 +1,91 @@
# Copyright 2007-2009 Mitchell mitchell<att>caladbolg.net. See LICENSE.
-.SUFFIXES: .c .o .h .a
+.SUFFIXES: .c .o .h .a .cxx
-INCLUDEDIRS=-Iscintilla-st/include -Ilua/include -Igcocoadialog
-ifdef DEBUG
-CXXFLAGS=-DDEBUG -g -DGTK -DSCI_LEXER -W -Wall
+ifndef WIN32
+CC = gcc
+CPP = g++
+PKG_CONFIG = pkg-config
+PKG_CONFIG_PATH = $PKG_CONFIG_PATH
+PLAT_FLAGS = -DGTK
+SCI_THREAD_FLAG =
+LUA_CFLAGS = -DLUA_USE_LINUX
+TEXTADEPT = textadept
+TEXTADEPT_RC =
else
-CXXFLAGS=-DNDEBUG -O -DGTK -DSCI_LEXER -W -Wall -Wno-sign-compare -Wno-unused
+CC = i486-mingw32-gcc -mms-bitfields
+CPP = i486-mingw32-g++ -mms-bitfields -mwindows
+PKG_CONFIG = pkg-config --define-variable=prefix=win32gtk
+PKG_CONFIG_PATH = $(shell pwd)/win32gtk/lib/pkgconfig
+PLAT_FLAGS = -DGTK -D__WIN32__
+SCI_THREAD_FLAG = -DG_THREADS_IMPL_NONE
+LUA_CFLAGS = -D_WIN32 -DWIN32
+TEXTADEPT = textadept.exe
+TEXTADEPT_RC = textadept_rc.o
+WINDRES = i486-mingw32-windres
endif
-GTKFLAGS=$(shell pkg-config --cflags gtk+-2.0)
-GTKLIBS=$(shell pkg-config --libs gtk+-2.0 gthread-2.0)
-EXPORTLUASYMS=-rdynamic -Wl,--retain-symbols-file -Wl,lua.sym
-
-LUA_OBJS = lapi.o lcode.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o \
- lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o \
- ltable.o ltm.o lundump.o lvm.o lzio.o \
- lauxlib.o lbaselib.o ldblib.o liolib.o lmathlib.o ltablib.o \
- lstrlib.o loadlib.o loslib.o linit.o \
+
+ifndef DEBUG
+DEBUG_FLAG = -DNDEBUG
+else
+DEBUG_FLAG = -DDEBUG -g
+endif
+INCLUDEDIRS = -Iscintilla-st/include -Ilua/include -Igcocoadialog
+
+# Textadept
+
+CFLAGS = -std=c99 $(DEBUG_FLAG) -O $(PLAT_FLAGS) $(INCLUDEDIRS) -W -Wall \
+ -Wno-sign-compare -Wno-unused
+GTKFLAGS = $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKG_CONFIG) \
+ --cflags gtk+-2.0)
+GTKLIBS = $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) $(PKG_CONFIG) \
+ --libs gtk+-2.0 gthread-2.0)
+EXPORTLUASYMS = -rdynamic -Wl,--retain-symbols-file -Wl,lua.sym
+
+TEXTADEPT_OBJS = textadept.o lua_interface.o
+LUA_OBJS = lapi.o lcode.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o \
+ lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o lundump.o \
+ lvm.o lzio.o \
+ lauxlib.o lbaselib.o ldblib.o liolib.o lmathlib.o ltablib.o lstrlib.o \
+ loadlib.o loslib.o linit.o \
lpeg.o lfs.o
+GCOCOADIALOG = gcocoadialog.o
+
+# Scintilla
+
+SCI_CXXFLAGS = $(DEBUG_FLAG) -pedantic -Os $(PLAT_FLAGS) -DSCI_LEXER \
+ $(SCI_THREAD_FLAG) $(INCLUDEDIRS) -Iscintilla-st/src -Iscintilla-st/gtk \
+ -Wall -Wno-missing-braces -Wno-char-subscripts
+
+SCINTILLA_OBJS = AutoComplete.o CallTip.o CellBuffer.o CharClassify.o \
+ ContractionState.o Decoration.o Document.o DocumentAccessor.o Editor.o \
+ ExternalLexer.o Indicator.o KeyMap.o KeyWords.o LexLPeg.o LineMarker.o \
+ PerLine.o PositionCache.o PropSet.o RESearch.o RunStyles.o ScintillaBase.o \
+ Style.o StyleContext.o UniConversion.o ViewStyle.o WindowAccessor.o XPM.o \
+ PlatGTK.o ScintillaGTK.o
+SCINTILLA_MARSHALLER = scintilla-marshal.o
+
+# Build
-all: textadept
+all: $(TEXTADEPT)
-.c.o:
- gcc -std=c99 $(GTKFLAGS) $(INCLUDEDIRS) $(CXXFLAGS) -c $< -o $@
+$(SCINTILLA_OBJS): scintilla-st/gtk/*.cxx scintilla-st/src/*.cxx
+ $(CPP) $(SCI_CXXFLAGS) $(GTKFLAGS) -c $^
+$(SCINTILLA_MARSHALLER): scintilla-st/gtk/scintilla-marshal.c
+ $(CC) $(SCI_CXXFLAGS) $(GTKFLAGS) -w -c $^
+$(TEXTADEPT_OBJS): *.c
+ $(CC) $(CFLAGS) $(GTKFLAGS) -c $^
$(LUA_OBJS): lua/src/*.c
- gcc $(INCLUDEDIRS) -DLUA_USE_LINUX -c lua/src/*.c
-gcocoadialog.o: gcocoadialog/gcocoadialog.c
- gcc $(GTKFLAGS) $(INCLUDEDIRS) -c gcocoadialog/gcocoadialog.c
-textadept:\
- textadept.o lua_interface.o $(LUA_OBJS) gcocoadialog.o \
- scintilla-st/gtk/LexLPeg.o scintilla-st/bin/scintilla.a
- g++ $(GTKLIBS) $(EXPORTLUASYMS) -DGTK $^ -o $@
- mv textadept ../
+ $(CC) $(LUA_CFLAGS) $(INCLUDEDIRS) -c $^
+$(GCOCOADIALOG): gcocoadialog/gcocoadialog.c
+ $(CC) $(GTKFLAGS) $(INCLUDEDIRS) -c $^
+$(TEXTADEPT):\
+ $(SCINTILLA_OBJS) $(SCINTILLA_MARSHALLER) \
+ $(TEXTADEPT_OBJS) $(LUA_OBJS) $(GCOCOADIALOG) \
+ $(TEXTADEPT_RC)
+ $(CPP) $(EXPORTLUASYMS) -o $@ $^ $(GTKLIBS)
+ mv $(TEXTADEPT) ../
+$(TEXTADEPT_RC): textadept.rc
+ $(WINDRES) $^ $@
clean:
- rm ../textadept *.o
+ rm ../$(TEXTADEPT) *.o
diff --git a/src/lua_interface.c b/src/lua_interface.c
index 24a08c23..4c585f40 100644
--- a/src/lua_interface.c
+++ b/src/lua_interface.c
@@ -129,7 +129,7 @@ int l_init(int argc, char **argv, int reinit) {
lua_setglobal(lua, "arg");
lua_pushstring(lua, textadept_home);
lua_setglobal(lua, "_HOME");
-#if WIN32
+#if __WIN32__
lua_pushboolean(lua, 1);
lua_setglobal(lua, "WIN32");
#elif MAC
diff --git a/src/textadept.c b/src/textadept.c
index 48bbbb54..bace5a19 100644
--- a/src/textadept.c
+++ b/src/textadept.c
@@ -1,8 +1,9 @@
// Copyright 2007-2009 Mitchell mitchell<att>caladbolg.net. See LICENSE.
#include "textadept.h"
-#if WIN32
-#include <Windows.h>
+#if __WIN32__
+#include <windows.h>
+#define main main_
#elif MAC
#include <Carbon/Carbon.h>
#include "ige-mac-menu.h"
@@ -24,7 +25,7 @@ static gbool s_buttonpress(GtkWidget *, GdkEventButton *, gpointer);
static gbool w_focus(GtkWidget *, GdkEventFocus *, gpointer);
static gbool w_keypress(GtkWidget *, GdkEventKey *, gpointer);
static gbool w_exit(GtkWidget *, GdkEventAny *, gpointer);
-#ifdef MAC
+#if MAC
static OSErr w_ae_open(const AppleEvent *, AppleEvent *, long);
static OSErr w_ae_quit(const AppleEvent *, AppleEvent *, long);
#endif
@@ -79,7 +80,7 @@ static gbool c_keypress(GtkWidget *, GdkEventKey *, gpointer);
* @param argv The array of command line params.
*/
int main(int argc, char **argv) {
-#if !(WIN32 || MAC)
+#if !(__WIN32__ || MAC)
textadept_home = g_file_read_link("/proc/self/exe", NULL);
#elif MAC
CFBundleRef bundle = CFBundleGetMainBundle();
@@ -103,7 +104,7 @@ int main(int argc, char **argv) {
return 0;
}
-#ifdef WIN32
+#if __WIN32__
/**
* Runs Textadept in Windows.
* @see main
@@ -149,7 +150,7 @@ void create_ui() {
signal(window, "focus-in-event", w_focus);
signal(window, "key-press-event", w_keypress);
-#ifdef MAC
+#if MAC
AEInstallEventHandler(kCoreEventClass, kAEOpenDocuments,
NewAEEventHandlerUPP(w_ae_open), 0, FALSE);
AEInstallEventHandler(kCoreEventClass, kAEQuitApplication,
@@ -206,7 +207,7 @@ void create_ui() {
docstatusbar = gtk_statusbar_new();
gtk_statusbar_push(GTK_STATUSBAR(docstatusbar), 0, "");
g_object_set(G_OBJECT(docstatusbar), "width-request", 400, NULL);
-#ifdef MAC
+#if MAC
gtk_statusbar_set_has_resize_grip(GTK_STATUSBAR(docstatusbar), FALSE);
#endif
gtk_box_pack_start(GTK_BOX(hboxs), docstatusbar, FALSE, FALSE, 0);
@@ -393,7 +394,7 @@ void set_menubar(GtkWidget *new_menubar) {
gtk_box_pack_start(GTK_BOX(vbox), menubar, FALSE, FALSE, 0);
gtk_box_reorder_child(GTK_BOX(vbox), menubar, 0);
gtk_widget_show_all(menubar);
-#ifdef MAC
+#if MAC
ige_mac_menu_set_menu_bar(GTK_MENU_SHELL(menubar));
gtk_widget_hide(menubar);
#endif
@@ -458,7 +459,7 @@ static gbool s_keypress(GtkWidget *editor, GdkEventKey *event, gpointer udata) {
LUA_TNUMBER, event->keyval,
LUA_TBOOLEAN, event->state & GDK_SHIFT_MASK,
LUA_TBOOLEAN, event->state & GDK_CONTROL_MASK,
-#ifndef MAC
+#if MAC
LUA_TBOOLEAN, event->state & GDK_MOD1_MASK,
#else
LUA_TBOOLEAN, event->state & GDK_META_MASK,
@@ -515,7 +516,7 @@ static gbool w_exit(GtkWidget *window, GdkEventAny *event, gpointer udata) {
return FALSE;
}
-#ifdef MAC
+#if MAC
/**
* Signal for an Open Document AppleEvent.
* Generates a 'appleevent_odoc' event for each document sent.
diff --git a/src/textadept.rc b/src/textadept.rc
new file mode 100644
index 00000000..b8f037d3
--- /dev/null
+++ b/src/textadept.rc
@@ -0,0 +1,28 @@
+#include "winver.h"
+
+textadept ICON "../core/images/textadept.ico\0"
+
+VS_VERSION_INFO VERSIONINFO
+FILEVERSION 1, 9, 0, 0
+PRODUCTVERSION 1, 9, 0, 0
+FILEFLAGSMASK 0x3fL
+FILEFLAGS 0
+FILEOS VOS_NT_WINDOWS32
+FILETYPE VFT_APP
+FILESUBTYPE VFT2_UNKNOWN
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904b0"
+ BEGIN
+ VALUE "CompanyName", "Mitchell\0"
+ VALUE "FileDescription", "textadept\0"
+ VALUE "FileVersion", "1.9\0"
+ VALUE "InternalName", "textadept\0"
+ VALUE "LegalCopyright", "Copyright 2006-2009 by Mitchell\0"
+ VALUE "OriginalFilename", "textadept.exe\0"
+ VALUE "ProductName", "textadept\0"
+ VALUE "ProductVersion", "1.9\0"
+ END
+ END
+END