예제 #1
0
파일: Build.py 프로젝트: GelvinBelson/gooz
    def CompileProto(self, source):
        """Compiles a protocol buffer definition into C++/Python/Java code.

    Args:
      source: .proto file Path.
    """
        proto_source = Path(self, source)
        assert proto_source.extension == 'proto', (
            'Expecting a .proto file path, got: %s' % source)
        proto_source.AssertExists()

        misc.MakeDirectories(self._output_dir)
        command = ([
            self.vars.PROTO_COMPILER,
            '--proto_path=%s' % self._source_dir,
            '--proto_path=%s' % self._output_dir,
            '--cpp_out=%s' % self._output_dir,
            # '--java_out=%s' % os.path.join(self._output_dir, 'java')
            # '--python_out%s' % os.path.join(self._output_dir, 'python')
        ] + self.vars.PROTO_COMPILER_FLAGS + [proto_source.apath])
        logging.info('Compiling proto: %s', source)
        self.Exec(command)
예제 #2
0
파일: Build.py 프로젝트: GelvinBelson/gooz
    def __init__(self,
                 base_dir,
                 output_dir=None,
                 source_dir=None,
                 metadata_file=None):
        """Initializes the build environment.

    Args:
      base_dir: Absolute base directory path.
      output_dir: Output directory, relative to base_dir.
      source_dir: Source directory, relative to base_dir.
      metadata_file: Metadata file name, relative to base_dir.
    """
        output_dir = output_dir or Environment.DEFAULT_OUTPUT_DIR
        source_dir = source_dir or Environment.DEFAULT_SOURCE_DIR
        metadata_file = metadata_file or Environment.METADATA_FILE
        self._base_dir = base_dir
        assert os.path.exists(
            self._base_dir), ('Base directory does not exist: %s' % base_dir)
        self._output_dir = os.path.join(self._base_dir, output_dir)
        misc.MakeDirectories(self._output_dir)
        self._source_dir = os.path.join(self._base_dir, source_dir)
        assert os.path.exists(
            self._source_dir), ('Source directory does not exist: %s' %
                                self._source_dir)

        self._metadata_file = os.path.join(self._base_dir, metadata_file)
        self._metadata = Metadata(self._metadata_file)
        self._metadata.ReadFromFile()

        logging.info('Base directory: %s', self._base_dir)
        logging.info('Source directory: %s', self._source_dir)
        logging.info('Output directory: %s', self._output_dir)
        logging.info('Metadata file: %s', self._metadata_file)

        # ----------------------------------------------------------------------

        self._vars = ConfigVars()

        self.vars.CXX_COMPILER = FindGCC()
        #CXX_COMPILER = '/usr/bin/clang'
        logging.info('Using gcc: %s', self.vars.CXX_COMPILER)

        self.vars.CXX_COMPILER_COMMAND = [self.vars.CXX_COMPILER]
        if FLAGS.use_distcc:
            self.vars.CXX_COMPILER_COMMAND.insert(0, 'distcc')
        self.vars.CXX_FLAGS = ['-Wall', '-g', '-fPIC', '-std=c++0x']

        self.vars.AR = '/usr/bin/ar'
        self.vars.RANLIB = '/usr/bin/ranlib'

        self.vars.LINKER = self.vars.CXX_COMPILER
        self.vars.LINK_OPTIONS = [
            '-g', '-std=c++0x', '-lstdc++', '-lboost_regex'
        ]

        self.vars.PROTO_COMPILER = '/usr/bin/protoc'
        self.vars.PROTO_COMPILER_FLAGS = []

        # --------------------------------------
        # External libraries

        self.vars.PKG_CONFIG = 'pkg-config'
        self.vars.GTEST_CONFIG = 'gtest-config'

        # Google flags
        GFLAGS_CXX_FLAGS = (
            self.ShellOutput('{PKG_CONFIG} --cflags libgflags')).split()
        GFLAGS_LINK_OPTIONS = (
            self.ShellOutput('{PKG_CONFIG} --libs libgflags')).split()
        self.vars.CXX_FLAGS.extend(GFLAGS_CXX_FLAGS)
        self.vars.LINK_OPTIONS.extend(GFLAGS_LINK_OPTIONS)
        # self.vars.CXX_FLAGS += ['-I/R/gflags/current/include/']
        # self.vars.LINK_OPTIONS += ['-L/R/gflags/current/lib/', '-lgflags']

        # Google logging
        GLOG_CXX_FLAGS = (
            self.ShellOutput('{PKG_CONFIG} --cflags libglog')).split()
        GLOG_LINK_OPTIONS = (
            self.ShellOutput('{PKG_CONFIG} --libs libglog')).split()
        self.vars.CXX_FLAGS.extend(GLOG_CXX_FLAGS)
        self.vars.LINK_OPTIONS.extend(GLOG_LINK_OPTIONS)
        # self.vars.CXX_FLAGS += ['-I/R/glog/current/include/']
        # self.vars.LINK_OPTIONS += ['-L/R/glog/current/lib/', '-lglog']

        # Protobuf
        self.vars.PROTOBUF_CXX_FLAGS = (
            self.ShellOutput('{PKG_CONFIG} --cflags protobuf').split())
        self.vars.PROTOBUF_LINK_OPTIONS = (
            self.ShellOutput('{PKG_CONFIG} --libs protobuf').split())
        self.vars.CXX_FLAGS.extend(self.vars.PROTOBUF_CXX_FLAGS)
        self.vars.LINK_OPTIONS.extend(self.vars.PROTOBUF_LINK_OPTIONS)

        # Google unit-tests
        self.vars.GTEST_CXX_FLAGS = (
            self.ShellOutput('{GTEST_CONFIG} --cppflags --cxxflags').split())
        self.vars.GTEST_LINK_OPTIONS = (
            self.ShellOutput('{GTEST_CONFIG} --ldflags --libs').split())
        self.vars.CXX_FLAGS.extend(self.vars.GTEST_CXX_FLAGS)
        #LINK_OPTIONS.extend(GTEST_LINK_OPTIONS)  # Added for test binaries only

        # GMP / MPFR
        # GMP_LINK_OPTIONS = ['-lgmp', '-lgmpxx', '-lmpfr']
        # LINK_OPTIONS.extend(GMP_LINK_OPTIONS)
        self.vars.CXX_FLAGS += ['-I/R/mpfr/current/include/']
        self.vars.LINK_OPTIONS += ['-L/R/mpfr/current/lib/', '-lmpfr']

        self.vars.CXX_FLAGS += ['-I/R/gmp/current/include/']
        self.vars.LINK_OPTIONS += ['-L/R/gmp/current/lib/', '-lgmp', '-lgmpxx']