Win32 build and installer, and application work
This commit is contained in:
parent
5636bc81aa
commit
6c98d10248
13
configure.ac
13
configure.ac
@ -16,14 +16,22 @@ MOO_DEFINE_VERSIONS
|
||||
|
||||
MOO_AC_I18N([ru])
|
||||
|
||||
# Check operating system
|
||||
MOO_AC_CHECK_OS
|
||||
|
||||
if test x$MOO_OS_UNIX != xyes; then
|
||||
AM_CONDITIONAL(MOO_INSTALL_LIB, true)
|
||||
AM_CONDITIONAL(MOO_BUILD_PYTHON_MODULE, true)
|
||||
AC_DEFINE(MOO_BUILD_PYTHON_MODULE, 1, MOO_BUILD_PYTHON_MODULE)
|
||||
AC_DISABLE_STATIC
|
||||
else
|
||||
AM_CONDITIONAL(MOO_INSTALL_LIB, false)
|
||||
AM_CONDITIONAL(MOO_BUILD_PYTHON_MODULE, false)
|
||||
fi
|
||||
|
||||
AC_PROG_CC
|
||||
AC_PROG_CC_STDC
|
||||
AC_HEADER_STDC
|
||||
AC_DISABLE_STATIC
|
||||
AC_LIBTOOL_WIN32_DLL
|
||||
AC_PROG_LIBTOOL
|
||||
AC_PROG_INSTALL
|
||||
@ -37,9 +45,6 @@ MOO_AC_FUNCS
|
||||
# Check debug options
|
||||
MOO_AC_DEBUG
|
||||
|
||||
# Check operating system
|
||||
MOO_AC_CHECK_OS
|
||||
|
||||
# GTK libraries
|
||||
MOO_PKG_CHECK_GTK_VERSIONS
|
||||
|
||||
|
@ -27,25 +27,24 @@ AC_DEFUN([_MOO_AC_PYGTK_CODEGEN],[
|
||||
#
|
||||
AC_DEFUN([_MOO_AC_CHECK_PYGTK_MINGW],[
|
||||
# _AC_CHECK_PYGTK_MINGW
|
||||
no_dot_version=`echo $1 | sed "s/\.//"`
|
||||
|
||||
if test -z $PYTHON_PARENT_DIR; then
|
||||
PYTHON_PARENT_DIR=/usr/local/win
|
||||
if test -z "$PYTHON[]$1[]_PARENT_DIR"; then
|
||||
PYTHON[]$1[]_PARENT_DIR=/usr/local/win
|
||||
fi
|
||||
if test -z $PYTHON_PREFIX; then
|
||||
PYTHON_PREFIX=$PYTHON_PARENT_DIR/Python$no_dot_version
|
||||
if test -z "$PYTHON[]$1[]_PREFIX"; then
|
||||
PYTHON[]$1[]_PREFIX=$PYTHON[]$1[]_PARENT_DIR/Python$1
|
||||
fi
|
||||
if test -z $PYGTK_CFLAGS; then
|
||||
PYGTK_CFLAGS="-I$PYTHON_PREFIX/include/pygtk-2.0 $GTK_CFLAGS"
|
||||
if test -z "$PYGTK[]$1[]_CFLAGS"; then
|
||||
PYGTK[]$1[]_CFLAGS="-I$PYTHON[]$1[]_PREFIX/include/pygtk-2.0 $PYTHON[]$1[]_CFLAGS $GTK_CFLAGS"
|
||||
fi
|
||||
|
||||
dnl check whether pygtk.h exists
|
||||
save_CPPFLAGS="$CPPFLAGS"
|
||||
CPPFLAGS="$CPPFLAGS $PYGTK_CFLAGS -I$PYTHON_PREFIX/include"
|
||||
CPPFLAGS="$CPPFLAGS $PYGTK[]$1[]_CFLAGS"
|
||||
save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $PYGTK_CFLAGS -I$PYTHON_PREFIX/include"
|
||||
CFLAGS="$CFLAGS $PYGTK[]$1[]_CFLAGS"
|
||||
|
||||
AC_MSG_CHECKING([for pygtk headers])
|
||||
AC_MSG_CHECKING([for pygtk$1 headers])
|
||||
# start AC_COMPILE_IFELSE in _AC_CHECK_PYGTK_MINGW
|
||||
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
|
||||
#include <pygtk/pygtk.h>
|
||||
@ -54,13 +53,17 @@ AC_DEFUN([_MOO_AC_CHECK_PYGTK_MINGW],[
|
||||
init_pygtk();
|
||||
return 0;
|
||||
}]])],[
|
||||
AC_MSG_RESULT([$PYGTK_CFLAGS])
|
||||
AC_SUBST(PYGTK_CFLAGS)
|
||||
PYGTK_DEFS_DIR=$PYTHON_PREFIX/share/pygtk/2.0/defs
|
||||
AC_MSG_RESULT([$PYGTK[]$1[]_CFLAGS])
|
||||
AC_SUBST(PYGTK[]$1[]_CFLAGS)
|
||||
PYGTK[]$1[]_DEFS_DIR=$PYTHON[]$1[]_PREFIX/share/pygtk/2.0/defs
|
||||
AC_SUBST(PYGTK[]$1[]_DEFS_DIR)
|
||||
PYGTK_DEFS_DIR=$PYTHON[]$1[]_PREFIX/share/pygtk/2.0/defs
|
||||
AC_SUBST(PYGTK_DEFS_DIR)
|
||||
PYGTK_CODEGEN_DIR=$PYTHON_PREFIX/share/pygtk/2.0/codegen
|
||||
PYGTK[]$1[]_CODEGEN_DIR=$PYTHON[]$1[]_PREFIX/share/pygtk/2.0/codegen
|
||||
AC_SUBST(PYGTK[]$1[]_CODEGEN_DIR)
|
||||
PYGTK_CODEGEN_DIR=$PYTHON[]$1[]_PREFIX/share/pygtk/2.0/codegen
|
||||
AC_SUBST(PYGTK_CODEGEN_DIR)
|
||||
AC_MSG_NOTICE([pygtk defs dir: $PYGTK_DEFS_DIR])
|
||||
AC_MSG_NOTICE([pygtk defs dir: $PYGTK[]$1[]_DEFS_DIR])
|
||||
$2
|
||||
_MOO_AC_PYGTK_CODEGEN
|
||||
],[
|
||||
@ -130,7 +133,8 @@ AC_DEFUN([MOO_AC_CHECK_PYGTK],[
|
||||
|
||||
if test x$MOO_OS_CYGWIN != xyes; then
|
||||
if test x$MOO_OS_MINGW = xyes; then
|
||||
_MOO_AC_CHECK_PYGTK_MINGW([$1],[$2],[$3])
|
||||
_MOO_AC_CHECK_PYGTK_MINGW([23],[$2],[$3])
|
||||
_MOO_AC_CHECK_PYGTK_MINGW([24],[$2],[$3])
|
||||
else
|
||||
_MOO_AC_CHECK_PYGTK_UNIX([$1],[$2],[$3])
|
||||
fi
|
||||
|
@ -3,34 +3,36 @@
|
||||
# checks python stuff when building for mingw. it's broken
|
||||
#
|
||||
AC_DEFUN([_MOO_AC_CHECK_PYTHON_MINGW],[
|
||||
no_dot_version=`echo $1 | sed "s/\.//"`
|
||||
if test -z "$PYTHON[]$1[]_PARENT_DIR"; then
|
||||
PYTHON[]$1[]_PARENT_DIR=/usr/local/win
|
||||
fi
|
||||
if test -z "$PYTHON[]$1[]_PREFIX"; then
|
||||
PYTHON[]$1[]_PREFIX=$PYTHON[]$1[]_PARENT_DIR/Python$1
|
||||
fi
|
||||
if test -z "$PYTHON[]$1[]_CFLAGS"; then
|
||||
PYTHON[]$1[]_CFLAGS="-I$PYTHON[]$1[]_PREFIX/include -mno-cygwin"
|
||||
fi
|
||||
if test -z "$PYTHON[]$1[]_LIBS"; then
|
||||
PYTHON[]$1[]_LIBS="-L$PYTHON[]$1[]_PREFIX/libs -lpython$1 -mno-cygwin"
|
||||
fi
|
||||
if test -z "$PYTHON[]$1"; then
|
||||
PYTHON[]$1="python"
|
||||
fi
|
||||
|
||||
if test -z "$PYTHON_PARENT_DIR"; then
|
||||
PYTHON_PARENT_DIR=/usr/local/win
|
||||
fi
|
||||
if test -z "$PYTHON_PREFIX"; then
|
||||
PYTHON_PREFIX=$PYTHON_PARENT_DIR/Python$no_dot_version
|
||||
fi
|
||||
if test -z "$PYTHON_CFLAGS"; then
|
||||
PYTHON_CFLAGS="-I$PYTHON_PREFIX/include -mno-cygwin"
|
||||
fi
|
||||
if test -z "$PYTHON_LIBS"; then
|
||||
PYTHON_LIBS="-L$PYTHON_PREFIX/libs -lpython$no_dot_version -mno-cygwin"
|
||||
fi
|
||||
if test -z "$PYTHON"; then
|
||||
PYTHON="python"
|
||||
fi
|
||||
PYTHON_PARENT_DIR="$PYTHON[]$1[]_PARENT_DIR"
|
||||
PYTHON_PREFIX="$PYTHON[]$1[]_PREFIX"
|
||||
PYTHON="$PYTHON[]$1[]"
|
||||
|
||||
# check whether Python.h and library exists
|
||||
|
||||
save_CPPFLAGS="$CPPFLAGS"
|
||||
CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
|
||||
CPPFLAGS="$CPPFLAGS $PYTHON[]$1[]_CFLAGS"
|
||||
save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $PYTHON_CFLAGS"
|
||||
CFLAGS="$CFLAGS $PYTHON[]$1[]_CFLAGS"
|
||||
save_LDFLAGS="$LDFLAGS"
|
||||
LDFLAGS="$LDFLAGS $PYTHON_LIBS"
|
||||
LDFLAGS="$LDFLAGS $PYTHON[]$1[]_LIBS"
|
||||
|
||||
AC_MSG_CHECKING([PYTHON_CFLAGS])
|
||||
AC_MSG_CHECKING([PYTHON[]$1[]_CFLAGS])
|
||||
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
|
||||
#include <Python.h>
|
||||
int main ()
|
||||
@ -41,19 +43,19 @@ AC_DEFUN([_MOO_AC_CHECK_PYTHON_MINGW],[
|
||||
Py_Finalize();
|
||||
return 0;
|
||||
}]])],[
|
||||
AC_MSG_RESULT([$PYTHON_CFLAGS])
|
||||
AC_MSG_CHECKING([PYTHON_LIBS])
|
||||
AC_MSG_RESULT([$PYTHON_LIBS])
|
||||
AC_MSG_RESULT([$PYTHON[]$1[]_CFLAGS])
|
||||
AC_MSG_CHECKING([PYTHON[]$1[]_LIBS])
|
||||
AC_MSG_RESULT([$PYTHON[]$1[]_LIBS])
|
||||
AC_MSG_NOTICE([Did not do real linking])
|
||||
AC_SUBST(PYTHON_CFLAGS)
|
||||
AC_SUBST(PYTHON_LIBS)
|
||||
pyexecdir=$PYTHON_PREFIX/Lib/site-packages
|
||||
AC_SUBST(PYTHON[]$1[]_CFLAGS)
|
||||
AC_SUBST(PYTHON[]$1[]_LIBS)
|
||||
pyexecdir=$PYTHON[]$1[]_PREFIX/Lib/site-packages
|
||||
$2
|
||||
],[
|
||||
AC_MSG_RESULT([Not found])
|
||||
PYTHON_CFLAGS=""
|
||||
PYTHON_LIBS=""
|
||||
PYTHON_EXTRA_LIBS=""
|
||||
PYTHON[]$1[]_CFLAGS=""
|
||||
PYTHON[]$1[]_LIBS=""
|
||||
PYTHON[]$1[]_EXTRA_LIBS=""
|
||||
$3
|
||||
])
|
||||
|
||||
@ -195,7 +197,8 @@ AC_MSG_NOTICE([checking for headers and libs required to compile python extensio
|
||||
AC_REQUIRE([MOO_AC_CHECK_OS])
|
||||
if test x$MOO_OS_CYGWIN != xyes; then
|
||||
if test x$MOO_OS_MINGW = xyes; then
|
||||
_MOO_AC_CHECK_PYTHON_MINGW([$1],[$2],[$3])
|
||||
_MOO_AC_CHECK_PYTHON_MINGW([23],[$2],[$3])
|
||||
_MOO_AC_CHECK_PYTHON_MINGW([24],[$2],[$3])
|
||||
else
|
||||
_MOO_AC_CHECK_PYTHON_UNIX([$1],[$2],[$3])
|
||||
fi
|
||||
|
56
makewin
56
makewin
@ -5,22 +5,31 @@ import sys
|
||||
import getopt
|
||||
|
||||
dir = os.getcwd()
|
||||
builddir = "/home/muntyan/projects/moo/build"
|
||||
builddir = dir
|
||||
moo_windir = "/usr/local/win/medit"
|
||||
|
||||
strip = "i586-mingw32msvc-strip"
|
||||
do_strip = True
|
||||
installer = None
|
||||
|
||||
def usage():
|
||||
print "Usage:", sys.argv[0], "[build_dir]"
|
||||
print "Usage:", sys.argv[0], "[--no-strip] [build_dir]"
|
||||
sys.exit(2)
|
||||
|
||||
if sys.argv[1:]:
|
||||
if sys.argv[2:]: usage()
|
||||
moo_builddir = os.path.abspath(sys.argv[1])
|
||||
else:
|
||||
moo_builddir = builddir + "/mingw"
|
||||
try:
|
||||
opts, args = getopt.getopt(sys.argv[1:], "", ["no-strip"])
|
||||
except getopt.GetoptError:
|
||||
usage()
|
||||
|
||||
config = os.path.basename(moo_builddir)
|
||||
installdir = "%s/%s-inst" % (dir, config)
|
||||
for o, a in opts:
|
||||
if o == "--no-strip":
|
||||
do_strip = False
|
||||
if args:
|
||||
if args[1:]: usage()
|
||||
moo_builddir = os.path.abspath(args[0])
|
||||
else:
|
||||
moo_builddir = builddir
|
||||
|
||||
installdir = dir + "/inst_"
|
||||
|
||||
issdir = "Z:%s/wininstaller" % (moo_builddir,)
|
||||
iss = issdir + "/medit.iss"
|
||||
@ -38,11 +47,20 @@ def do_cmd(cmd):
|
||||
raise Error(status)
|
||||
|
||||
def copy_files():
|
||||
files = ["bin/medit.exe", "share/moo/syntax",
|
||||
"share/moo/tools.cfg", "share/moo/menu.cfg", "share/moo/as.cfg",
|
||||
"share/moo/completion", "lib/moo/plugins"]
|
||||
files = ["bin/medit.exe", "bin/libmoo.dll",
|
||||
"share/moo/*", "lib/moo/plugins", "lib/moo/projects"]
|
||||
for f in files:
|
||||
do_cmd("cp -r %s/usr/local/%s %s/" % (installdir, f, moo_windir))
|
||||
do_cmd("mkdir -p %s/plugins/pymoo23 %s/plugins/pymoo24" % (moo_windir, moo_windir))
|
||||
do_cmd("cp %s/usr/local/lib/pymoo23.dll %s/plugins/pymoo23/pymoo.dll" % (installdir, moo_windir))
|
||||
do_cmd("cp %s/usr/local/lib/moo23.dll %s/plugins/pymoo23/moo.pyd" % (installdir, moo_windir))
|
||||
do_cmd("cp %s/usr/local/lib/pymoo24.dll %s/plugins/pymoo24/pymoo.dll" % (installdir, moo_windir))
|
||||
do_cmd("cp %s/usr/local/lib/moo24.dll %s/plugins/pymoo24/moo.pyd" % (installdir, moo_windir))
|
||||
do_cmd("cp libxml2-2.dll %s/" % (moo_windir,))
|
||||
|
||||
if do_strip:
|
||||
do_cmd("%s %s/plugins/*/*.dll" % (strip, moo_windir))
|
||||
do_cmd("%s %s/*.exe %s/*.dll" % (strip, moo_windir, moo_windir))
|
||||
|
||||
config_template = """
|
||||
version = @MOO_VERSION@
|
||||
@ -59,13 +77,20 @@ def get_version():
|
||||
return config.version
|
||||
|
||||
def build():
|
||||
global installer
|
||||
|
||||
do_cmd("mkdir " + moo_windir)
|
||||
do_cmd("mkdir " + installdir)
|
||||
os.chdir(moo_builddir)
|
||||
do_cmd("make install-strip DESTDIR=" + installdir)
|
||||
do_cmd("make install DESTDIR=" + installdir)
|
||||
copy_files()
|
||||
do_cmd("wine /usr/local/win/InnoSetup5/ISCC.exe " + iss)
|
||||
installer = "meditsetup-" + get_version() + config.replace("mingw", "") + ".exe"
|
||||
|
||||
if do_strip:
|
||||
installer = "meditsetup-" + get_version() + ".exe"
|
||||
else:
|
||||
installer = "meditsetup-dbg-" + get_version() + ".exe"
|
||||
|
||||
do_cmd("mv %s/wininstaller/Output/setup.exe %s/%s" % (moo_builddir, dir, installer))
|
||||
|
||||
def clean():
|
||||
@ -80,3 +105,4 @@ except Error, e:
|
||||
|
||||
clean()
|
||||
print "*** Success ***"
|
||||
print "Installer: ", installer
|
||||
|
@ -26,10 +26,10 @@ fi
|
||||
|
||||
export GTK_PREFIX=${GTK_PREFIX:-/usr/local/win/gtk}
|
||||
|
||||
if [ "x$1" = "x--with-python=2.3" -o "x$2" = "x--with-python=2.3" ]; then
|
||||
export PYTHON_PREFIX=${PYTHON_PREFIX:-/usr/local/win/Python23}
|
||||
elif [ "x$1" = "x--with-python=2.4" -o "x$2" = "x--with-python=2.4" ]; then
|
||||
if [ "x$1" = "x--with-python=2.4" -o "x$2" = "x--with-python=2.4" ]; then
|
||||
export PYTHON_PREFIX=${PYTHON_PREFIX:-/usr/local/win/Python24}
|
||||
else
|
||||
export PYTHON_PREFIX=${PYTHON_PREFIX:-/usr/local/win/Python23}
|
||||
fi
|
||||
|
||||
export PKG_CONFIG_LIBDIR=$GTK_PREFIX/lib/pkgconfig:$PYTHON_PREFIX/Lib/pkgconfig
|
||||
|
@ -43,32 +43,32 @@ endif
|
||||
SUBDIRS = $(subdirs) .
|
||||
DIST_SUBDIRS = mooutils mooterm mooedit mooapp moopython mooscript moofileview
|
||||
|
||||
lib_LTLIBRARIES =
|
||||
noinst_LTLIBRARIES =
|
||||
|
||||
if MOO_INSTALL_LIB
|
||||
lib_LTLIBRARIES = libmoo.la
|
||||
lib_LTLIBRARIES += libmoo.la
|
||||
else
|
||||
noinst_LTLIBRARIES = libmoo.la
|
||||
noinst_LTLIBRARIES += libmoo.la
|
||||
endif
|
||||
|
||||
libmoo_la_LIBADD = $(libs) $(MOO_LIBS)
|
||||
# libmoo_la_LDFLAGS = -no-undefined -export-symbols-regex "^(moo_|ms_|m_|egg_regex_).*"
|
||||
libmoo_la_LDFLAGS = -no-undefined -export-symbols-regex ".*"
|
||||
# libmoo_la_LDFLAGS = $(PYTHON_EXTRA_LDFLAGS) -no-undefined -avoid-version -export-symbols-regex "^(moo_|ms_|m_|egg_regex_).*"
|
||||
libmoo_la_LDFLAGS = $(PYTHON_EXTRA_LDFLAGS) -no-undefined -avoid-version -export-symbols-regex ".*"
|
||||
libmoo_la_SOURCES = $(moo_include_headers)
|
||||
|
||||
moo_la_ldflags = -no-undefined -module -avoid-version -export-symbols-regex initmoo
|
||||
pymoo_la_ldflags = -no-undefined -module -avoid-version -export-symbols-regex moo_module_init
|
||||
|
||||
if MOO_OS_UNIX
|
||||
|
||||
if MOO_INSTALL_LIB
|
||||
|
||||
if MOO_USE_PYGTK
|
||||
pyexec_LTLIBRARIES = moo.la
|
||||
moo_la_SOURCES = moo.h
|
||||
moo_la_LDFLAGS = -module -no-undefined -export-symbols-regex "initmoo"
|
||||
moo_la_LIBADD = moopython/libmoomod.la libmoo.la $(PYTHON_LIBS)
|
||||
moo_la_CFLAGS = \
|
||||
-I.. \
|
||||
-I$(top_builddir) \
|
||||
$(MOO_CFLAGS) \
|
||||
$(MOO_DEBUG_CFLAGS) \
|
||||
$(PYTHON_CFLAGS) \
|
||||
$(PYGTK_CFLAGS) \
|
||||
-DMOO_PYTHON_MODULE
|
||||
moo_la_LDFLAGS = $(moo_la_ldflags)
|
||||
moo_la_LIBADD = moopython/libmoomod.la libmoo.la $(MOO_LIBS) $(PYTHON_LIBS)
|
||||
endif MOO_USE_PYGTK
|
||||
|
||||
if MOO_BUILD_PYTHON_MODULE
|
||||
@ -76,7 +76,32 @@ plugindir = $(MOO_LIB_DIR)/plugins
|
||||
plugin_LTLIBRARIES = pymoo.la
|
||||
plugin_DATA = moopython/pymoo.ini
|
||||
pymoo_la_SOURCES = moo.h
|
||||
pymoo_la_LDFLAGS = -module -no-undefined -export-symbols-regex "moo_module_init"
|
||||
pymoo_la_LIBADD = moopython/libpymoo.la libmoo.la $(PYTHON_LIBS) $(PYTHON_EXTRA_LIBS)
|
||||
pymoo_la_LDFLAGS = $(pymoo_la_ldflags) $(PYTHON_EXTRA_LDFLAGS)
|
||||
pymoo_la_LIBADD = moopython/libpymoo.la libmoo.la $(MOO_LIBS) $(PYTHON_LIBS) $(PYTHON_EXTRA_LIBS)
|
||||
endif MOO_BUILD_PYTHON_MODULE
|
||||
|
||||
endif MOO_INSTALL_LIB
|
||||
|
||||
else !MOO_OS_UNIX
|
||||
if MOO_USE_PYGTK
|
||||
|
||||
lib_LTLIBRARIES += pymoo23.la moo23.la pymoo24.la moo24.la
|
||||
plugindir = $(MOO_LIB_DIR)/plugins
|
||||
plugin_DATA = moopython/pymoo23.ini moopython/pymoo24.ini
|
||||
|
||||
pymoo23_la_SOURCES = moo.h
|
||||
pymoo23_la_LDFLAGS = $(pymoo_la_ldflags) $(PYTHON23_EXTRA_LDFLAGS)
|
||||
pymoo23_la_LIBADD = moopython/libpymoo23.la libmoo.la $(MOO_LIBS) $(PYTHON23_LIBS) $(PYTHON23_EXTRA_LIBS)
|
||||
moo23_la_SOURCES = moo.h
|
||||
moo23_la_LDFLAGS = $(moo_la_ldflags)
|
||||
moo23_la_LIBADD = moopython/libmoomod23.la libmoo.la $(MOO_LIBS) $(PYTHON23_LIBS)
|
||||
|
||||
pymoo24_la_SOURCES = moo.h
|
||||
pymoo24_la_LDFLAGS = $(pymoo_la_ldflags) $(PYTHON24_EXTRA_LDFLAGS)
|
||||
pymoo24_la_LIBADD = moopython/libpymoo23.la libmoo.la $(MOO_LIBS) $(PYTHON24_LIBS) $(PYTHON24_EXTRA_LIBS)
|
||||
moo24_la_SOURCES = moo.h
|
||||
moo24_la_LDFLAGS = $(moo_la_ldflags)
|
||||
moo24_la_LIBADD = moopython/libmoomod24.la libmoo.la $(MOO_LIBS) $(PYTHON24_LIBS)
|
||||
|
||||
endif MOO_USE_PYGTK
|
||||
endif !MOO_OS_UNIX
|
||||
|
@ -13,4 +13,4 @@ Description: A text editor and terminal emulator library
|
||||
Requires: gtk+-2.0 @MOO_XML_PKG_NAME@
|
||||
Version: @MOO_VERSION_UNQUOTED@
|
||||
Cflags: -I@moo_includedir@
|
||||
Libs: -L${libdir} -lmoo @PYTHON_LDFLAGS@
|
||||
Libs: -L${libdir} -lmoo @PYTHON_LIBS@ @PYTHON_EXTRA_LIBS@
|
||||
|
@ -19,7 +19,7 @@
|
||||
#include "mooedit/mooplugin-loader.h"
|
||||
#include "mooedit/moopluginprefs-glade.h"
|
||||
#include "mooedit/plugins/mooeditplugins.h"
|
||||
#include "moopython/moopython.h"
|
||||
#include "moopython/moopython-builtin.h"
|
||||
#include "mooutils/mooprefsdialog.h"
|
||||
#include "mooutils/moostock.h"
|
||||
#include "mooutils/mooutils-misc.h"
|
||||
|
@ -450,7 +450,7 @@ create_folder (G_GNUC_UNUSED MooFileSystem *fs,
|
||||
#ifndef __WIN32__
|
||||
if (mkdir (path, S_IRWXU | S_IRWXG | S_IRWXO))
|
||||
#else
|
||||
if (m_mkdir (path))
|
||||
if (_m_mkdir (path))
|
||||
#endif
|
||||
{
|
||||
int saved_errno = errno;
|
||||
|
@ -1,7 +1,36 @@
|
||||
SUBDIRS = plugins pygtk .
|
||||
|
||||
libmoomod_la_sources = \
|
||||
moo-mod.c \
|
||||
moopython-api.h \
|
||||
moopython-loader.h \
|
||||
moopython-loader.c \
|
||||
moopython-utils.h \
|
||||
moopython-utils.c
|
||||
|
||||
libpymoo_la_sources = \
|
||||
moopython-mod.c \
|
||||
moopython-api.h \
|
||||
moopython-loader.h \
|
||||
moopython-loader.c \
|
||||
moopython-utils.h \
|
||||
moopython-utils.c
|
||||
|
||||
libmoopython_la_sources = \
|
||||
moopython-builtin.h \
|
||||
moopython-builtin.c \
|
||||
moopython-api.h \
|
||||
moopython-loader.h \
|
||||
moopython-loader.c \
|
||||
moopython-utils.h \
|
||||
moopython-utils.c
|
||||
libmoopython_la_libadd = \
|
||||
pygtk/libmoopygtk.la
|
||||
|
||||
noinst_LTLIBRARIES =
|
||||
|
||||
if MOO_OS_UNIX
|
||||
|
||||
if MOO_INSTALL_LIB
|
||||
noinst_LTLIBRARIES += libmoomod.la
|
||||
if MOO_BUILD_PYTHON_MODULE
|
||||
@ -13,34 +42,12 @@ else
|
||||
noinst_LTLIBRARIES += libmoopython.la
|
||||
endif
|
||||
|
||||
libmoomod_la_SOURCES = \
|
||||
moo-mod.c \
|
||||
moopython-api.h \
|
||||
moopython-loader.h \
|
||||
moopython-loader.c \
|
||||
moopython-utils.h \
|
||||
moopython-utils.c
|
||||
libmoomod_la_LIBADD = \
|
||||
pygtk/libmoopygtk.la
|
||||
else !MOO_OS_UNIX
|
||||
|
||||
libpymoo_la_SOURCES = \
|
||||
moopython-mod.c \
|
||||
moopython-api.h \
|
||||
moopython-loader.h \
|
||||
moopython-loader.c \
|
||||
moopython-utils.h \
|
||||
moopython-utils.c
|
||||
noinst_LTLIBRARIES += libmoomod23.la libmoomod24.la
|
||||
noinst_LTLIBRARIES += libpymoo23.la libpymoo24.la
|
||||
|
||||
libmoopython_la_SOURCES = \
|
||||
moopython.h \
|
||||
moopython.c \
|
||||
moopython-api.h \
|
||||
moopython-loader.h \
|
||||
moopython-loader.c \
|
||||
moopython-utils.h \
|
||||
moopython-utils.c
|
||||
libmoopython_la_LIBADD = \
|
||||
pygtk/libmoopygtk.la
|
||||
endif !MOO_OS_UNIX
|
||||
|
||||
AM_CFLAGS = \
|
||||
-I.. \
|
||||
@ -48,14 +55,49 @@ AM_CFLAGS = \
|
||||
$(MOO_CFLAGS) \
|
||||
$(MOO_DEBUG_CFLAGS) \
|
||||
$(PYTHON_CFLAGS) \
|
||||
$(PYGTK_CFLAGS) \
|
||||
$(lib_define)
|
||||
$(PYGTK_CFLAGS)
|
||||
|
||||
py23_cflags = \
|
||||
-I.. \
|
||||
-I$(top_builddir) \
|
||||
$(MOO_CFLAGS) \
|
||||
$(MOO_DEBUG_CFLAGS) \
|
||||
$(PYTHON23_CFLAGS) \
|
||||
$(PYGTK23_CFLAGS) \
|
||||
-DMOO_PYTHON_MODULE_DLL_NAME=\"pymoo.dll\"
|
||||
|
||||
py24_cflags = \
|
||||
-I.. \
|
||||
-I$(top_builddir) \
|
||||
$(MOO_CFLAGS) \
|
||||
$(MOO_DEBUG_CFLAGS) \
|
||||
$(PYTHON24_CFLAGS) \
|
||||
$(PYGTK23_CFLAGS) \
|
||||
-DMOO_PYTHON_MODULE_DLL_NAME=\"pymoo.dll\"
|
||||
|
||||
libmoomod_la_SOURCES = $(libmoomod_la_sources)
|
||||
libmoomod_la_LIBADD = pygtk/libmoopygtk.la
|
||||
libmoomod23_la_SOURCES = $(libmoomod_la_sources)
|
||||
libmoomod23_la_LIBADD = pygtk/libmoopygtk23.la
|
||||
libmoomod23_la_CFLAGS = $(py23_cflags)
|
||||
libmoomod24_la_SOURCES = $(libmoomod_la_sources)
|
||||
libmoomod24_la_LIBADD = pygtk/libmoopygtk24.la
|
||||
libmoomod24_la_CFLAGS = $(py24_cflags)
|
||||
|
||||
libpymoo_la_SOURCES = $(libpymoo_la_sources)
|
||||
libpymoo23_la_SOURCES = $(libpymoo_la_sources)
|
||||
libpymoo23_la_CFLAGS = $(py23_cflags)
|
||||
libpymoo24_la_SOURCES = $(libpymoo_la_sources)
|
||||
libpymoo24_la_CFLAGS = $(py24_cflags)
|
||||
|
||||
libmoopython_la_SOURCES = $(libmoopython_la_sources)
|
||||
libmoopython_la_LIBADD = $(libmoopython_la_libadd)
|
||||
|
||||
EXTRA_DIST = \
|
||||
moo-mod.c \
|
||||
moopython-mod.c \
|
||||
moopython.h \
|
||||
moopython.c \
|
||||
moopython-builtin.h \
|
||||
moopython-builtin.c \
|
||||
moopython-api.h \
|
||||
moopython-loader.h \
|
||||
moopython-loader.c \
|
||||
|
@ -16,16 +16,19 @@
|
||||
#define NO_IMPORT_PYGOBJECT
|
||||
#include <pygobject.h>
|
||||
#include "mooedit/mooplugin-loader.h"
|
||||
#include "moopython/moopython.h"
|
||||
#include "moopython/moopython-builtin.h"
|
||||
#include "moopython/moopython-api.h"
|
||||
#include "moopython/moopython-loader.h"
|
||||
#include "moopython/pygtk/moo-pygtk.h"
|
||||
#include "mooutils/moopython.h"
|
||||
#include "mooutils/mooutils-misc.h"
|
||||
|
||||
gboolean
|
||||
_moo_python_init (void)
|
||||
{
|
||||
if (!moo_python_running ())
|
||||
{
|
||||
if (!_moo_python_api_init ())
|
||||
if (!moo_python_api_init ())
|
||||
{
|
||||
g_warning ("%s: oops", G_STRLOC);
|
||||
return FALSE;
|
||||
@ -35,7 +38,7 @@ _moo_python_init (void)
|
||||
{
|
||||
g_warning ("%s: could not initialize moo module", G_STRLOC);
|
||||
PyErr_Print ();
|
||||
_moo_python_api_deinit ();
|
||||
moo_python_api_deinit ();
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* moopython.h
|
||||
* moopython-builtin.h
|
||||
*
|
||||
* Copyright (C) 2004-2006 by Yevgen Muntyan <muntyan@math.tamu.edu>
|
||||
*
|
||||
@ -11,8 +11,8 @@
|
||||
* See COPYING file that comes with this distribution.
|
||||
*/
|
||||
|
||||
#ifndef __MOO_PYTHON_H__
|
||||
#define __MOO_PYTHON_H__
|
||||
#ifndef __MOO_PYTHON_BUILTIN_H__
|
||||
#define __MOO_PYTHON_BUILTIN_H__
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
@ -24,4 +24,4 @@ gboolean _moo_python_init (void);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __MOO_PYTHON_H__ */
|
||||
#endif /* __MOO_PYTHON_BUILTIN_H__ */
|
@ -22,10 +22,82 @@
|
||||
#include "mooutils/mooutils-misc.h"
|
||||
|
||||
|
||||
static PyObject *sys_module = NULL;
|
||||
|
||||
static gboolean
|
||||
sys_path_add_dir (const char *dir)
|
||||
{
|
||||
PyObject *path;
|
||||
PyObject *s;
|
||||
|
||||
if (!sys_module)
|
||||
sys_module = PyImport_ImportModule ((char*) "sys");
|
||||
|
||||
if (!sys_module)
|
||||
{
|
||||
PyErr_Print ();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
path = PyObject_GetAttrString (sys_module, (char*) "path");
|
||||
|
||||
if (!path)
|
||||
{
|
||||
PyErr_Print ();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!PyList_Check (path))
|
||||
{
|
||||
g_critical ("sys.path is not a list");
|
||||
Py_DECREF (path);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
s = PyString_FromString (dir);
|
||||
PyList_Append (path, s);
|
||||
|
||||
Py_DECREF (s);
|
||||
Py_DECREF (path);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
sys_path_remove_dir (const char *dir)
|
||||
{
|
||||
PyObject *path;
|
||||
int i;
|
||||
|
||||
if (!sys_module)
|
||||
return;
|
||||
|
||||
path = PyObject_GetAttrString (sys_module, (char*) "path");
|
||||
|
||||
if (!path || !PyList_Check (path))
|
||||
return;
|
||||
|
||||
for (i = PyList_GET_SIZE (path) - 1; i >= 0; --i)
|
||||
{
|
||||
PyObject *item = PyList_GET_ITEM (path, i);
|
||||
|
||||
if (PyString_CheckExact (item) &&
|
||||
!strcmp (PyString_AsString (item), dir))
|
||||
{
|
||||
if (PySequence_DelItem (path, i) != 0)
|
||||
PyErr_Print ();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Py_DECREF (path);
|
||||
}
|
||||
|
||||
|
||||
MOO_MODULE_INIT_FUNC_DECL;
|
||||
MOO_MODULE_INIT_FUNC_DECL
|
||||
{
|
||||
PyObject *moo_mod;
|
||||
char *dlldir = NULL;
|
||||
|
||||
if (moo_python_running ())
|
||||
return FALSE;
|
||||
@ -36,8 +108,24 @@ MOO_MODULE_INIT_FUNC_DECL
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
#ifdef __WIN32__
|
||||
dlldir = moo_get_dll_dir (MOO_PYTHON_MODULE_DLL_NAME);
|
||||
#endif
|
||||
|
||||
if (dlldir && !sys_path_add_dir (dlldir))
|
||||
{
|
||||
g_free (dlldir);
|
||||
dlldir = NULL;
|
||||
}
|
||||
|
||||
moo_mod = PyImport_ImportModule ((char*) "moo");
|
||||
|
||||
if (dlldir)
|
||||
{
|
||||
sys_path_remove_dir (dlldir);
|
||||
g_free (dlldir);
|
||||
}
|
||||
|
||||
if (!moo_mod)
|
||||
{
|
||||
PyErr_Print ();
|
||||
|
@ -137,9 +137,18 @@ mooterm-mod.h: mooterm-mod.py $(PY2H)
|
||||
sh $(PY2H) MOO_TERM_PY $(srcdir)/mooterm-mod.py > mooterm-mod.h
|
||||
|
||||
|
||||
if MOO_OS_UNIX
|
||||
noinst_LTLIBRARIES = libmoopygtk.la
|
||||
else
|
||||
noinst_LTLIBRARIES = libmoopygtk23.la libmoopygtk24.la
|
||||
endif
|
||||
|
||||
libmoopygtk_la_SOURCES = $(moopygtk_sources)
|
||||
libmoopygtk23_la_SOURCES = $(moopygtk_sources)
|
||||
libmoopygtk24_la_SOURCES = $(moopygtk_sources)
|
||||
nodist_libmoopygtk_la_SOURCES = $(nodist_moopygtk_sources)
|
||||
nodist_libmoopygtk23_la_SOURCES = $(nodist_moopygtk_sources)
|
||||
nodist_libmoopygtk24_la_SOURCES = $(nodist_moopygtk_sources)
|
||||
|
||||
AM_CFLAGS = \
|
||||
-I../.. \
|
||||
@ -148,3 +157,19 @@ AM_CFLAGS = \
|
||||
$(MOO_DEBUG_CFLAGS) \
|
||||
$(PYTHON_CFLAGS) \
|
||||
$(PYGTK_CFLAGS)
|
||||
|
||||
libmoopygtk23_la_CFLAGS = \
|
||||
-I../.. \
|
||||
-I$(top_builddir) \
|
||||
$(MOO_CFLAGS) \
|
||||
$(MOO_DEBUG_CFLAGS) \
|
||||
$(PYTHON23_CFLAGS) \
|
||||
$(PYGTK23_CFLAGS)
|
||||
|
||||
libmoopygtk24_la_CFLAGS = \
|
||||
-I../.. \
|
||||
-I$(top_builddir) \
|
||||
$(MOO_CFLAGS) \
|
||||
$(MOO_DEBUG_CFLAGS) \
|
||||
$(PYTHON24_CFLAGS) \
|
||||
$(PYGTK24_CFLAGS)
|
||||
|
4
moo/moopython/pymoo23.ini
Normal file
4
moo/moopython/pymoo23.ini
Normal file
@ -0,0 +1,4 @@
|
||||
[module]
|
||||
type=C
|
||||
file=pymoo23/pymoo
|
||||
version=0.7
|
4
moo/moopython/pymoo24.ini
Normal file
4
moo/moopython/pymoo24.ini
Normal file
@ -0,0 +1,4 @@
|
||||
[module]
|
||||
type=C
|
||||
file=pymoo24/pymoo
|
||||
version=0.7
|
@ -1144,43 +1144,62 @@ moo_get_app_dir (void)
|
||||
static char *appdir;
|
||||
|
||||
if (!appdir)
|
||||
{
|
||||
char *appname = NULL;
|
||||
|
||||
if (G_WIN32_HAVE_WIDECHAR_API ())
|
||||
{
|
||||
wchar_t buf[MAX_PATH+1];
|
||||
|
||||
if (GetModuleFileNameW (GetModuleHandle (NULL), buf, G_N_ELEMENTS (buf)) > 0)
|
||||
appname = g_utf16_to_utf8 (buf, -1, NULL, NULL, NULL);
|
||||
}
|
||||
else
|
||||
{
|
||||
gchar buf[MAX_PATH+1];
|
||||
|
||||
if (GetModuleFileNameA (GetModuleHandle (NULL), buf, G_N_ELEMENTS (buf)) > 0)
|
||||
appname = g_locale_to_utf8 (buf, -1, NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
if (appname)
|
||||
{
|
||||
appdir = g_path_get_dirname (appname);
|
||||
g_free (appname);
|
||||
}
|
||||
else
|
||||
{
|
||||
appdir = g_strdup (".");
|
||||
}
|
||||
}
|
||||
appdir = moo_get_dll_dir (NULL);
|
||||
|
||||
return g_strdup (appdir);
|
||||
}
|
||||
|
||||
|
||||
char *
|
||||
moo_get_dll_dir (const char *dll)
|
||||
{
|
||||
char *dir;
|
||||
char *dllname = NULL;
|
||||
HMODULE handle;
|
||||
|
||||
handle = GetModuleHandle (dll);
|
||||
g_return_val_if_fail (handle != NULL, g_strdup ("."));
|
||||
|
||||
if (G_WIN32_HAVE_WIDECHAR_API ())
|
||||
{
|
||||
wchar_t buf[MAX_PATH+1];
|
||||
|
||||
if (GetModuleFileNameW (handle, buf, G_N_ELEMENTS (buf)) > 0)
|
||||
dllname = g_utf16_to_utf8 (buf, -1, NULL, NULL, NULL);
|
||||
}
|
||||
else
|
||||
{
|
||||
gchar buf[MAX_PATH+1];
|
||||
|
||||
if (GetModuleFileNameA (handle, buf, G_N_ELEMENTS (buf)) > 0)
|
||||
dllname = g_locale_to_utf8 (buf, -1, NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
if (dllname)
|
||||
{
|
||||
dir = g_path_get_dirname (dllname);
|
||||
g_free (dllname);
|
||||
}
|
||||
else
|
||||
{
|
||||
dir = g_strdup (".");
|
||||
}
|
||||
|
||||
return dir;
|
||||
}
|
||||
|
||||
#else
|
||||
char *
|
||||
moo_get_app_dir (void)
|
||||
{
|
||||
g_return_val_if_reached (g_strdup ("."));
|
||||
}
|
||||
|
||||
char *
|
||||
moo_get_dll_dir (G_GNUC_UNUSED const char *dll)
|
||||
{
|
||||
g_return_val_if_reached (g_strdup ("."));
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -67,6 +67,7 @@ GType moo_data_dir_type_get_type (void) G_GNUC_CONST;
|
||||
|
||||
/* application directory on win32 */
|
||||
char *moo_get_app_dir (void);
|
||||
char *moo_get_dll_dir (const char *dll);
|
||||
|
||||
/* ~/.appname */
|
||||
gboolean moo_make_user_data_dir (void);
|
||||
|
@ -22,7 +22,7 @@ moopcre_sources = \
|
||||
ucpinternal.h
|
||||
|
||||
EXTRA_DIST = \
|
||||
AUTHORS \
|
||||
AUTHORS.pcre \
|
||||
ChangeLog \
|
||||
COPYING.pcre \
|
||||
NEWS \
|
||||
|
Loading…
x
Reference in New Issue
Block a user