switch build system to rscons v2.0.0

This commit is contained in:
Josh Holtrop 2019-09-12 20:25:48 -04:00
parent b4d5de0910
commit b5e4655f03
9 changed files with 52 additions and 62 deletions

6
.gitignore vendored
View File

@ -1,7 +1,5 @@
*.dep
fart
*.bmp
*.png
parser/parser.tab.cc
parser/parser.tab.hh
parser/lex.yy.cc
/.rscons*
/build/

View File

@ -1,10 +1,7 @@
export SCONSFLAGS := -Q
.PHONY: all
all:
@scons
install:
@scons $@
@./rscons
.PHONY: clean
clean:
@scons -c
@./rscons clean

View File

@ -1,24 +0,0 @@
require "rscons"
task :default do
Rscons::Environment.new do |env|
env.build_root = "build"
lexer_source = "#{env.build_root}/lex.yy.cc"
env.CFile(lexer_source, "parser/parser.ll")
parser_source = "#{env.build_root}/parser.tab.cc"
env.CFile(parser_source, "parser/parser.yy")
sources = Dir["{util,shapes,main,distrib,parser}/**/*.cc"]
sources << lexer_source
sources << parser_source
env["CXXFLAGS"] += ["-Wall", "-O2"]
env["CPPPATH"] += Dir["{util,shapes,main,distrib,parser}/**/"]
env["CPPPATH"] << "."
env["LIBS"] += ["fl", "pthread", "freeimage"]
env.Program("fart", sources)
end
end

21
Rsconscript Normal file
View File

@ -0,0 +1,21 @@
configure do
check_cxx_compiler
check_program "flex"
check_program "bison"
check_lib ":libfl.a"
check_lib "pthread"
check_lib "freeimage"
end
build do
Environment.new do |env|
subdirs = %w[util shapes main distrib parser]
env["CCFLAGS"] += %w[-Wall -O2]
env["CPPPATH"] += %w[.] + subdirs + ["#{env.build_root}/parser"]
sources = glob("{#{subdirs.join(",")}}/*.cc")
sources += ["^/parser/lexer.cc", "^/parser/parser.cc"]
env.CFile("^/parser/lexer.cc", "parser/parser.ll")
env.CFile("^/parser/parser.cc", "parser/parser.yy")
env.Program("fart", sources)
end
end

View File

@ -1,25 +0,0 @@
# vim:syntax=python
import os
target = 'fart'
subdirs = ['util', 'shapes', 'main', 'distrib']
parser_sources = Glob('parser/*.cc')
sources = map(lambda x: Glob(x + '/*.cc'), subdirs)
lexer_source = 'parser/lex.yy.cc'
parser_source = 'parser/parser.tab.cc'
for f in parser_sources:
if str(f) != lexer_source and str(f) != parser_source:
sources.append(f)
sources += [lexer_source, parser_source]
env = Environment(CPPFLAGS = '-I.',
CXXFLAGS = '-Wall -O2',
YACCFLAGS = '-d',
LIBS = ['-lfl', '-lpthread', '-lfreeimage'])
lexer = env.CXXFile(lexer_source, 'parser/parser.ll')
parser = env.CXXFile(parser_source, 'parser/parser.yy')
env.Depends(lexer, parser_source)
env.Program(target, sources)

2
configure vendored Executable file
View File

@ -0,0 +1,2 @@
#!/bin/sh
exec ./rscons configure "$@"

View File

@ -8,7 +8,7 @@
#include "nodes.h"
#include "parser.h"
#include "parser.tab.hh"
#include "parser.hh"
#define YY_USER_ACTION yylloc->first_column += yyleng;

View File

@ -8,7 +8,7 @@
#include "util/Scope.h"
#include "nodes.h"
#include "parser.h"
#include "parser.tab.hh" /* bison-generated header with YY[SL]TYPE */
#include "parser.hh" /* bison-generated header with YY[SL]TYPE */
using namespace std;
#define yyerror(msg) errFunc(msg, &yylloc)

21
rscons Executable file

File diff suppressed because one or more lines are too long