summaryrefslogtreecommitdiff
path: root/xnt/build
diff options
context:
space:
mode:
authorkennyballou <kballou@onyx.boisestate.edu>2013-01-16 18:38:22 -0700
committerkennyballou <kballou@onyx.boisestate.edu>2013-01-16 18:38:22 -0700
commitb8106d870ca353707fa49737e0e0521877d63f15 (patch)
tree70e5fc3bf374fcff82e7cd6d81f35330d905f6b3 /xnt/build
parentdd50caabb58086449625a134eba0b361e55261be (diff)
downloadxnt-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.py73
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)