waf/playground/protoc_gen_java/wscript

52 lines
1.5 KiB
Python

#! /usr/bin/env python
# encoding: utf-8
# Federico Pellegrin, 2019 (fedepell)
import os
from waflib import Logs
top = '.'
out = 'build'
def options(opt):
opt.load('compiler_cxx java')
def configure(conf):
conf.load('compiler_cxx java protoc')
# Here you have to point to your protobuf-java JAR
conf.env.CLASSPATH_PROTOBUF = ['/usr/share/maven-repo/com/google/protobuf/protobuf-java/3.0.0/protobuf-java-3.0.0.jar']
def build(bld):
# this simulates a .proto generator. the gen.proto is generated in build
genp = bld(
rule = "cp ${SRC} ${TGT}",
source = "proto.source",
target = "inc/gen.proto"
)
# cxx doesn't have a problem with this, just knows gen.proto will pop up later
bld(
features = 'cxx cxxshlib',
source = [ bld.path.find_or_declare(genp.target) ],
name = 'somelib',
target = 'somelib'
)
# but for java:
# we either put grouping because of protoc java generations needs .proto to generate out fname (#2218)
# or accept that java dep is not strict on the .java file name (but relies just on explicit task ordering)
# bld.add_group()
# inc/gen.proto is an implicit dependency, but the file is generated at
# build time while protoc extra uses it before to determine the .java file
# name that will get generated
bld(
features = 'javac protoc',
name = 'pbjava',
srcdir = bld.path.find_or_declare(genp.target).parent,
source = [ bld.path.find_or_declare(genp.target) ],
use = 'PROTOBUF',
)