forked from OSchip/llvm-project
38 lines
1.1 KiB
C++
38 lines
1.1 KiB
C++
|
//===-- runtime/environment.cpp ---------------------------------*- C++ -*-===//
|
||
|
//
|
||
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||
|
// See https://llvm.org/LICENSE.txt for license information.
|
||
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||
|
//
|
||
|
//===----------------------------------------------------------------------===//
|
||
|
|
||
|
#include "environment.h"
|
||
|
#include <cstdlib>
|
||
|
#include <limits>
|
||
|
|
||
|
namespace Fortran::runtime {
|
||
|
ExecutionEnvironment executionEnvironment;
|
||
|
|
||
|
void ExecutionEnvironment::Configure(
|
||
|
int ac, const char *av[], const char *env[]) {
|
||
|
argc = ac;
|
||
|
argv = av;
|
||
|
envp = env;
|
||
|
listDirectedOutputLineLengthLimit = 79; // PGI default
|
||
|
defaultOutputRoundingMode = common::RoundingMode::TiesToEven; // RP=RN
|
||
|
|
||
|
if (auto *x{std::getenv("FORT_FMT_RECL")}) {
|
||
|
char *end;
|
||
|
auto n{std::strtol(x, &end, 10)};
|
||
|
if (n > 0 && n < std::numeric_limits<int>::max() && *end == '\0') {
|
||
|
listDirectedOutputLineLengthLimit = n;
|
||
|
} else {
|
||
|
std::fprintf(
|
||
|
stderr, "Fortran runtime: FORT_FMT_RECL=%s is invalid; ignored\n", x);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// TODO: Set RP/ROUND='PROCESSOR_DEFINED' from environment
|
||
|
}
|
||
|
}
|