Commit Graph

2141 Commits

Author SHA1 Message Date
Thiago de Arruda
7637c2b664 Disable unit tests until fixed for travis 2014-02-27 18:37:57 -03:00
Thiago de Arruda
d04ca90f5c Add basic infrastructure for unit testing
Tests will be written using the [moonscript](http://moonscript.org/) language,
a lua 'dialect' that is whitespace-significant and has a syntax similar to
coffeescript. The test framework used is [busted](http://olivinelabs.com/busted/),
a bdd framework for lua/moonscript.

Luajit has a nice ffi module, which lets lua programs link shared libraries and
call it's functions without writing any C code.

To take advantage of this fact for testing C functions, a new target was added
to CMakeLists.txt, which compiles neovim as a shared library that is loaded by
the process running the tests.

This commit adds necessary code for downloading and installing a lua package
manager(luarocks) locally. It wasn't added as a subtree because there are quite
a few blobs in its source tree.
2014-02-27 17:55:10 -03:00
Alexis Hildebrandt
05b9e11584 CMakeLists: Improve handling of libintl
by refactoring it into a separate CMake module
2014-02-27 19:11:48 +00:00
Alexis Hildebrandt
fba074d994 CMakeLists: Use nvim target name 2014-02-27 19:11:48 +00:00
John Szakmeister
95db76e280 Improve libintl detection and linking.
This makes it so that a self-installed libintl is now detected and used.
It also attempts to locate a homebrew version of the library, if that
exists.
2014-02-27 19:11:48 +00:00
Alexis Hildebrandt
e728ce95ef Use GNU gettext from homebrew on Mac if available 2014-02-27 19:11:48 +00:00
Rui Abreu Ferreira
82b724af4b Use FindCurses to find curses libraries
- Some systems have the FindCurses.cmake module to find
  the curses/ncurses libraries using find_package(). And
  in some CheckLibraries is not very reliable, so as
  fallback FindCurses is now used if no other option
  works.
2014-02-27 09:23:15 +00:00
Thiago de Arruda
a2ce1df772 Modify travis configuration to install valgrind
This should fix previous build failures
2014-02-26 22:23:51 -03:00
Thiago de Arruda
a97c1754ad Add test reporting to travis script 2014-02-26 21:33:39 -03:00
Thiago de Arruda
baaf24acea Add valgrind suppression file 2014-02-26 16:21:20 -03:00
Thiago de Arruda
c002ffe2f3 Temporarily remove valgrind check in travis build 2014-02-26 15:57:27 -03:00
Thiago de Arruda
cb9a368445 Add configuration to help debug memory leaks 2014-02-26 15:48:26 -03:00
Rich Wareham
de4fbf92d0 link to rt if it provides clock_gettime
As noted in #128, if clock_gettime is provided by librt then it does not
end up being linked into the static libuv.a binary. This might be
considered a bug in libuv but we can address it here.

Detect if librt provides the clock_gettime symbol and, if so, append it
to the list of libraries linked into nvim. On non-librt systems the
behaviour should be as before.
2014-02-26 07:10:21 -03:00
Rich Wareham
2a6780431e make use of libuv when found by CMake 2014-02-26 07:09:11 -03:00
Scott Nielsen
def17b25fe Remove final build warning
This commit removes a K&R promoted parameter error, the final warning
I have when building.

I realize that this creates only one function that is written in a
different style, but I thought it might be worth it to have a warning
free build.
2014-02-26 06:35:29 -03:00
Scott Nielsen
a74c059a3e Remove implicit declaration of vim_strrchr and vim_strncpy 2014-02-26 06:04:30 -03:00
scott-linder
0ef90c13b7 Removes 'proto' dir
See #137 for the issue.

Every header in the proto directory was:

* Given include guards in the form

    #ifndef NEOVIM_FILENAME_H
    #define NEOVIM_FILENAME_H
        ...
    #endif /* NEOVIM_FILENAM_H */

* Renamed from *.pro -> *.h
* Moved from src/proto/ to src/

This would have caused conficts with some existing headers in src/;
rather than merge these conflicts now (which is a whole other can of
worms involving multiple and conditional inclusion), any header in src/
with a conflicting name was renamed from *.h -> *_defs.h (which may or
may not actually describe its purpose, the change is purely a
namespacing issue).

Once all of these changes were made a script was developed to determine
what #includes needed to be added to each source file to describe its
dependencies and allow it to compile; because the script is so short
and I'll just list it here:

    #! /bin/bash

    cd $(dirname $0)

    # Scrapes `make` output for provided error messages and outputs #includes
    # needed to resolve them.
    #   $1 : part of the clang error message between filename and identifier
    list_missing_includes() {
        for file_missing_pair in $(CC=clang make 2>&1 >/dev/null | sed -n "s/\/\(.*\.[hc]\).*$1.*'\(.*\)'.*/\1:\2/p"); do
            fields=(${file_missing_pair//:/ })
            source_file=${fields[0]}
            missing_func=${fields[1]}
            # Try to find the declaration of the missing function.
            echo $(basename $source_file) \
                \#include \"$(grep -r "\b$missing_func __ARGS" | sed -n "s/.*\/\(.*\)\:.*/\1/p")\"
        # Remove duplicates
        done | sort | uniq
    }

    echo "Finding missing function prototypes..."
    list_missing_includes "implicit declaration of function"
    echo "Finding missing identifier declarations..."
    list_missing_includes "use of undeclared identifier"

Each list of required headers was added by hand in the following format:

    #include "vim.h"
    #include "*_defs.h"
    #include "filename.h"
    /* All other includes in same module here, in alphabetical order. */
    /* All includes from other modules (e.g. "os/*.h") here in alphabetical
     * order. */
2014-02-26 04:17:27 -03:00
Thomas Wienecke
82e0636e78 Delete local function strerror and USE_GETCWD define.
Both are useless after porting mch_dirname to libuv.
2014-02-25 21:24:52 -03:00
Thomas Wienecke
8437a4c972 os_unix: Port mch_FullName and mch_isFullName to libuv.
Basically just delete conditional use of fchdir, since the other called
mch_* functions are already ported to libuv.
2014-02-25 18:59:22 -03:00
Thomas Wienecke
1e2da25d3d os_unix: Use libuv uv_cwd instead of getcwd/getwd. 2014-02-25 14:26:21 -03:00
Rich Wareham
4961654a2a CMakeLists: add install target for nvim 2014-02-25 13:20:14 -03:00
Thiago de Arruda
d5f74cf8bb Add missing include guard to os module 2014-02-24 22:41:39 -03:00
Thiago de Arruda
c067e5580b Create new OS module
This module will contain all functions that perform OS calls such as IO,
filesystem access, etc.
2014-02-24 22:17:46 -03:00
Rich Wareham
0f438e42a8 move libuv functions to os.c and io.c module
Despite being an io library, the functions currently implemented with
libuv include some non-I/O tasks like getting the total amount of
memory.
2014-02-24 22:00:03 -03:00
Rich Wareham
65e7610655 os_unix: use libuv total memory function 2014-02-24 22:00:03 -03:00
Rich Wareham
68d8ab54a1 os_unix: switch to libuv chdir() function 2014-02-24 22:00:03 -03:00
Rich Wareham
b58f079d8a os_unix: add #include for libuv 2014-02-24 22:00:03 -03:00
scott-linder
9db0fc3582 Changed name of binary (vim -> nvim).
Also updated affected config files and test49.vim
2014-02-24 18:48:51 -03:00
Ashley Hewson
eedb6a3ad7 Merge pull request #79 from jdiez17/has_neovim
Added 'neovim' to the feature list, following discussion on #44
2014-02-24 21:17:36 +00:00
Rich Wareham
fd346a95fa use CMake's built in pthread detection
CMake ships with a standard FindThreads module which can be used to a)
test for a threading library and b) confirm that it is pthread. It also
allows the hard-coding of the threading library name to be removed from
``src/CMakeLists.txt``.

Make it an error not to have a pthread library installed and indicate to
CMake that we strongly prefer pthread to any other platform threading
library.
2014-02-24 18:52:12 +00:00
jdiez17
be3ce617c7 Changed binary output directory from src/ to bin/ 2014-02-24 14:45:07 -03:00
Christian Wellenbrock
79321c62d5 Use neovim versions of ~/.vim and ~/.vimrc 2014-02-24 14:13:11 -03:00
scott-linder
b76c358f3d Convert function declarations from K&R to ANSI style.
cproto (http://invisible-island.net/cproto/) was used to do the bulk of
the work in batch; even the most recent version had some issues with
typedef'd parameters; a quick "patch" was to modify `lex.l` to
explicitly include all vim typedefs as known types. One example from
`vim.h` is

    typedef unsigned char char_u;

which was added in `lex.l` as

    <INITIAL>char_u    { save_text_offset(); return T_CHAR; }

Even with these changes there were some problems:

* Two files (`mbyte.c` and `os_unix.c`) were not cleanly converted.
* Any function with the `UNUSED` macro in its parameter list was not converted.

Rather than spend more time fixing the automated approach, the two files
`mbyte.c` and `os_unix.c` were converted by hand.

The `UNUSED` macros were compiler specific, and the alternative, generic
version would require a different syntax, so in order to simplify the
conversion all uses of `UNUSED` were stripped, and then the sources were
run back through cproto. It is planned to reconsider each use of
`UNUSED` manually using a new macro definition.
2014-02-24 09:48:18 -05:00
jdiez17
da2906f28e Added 'neovim' to the feature list, following discussion on #44 2014-02-23 16:49:16 +00:00
Mitchell Rosen
19296296db Clean up main.c:parse_command_name 2014-02-22 12:40:59 -08:00
Mitchell Rosen
6ab8968685 Cleanup refactoring in main 2014-02-22 10:13:44 -03:00
aph
63b571dfba fix build on OSX 2014-02-01 17:17:59 +00:00
Thiago de Arruda
8253e29971 Wrap calls to 'get_mess_env' into LIBINTL #ifdefs 2014-02-01 12:22:15 -03:00
Thiago de Arruda
3da78364cc Remove more #ifdef dead code 2014-02-01 11:17:43 -03:00
aph
2d00ead2e5 Fix build on OSX/Archlinux and add README
- remove SELinux dependency for now
- OSX: find libintl.h
- OSX: fix compile errors
- OSX: use hack around gettext nonsense
- fix gettext on ubuntu
- work around Arch's lack of -ltermcap
- add README.md
2014-02-01 10:34:04 -03:00
Thiago de Arruda
72cf89bce8 Import vim from changeset v5628:c9cad40b4181
- Cleanup source tree, leaving only files necessary for compilation/testing
- Process files through unifdef to remove tons of FEAT_* macros
- Process files through uncrustify to normalize source code formatting.
- Port the build system to cmake
2014-01-31 10:39:15 -03:00