aboutsummaryrefslogtreecommitdiffhomepage
path: root/configure.ac
AgeCommit message (Collapse)AuthorFilesLines
2017-03-03build system portability fixesRobin Haberkorn1-6/+20
* especially to improve building on FreeBSD 11 * We need GNU Make, yet alone because Scintilla/Scinterm needs it. We now document that dependency and added an Autoconf check from the autoconf-archive. We make sure that the build process is invoked with GNU make by generating only GNUmakefiles. The Makefile.am files have not been renamed, so this change can be rolled back easily. * Some GNU-Make-specific autoreconf warnings have still been resolved. But not all of them, as this would have been unelegant and we need GNU Make anyway. * Declare ACLOCAL_AMFLAGS to appease autoreconf * Added an explicit check for C++11 from the autoconf-archives. In general we should support building with every C++11 compiler that is sufficiently GNU-like. * Do not use `sed` for inplace editing, as different sed-implementations have mutually incompatible syntax for this. Instead of declaring and checking a dependency on GNU sed, we simply use SciTECO for the editing task. This improves code portability on BSDs. * Similarily, BSD/POSIX `cmp` is supported now. This fixes the test suite on BSD without declaring a dependency on the GNU coreutils. * Simplified sciteco-wrapper generation.
2016-11-22partially reversed/fixed-up b7ff56db631: avoid g_slice allocators and ↵Robin Haberkorn1-0/+2
performance issues with memory measurements * Fixed build problems on Windows * g_slice on Windows has been shown to be of little use either and it does not work well with the GetProcessMemoryInfo() measurements. Also, it brings the same problem as on Glibc: Not even command-line termination returns the memory to the OS. Therefore, we don't use g_slice at all and commented on it. * The custom Linux and Windows memory measurement approaches have been shown to be inefficient. As a workaround, scripts disable memory limiting. * A better approach -- but it will only work on Glibc -- might be to hook into malloc(), realloc() and free() globally and use the malloc_usable_size() of a heap object for memory measurements. This will be relatively precise and cheap. * We still need the "Object" base class in order to measure memory usage as a fallback approach.
2016-11-20fixed glib warnings about using g_mem_set_vtable() and revised memory limitingRobin Haberkorn1-2/+6
* we were basing the glib allocators on throwing std::bad_alloc just like the C++ operators. However, this always was unsafe since we were throwing exceptions across plain-C frames (Glib). Also, the memory vtable has been deprecated in Glib, resulting in ugly warnings. * Instead, we now let the C++ new/delete operators work like Glib by basing them on g_malloc/g_slice. This means they will assert and the application will terminate abnormally in case of OOM. OOMs cannot be handled properly anyway, so it is more important to have a good memory limiting mechanism. * Memory limiting has been completely revised. Instead of approximating undo stack sizes using virtual methods (which is unprecise and comes with a performance penalty), we now use a common base class SciTECO::Object to count the memory required by all objects allocated within SciTECO. This is less precise than using global replacement new/deletes which would allow us to control allocations in all C++ code including Scintilla, but they are only supported as of C++14 (GCC 5) and adding compile-time checks would be cumbersome. In any case, we're missing Glib allocations (esp. strings). * As a platform-specific extension, on Linux/glibc we use mallinfo() to count the exact memory usage of the process. On Windows, we use GetProcessMemoryInfo() -- the latter implementation is currently UNTESTED. * We use g_malloc() for new/delete operators when there is malloc_trim() since g_slice does not free heap chunks properly (probably does its own mmap()ing), rendering malloc_trim() ineffective. We've also benchmarked g_slice on Linux/glib (malloc_trim() shouldn't be available elsewhere) and found that it brings no significant performance benefit. On all other platforms, we use g_slice since it is assumed that it at least does not hurt. The new g_slice based allocators should be tested on MSVCRT since I assume that they bring a significant performance benefit on Windows. * Memory limiting does now work in batch mode as well and is still enabled by default. * The old UndoTokenWithSize CRTP hack could be removed. UndoStack operations should be a bit faster now. But on the other hand, there will be an overhead due to repeated memory limit checking on every processed character.
2016-11-18implemented self-documenting (online) help systemRobin Haberkorn1-5/+14
* the new "?" (help) command can be used to look up help topics. * help topics are index from $SCITECOPATH/women/*.woman.tec files. * looking up a help topic opens the corresponding "womanpage" and jumps to the position of the topic (it acts like an anchor into the document). * styling is performed by *.woman.tec files. * Setting up the Scintilla view and munging the *.tec file is performed by the new "woman.tes" lexer. On supporting UIs (Gtk), womanpages are shown in a variable-width font. * Woman pages are usually not hand-written, but generated from manpages. A special Groff post-processor grosciteco has been introduced for this purpose. It is much like grotty, but can output SciTECO macros for styling the document (ie. the *.woman.tec files). It is documented in its own man-page. * grosciteco also introduces sciteco.tmac - special Troff macros for controlling the formatting of the document in SciTECO. It also defines .SCITECO_TOPIC which can be used to mark up help topics/terms in Troff markup. * Woman pages are generated/formatted by grosciteco at compile-time, so they will work on platforms without Groff (ie. as on windows). * Groff has been added as a hard compile-time requirement. * The sciteco(1) and sciteco(7) man pages have been augmented with help topic anchors.
2016-02-18replace custom Gob2 check with GOB2_CHECK() from gob2.m4Robin Haberkorn1-4/+2
* Allows us to check for the Gob2 version at ./configure time * this file ships with Gob2 installations, so in most cases it could be found without shipping it with SciTECO. * Autoconf is built such that source distributions will contain all additional external macros compiled in aclocal.m4. * However if somebody builds from Git, he/she would still expect the ./configure checks to produce meaningful results even if not all dependencies are installed properly. It therefore seems to be good practice to include all external M4 macros (gob2.m4) as a fallback with the source tree. * /usr/share/aclocal contains many more useful m4 macros. However since we can depend on pkg-config e.g. for finding Gtk+ and Glib, I won't use those macros as else I would have to bundle them to achieve the same kind of ./configure robustness.
2016-02-16distribution helper script: let it be preprocessed/substituted by AutoconfRobin Haberkorn1-1/+1
* makes sense since it already extracted information from ./configure that is usually substituted. * it already had to be run from a configured build directory * it required the source tree directory, which had to be overwritten on the Make command line when using an out-of-source build dir. This is no longer necessary. * It is still a stand-alone Makefile to keep it isolated from the main build system, although it could certainly be translated to Automake. * the generated file will now be called distribute.mk to signify that it is a Makefile.
2016-02-16finally added Autotest suiteRobin Haberkorn1-0/+2
* Autotest ships with Autoconf, so it's available already and relatively easy to integrate into an Autotools package. * This is attached to `make check` using some Automake magic. * The test suite will only call the built SciTECO for the time being. But using tests/Makefile.am, custom programs could be easily built. * Since it uses the target sciteco, it cannot work in cross-compile environments. * The test suite tests/testsuite.at should be used for regression tests at least: Whenever there is a bug, a test case should be added to testsuite.at. Later this might be split up into multiple includes for regressions other tests.
2016-02-11pass user/maintainer provided CXXFLAGS to the Scintilla build processRobin Haberkorn1-0/+8
* Usually, Scintilla will now be built with -O2 * this can improve performance significantly over the standard Scintilla -Os (up to 10%). * this also allows link-time-optimizing both Scintilla and SciTECO (which are linked statically) by adding -flto to CFLAGS, CXXFLAGS and LDFLAGS. Link-time-optimization will both reduce the total binary size and improve performance slightly since scintilla_send_message() can be inlined. An -O3 optimized Scintilla when linked with LTO results in an only 300kb larger SciTECO binary. * the highest possible optimization thus requires the following maintainer flags on the ./configure command line: CFLAGS="-O3 -mtune=native -march=native -flto" CXXFLAGS="-O3 -mtune=native -march=native -flto" LDFLAGS="-flto" * Windows and Debian builds use link-time-optimization now. On Windows - where we link in everything statically - building the dependant libraries with -flto could improve performance even more. * Debian builds respect the default hardening flags of the build server now. This should ensure that SciTECO is built for the correct architecture at the recommended optimization level etc.
2016-01-31interfaces have their own automake subdirectories and convenience libraries nowRobin Haberkorn1-4/+16
* use libtool convenience libraries as much as possible (for all static libraries except Scintilla) * improves separation of language and user interface implementations (e.g. the Gtk widgets are not interesting for the rest of SciTECO) * the Curses popup widget can now be factored out of interface-curses.cpp * some common CPPFLAGS are now defined by ./configure via AM_CPPFLAGS, so they don't have to be repeated in each submodule. * fixed building the Curses UI: GTK_FLOW_BOX_FALLBACK conditional must always be defined.
2016-01-31updated to Gtk+ 3 and revamped the Gtk interface's popup widgetRobin Haberkorn1-3/+14
* depend on Gtk+ 3.10. If necessary older versions should also be supportable. GtkOverlay was already introduced in v3.2 * A fallback for GtkFlowBox is compiled in if the Gtk installation is too old. This applies even to Ubuntu 14.04 which still runs Gtk v3.10. * the threading the Gtk UI is left as it is for the time being even though the synchronization mechanism has been deprecated. Alternative approaches have to be tried out and benchmarked. * Completely revamped the GtkInfoPopup widget. It is now as powerful as the Curses UI's popup widget. * A GtkOverlay is used instead of the top-level window hack in the Gtk2 version. * GtkFlowBox is used to lay out the columns of the popup. * I had to work around restrictions of GtkScrolledWindow by writing my own poor-mans scrolled window which handles size requests correctly. * The popup window no longer overflows the screen size, instead we scroll. * Scrolling pagewise is finally supported. Wraps at the end of a list just like the Curses UI. * Instead of using only two stock icons, we now use GIO to get file and directory icons for the current theme. This looks even better. * The GtkFlowBox allows selections which can be used for mouse interaction later. But this is not yet implemented. * Theming of the popup widget and command line is still not performed correctly.
2015-07-28added full Haiku OS support (non x86_gcc2)Robin Haberkorn1-1/+2
* Haiku can be handled like UNIX in most respects since it is POSIX compliant, has a UNIX-like terminal emulator and uses ncurses. * still the Glib platform macro is G_OS_HAIKU instead of G_OS_UNIX, so the preprocessor conditionals had to be adapted. * the only functional difference between a Haiku and UNIX build is the default SCITECOCONFIG path. We use the config path returned by Glib instead of $HOME, so .teco_ini will be in ~/config/settings on Haiku. Other UNIX ports appear to use the same conventions. * Some Haiku-specific restrictions still apply: * Haiku's terminal is xterm-compatible, but only supports 8 colors. Therefore only the terminal.tes color scheme can be used and the terminal must be set up to "Use bright instead of bold text". * The terminal has artifacts. This appears to be a Haiku bug and affects other curses applications as well. * GTK is yet unsupported on Haiku, so there may never be a GUI port (unless someone writes a QT GUI for SciTECO). * SciTECO cannot be built with the legacy gcc2 used for BeOS compatibility on Haiku. This would require too many changes for an obsolete platform. BeOS and the x86_gcc2 platform of Haiku will therefore never be supported. The PPC and ARM platforms of Haiku should work but are untested. * a HaikuPorts recipe will be provided for the next regular SciTECO release. This should hopefully allow installation via HaikuDepot.
2015-06-22added XCurses supportRobin Haberkorn1-1/+33
* enabled via --with-interface=xcurses, so we can configure it automatically via xcurses-config. This also adds XCURSES_CFLAGS and XCURSES_LIBS. * The X11 window class name is set to "SciTECO". X11 resource overrides can currently not be set via sciteco's command line. The user may use .Xdefaults though. * interruptions via CTRL+C are currently not supported. Apparently, XCurses also does send SIGINT in cbreak() mode. An XCurses-specific hack would be cumbersome. * ~InterfaceCurses() should probably be rewritten. Curses cleanup should be completely in restore_batch() as the destructor may be called after Curses-cleanup handlers. E.g. isendwin() SEGFAULTs on XCurses when called from the destructor.
2015-06-22pass curses CFLAGS into Scinterm build systemRobin Haberkorn1-6/+24
* requires a recent patch to Scinterm * can be overwritten in SciTECO's build system via NCURSES_CFLAGS or PDCURSES_CFLAGS. * NCURSES_LIBS has also been introduced. The check for ncurses will now use pkg-config if available. * eases multiple builds with different Curses variants (e.g. when cross-compiling for Windows) * pass more toolchain variables into Scintilla build process (CC and RANLIB). This should fix Cross-compiling Scintilla/Gtk * Pass GTK cflags into Scintilla/Gtk build system.
2015-03-18bumped release version to v0.6.4, updated ChangeLog and clarify libglib ↵Robin Haberkorn1-2/+2
minimum version * it was necessary to increase the upstream version so I could upload new versions to launchpad while debugging PPA build issues. * ChangeLog finalized for v0.6.4 * SciTECO requires at least libglib v2.28 (but that's only a guess)
2015-03-17added PDCURSES_LIBS ./configure variable to overwrite the check for PDCursesRobin Haberkorn1-11/+13
* allows us to link against PDCurses/win32a statically. It requires additional Windows DLLs (gdi32 and comdlg32) and since there's no PDCurses configuration mechanism, it is easiest to set the PDCurses linker flags using a PDCURSES_LIBS env variable. * This is only possible since Scintilla links statically, we do the linking of the binary and can provide the linker flags. It is still not possible to overwrite the CFLAGS used for PDCurses without modifying the Scinterm Makefile. * Using PDCURSES_LIBS we can get rid of --with-interface=emcurses since if library checks fail with EMscripten, we can simply define PDCURSES_LIBS="-lpdcurses"
2015-03-16removed check for glibc-compatible malloc and reallocRobin Haberkorn1-2/+0
the MSVCRT versions are not glibc-compatible and we do not actually need glibc compatible versions, as all allocations are done through the libglib wrappers.
2015-03-16implemented automatic EOL translation supportRobin Haberkorn1-3/+11
* activated via bit 4 of the ED flag (enabled by default) * automatic EOL guessing on file loading and translation to LFs. * works with files that have inconsistent EOL sequences. * automatic translation to original EOL sequences on file saving * works with inconsistent EOL sequences in the buffer. This should usually not happen if the file was read in with automatic EOL translation enabled. * also works with the EC and EG commands * performance is OK, depending on the file being translated. When reading files with UNIX EOLs, the overhead is minimal typically-sized files. For DOS EOLs the overhead is larger but still acceptable. * Return (line feed) is now an immediate editing command. This centralizes EOL sequence insertion. Later, other features like auto-indent could be added to the editing command. * get_eol() has been moved to main.cpp (now called get_eol_seq() * Warn if file ownership could not be preserved when saving files. * IOView has been almost completely rewritten based on GIOChannels. The EOL translation code is also in IOView.
2015-03-16also set window title on ncurses, by querying terminfo capabilitiesRobin Haberkorn1-0/+1
2015-03-10added SciTECO icon and compile it into Windows binariesRobin Haberkorn1-0/+12
* sciteco.ico contains a 16 color 16px, a 255 color 32px and a true color 48px version of the icon. The first ones are good for legacy Windows versions like 2000, while the latter one should be preferred by Windows >= 7. * Also added the 48px version as a PNG for Linux. But it is not installed currently, as there is no standardized place for it and it wouldn't do much good in /usr/share/sciteco.
2015-03-10added ./configure --enable-static-executables optionRobin Haberkorn1-0/+14
* This adds the -all-static libtool option and can be used to link a static sciteco binary (or at least link in as few as possible dynamic libraries) * Esp. useful on MinGW to link in all dependant libraries (glib, libintl, libiconv, libpdcurses, ...) statically. A static .exe is much smaller than a dynamically linked plus all the DLLs and is easier to relocate. * This does not guarantee that ALL libraries are linked in dynamically. E.g. on MinGW, the sciteco.exe will still link to MSVCRT and the Windows system DLLs, but they already ship with Windows. * On MinGW, even a static build will still require the gspawn-win32-helper-console.exe which is used by glib to implement g_spawn with redirection. We cannot get around that. * It would be better to let this be decided by the package builder using the standard env variables like LDFLAGS. However, this does not seem to work well with libtool. It IS possible to define LDFLAGS="-all-static" when calling make but this approach sucks.
2015-03-09improved error message when libpdcurses is not foundRobin Haberkorn1-1/+2
* PDCurses build system produces static libraries that cannot be found by Autoconf (pdcurses.a) and often files have the wrong permissions.
2015-03-07improved --help output and introduced PACKAGE_URL_DEV (for development home)Robin Haberkorn1-0/+4
* The PACKAGE_URL_DEV is also mentioned in --help output and sciteco(1)
2015-03-03define -DCURSES instead of -DNCURSESRobin Haberkorn1-1/+1
* has been changed in Scinterm some time ago * I don't know if defining this makes actually any difference, but Jinx does it.
2015-03-02try hard to free heap memory after command-line termination using malloc_trim()Robin Haberkorn1-0/+5
* this is a Linux/glibc-only optimization
2014-11-24introduced $SCITECOCONFIG env variable, and set different default for ↵Robin Haberkorn1-7/+0
$SCITECOPATH on Windows * $SCITECOCONFIG has been introduced, so have a macro-accessible location for the profile, buffer session etc. This is set to the program dir on Windows. That way, the config files will be found, regardless of the current working dir, but it may also be set up for Unix-like environments on Windows. * $SCITECOPATH defaults to the program dir + "/lib" now on Windows. * The default profile is now always called ".teco_ini". Also on Windows. Platform differences like this would need to be documented. * The sample teco.ini has been renamed to "sample.teco_ini" for clarity
2014-11-17renamed the "NCurses" UI to "Curses" internallyRobin Haberkorn1-1/+1
* does not change ./configure parameters You still have to specifiy --with-interface=ncurses for the Curses interface with default settings * the "NCurses" UI was used for many different Curses variants, so plain "Curses" is a better name.
2014-11-16enable bootstrapping by defaultRobin Haberkorn1-6/+7
The SciTECO language changes often and the build system scripts are adapted accordingly. If bootstrapping is disabled by default on systems that already have SciTECO, building recent Git versions will fail often due to macro errors. This is not easy to see and correct for users. Also the build-time overhead for `sciteco-minimal` is minimal. The --disable-bootstrap option is mostly useful when cross-compiling SciTECO.
2014-08-22automatically build Scintilla as part of SciTECO's build system:Robin Haberkorn1-2/+6
this should simplify building SciTECO for new users * compiler and archiver are passed down from Autoconf, so cross-compiling should work transparently * `make clean` will also clean the Scintilla source tree * there is no longer any need for "source bundles" as tar balls also contain Scintilla/Scinterm now * building from Git is not much more difficult than building from a tar ball * The versions of Scintilla/Scinterm embedded as submodules already contain all the patches necessary (currently none are necessary), so there's no need to have patch files in the repository * INSTALL instructions have been rewritten * the --with-scintilla and --with-scinterm site-config options have been kept. But they should be rarely necessary now.
2014-02-17mention sciteco.sf.net as the project's homepageRobin Haberkorn1-1/+1
2014-02-16treat Emscripten's em++ like ClangRobin Haberkorn1-1/+2
2014-02-16prepare new target release v0.6Robin Haberkorn1-1/+1
2014-02-15added EMCurses/Emscripten supportRobin Haberkorn1-1/+7
by building with Emscripten support, SciTECO may be embedded into web pages. * sciteco.html is not a piece of documentation but a sample SciTECO embedding
2013-07-09fixed compilation of the GTK+ interfaceRobin Haberkorn1-1/+1
* there was a compile-time race condition that could result in the GObjects not being built (with Gob2). So I removed the symbols generation from BUILT_SOURCES. * apparently either Scintilla depends on gmodule since I last tested or the gtk+-2.0 pkg-config package no longer includes gmodule, so we must explicitly depend on it
2013-03-20updated version to 0.5Robin Haberkorn1-1/+1
2013-03-20replace GNU readlink dependency with custom canonicalize() shell functionRobin Haberkorn1-9/+10
* some build environments (like XCode) do not have a GNU readlink by default
2013-03-20default Scintilla-path is ../scintillaRobin Haberkorn1-2/+2
so no additional --with-scintilla is necessary when building from a source bundle
2013-03-18add check for CLang: use clang-specific warnings only when compiling with CLangRobin Haberkorn1-0/+3
* fixes gcc-4.4 which does not have -Wno-mismatched-tags and no -Wunknown-warning
2013-03-16add links to Github pagesRobin Haberkorn1-1/+1
2013-03-16manual chapters: Expressions, Command Syntax, Q-RegistersRobin Haberkorn1-0/+1
2013-03-16added option to build manuals as HTML using GroffRobin Haberkorn1-0/+13
* will be useful for Windows builds since Windows users usally do not have a man-page formatter/reader
2013-02-25integrate Doxygen into build systemRobin Haberkorn1-2/+20
* solely for generating developer docs * disabled by default even if Doxygen is installed * Doxygen comments are not used currently
2013-02-22use typedef for SciTECO integers and make it configurable at configure timeRobin Haberkorn1-0/+6
* storage size should always be 64 (gint64) to aid macro portability * however, for performance reasons users compiling from source might explicitly compile with 32 bit integers
2013-02-22added --with-default-scitecopath config option: default value of $SCITECOPATHRobin Haberkorn1-3/+10
useful for Windows where the desired default path does not correspond with the installation dir of the std lib macros
2013-02-22added --with-scinterm site-config option and cleaned up Curses configurationRobin Haberkorn1-21/+23
may be used to have multiple scinterm-versions in the Scintilla source tree
2013-02-22VPATH build fixes: SciTECO can now be built from a parallel source treeRobin Haberkorn1-2/+1
...which is useful when crosscompiling for MinGW
2013-02-22clean up SciTECO bootstrapping by building convenience libraryRobin Haberkorn1-3/+3
* pkg-config LIBS should be added to $LIBS so that link order is correct
2013-02-15install standard macros into special standard library path (pkgdatadir/lib)Robin Haberkorn1-1/+6
* SCITECOPATH environment variable defaults to this directory * manpage updated * default teco.ini updated: no need to generate it anymore
2013-02-01perform additional expansions on explicitly-specified Scintilla pathsRobin Haberkorn1-1/+3
a common ./configure parameter would be --with-scintilla=~/scintilla. however the calling shell will not expand tilde and the invoked shell will not automatically fully expand variables.
2013-01-31fixed bootstrapping using sciteco-minimal and bootstrap autodetectionRobin Haberkorn1-1/+1
was broken due to untested changes
2013-01-27moved manpage to doc/ subdirRobin Haberkorn1-1/+1
later there will be much more documentation