Merge pull request #137 from uucidl/building-on-appveyor
Building on appveyor
This commit is contained in:
commit
a7a5e8cfad
21 changed files with 305 additions and 13 deletions
19
appveyor.yml
Normal file
19
appveyor.yml
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
platform:
|
||||||
|
- x86
|
||||||
|
- x64
|
||||||
|
version: 1.0.{build}
|
||||||
|
os: Visual Studio 2015
|
||||||
|
build_script:
|
||||||
|
- '@echo off'
|
||||||
|
- setlocal
|
||||||
|
- ps: >-
|
||||||
|
If ($env:Platform -Match "x86") {
|
||||||
|
$env:VCVARS_PLATFORM="x86"
|
||||||
|
} Else {
|
||||||
|
$env:VCVARS_PLATFORM="amd64"
|
||||||
|
}
|
||||||
|
- call "%VS140COMNTOOLS%\..\..\VC\vcvarsall.bat" %VCVARS_PLATFORM%
|
||||||
|
- call tools\windows\build.bat
|
||||||
|
# FIXME(windows) TODO(uucidl): reactivate examples
|
||||||
|
# - call tools\windows\build_examples.bat
|
||||||
|
- exit /b 0
|
||||||
|
|
@ -5,6 +5,7 @@ Import('env testruns')
|
||||||
dist_headers = [
|
dist_headers = [
|
||||||
"hammer.h",
|
"hammer.h",
|
||||||
"allocator.h",
|
"allocator.h",
|
||||||
|
"compiler_specifics.h",
|
||||||
"glue.h",
|
"glue.h",
|
||||||
"internal.h"
|
"internal.h"
|
||||||
]
|
]
|
||||||
|
|
@ -61,6 +62,7 @@ misc_hammer_parts = [
|
||||||
'desugar.c',
|
'desugar.c',
|
||||||
'glue.c',
|
'glue.c',
|
||||||
'hammer.c',
|
'hammer.c',
|
||||||
|
'platform_bsdlike.c',
|
||||||
'pprint.c',
|
'pprint.c',
|
||||||
'registry.c',
|
'registry.c',
|
||||||
'system_allocator.c']
|
'system_allocator.c']
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ struct HCFStack_ {
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifndef UNUSED
|
#ifndef UNUSED
|
||||||
#define UNUSED __attribute__((unused))
|
#define UNUSED H_GCC_ATTRIBUTE((unused))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static inline HCFChoice* h_cfstack_new_choice_raw(HAllocator *mm__, HCFStack *stk__) UNUSED;
|
static inline HCFChoice* h_cfstack_new_choice_raw(HAllocator *mm__, HCFStack *stk__) UNUSED;
|
||||||
|
|
|
||||||
|
|
@ -126,7 +126,7 @@ HParseResult* grow(HParserCacheKey *k, HParseState *state, HRecursionHead *head)
|
||||||
h_hashtable_put(state->recursion_heads, &k->input_pos, head);
|
h_hashtable_put(state->recursion_heads, &k->input_pos, head);
|
||||||
HParserCacheValue *old_cached = h_hashtable_get(state->cache, k);
|
HParserCacheValue *old_cached = h_hashtable_get(state->cache, k);
|
||||||
if (!old_cached || PC_LEFT == old_cached->value_type)
|
if (!old_cached || PC_LEFT == old_cached->value_type)
|
||||||
errx(1, "impossible match");
|
h_platform_errx(1, "impossible match");
|
||||||
HParseResult *old_res = old_cached->right;
|
HParseResult *old_res = old_cached->right;
|
||||||
|
|
||||||
// rewind the input
|
// rewind the input
|
||||||
|
|
@ -148,7 +148,7 @@ HParseResult* grow(HParserCacheKey *k, HParseState *state, HRecursionHead *head)
|
||||||
state->input_stream = cached->input_stream;
|
state->input_stream = cached->input_stream;
|
||||||
return cached->right;
|
return cached->right;
|
||||||
} else {
|
} else {
|
||||||
errx(1, "impossible match");
|
h_platform_errx(1, "impossible match");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -173,7 +173,7 @@ HParseResult* lr_answer(HParserCacheKey *k, HParseState *state, HLeftRec *growab
|
||||||
return grow(k, state, growable->head);
|
return grow(k, state, growable->head);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
errx(1, "lrAnswer with no head");
|
h_platform_errx(1, "lrAnswer with no head");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
#include <hammer/hammer.hpp>
|
#include <hammer/hammer.hpp>
|
||||||
|
|
||||||
#define HAMMER_DECL_UNUSED __attribute__((unused))
|
#define HAMMER_DECL_UNUSED H_GCC_ATTRIBUTE((unused))
|
||||||
|
|
||||||
static ::testing::AssertionResult ParseFails (hammer::Parser parser,
|
static ::testing::AssertionResult ParseFails (hammer::Parser parser,
|
||||||
const std::string &input) HAMMER_DECL_UNUSED;
|
const std::string &input) HAMMER_DECL_UNUSED;
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ while(<>) {
|
||||||
} elsif (/^HAMMER_FN_DECL\(([^,]*), ([^,]*), ([^)]*)\);/) {
|
} elsif (/^HAMMER_FN_DECL\(([^,]*), ([^,]*), ([^)]*)\);/) {
|
||||||
print "$1 $2($3);\n";
|
print "$1 $2($3);\n";
|
||||||
print "$1 $2__m(HAllocator* mm__, $3);\n";
|
print "$1 $2__m(HAllocator* mm__, $3);\n";
|
||||||
} elsif (/^HAMMER_FN_DECL_VARARGS_ATTR\((__attribute__\(\([^)]*\)\)), ([^,]*), ([^,]*), ([^)]*)\);/) {
|
} elsif (/^HAMMER_FN_DECL_VARARGS_ATTR\((H_GCC_ATTRIBUTE\(\([^)]*\)\)), ([^,]*), ([^,]*), ([^)]*)\);/) {
|
||||||
print "$2 $3($4, ...);\n";
|
print "$2 $3($4, ...);\n";
|
||||||
print "$2 $3__m(HAllocator *mm__, $4, ...);\n";
|
print "$2 $3__m(HAllocator *mm__, $4, ...);\n";
|
||||||
print "$2 $3__a(void* args);\n";
|
print "$2 $3__a(void* args);\n";
|
||||||
|
|
|
||||||
16
src/compiler_specifics.h
Normal file
16
src/compiler_specifics.h
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
#ifndef HAMMER_COMPILER_SPECIFICS__H
|
||||||
|
#define HAMMER_COMPILER_SPECIFICS__H
|
||||||
|
|
||||||
|
#if defined(__clang__) || defined(__GNUC__)
|
||||||
|
#define H_GCC_ATTRIBUTE(x) __attribute__(x)
|
||||||
|
#else
|
||||||
|
#define H_GCC_ATTRIBUTE(x)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(_MSC_VER)
|
||||||
|
#define H_MSVC_DECLSPEC(x) __declspec(x)
|
||||||
|
#else
|
||||||
|
#define H_MSVC_DECLSPEC(x)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -17,7 +17,6 @@
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <err.h>
|
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,9 @@
|
||||||
|
|
||||||
#ifndef HAMMER_HAMMER__H
|
#ifndef HAMMER_HAMMER__H
|
||||||
#define HAMMER_HAMMER__H
|
#define HAMMER_HAMMER__H
|
||||||
|
|
||||||
|
#include "compiler_specifics.h"
|
||||||
|
|
||||||
#ifndef HAMMER_INTERNAL__NO_STDARG_H
|
#ifndef HAMMER_INTERNAL__NO_STDARG_H
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#endif // HAMMER_INTERNAL__NO_STDARG_H
|
#endif // HAMMER_INTERNAL__NO_STDARG_H
|
||||||
|
|
@ -434,7 +437,7 @@ HAMMER_FN_DECL_NOARG(HParser*, h_nothing_p);
|
||||||
*
|
*
|
||||||
* Result token type: TT_SEQUENCE
|
* Result token type: TT_SEQUENCE
|
||||||
*/
|
*/
|
||||||
HAMMER_FN_DECL_VARARGS_ATTR(__attribute__((sentinel)), HParser*, h_sequence, HParser* p);
|
HAMMER_FN_DECL_VARARGS_ATTR(H_GCC_ATTRIBUTE((sentinel)), HParser*, h_sequence, HParser* p);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Given an array of parsers, p_array, apply each parser in order. The
|
* Given an array of parsers, p_array, apply each parser in order. The
|
||||||
|
|
@ -443,7 +446,7 @@ HAMMER_FN_DECL_VARARGS_ATTR(__attribute__((sentinel)), HParser*, h_sequence, HPa
|
||||||
*
|
*
|
||||||
* Result token type: The type of the first successful parser's result.
|
* Result token type: The type of the first successful parser's result.
|
||||||
*/
|
*/
|
||||||
HAMMER_FN_DECL_VARARGS_ATTR(__attribute__((sentinel)), HParser*, h_choice, HParser* p);
|
HAMMER_FN_DECL_VARARGS_ATTR(H_GCC_ATTRIBUTE((sentinel)), HParser*, h_choice, HParser* p);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Given a null-terminated list of parsers, match a permutation phrase of these
|
* Given a null-terminated list of parsers, match a permutation phrase of these
|
||||||
|
|
@ -469,7 +472,7 @@ HAMMER_FN_DECL_VARARGS_ATTR(__attribute__((sentinel)), HParser*, h_choice, HPars
|
||||||
*
|
*
|
||||||
* Result token type: TT_SEQUENCE
|
* Result token type: TT_SEQUENCE
|
||||||
*/
|
*/
|
||||||
HAMMER_FN_DECL_VARARGS_ATTR(__attribute__((sentinel)), HParser*, h_permutation, HParser* p);
|
HAMMER_FN_DECL_VARARGS_ATTR(H_GCC_ATTRIBUTE((sentinel)), HParser*, h_permutation, HParser* p);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Given two parsers, p1 and p2, this parser succeeds in the following
|
* Given two parsers, p1 and p2, this parser succeeds in the following
|
||||||
|
|
|
||||||
|
|
@ -24,9 +24,9 @@
|
||||||
#define HAMMER_INTERNAL__H
|
#define HAMMER_INTERNAL__H
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <err.h>
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "hammer.h"
|
#include "hammer.h"
|
||||||
|
#include "platform.h"
|
||||||
|
|
||||||
/* "Internal" in this case means "we're not ready to commit
|
/* "Internal" in this case means "we're not ready to commit
|
||||||
* to a public API." Many structures and routines here will be
|
* to a public API." Many structures and routines here will be
|
||||||
|
|
@ -38,7 +38,7 @@
|
||||||
#else
|
#else
|
||||||
#define assert_message(check, message) do { \
|
#define assert_message(check, message) do { \
|
||||||
if (!(check)) \
|
if (!(check)) \
|
||||||
errx(1, "Assertion failed (programmer error): %s", message); \
|
h_platform_errx(1, "Assertion failed (programmer error): %s", message); \
|
||||||
} while(0)
|
} while(0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -246,7 +246,7 @@ static HParseResult* parse_length_value(void *env, HParseState *state) {
|
||||||
if (!len)
|
if (!len)
|
||||||
return NULL;
|
return NULL;
|
||||||
if (len->ast->token_type != TT_UINT)
|
if (len->ast->token_type != TT_UINT)
|
||||||
errx(1, "Length parser must return an unsigned integer");
|
h_platform_errx(1, "Length parser must return an unsigned integer");
|
||||||
// TODO: allocate this using public functions
|
// TODO: allocate this using public functions
|
||||||
HRepeat repeat = {
|
HRepeat repeat = {
|
||||||
.p = lv->value,
|
.p = lv->value,
|
||||||
|
|
|
||||||
18
src/platform.h
Normal file
18
src/platform.h
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
#ifndef HAMMER_PLATFORM__H
|
||||||
|
#define HAMMER_PLATFORM__H
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file interface between hammer and the operating system /
|
||||||
|
* underlying platform.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "compiler_specifics.h"
|
||||||
|
|
||||||
|
/* Error Reporting */
|
||||||
|
|
||||||
|
/* BSD errx function, seen in err.h */
|
||||||
|
H_MSVC_DECLSPEC(noreturn) \
|
||||||
|
void h_platform_errx(int err, const char* format, ...) \
|
||||||
|
H_GCC_ATTRIBUTE((noreturn, format (printf,2,3)));
|
||||||
|
|
||||||
|
#endif
|
||||||
10
src/platform_bsdlike.c
Normal file
10
src/platform_bsdlike.c
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
#include "platform.h"
|
||||||
|
|
||||||
|
#include <err.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
void h_platform_errx(int err, const char* format, ...) {
|
||||||
|
va_list ap;
|
||||||
|
va_start(ap, format);
|
||||||
|
verrx(err, format, ap);
|
||||||
|
}
|
||||||
10
src/platform_win32.c
Normal file
10
src/platform_win32.c
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
#include "platform.h"
|
||||||
|
|
||||||
|
#define WIN32_LEAN_AND_MEAN
|
||||||
|
#include "windows.h"
|
||||||
|
|
||||||
|
void h_platform_errx(int err, const char* format, ...) {
|
||||||
|
// FIXME(windows) TODO(uucidl): to be implemented
|
||||||
|
ExitProcess(err);
|
||||||
|
}
|
||||||
|
|
||||||
1
tools/windows/README.md
Normal file
1
tools/windows/README.md
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
Support tools for the Windows (win32/win64) port.
|
||||||
47
tools/windows/build.bat
Normal file
47
tools/windows/build.bat
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
@echo off
|
||||||
|
setlocal
|
||||||
|
|
||||||
|
REM This script must be run after vcvarsall.bat has been run,
|
||||||
|
REM so that cl.exe is in your path.
|
||||||
|
where cl.exe || goto vsmissing_err
|
||||||
|
|
||||||
|
REM HEREPATH is <drive_letter>:<script_directory>
|
||||||
|
set HEREPATH=%~d0%~p0
|
||||||
|
|
||||||
|
REM Set up SRC, BUILD and CLFLAGS
|
||||||
|
call %HEREPATH%\env.bat
|
||||||
|
call %HEREPATH%\clvars.bat
|
||||||
|
|
||||||
|
echo SRC=%SRC%, BUILD=%BUILD%
|
||||||
|
echo Building with flags: %CLFLAGS%
|
||||||
|
|
||||||
|
pushd %SRC%
|
||||||
|
mkdir %BUILD%\obj
|
||||||
|
del /Q %BUILD%\obj\
|
||||||
|
|
||||||
|
cl.exe -nologo -FC -EHsc -Z7 -Oi -GR- -Gm- %CLFLAGS% -c ^
|
||||||
|
@%HEREPATH%\hammer_lib_src_list ^
|
||||||
|
-Fo%BUILD%\obj\
|
||||||
|
if %errorlevel% neq 0 goto err
|
||||||
|
|
||||||
|
lib.exe %BUILD%\obj\*.obj -OUT:%BUILD%\hammer.lib
|
||||||
|
echo STATIC_LIBRARY %BUILD%\hammer.lib
|
||||||
|
if %errorlevel% neq 0 goto err
|
||||||
|
popd
|
||||||
|
|
||||||
|
REM TODO(uucidl): how to build and run the tests? They are written with glib.h
|
||||||
|
REM which might be a challenge on windows. On the other hand the API of glib.h
|
||||||
|
REM does not seem too hard to reimplement.
|
||||||
|
|
||||||
|
echo SUCCESS: Successfully built
|
||||||
|
endlocal
|
||||||
|
exit /b 0
|
||||||
|
|
||||||
|
:vsmissing_err
|
||||||
|
echo ERROR: CL.EXE missing. Have you run vcvarsall.bat?
|
||||||
|
exit /b 1
|
||||||
|
|
||||||
|
:err
|
||||||
|
endlocal
|
||||||
|
echo ERROR: Failed to build
|
||||||
|
exit /b %errorlevel%
|
||||||
53
tools/windows/build_examples.bat
Normal file
53
tools/windows/build_examples.bat
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
@echo off
|
||||||
|
setlocal
|
||||||
|
|
||||||
|
REM This script must be run after vcvarsall.bat has been run,
|
||||||
|
REM so that cl.exe is in your path.
|
||||||
|
where cl.exe || goto vsmissing_err
|
||||||
|
|
||||||
|
REM HEREPATH is <drive_letter>:<script_directory>
|
||||||
|
set HEREPATH=%~d0%~p0
|
||||||
|
|
||||||
|
REM Set up SRC, BUILD and CLFLAGS
|
||||||
|
call %HEREPATH%\env.bat
|
||||||
|
call %HEREPATH%\clvars.bat
|
||||||
|
|
||||||
|
echo SRC=%SRC%, BUILD=%BUILD%
|
||||||
|
echo CLFLAGS=%CLFLAGS%
|
||||||
|
|
||||||
|
set HAMMERLIB=%BUILD%\hammer.lib
|
||||||
|
|
||||||
|
REM Now let's build some example programs
|
||||||
|
|
||||||
|
cl.exe -nologo %CLFLAGS% examples\base64.c %HAMMERLIB% -Fo%BUILD%\ -Fe%BUILD%\
|
||||||
|
if %errorlevel% neq 0 goto err
|
||||||
|
echo PROGRAM build\base64.exe
|
||||||
|
cl.exe -nologo %CLFLAGS% examples\base64_sem1.c %HAMMERLIB% -Fo%BUILD%\ -Fe%BUILD%\
|
||||||
|
if %errorlevel% neq 0 goto err
|
||||||
|
echo PROGRAM build\base64_sem1.exe
|
||||||
|
cl.exe -nologo %CLFLAGS% examples\base64_sem2.c %HAMMERLIB% -Fo%BUILD%\ -Fe%BUILD%\
|
||||||
|
if %errorlevel% neq 0 goto err
|
||||||
|
echo PROGRAM build\base64_sem2.exe
|
||||||
|
|
||||||
|
REM FIXME(windows) TODO(uucidl): dns.c only works on posix
|
||||||
|
REM cl.exe -nologo %CLFLAGS% examples\dns.c %HAMMERLIB% -Fo%BUILD%\ -Fe%BUILD%\
|
||||||
|
REM if %errorlevel% neq 0 goto err
|
||||||
|
REM echo PROGRAM build\dns.exe
|
||||||
|
|
||||||
|
REM FIXME(windows) TODO(uucidl): grammar.c needs to be fixed
|
||||||
|
cl.exe -nologo %CLFLAGS% examples\ties.c examples\grammar.c %HAMMERLIB% -Fo%BUILD%\ -Fe%BUILD%\
|
||||||
|
if %errorlevel% neq 0 goto err
|
||||||
|
echo PROGRAM build\ties.exe
|
||||||
|
|
||||||
|
echo SUCCESS: Successfully built
|
||||||
|
endlocal
|
||||||
|
exit /b 0
|
||||||
|
|
||||||
|
:vsmissing_err
|
||||||
|
echo ERROR: CL.EXE missing. Have you run vcvarsall.bat?
|
||||||
|
exit /b 1
|
||||||
|
|
||||||
|
:err
|
||||||
|
echo ERROR: Failed to build
|
||||||
|
endlocal
|
||||||
|
exit /b %errorlevel%
|
||||||
59
tools/windows/clvars.bat
Normal file
59
tools/windows/clvars.bat
Normal file
|
|
@ -0,0 +1,59 @@
|
||||||
|
REM Don't call me directly
|
||||||
|
REM Exports CLFLAGS
|
||||||
|
|
||||||
|
REM Start with the most strict warning level
|
||||||
|
set WARNINGS=-W4 -Wall -WX
|
||||||
|
|
||||||
|
REM c4457 (declaration shadowing function parameter)
|
||||||
|
REM FIXME(windows) TODO(uucidl): remove occurence of c4457 and reactivate
|
||||||
|
REM FIXME(windows) TODO(uucidl): remove occurence of c4456 and reactivate
|
||||||
|
REM see -Wshadow
|
||||||
|
set WARNINGS=%WARNINGS% -wd4457 -wd4456
|
||||||
|
|
||||||
|
REM c4701 (potentially unitialized local variable)
|
||||||
|
REM FIXME(windows) TODO(uucidl): remove occurence of c4701 if possible
|
||||||
|
set WARNINGS=%WARNINGS% -wd4701
|
||||||
|
|
||||||
|
REM We disable implicit casting warnings (c4244), as they occur too often here.
|
||||||
|
REM Its gcc/clang counterpart is Wconversion which does not seem to
|
||||||
|
REM be enabled by default.
|
||||||
|
REM See: [[https://gcc.gnu.org/wiki/NewWconversion#Frequently_Asked_Questions]]
|
||||||
|
REM
|
||||||
|
REM Likewise for c4242 (conversion with potential loss of data) and c4267
|
||||||
|
REM (conversion away from size_t to a smaller type) and c4245 (conversion
|
||||||
|
REM from int to size_t signed/unsigned mismatch)
|
||||||
|
set WARNINGS=%WARNINGS% -wd4242 -wd4244 -wd4245 -wd4267
|
||||||
|
|
||||||
|
REM c4100 (unreferenced formal parameter) is equivalent to -Wno-unused-parameter
|
||||||
|
set WARNINGS=%WARNINGS% -wd4100
|
||||||
|
|
||||||
|
REM c4200 (zero-sized array) is a C idiom supported by C99
|
||||||
|
set WARNINGS=%WARNINGS% -wd4200
|
||||||
|
|
||||||
|
REM c4204 (non-constant aggregate initializers) ressembles C99 support
|
||||||
|
set WARNINGS=%WARNINGS% -wd4204
|
||||||
|
|
||||||
|
REM c4201 (anonymous unions) ressembles C11 support.
|
||||||
|
REM see -std=gnu99 vs -std=c99
|
||||||
|
set WARNINGS=%WARNINGS% -wd4201
|
||||||
|
|
||||||
|
REM c4820 (warnings about padding) and c4324 (intentional padding) are
|
||||||
|
REM not useful
|
||||||
|
set WARNINGS=%WARNINGS% -wd4820 -wd4324
|
||||||
|
|
||||||
|
REM c4710 (inlining could not be performed) is not useful
|
||||||
|
set WARNINGS=%WARNINGS% -wd4710
|
||||||
|
|
||||||
|
REM c4255 ( () vs (void) ambiguity) is not useful
|
||||||
|
set WARNINGS=%WARNINGS% -wd4255
|
||||||
|
|
||||||
|
REM c4127 (conditional expression is constant) is not useful
|
||||||
|
set WARNINGS=%WARNINGS% -wd4127
|
||||||
|
|
||||||
|
REM c4668 (an undefined symbol in a preprocessor directive) is not useful
|
||||||
|
set WARNINGS=%WARNINGS% -wd4668
|
||||||
|
|
||||||
|
REM we use sprintf so this should be enabled
|
||||||
|
set DEFINES=-D_CRT_SECURE_NO_WARNINGS
|
||||||
|
|
||||||
|
set CLFLAGS=-Od -Z7 %DEFINES% %WARNINGS% -Debug
|
||||||
16
tools/windows/env.bat
Normal file
16
tools/windows/env.bat
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
REM Don't call me directly.
|
||||||
|
REM
|
||||||
|
REM Expects HEREPATH (this directory)
|
||||||
|
REM Exports SRC (hammer's src directory)
|
||||||
|
REM Exports BUILD (hammer's build directory)
|
||||||
|
|
||||||
|
set TOP=%HEREPATH%..\..
|
||||||
|
|
||||||
|
REM Get canonical path for TOP
|
||||||
|
pushd .
|
||||||
|
cd %TOP%
|
||||||
|
set TOP=%CD%
|
||||||
|
popd
|
||||||
|
|
||||||
|
set SRC=%TOP%\src
|
||||||
|
set BUILD=%TOP%\build
|
||||||
38
tools/windows/hammer_lib_src_list
Normal file
38
tools/windows/hammer_lib_src_list
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
platform_win32.c
|
||||||
|
allocator.c
|
||||||
|
bitreader.c
|
||||||
|
bitwriter.c
|
||||||
|
cfgrammar.c
|
||||||
|
desugar.c
|
||||||
|
glue.c
|
||||||
|
hammer.c
|
||||||
|
parsers/action.c
|
||||||
|
parsers/and.c
|
||||||
|
parsers/attr_bool.c
|
||||||
|
parsers/butnot.c
|
||||||
|
parsers/ch.c
|
||||||
|
parsers/charset.c
|
||||||
|
parsers/difference.c
|
||||||
|
parsers/end.c
|
||||||
|
parsers/endianness.c
|
||||||
|
parsers/epsilon.c
|
||||||
|
parsers/ignore.c
|
||||||
|
parsers/ignoreseq.c
|
||||||
|
parsers/indirect.c
|
||||||
|
parsers/int_range.c
|
||||||
|
parsers/many.c
|
||||||
|
parsers/not.c
|
||||||
|
parsers/optional.c
|
||||||
|
parsers/permutation.c
|
||||||
|
parsers/sequence.c
|
||||||
|
parsers/token.c
|
||||||
|
parsers/unimplemented.c
|
||||||
|
parsers/whitespace.c
|
||||||
|
parsers/xor.c
|
||||||
|
parsers/value.c
|
||||||
|
backends/packrat.c
|
||||||
|
backends/llk.c
|
||||||
|
backends/glr.c
|
||||||
|
backends/lalr.c
|
||||||
|
backends/lr.c
|
||||||
|
backends/lr0.c
|
||||||
1
tools/windows/status.bat
Normal file
1
tools/windows/status.bat
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
git grep "FIXME(windows)"
|
||||||
Loading…
Add table
Add a link
Reference in a new issue