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 $