Last active
December 20, 2015 08:49
-
-
Save artagnon/6102996 to your computer and use it in GitHub Desktop.
textadept Makefile
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Copyright 2007-2013 Mitchell mitchell.att.foicica.com. See LICENSE. | |
kernel = $(shell uname -s) | |
ifneq (, $(or $(findstring Linux, $(kernel)), $(findstring BSD, $(kernel)))) | |
ifeq (win, $(findstring win, $(MAKECMDGOALS))) | |
# Cross-compile for Win32. | |
ifeq (win32, $(findstring win32, $(MAKECMDGOALS))) | |
arch = win32 | |
CROSS = i686-w64-mingw32- | |
lua_dll = luajit/src/lua51.dll | |
else ifeq (win64, $(findstring win64, $(MAKECMDGOALS))) | |
arch = win64 | |
CROSS = x86_64-w64-mingw32- | |
lua_dll = luajit/src/lua51_64.dll | |
endif | |
CC = gcc | |
CFLAGS = -mms-bitfields | |
CXX = g++ | |
CXXFLAGS = -mms-bitfields -static-libgcc -static-libstdc++ | |
LDFLAGS = -Wl,--retain-symbols-file -Wl,lua.sym | |
ifeq (, $(findstring curses, $(MAKECMDGOALS))) | |
CXXFLAGS += -mwindows | |
LDFLAGS += -liconv | |
endif | |
WINDRES = windres | |
MAKE = make | |
ifeq (, $(findstring curses, $(MAKECMDGOALS))) | |
plat_flag = -DGTK | |
GTK_CFLAGS = $(shell PKG_CONFIG_PATH=`pwd`/$(arch)gtk/lib/pkgconfig \ | |
pkg-config --define-variable=prefix=$(arch)gtk \ | |
--cflags gtk+-2.0) | |
GTK_LIBS = $(shell PKG_CONFIG_PATH=`pwd`/$(arch)gtk/lib/pkgconfig \ | |
pkg-config --define-variable=prefix=$(arch)gtk \ | |
--libs gtk+-2.0) | |
else | |
plat_flag = -DCURSES | |
CURSES_CFLAGS = -DLIBICONV_STATIC -I$(arch)curses/include | |
CURSES_LIBS = $(arch)curses/lib/pdcurses.a $(arch)curses/lib/libiconv.a | |
endif | |
luadoc = luadoc_start.bat | |
else ifeq (osx, $(findstring osx, $(MAKECMDGOALS))) | |
# Cross-compile for Mac OSX. | |
CROSS = i686-apple-darwin10- | |
CC = gcc | |
CFLAGS = -m32 -arch i386 -mdynamic-no-pic -mmacosx-version-min=10.5 \ | |
-isysroot /usr/lib/apple/SDKs/MacOSX10.5.sdk | |
CXX = g++ | |
CXXFLAGS = -m32 -arch i386 -mdynamic-no-pic -mmacosx-version-min=10.5 \ | |
-isysroot /usr/lib/apple/SDKs/MacOSX10.5.sdk | |
LUAFLAGS = -DLUA_USE_MACOSX | |
LDFLAGS = -liconv -rdynamic | |
MAKE = make | |
ifeq (, $(findstring curses, $(MAKECMDGOALS))) | |
plat_flag = -DGTK | |
GTK_CFLAGS = $(shell PKG_CONFIG_PATH=`pwd`/gtkosx/lib/pkgconfig \ | |
pkg-config --define-variable=prefix=gtkosx \ | |
--cflags gtk+-2.0) | |
GTK_LIBS = $(shell PKG_CONFIG_PATH=`pwd`/gtkosx/lib/pkgconfig \ | |
pkg-config --define-variable=prefix=gtkosx \ | |
--libs gtk+-2.0 gmodule-2.0 gtk-mac-integration) \ | |
-framework Cocoa | |
else | |
plat_flag = -DCURSES -D_XOPEN_SOURCE_EXTENDED | |
CURSES_LIBS = -lncurses | |
endif | |
libluajit = luajit/src/libluajit.osx.a | |
luadoc = luadoc | |
else | |
# Build for Linux/BSD. | |
CC = gcc | |
CXX = g++ | |
LUAFLAGS = -DLUA_USE_LINUX | |
LDFLAGS = -rdynamic -Wl,--retain-symbols-file -Wl,lua.sym | |
ifeq (Linux, $(kernel)) | |
LDFLAGS += -ldl | |
MAKE = make | |
else | |
ifeq (curses, $(findstring curses, $(MAKECMDGOALS))) | |
LDFLAGS += -liconv | |
endif | |
MAKE = gmake | |
endif | |
PREFIX ?= /usr/local | |
bin_dir = $(DESTDIR)$(PREFIX)/bin | |
data_dir = $(DESTDIR)$(PREFIX)/share/textadept | |
ifeq (, $(findstring curses, $(MAKECMDGOALS))) | |
plat_flag = -DGTK | |
ifndef GTK3 | |
gtk_version = 2.0 | |
else | |
gtk_version = 3.0 | |
endif | |
GTK_CFLAGS = $(shell pkg-config --cflags gtk+-$(gtk_version)) | |
GTK_LIBS = $(shell pkg-config --libs gtk+-$(gtk_version)) | |
install_targets = ../textadept ../textadeptjit | |
else | |
plat_flag = -DCURSES -D_XOPEN_SOURCE_EXTENDED | |
CURSES_LIBS = -lncursesw | |
install_targets = ../textadept-curses ../textadeptjit-curses | |
endif | |
x64 = $(shell echo "" | $(CC) -E -dM - | grep __x86_64__ | cut -d ' ' -f 3) | |
libluajit = luajit/src/libluajit.a | |
luadoc = luadoc | |
endif | |
#else ifeq (Darwin, $(shell uname -s)) | |
# CC = gcc | |
# CFLAGS = -arch i386 -mdynamic-no-pic -mmacosx-version-min=10.5 \ | |
# -isysroot /Developer/SDKs/MacOSX10.5.sdk | |
# CXX = g++ | |
# CXXFLAGS = -arch i386 -mdynamic-no-pic -mmacosx-version-min=10.5 \ | |
# -isysroot /Developer/SDKs/MacOSX10.5.sdk | |
# LUAFLAGS = -DLUA_USE_MACOSX | |
# LDFLAGS = -liconv -rdynamic | |
# | |
# #ifeq (, $(findstring curses, $(MAKECMDGOALS))) | |
# plat_flag = -DGTK | |
# GTK_CFLAGS = $(shell PKG_CONFIG_PATH=`pwd`/gtkosx/lib/pkgconfig \ | |
# gtkosx/bin/pkg-config --define-variable=prefix=gtkosx\ | |
# --cflags gtk+-2.0) | |
# GTK_LIBS = $(shell PKG_CONFIG_PATH=`pwd`/gtkosx/lib/pkgconfig \ | |
# gtkosx/bin/pkg-config --define-variable=prefix=gtkosx \ | |
# --libs gtk+-2.0) -framework Cocoa -lgtkmacintegration | |
# .DEFAULT_GOAL := osx | |
# #else | |
# # plat_flag = -DCURSES -D_XOPEN_SOURCE_EXTENDED | |
# # CURSES_LIBS = -lncurses | |
# # .DEFAULT_GOAL := osx-curses | |
# #endif | |
# | |
# luadoc = luadoc | |
endif | |
# No debugging unless DEBUG=1. | |
ifdef DEBUG | |
CFLAGS += -g | |
CXXFLAGS += -g | |
endif | |
# Scintilla. | |
sci_flags = -pedantic -Os $(plat_flag) -DSCI_LEXER -DNDEBUG \ | |
-DG_THREADS_IMPL_NONE -Iscintilla/include -Iscintilla/src \ | |
-Iscintilla/lexlib -Wall -Wno-missing-braces -Wno-char-subscripts \ | |
-Wno-long-long | |
sci_objs = AutoComplete.o CallTip.o CaseConvert.o CaseFolder.o Catalogue.o \ | |
CellBuffer.o CharClassify.o ContractionState.o Decoration.o \ | |
Document.o Editor.o ExternalLexer.o Indicator.o KeyMap.o \ | |
LineMarker.o PerLine.o PositionCache.o RESearch.o RunStyles.o \ | |
ScintillaBase.o Selection.o Style.o UniConversion.o ViewStyle.o XPM.o | |
sci_lex_objs = Accessor.o CharacterSet.o LexerBase.o LexerModule.o \ | |
LexerNoExceptions.o LexerSimple.o PropSetSimple.o \ | |
StyleContext.o WordList.o | |
sci_gtk_objs = PlatGTK.o ScintillaGTK.o | |
# Textadept. | |
ta_flags = -std=c99 -O -D_POSIX_C_SOURCE=200809L -D_DARWIN_C_SOURCE \ | |
$(plat_flag) -Iscintilla/include -Igtdialog -W -Wall \ | |
-Wno-sign-compare -Wno-unused | |
ifndef NO_SINGLE_INSTANCE | |
# Single instance unless NO_SINGLE_INSTANCE=1 | |
ta_flags += -DSINGLE_INSTANCE | |
endif | |
lua_objs = lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o \ | |
linit.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 lbitlib.o lcorolib.o ldblib.o liolib.o \ | |
lmathlib.o loadlib.o loslib.o ltablib.o lstrlib.o | |
lua_lib_objs = lpeg.o lfs.o | |
#lua_lib_objs = lpcap.o lpcode.o lpprint.o lptree.o lpvm.o lfs.o | |
luajit_lib_objs = lpegjit.o lfsjit.o | |
#luajit_lib_objs = lpcapjit.o lpcodejit.o lpprintjit.o lptreejit.o lpvmjit.o \ | |
# lfsjit.o | |
termkey_objs = termkey.o driver-ti.o driver-csi.o | |
cdk_objs = binding.o buttonbox.o button.o cdk.o cdk_display.o cdk_objs.o \ | |
cdk_params.o cdkscreen.o debug.o draw.o entry.o fselect.o \ | |
itemlist.o label.o mentry.o menu.o popup_label.o position.o \ | |
scroll.o select_file.o traverse.o version.o | |
# Build. | |
all: textadept textadeptjit | |
curses: textadept-curses textadeptjit-curses | |
win32: textadept.exe textadeptjit.exe | |
win32-curses: textadept-curses.exe textadeptjit-curses.exe | |
win64: textadept.exe #textadeptjit.exe | |
win64-curses: textadept-curses.exe #textadeptjit-curses.exe | |
osx: textadept textadeptjit | |
osx-curses: textadept-curses textadeptjit-curses | |
# Dependencies. | |
base_deps = scintilla scintilla/term scintillua lua lualibs luajit gtdialog \ | |
cdk ../doc/bombay | |
deps: $(base_deps) termkey | |
win32-deps: $(base_deps) win32gtk win32curses | |
osx-deps: $(base_deps) gtkosx termkey | |
$(sci_objs): %.o: scintilla/src/%.cxx | |
$(CROSS)$(CXX) -c $(CXXFLAGS) $(sci_flags) $< -o $@ | |
$(sci_lex_objs): %.o: scintilla/lexlib/%.cxx | |
$(CROSS)$(CXX) -c $(CXXFLAGS) $(sci_flags) $< -o $@ | |
$(sci_gtk_objs): %.o: scintilla/gtk/%.cxx | |
$(CROSS)$(CXX) -c $(CXXFLAGS) $(sci_flags) $(GTK_CFLAGS) $< -o $@ | |
scintilla-marshal.o: scintilla/gtk/scintilla-marshal.c | |
$(CROSS)$(CC) -c $(CFLAGS) $(GTK_CFLAGS) $< -o $@ | |
ScintillaTerm.o: scintilla/term/ScintillaTerm.cxx | |
$(CROSS)$(CXX) -c $(CXXFLAGS) $(sci_flags) -Iscintilla/term $(CURSES_CFLAGS) \ | |
$< -o $@ | |
LexLPeg.o: LexLPeg.cxx | |
$(CROSS)$(CXX) -c $(CXXFLAGS) $(LUAFLAGS) $(sci_flags) -DLPEG_LEXER \ | |
-DNO_SCITE -Ilua/src $< -o $@ | |
LexLPegjit.o: LexLPeg.cxx | |
$(CROSS)$(CXX) -c $(CXXFLAGS) $(LUAFLAGS) $(sci_flags) -DLPEG_LEXER \ | |
-DNO_SCITE -Iluajit/src $< -o $@ | |
LexLPeg-curses.o: LexLPeg.cxx | |
$(CROSS)$(CXX) -c $(CXXFLAGS) $(LUAFLAGS) $(sci_flags) -DLPEG_LEXER \ | |
-DNO_SCITE -DCURSES -Ilua/src $(CURSES_CFLAGS) $< -o $@ | |
LexLPegjit-curses.o: LexLPeg.cxx | |
$(CROSS)$(CXX) -c $(CXXFLAGS) $(LUAFLAGS) $(sci_flags) -DLPEG_LEXER \ | |
-DNO_SCITE -DCURSES -Iluajit/src $(CURSES_CFLAGS) $< -o $@ | |
textadept.o: textadept.c | |
$(CROSS)$(CC) -c $(CFLAGS) $(ta_flags) -Ilua/src $(GTK_CFLAGS) $< -o $@ | |
textadeptjit.o: textadept.c | |
$(CROSS)$(CC) -c $(CFLAGS) $(ta_flags) -DLUAJIT -Iluajit/src $(GTK_CFLAGS) \ | |
$< -o $@ | |
textadept-curses.o: textadept.c | |
$(CROSS)$(CC) -c $(CFLAGS) $(ta_flags) -Ilua/src -Iscintilla/term -Itermkey \ | |
-Icdk $(CURSES_CFLAGS) $< -o $@ | |
textadeptjit-curses.o: textadept.c | |
$(CROSS)$(CC) -c $(CFLAGS) $(ta_flags) -DLUAJIT -Iluajit/src \ | |
-Iscintilla/term -Itermkey -Icdk $(CURSES_CFLAGS) $< -o $@ | |
$(lua_objs): %.o: lua/src/%.c | |
$(CROSS)$(CC) -c $(CFLAGS) $(LUAFLAGS) -Ilua/src $< -o $@ | |
$(lua_lib_objs): %.o: lua/src/lib/%.c | |
$(CROSS)$(CC) -c $(CFLAGS) $(LUAFLAGS) -Ilua/src $< -o $@ | |
$(luajit_lib_objs): %jit.o: lua/src/lib/%.c | |
$(CROSS)$(CC) -c $(CFLAGS) $(LUAFLAGS) -Iluajit/src $< -o $@ | |
luajit/src/libluajit.a: ; $(MAKE) -C luajit CC="$(CC) $(CFLAGS)" | |
luajit/src/lua51.dll: | |
$(MAKE) -C luajit HOST_CC="$(CC) -m32" CROSS=$(CROSS) TARGET_SYS=Windows | |
luajit/src/lua51_64.dll: | |
$(MAKE) -C luajit HOST_CC="$(CC)" CROSS=$(CROSS) TARGET_SYS=Windows \ | |
TARGET_DLLNAME=$(notdir $@) | |
luajit/src/libluajit.osx.a: | |
$(MAKE) -C luajit CC="$(CC) -m32" CROSS=$(CROSS) TARGET_SYS=Darwin \ | |
LUAJIT_A=$(notdir $@) || return 0 | |
gtdialog.o: gtdialog/gtdialog.c | |
$(CROSS)$(CC) -c $(CFLAGS) -DGTK -DNOHELP -DLIBRARY $(GTK_CFLAGS) $< -o $@ | |
gtdialog-curses.o: gtdialog/gtdialog.c | |
$(CROSS)$(CC) -c $(CFLAGS) -DCURSES -DNOHELP -DLIBRARY -Icdk \ | |
$(CURSES_CFLAGS) $< -o $@ | |
$(cdk_objs): %.o: cdk/%.c | |
$(CROSS)$(CC) -c $(CFLAGS) -D_GNU_SOURCE -Icdk $(CURSES_CFLAGS) $< -o $@ | |
$(termkey_objs): %.o: termkey/%.c ; $(CROSS)$(CC) -c $(CFLAGS) -std=c99 $< -o $@ | |
textadept_rc.o: textadept.rc ; $(CROSS)$(WINDRES) $< $@ | |
# Executables. | |
textadept: $(sci_objs) $(sci_lex_objs) $(sci_gtk_objs) scintilla-marshal.o \ | |
LexLPeg.o textadept.o $(lua_objs) $(lua_lib_objs) gtdialog.o | |
$(CROSS)$(CXX) $(CXXFLAGS) -o ../$@ $^ $(GTK_LIBS) $(LDFLAGS) | |
textadeptjit: $(sci_objs) $(sci_lex_objs) $(sci_gtk_objs) scintilla-marshal.o \ | |
LexLPegjit.o textadeptjit.o $(luajit_lib_objs) $(libluajit) \ | |
gtdialog.o | |
$(CROSS)$(CXX) $(CXXFLAGS) -o ../$@ $^ $(GTK_LIBS) $(LDFLAGS) | |
textadept-curses: $(sci_objs) $(sci_lex_objs) ScintillaTerm.o LexLPeg-curses.o \ | |
textadept-curses.o $(lua_objs) $(lua_lib_objs) \ | |
gtdialog-curses.o $(termkey_objs) $(cdk_objs) | |
$(CROSS)$(CXX) $(CXXFLAGS) -o ../$@ $^ $(CURSES_LIBS) $(LDFLAGS) | |
textadeptjit-curses: $(sci_objs) $(sci_lex_objs) ScintillaTerm.o \ | |
LexLPegjit-curses.o textadeptjit-curses.o \ | |
$(luajit_lib_objs) $(libluajit) gtdialog-curses.o \ | |
$(termkey_objs) $(cdk_objs) | |
$(CROSS)$(CXX) $(CXXFLAGS) -o ../$@ $^ $(CURSES_LIBS) $(LDFLAGS) | |
textadept.exe: $(sci_objs) $(sci_lex_objs) $(sci_gtk_objs) scintilla-marshal.o \ | |
LexLPeg.o textadept.o textadept_rc.o $(lua_objs) \ | |
$(lua_lib_objs) gtdialog.o | |
$(CROSS)$(CXX) $(CXXFLAGS) -o ../$@ $^ $(GTK_LIBS) $(LDFLAGS) | |
textadeptjit.exe: $(sci_objs) $(sci_lex_objs) $(sci_gtk_objs) \ | |
scintilla-marshal.o LexLPegjit.o textadeptjit.o \ | |
textadept_rc.o $(luajit_lib_objs) $(lua_dll) gtdialog.o | |
$(CROSS)$(CXX) $(CXXFLAGS) -o ../$@ $^ $(GTK_LIBS) $(LDFLAGS) | |
textadept-curses.exe: $(sci_objs) $(sci_lex_objs) ScintillaTerm.o \ | |
LexLPeg-curses.o textadept-curses.o textadept_rc.o \ | |
$(lua_objs) $(lua_lib_objs) gtdialog-curses.o $(cdk_objs) | |
$(CROSS)$(CXX) $(CXXFLAGS) -o ../$@ $^ $(CURSES_LIBS) $(LDFLAGS) | |
textadeptjit-curses.exe: $(sci_objs) $(sci_lex_objs) ScintillaTerm.o \ | |
LexLPegjit-curses.o textadeptjit-curses.o \ | |
textadept_rc.o $(luajit_lib_objs) $(lua_dll) \ | |
gtdialog-curses.o $(cdk_objs) | |
$(CROSS)$(CXX) $(CXXFLAGS) -o ../$@ $^ $(CURSES_LIBS) $(LDFLAGS) | |
# Install/uninstall. | |
install: $(install_targets) | ../core ../doc ../init.lua ../lexers ../LICENSE \ | |
../modules ../themes | |
install -d $(bin_dir) $(data_dir) | |
install $^ $(data_dir) | |
cp -r $| $(data_dir) | |
ln -s $(subst .., $(subst $(DESTDIR),, $(data_dir)), $^) $(bin_dir) | |
uninstall: ; rm -r $(bin_dir)/textadept* $(data_dir) | |
# Clean. | |
clean: | |
$(MAKE) -C luajit clean | |
rm -f *.o ../textadept* | |
# Documentation. | |
doc: manual luadoc adeptsense | |
manual: ../doc/*.md ../*.md | ../doc/bombay | |
$| -d ../doc -t ../doc --title Textadept --navtitle Manual $^ | |
luadoc: ../modules ../core ../lexers | |
cd ../doc && $(luadoc) -d . -t . --doclet markdowndoc $^/lexer.lua | |
adeptsense: ../modules ../core ../lexers | |
cd ../modules && $(luadoc) -d lua --doclet lua/adeptsensedoc $^/lexer.lua | |
cleandoc: ; rm -rf ../doc/*.html ../doc/api | |
# Releases. | |
build_dir = /tmp/tabuild | |
ifndef NIGHTLY | |
basedir = textadept_$(shell grep "_RELEASE =" ../core/init.lua | \ | |
cut -d ' ' -f 4- | sed -e 's/"//; s/ /_/g;') | |
else | |
basedir = textadept_NIGHTLY_$(shell date +"%F") | |
endif | |
osxapp = Textadept.app | |
osxapp_bin = $(osxapp)/Contents/MacOS | |
osxapp_res = $(osxapp)/Contents/Resources | |
osxapp_libs = libatk-1.0.0.dylib libcairo.2.dylib libexpat.1.dylib \ | |
libffi.5.dylib libfontconfig.1.dylib libfreetype.6.dylib \ | |
libgdk_pixbuf-2.0.0.dylib libgdk-quartz-2.0.0.dylib \ | |
libgio-2.0.0.dylib libglib-2.0.0.dylib libgmodule-2.0.0.dylib \ | |
libgobject-2.0.0.dylib libgthread-2.0.0.dylib \ | |
libgtkmacintegration.2.dylib libgtk-quartz-2.0.0.dylib \ | |
libintl.8.dylib libpango-1.0.0.dylib libpangocairo-1.0.0.dylib \ | |
libpangoft2-1.0.0.dylib libpixman-1.0.dylib libpng14.14.dylib \ | |
charset.alias gdk-pixbuf-2.0 gtk-2.0 pango | |
modules = css hypertext java rails rhtml ruby php python | |
release-all: release release64 win32-release osx-release modules-release \ | |
cleanup-release | |
$(build_dir): ; hg clone -r tip /home/mitchell/code/textadept $@ | |
$(basedir).i386: | $(build_dir) ; hg archive $@ -X ".hg*" | |
release: $(basedir).i386 | $(build_dir) | |
make -C $|/src deps clean doc | |
PKG_CONFIG_PATH=/opt/gtk/lib/pkgconfig make -C $|/src -j4 MAKE="make -j4" | |
make -C $|/src -j4 curses | |
cp -r $|/doc $|/lexers/lexers $|/textadept* $< | |
tar czf /tmp/$<.tgz $< && rm -rf $< | |
$(basedir).x86_64: | $(build_dir) ; hg archive $@ -X ".hg*" | |
release64: $(basedir).x86_64 | $(build_dir) | |
make -C $|/src clean libluajit64 | |
PKG_CONFIG_PATH=/opt/gtk64/lib/pkgconfig make -C $|/src -j4 CFLAGS=-m64 \ | |
CXXFLAGS=-m64 MAKE="make -j4" || return 0 | |
make -C $|/src -j4 CFLAGS=-m64 CXXFLAGS=-m64 \ | |
CURSES_CFLAGS=-I/opt/ncursesw64/include/ncursesw \ | |
CURSES_LIBS="-L/opt/ncursesw64/lib -lncursesw" curses || return 0 | |
cp -r $|/doc $|/lexers/lexers $|/textadept* $< | |
tar czf /tmp/$<.tgz $< && rm -rf $< | |
$(basedir).win32: | $(build_dir) ; hg archive $@ -X ".hg*" | |
win32-release: $(basedir).win32 | $(build_dir) | |
make -C $|/src -j4 clean CROSS=i586-mingw32msvc- win32-deps | |
cp $|/src/win32gtk/bin/*.dll $< && cp -r $|/src/win32gtk/etc \ | |
$|/src/win32gtk/lib $|/src/win32gtk/share $< | |
rm -r $</lib/*.a $</lib/glib-2.0 $</lib/gtk-2.0/include $</lib/pkgconfig | |
make -C $|/src -j4 CROSS=i586-mingw32msvc- MAKE="make -j4" win32 | |
make -C $|/src -j4 CROSS=i586-mingw32msvc- win32-curses | |
cp -r $|/doc $|/lexers/lexers $|/textadept* $|/src/luajit/src/lua51.dll $< | |
zip -r /tmp/$<.zip $< && rm -rf $< | |
$(basedir).osx: ; mkdir $@ && cp ../scripts/osx/ta $@ | |
osx-release: $(basedir).osx | $(build_dir) | |
make -C $|/src clean osx-deps | |
make -C $|/src -j4 MAKE="make -j4" osx | |
make -C $|/src -j4 osx-curses | |
make -C $|/src osx-app && mv $|/src/$(osxapp) $< | |
zip -r /tmp/$<.zip $< && rm -rf $< | |
$(basedir).modules: | |
mkdir -p $@/modules | |
for m in $(modules); do hg clone /home/mitchell/code/$$m $@/modules/$$m; done | |
modules-release: $(basedir).modules ; zip -r /tmp/$<.zip $< && rm -r $< | |
cleanup-release: /tmp/$(basedir).x86_64.tgz /tmp/$(basedir).i386.tgz \ | |
/tmp/$(basedir).win32.zip /tmp/$(basedir).osx.zip \ | |
/tmp/$(basedir).modules.zip | $(build_dir) | |
rm -rf $| | |
osx-app: ../textadept ../textadeptjit ../textadept-curses \ | |
../textadeptjit-curses ../scripts/osx/textadept_osx | |
mkdir -p $(osxapp_bin) $(osxapp_res) | |
cp Info.plist $(osxapp_bin)/../ | |
cp $^ $(osxapp_bin)/ | |
hg archive $(osxapp_res) -X ".hg*" | |
cp -r ../doc ../lexers/lexers $(osxapp_res) | |
mv $(osxapp_res)/core/images/textadept.icns $(osxapp_res)/ | |
cp -r gtkosx/etc gtkosx/share $(osxapp_res)/ && mkdir $(osxapp_res)/lib/ | |
cp -r $(addprefix gtkosx/lib/, $(osxapp_libs)) $(osxapp_res)/lib/ | |
rm -r $(osxapp_res)/lib/gtk-2.0/include $(osxapp_res)/lib/gtk-2.0/modules | |
rm $(osxapp_res)/lib/gtk-2.0/2.10.0/printbackends/* | |
# External dependencies. | |
scintilla_tgz = scintilla334.tgz?download | |
scinterm_zip = scinterm.zip | |
scintillua_zip = scintillua.zip | |
lua_tgz = lua-5.2.2.tar.gz | |
lpeg_tgz = lpeg-0.10.2.tar.gz | |
lfs_zip = d71c63cdb776f7d25313f8fcd14f07512ba1f83e.zip | |
luajit_tgz = LuaJIT-2.0.2.tar.gz | |
libluajit_tgz = libluajit_2.0.2.x86_64.tgz | |
gtdialog_zip = gtdialog.zip | |
cdk_tgz = cdk.tar.gz | |
termkey_tgz = libtermkey-0.16.tar.gz | |
win32gtk_zip = gtk+-bundle_2.24.10-20120208_win32.zip | |
win32iconv_bin_zip = libiconv-bin-zip.php | |
win32iconv_lib_zip = libiconv-lib-zip.php | |
win32curses_zip = win32curses.zip | |
pdcurses_zip = download | |
gtkosx_zip = gtkosx-2.24.16.zip | |
bombay_zip = bombay.zip | |
$(scintilla_tgz): ; wget "http://prdownloads.sourceforge.net/scintilla/$@" | |
scintilla: scintilla.patch | $(scintilla_tgz) | |
mkdir $@ && tar xzf $| -C $@ && mv $@/*/* $@ | |
patch -d $@ -N -p1 < $< | |
$(scinterm_zip): | |
wget "http://foicica.com/hg/scinterm/archive/tip.zip" && mv tip.zip $@ | |
scintilla/term: | $(scinterm_zip) ; mkdir $@ && unzip -d $@ $| && mv $@/*/* $@ | |
scintillua: ../lexers LexLPeg.cxx | |
$(scintillua_zip): | |
wget "http://foicica.com/hg/scintillua/archive/tip.zip" && mv tip.zip $@ | |
../lexers: | $(scintillua_zip) | |
mkdir $@ && unzip -d $@ $| && mv $@/*/* $@ | |
ln -s $@/lexers/*.lua $@ | |
LexLPeg.cxx: | ../lexers ; ln -s $|/$@ $@ | |
$(lua_tgz): ; wget "http://www.lua.org/ftp/$@" | |
$(lpeg_tgz): ; wget "http://www.inf.puc-rio.br/~roberto/lpeg/$@" | |
$(lfs_zip): ; wget "https://github.com/keplerproject/luafilesystem/archive/$@" | |
lua: lua.patch | $(lua_tgz) | |
mkdir $@ && tar xzf $| -C $@ && mv $@/*/* $@ | |
patch -d $@ -N -p1 < $< | |
lualibs: lua/src/lib/lpeg lua/src/lib/lfs | |
lua/src/lib/lpeg: | $(lpeg_tgz) | |
mkdir -p $@ && tar xzf $| -C $@ && mv $@/*/*.c $@/*/*.h $(dir $@) | |
lua/src/lib/lfs: lfs.patch | $(lfs_zip) | |
mkdir -p $@ && unzip -d $@ $| && mv $@/*/src/*.c $@/*/src/*.h $(dir $@) | |
patch -d $(dir $@) -N -p1 < $< | |
$(luajit_tgz): ; wget "http://luajit.org/download/$@" | |
luajit: luajit.patch | $(luajit_tgz) | |
mkdir $@ && tar xzf $| -C $@ && mv $@/*/* $@ | |
patch -d $@ -N -p1 < $< | |
$(libluajit_tgz): ; wget "http://foicica.com/textadept/download/$@" | |
libluajit64: | $(libluajit_tgz) ; tar xzf $| | |
$(gtdialog_zip): | |
wget "http://foicica.com/hg/gtdialog/archive/tip.zip" && mv tip.zip $@ | |
gtdialog: | $(gtdialog_zip) ; mkdir $@ && unzip -d $@ $| && mv $@/*/* $@ | |
$(cdk_tgz): ; wget "http://invisible-island.net/datafiles/release/$@" | |
cdk: cdk.patch | $(cdk_tgz) | |
mkdir $@ && tar xzf $| -C $@ && mv $@/*/* $@ | |
mv $@/include/*.h $@ | |
patch -d $@ -N -p1 < $< | |
$(termkey_tgz): ; wget "http://www.leonerd.org.uk/code/libtermkey/$@" | |
termkey: | $(termkey_tgz) ; mkdir $@ && tar xzf $| -C $@ && mv $@/*/* $@ | |
$(win32gtk_zip): | |
wget "http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.24/$@" | |
$(win32iconv_bin_zip): ; wget "http://gnuwin32.sourceforge.net/downlinks/$@" | |
$(win32iconv_lib_zip): ; wget "http://gnuwin32.sourceforge.net/downlinks/$@" | |
win32gtk: | $(win32gtk_zip) $(win32iconv_bin_zip) $(win32iconv_lib_zip) | |
mkdir $@ | |
unzip -d $@ $(win32gtk_zip) | |
for zip in $(win32iconv_bin_zip) $(win32iconv_lib_zip); do \ | |
unzip -d $@ $$zip; \ | |
done | |
rm -r $@/etc/bash_completion.d $@/lib/gtk-2.0/modules $@/lib/*.def | |
cd $@/share && rm -r aclocal doc glib-2.0 gtk-2.0 gtk-doc locale man | |
$(win32curses_zip): ; wget "http://foicica.com/textadept/download/$@" | |
$(pdcurses_zip): | |
wget "http://sf.net/projects/pdcurses/files/pdcurses/3.4/pdcurs34.zip/$@" | |
win32curses: | $(win32curses_zip) $(pdcurses_zip) | |
unzip $(win32curses_zip) | |
mkdir $@/src && unzip -d $@/src $(pdcurses_zip) | |
cp $@/lib/pdckbd.c $@/src/win32 | |
cd $@/src/win32 && $(MAKE) -f gccwin32.mak CC="$(CROSS)$(CC) $(CFLAGS)" \ | |
LIBEXE=$(CROSS)ar LINK="$(CROSS)$(CC) $(CFLAGS)" WIDE=Y UTF8=Y | |
cp $@/src/win32/pdcurses.a $@/lib/ | |
$(gtkosx_zip): ; wget "http://foicica.com/textadept/download/$@" | |
gtkosx: | $(gtkosx_zip) ; mkdir $@ && unzip -d $@ $| && mv $@/*/* $@ | |
$(bombay_zip): | |
wget "http://foicica.com/hg/bombay/archive/tip.zip" && mv tip.zip $@ | |
../doc/bombay: | $(bombay_zip) | |
mkdir $(notdir $@) && unzip -d $(notdir $@) $| && \ | |
mv $(notdir $@)/*/* $(dir $@) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment