From ffd09dfaf5df0edb28cb4d7866db237edfac5926 Mon Sep 17 00:00:00 2001
From: mitchell <70453897+667e-11@users.noreply.github.com>
Date: Sat, 22 Jun 2013 17:15:46 -0400
Subject: Refactored Makefile for release and nightly builds.
---
README.md | 2 +
scripts/osx/textadept | 24 ----
scripts/osx/textadept_osx | 24 ++++
src/Info.plist | 2 +-
src/Makefile | 274 ++++++++++++++++------------------------------
5 files changed, 119 insertions(+), 207 deletions(-)
delete mode 100755 scripts/osx/textadept
create mode 100755 scripts/osx/textadept_osx
diff --git a/README.md b/README.md
index 59ed66c4..fe50cf7f 100644
--- a/README.md
+++ b/README.md
@@ -53,6 +53,7 @@ Unstable Builds
* [Mac OSX Nightly][]
* [Linux Nightly][]
* [Linux x86\_64 Nightly][]
+* [Modules Nightly][]
_Warning_: nightly builds are untested, may have bugs, and are the absolute
cutting-edge versions of Textadept. Do not use them in production, but for
@@ -68,6 +69,7 @@ testing purposes only.
[Mac OSX Nightly]: download/textadept_NIGHTLY.osx.zip
[Linux Nightly]: download/textadept_NIGHTLY.i386.tgz
[Linux x86\_64 Nightly]: download/textadept_NIGHTLY.x86_64.tgz
+[Modules Nightly]: download/textadept_NIGHTLY.modules.zip
## Installation and Usage
diff --git a/scripts/osx/textadept b/scripts/osx/textadept
deleted file mode 100755
index 2c933465..00000000
--- a/scripts/osx/textadept
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/sh
-# Copyright 2007-2013 Mitchell mitchell.att.foicica.com. See LICENSE.
-
-# Set the GTK environment variables of resources within Textadept.app.
-bundle=$(cd "$(dirname "$0")/../../" && pwd)
-bundle_res="$bundle/Contents/Resources"
-export DYLD_LIBRARY_PATH="$bundle_res/lib:$DYLD_LIBRARY_PATH"
-export GTK_DATA_PREFIX="$bundle_res"
-export GTK_EXE_PREFIX="$bundle_res"
-export GTK_PATH="$bundle_res"
-export GTK2_RC_FILES="$bundle_res/etc/gtk-2.0/gtkrc"
-export GTK_IM_MODULE_FILE="$bundle_res/etc/gtk-2.0/gtk.immodules"
-export GDK_PIXBUF_MODULE_FILE="$bundle_res/etc/gtk-2.0/gdk-pixbuf.loaders"
-export PANGO_LIBDIR="$bundle_res/lib"
-export PANGO_SYSCONFDIR="$bundle_res/etc"
-export CHARSETALIASDIR="$bundle_res/lib"
-
-# Strip out the argument added by OSX.
-if [ x`echo "x$1" | sed -e "s/^x-psn_.*//"` == x ]; then shift 1; fi
-
-# Run Textadept.
-textadept=textadept.osx
-if [ ! -z $TEXTADEPTJIT ]; then textadept=textadeptjit.osx; fi
-exec "$bundle/Contents/MacOS/$textadept" "$@"
diff --git a/scripts/osx/textadept_osx b/scripts/osx/textadept_osx
new file mode 100755
index 00000000..d0382fa4
--- /dev/null
+++ b/scripts/osx/textadept_osx
@@ -0,0 +1,24 @@
+#!/bin/sh
+# Copyright 2007-2013 Mitchell mitchell.att.foicica.com. See LICENSE.
+
+# Set the GTK environment variables of resources within Textadept.app.
+bundle=$(cd "$(dirname "$0")/../../" && pwd)
+bundle_res="$bundle/Contents/Resources"
+export DYLD_LIBRARY_PATH="$bundle_res/lib:$DYLD_LIBRARY_PATH"
+export GTK_DATA_PREFIX="$bundle_res"
+export GTK_EXE_PREFIX="$bundle_res"
+export GTK_PATH="$bundle_res"
+export GTK2_RC_FILES="$bundle_res/etc/gtk-2.0/gtkrc"
+export GTK_IM_MODULE_FILE="$bundle_res/etc/gtk-2.0/gtk.immodules"
+export GDK_PIXBUF_MODULE_FILE="$bundle_res/etc/gtk-2.0/gdk-pixbuf.loaders"
+export PANGO_LIBDIR="$bundle_res/lib"
+export PANGO_SYSCONFDIR="$bundle_res/etc"
+export CHARSETALIASDIR="$bundle_res/lib"
+
+# Strip out the argument added by OSX.
+if [ x`echo "x$1" | sed -e "s/^x-psn_.*//"` == x ]; then shift 1; fi
+
+# Run Textadept.
+textadept=textadept
+if [ ! -z $TEXTADEPTJIT ]; then textadept=textadeptjit; fi
+exec "$bundle/Contents/MacOS/$textadept" "$@"
diff --git a/src/Info.plist b/src/Info.plist
index fad0e2bd..cc620de4 100644
--- a/src/Info.plist
+++ b/src/Info.plist
@@ -953,7 +953,7 @@
CFBundleExecutable
- textadept
+ textadept_osx
CFBundleIconFile
textadept.icns
CFBundleIdentifier
diff --git a/src/Makefile b/src/Makefile
index 6c9b0aab..bc5e4b0c 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -7,9 +7,11 @@ ifneq (, $(or $(findstring Linux, $(kernel)), $(findstring BSD, $(kernel))))
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
@@ -64,7 +66,7 @@ ifneq (, $(or $(findstring Linux, $(kernel)), $(findstring BSD, $(kernel))))
plat_flag = -DCURSES -D_XOPEN_SOURCE_EXTENDED
CURSES_LIBS = -lncurses
endif
- libluajit = libluajit.osx.a
+ libluajit = luajit/src/libluajit.osx.a
luadoc = luadoc
else
@@ -103,11 +105,7 @@ ifneq (, $(or $(findstring Linux, $(kernel)), $(findstring BSD, $(kernel))))
install_targets = ../textadept-curses ../textadeptjit-curses
endif
x64 = $(shell echo "" | $(CC) -E -dM - | grep __x86_64__ | cut -d ' ' -f 3)
- ifeq (1, $(x64))
- libluajit = libluajit.a
- else
- libluajit = libluajit32.a
- endif
+ libluajit = luajit/src/libluajit.a
luadoc = luadoc
endif
@@ -192,22 +190,12 @@ cdk_objs = binding.o buttonbox.o button.o cdk.o cdk_display.o cdk_objs.o \
all: textadept textadeptjit
curses: textadept-curses textadeptjit-curses
-m32: textadept32 textadeptjit32 textadept32-curses textadeptjit32-curses
win32: textadept.exe textadeptjit.exe
win32-curses: textadept-curses.exe textadeptjit-curses.exe
-win64: textadept64.exe #textadeptjit64.exe
-win64-curses: textadept64-curses.exe #textadeptjit64-curses.exe
-osx: textadept.osx textadeptjit.osx
-osx-curses: textadept-curses.osx textadeptjit-curses.osx
-
-tmp:
- rm -rf /tmp/tabuild && hg clone ../ /tmp/tabuild
- cp -rL ../doc ../lexers ../modules /tmp/tabuild/
- cp -rL gtdialog gtkosx LexLPeg.cxx libluajit*.a lua luajit lua51.dll \
- scintilla termkey cdk win*gtk win*curses /tmp/tabuild/src/
- cd /tmp/tabuild/src/luajit && $(MAKE) clean
- ln -s `pwd`/../releases /tmp/tabuild
- @echo /tmp/tabuild ready for building.
+win64: textadept.exe #textadeptjit.exe
+win64-curses: textadept-curses.exe #textadeptjit-curses.exe
+osx: textadept textadeptjit
+osx-curses: textadept-curses textadeptjit-curses
# Dependencies.
@@ -257,22 +245,15 @@ $(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 $@
-libluajit.a:
- cd luajit && $(MAKE) CC="$(CC) $(CFLAGS)"
- cp luajit/src/$@ .
-libluajit32.a:
- cd luajit && $(MAKE) CC="$(CC) $(CFLAGS)"
- cp luajit/src/libluajit.a $@
-lua51.dll:
- cd luajit && $(MAKE) HOST_CC="$(CC) -m32" CROSS=$(CROSS) TARGET_SYS=Windows
- cp luajit/src/$@ .
-lua51_64.dll:
- cd luajit && $(MAKE) HOST_CC="$(CC)" CROSS=$(CROSS) TARGET_SYS=Windows
- cp luajit/src/$@ .
-libluajit.osx.a:
- cd luajit && $(MAKE) CC="$(CC) -m32" CROSS=$(CROSS) TARGET_SYS=Darwin || \
- return 0
- cp luajit/src/libluajit.a $@
+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
@@ -280,8 +261,7 @@ gtdialog-curses.o: gtdialog/gtdialog.c
$(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 $@
+$(termkey_objs): %.o: termkey/%.c ; $(CROSS)$(CC) -c $(CFLAGS) -std=c99 $< -o $@
textadept_rc.o: textadept.rc ; $(CROSS)$(WINDRES) $< $@
# Executables.
@@ -302,17 +282,13 @@ textadeptjit-curses: $(sci_objs) $(sci_lex_objs) ScintillaTerm.o \
$(luajit_lib_objs) $(libluajit) gtdialog-curses.o \
$(termkey_objs) $(cdk_objs)
$(CROSS)$(CXX) $(CXXFLAGS) -o ../$@ $^ $(CURSES_LIBS) $(LDFLAGS)
-textadept32: ../textadept ; mv $< ../$@
-textadeptjit32: ../textadeptjit ; mv $< ../$@
-textadept32-curses: ../textadept-curses ; mv $< ../$@
-textadeptjit32-curses: ../textadeptjit-curses ; mv $< ../$@
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) lua51.dll gtdialog.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 \
@@ -320,31 +296,9 @@ textadept-curses.exe: $(sci_objs) $(sci_lex_objs) ScintillaTerm.o \
$(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) lua51.dll \
+ textadept_rc.o $(luajit_lib_objs) $(lua_dll) \
gtdialog-curses.o $(cdk_objs)
$(CROSS)$(CXX) $(CXXFLAGS) -o ../$@ $^ $(CURSES_LIBS) $(LDFLAGS)
-textadept64.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)
-textadeptjit64.exe: $(sci_objs) $(sci_lex_objs) $(sci_gtk_objs) \
- scintilla-marshal.o LexLPegjit.o textadeptjit.o \
- textadept_rc.o $(luajit_lib_objs) lua51_64.dll gtdialog.o
- $(CROSS)$(CXX) $(CXXFLAGS) -o ../$@ $^ $(GTK_LIBS) $(LDFLAGS)
-textadept64-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)
-textadeptjit64-curses.exe: $(sci_objs) $(sci_lex_objs) ScintillaTerm.o \
- LexLPegjit-curses.o textadeptjit-curses.o \
- textadept_rc.o $(luajit_lib_objs) lua51_64.dll \
- gtdialog-curses.o $(cdk_objs)
- $(CROSS)$(CXX) $(CXXFLAGS) -o ../$@ $^ $(CURSES_LIBS) $(LDFLAGS)
-textadept.osx: textadept ; mv ../$< ../$@
-textadeptjit.osx: textadeptjit ; mv ../$< ../$@
-textadept-curses.osx: textadept-curses ; mv ../$< ../$@
-textadeptjit-curses.osx: textadeptjit-curses ; mv ../$< ../$@
# Install/uninstall.
@@ -358,30 +312,30 @@ uninstall: ; rm -r $(bin_dir)/textadept* $(data_dir)
# Clean.
-mostlyclean: ; rm -f *.o
-cleanjit: ; cd luajit && $(MAKE) clean
-clean: mostlyclean cleanjit ; rm -f ../textadept* *.a *.dll
+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/lexer.lua
- cd ../doc && $(luadoc) -d . -t . --doclet markdowndoc $^
-adeptsense: ../modules ../core ../lexers/lexer.lua
- cd ../modules && $(luadoc) -d lua --doclet lua/adeptsensedoc $^
+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
-# Package.
+# Releases.
-basedir = textadept_$(shell grep "_RELEASE =" ../core/init.lua | \
- cut -d ' ' -f 4- | sed -e 's/"//; s/ /_/g;')
-nightly_basedir = textadept_NIGHTLY_$(shell date +"%F")
-ifdef NIGHTLY
- basedir = $(nightly_basedir)
+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
-modules = css hypertext java rails rhtml ruby php python
osxapp = Textadept.app
osxapp_bin = $(osxapp)/Contents/MacOS
osxapp_res = $(osxapp)/Contents/Resources
@@ -394,114 +348,70 @@ osxapp_libs = libatk-1.0.0.dylib libcairo.2.dylib libexpat.1.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
+ 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
+ touch $|/textadeptjit $|/textadeptjit-curses # TODO
+ 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 $