aboutsummaryrefslogtreecommitdiff
path: root/src/Makefile
blob: e058cb8037fde1951ce93476f51f735e4d1082f5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# Copyright 2007-2009 Mitchell mitchell<att>caladbolg.net. See LICENSE.

.SUFFIXES: .c .o .h .a .cxx

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
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

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)

$(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
	$(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

# Package (Note: pass 'VERSION=[release version]' to 'make')

ifndef WIN32
ZIP = tar czf
PACKAGE = textadept_$(value VERSION).tgz
UNZIP = tar xzf
else
ZIP = zip -r
PACKAGE = textadept_$(value VERSION).win32.zip
UNZIP = unzip
endif
SRCPACKAGE = textadept.src.zip

RELEASEDIR = textadept_$(value VERSION)
release: ../$(TEXTADEPT)
	hg archive $(RELEASEDIR)
	rm $(RELEASEDIR)/.hg*
	sh -c 'cd ../ && ./update_doc'
	cp -r ../doc $(RELEASEDIR)
	svn export http://scite-tools.googlecode.com/svn/branches/scite-st/lexers \
	  $(RELEASEDIR)/lexers
	cp ../$(TEXTADEPT) $(RELEASEDIR)
	$(ZIP) $(PACKAGE) $(RELEASEDIR)
	rm -r $(RELEASEDIR)
source: $(PACKAGE)
	$(UNZIP) $(PACKAGE)
	cp -r lua scintilla-st gcocoadialog $(RELEASEDIR)/src/
	rm $(RELEASEDIR)/$(TEXTADEPT)
	zip -r $(SRCPACKAGE) $(RELEASEDIR)
	rm -r $(RELEASEDIR)