diff options
author | kennyballou <kballou@onyx.boisestate.edu> | 2013-01-16 18:38:22 -0700 |
---|---|---|
committer | kennyballou <kballou@onyx.boisestate.edu> | 2013-01-16 18:38:22 -0700 |
commit | b8106d870ca353707fa49737e0e0521877d63f15 (patch) | |
tree | 70e5fc3bf374fcff82e7cd6d81f35330d905f6b3 /xnt/build | |
parent | dd50caabb58086449625a134eba0b361e55261be (diff) | |
download | xnt-b8106d870ca353707fa49737e0e0521877d63f15.tar.gz xnt-b8106d870ca353707fa49737e0e0521877d63f15.tar.xz |
Add common compiler wrappers
Add wrappers around gcc/g++ and javac so that they can be invoked from
inside xnt
Diffstat (limited to 'xnt/build')
-rw-r--r-- | xnt/build/cc.py | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/xnt/build/cc.py b/xnt/build/cc.py new file mode 100644 index 0000000..e4592ca --- /dev/null +++ b/xnt/build/cc.py @@ -0,0 +1,73 @@ +#!/usr/bin/env python + +# Xnt -- A Wrapper Build Tool +# Copyright (C) 2012 Kenny Ballou + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +""" +Common Compilers +""" + +import os +import logging +import sys +from xnt.tasks import call + +logger = logging.getLogger(__name__) + +def gcc(src, flags=[]): + """gcc compiler, non-named output file""" + return _gcc(src, flags) + +def gpp(src, flags=[]): + """g++ compiler, non-named output file""" + return _gcc(src, flags, "g++") + +def gcc_o(src, o, flags=[]): + """gcc compiler, with output file""" + return _gcc_o(src, o, flags) + +def gpp_o(src, o, flags=[]): + """g++ compiler, with output file""" + return _gcc_o(src, o, flags, "g++") + +def javac(src, flags=[]): + """Javac: compile Java programs""" + logger.info("Compiling %s", src) + cmd = __generateCommand(src, flags, "javac") + return __compile(cmd) + +def _gcc(src, flags=[], compiler="gcc"): + logger.info("Compiling %s", src) + return __compile(__generateCommand(src, flags, compiler)) + +def _gcc_o(src, o, flags=[], compiler="gcc"): + logger.info("Compiling %s to %s", src, o) + cmd = __generateCommand(src, flags, compiler) + cmd.append("-o") + cmd.append(o) + return __compile(cmd) + +def __generateCommand(src, flags=[], compiler="gcc"): + cmd = [compiler, src] + for f in flags: + cmd.append(f) + return cmd + +def __compile(cmd): + return call(cmd) + +def __is_newer(a, b): + return os.path.getmtime(a) > os.path.getmtime(b) |