blob: 0ddc7356a9e930f0a1591934ae95265666503e90 [file] [log] [blame]
/*
* Copyright 2014-present Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License. You may obtain
* a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*/
package com.facebook.buck.ocaml;
import com.facebook.buck.cli.BuckConfig;
import com.facebook.buck.cxx.CxxPlatform;
import com.facebook.buck.cxx.DefaultCxxPlatforms;
import com.facebook.buck.cxx.Linker;
import com.facebook.buck.cxx.Tool;
import com.facebook.buck.util.environment.Platform;
import com.google.common.base.Optional;
import java.nio.file.Path;
import java.util.List;
public class OCamlBuckConfig {
private final BuckConfig delegate;
private final CxxPlatform cxxPlatform;
public OCamlBuckConfig(
Platform platform,
BuckConfig delegate) {
this.delegate = delegate;
cxxPlatform = DefaultCxxPlatforms.build(platform, delegate);
}
public Optional<Path> getOCamlCompiler() {
return delegate.getPath("ocaml", "ocaml.compiler");
}
public Tool getCCompiler() {
return cxxPlatform.getCc();
}
public Optional<Path> getOCamlDepTool() {
return delegate.getPath("ocaml", "dep.tool");
}
public Optional<Path> getYaccCompiler() {
return delegate.getPath("ocaml", "yacc.compiler");
}
public Optional<Path> getLexCompiler() {
return delegate.getPath("ocaml", "lex.compiler");
}
public Optional<String> getOCamlInteropIncludesDir() {
return delegate.getValue("ocaml", "interop.includes");
}
public Optional<Path> getOCamlBytecodeCompiler() {
return delegate.getPath("ocaml", "ocaml.bytecode.compiler");
}
public Tool getCxxCompiler() {
return cxxPlatform.getCxx();
}
public List<String> getCFlags() {
return cxxPlatform.getCppflags();
}
public List<String> getCLinkerFlags() {
return cxxPlatform.getCxxldflags();
}
public List<String> getLdFlags() {
return cxxPlatform.getLdflags();
}
public Linker getLinker() {
return cxxPlatform.getLd();
}
public Optional<Path> getOCamlDebug() {
return delegate.getPath("ocaml", "debug");
}
public CxxPlatform getCxxPlatform() {
return cxxPlatform;
}
}