aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes M Dieterich <jmd@FreeBSD.org>2017-05-19 02:01:51 +0000
committerJohannes M Dieterich <jmd@FreeBSD.org>2017-05-19 02:01:51 +0000
commit589d6627b2261e01d3d75632cd3beeea4a9cc75f (patch)
treee7c55c1d449d849cebc6ade15bcd4d370df22e7c
parente8dae1c3d45b311ec8a1030349017b18279e8a89 (diff)
downloadports-589d6627b2261e01d3d75632cd3beeea4a9cc75f.tar.gz
ports-589d6627b2261e01d3d75632cd3beeea4a9cc75f.zip
new ports: devel/flang and devel/flang-clang.
Welcome the freshly released flang Fortran LLVM compiler (currently only for amd6) ! It needs as a companion a custom clang, added as flang-clang. Reviewed by: swills (mentor) Approved by: swills (mentor) Differential Revision: https://reviews.freebsd.org/D10805
Notes
Notes: svn path=/head/; revision=441207
-rw-r--r--devel/Makefile2
-rw-r--r--devel/flang-clang/Makefile42
-rw-r--r--devel/flang-clang/distinfo3
-rw-r--r--devel/flang-clang/pkg-descr3
-rw-r--r--devel/flang-clang/pkg-plist605
-rw-r--r--devel/flang/Makefile52
-rw-r--r--devel/flang/distinfo3
-rw-r--r--devel/flang/files/flang.in2
-rw-r--r--devel/flang/files/patch-CMakeLists.txt50
-rw-r--r--devel/flang/files/patch-runtime_flang_async.c37
-rw-r--r--devel/flang/files/patch-runtime_flang_cdexp.c12
-rw-r--r--devel/flang/files/patch-runtime_flang_cexp.c12
-rw-r--r--devel/flang/files/patch-runtime_flang_stime3f.c17
-rw-r--r--devel/flang/files/patch-runtime_flangrti_dumpregs.h11
-rw-r--r--devel/flang/files/patch-runtime_flangrti_erfc__scaled.c11
-rw-r--r--devel/flang/files/patch-runtime_flangrti_erfc__scaledf.c11
-rw-r--r--devel/flang/files/patch-runtime_flangrti_iostdinit.c28
-rw-r--r--devel/flang/files/patch-runtime_flangrti_trace__lin.c20
-rw-r--r--devel/flang/files/patch-runtime_flangrti_x86__64-Linux_dumpregs.c11
-rw-r--r--devel/flang/pkg-descr3
-rw-r--r--devel/flang/pkg-plist20
21 files changed, 955 insertions, 0 deletions
diff --git a/devel/Makefile b/devel/Makefile
index aad1d1cdf111..319234e3726c 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -579,6 +579,8 @@
SUBDIR += fifechan
SUBDIR += firmware-utils
SUBDIR += fistgen
+ SUBDIR += flang
+ SUBDIR += flang-clang
SUBDIR += flatbuffers
SUBDIR += flatzebra
SUBDIR += flex-sdk
diff --git a/devel/flang-clang/Makefile b/devel/flang-clang/Makefile
new file mode 100644
index 000000000000..7480d0b34a86
--- /dev/null
+++ b/devel/flang-clang/Makefile
@@ -0,0 +1,42 @@
+# Created by: Johannes M Dieterich <jmd@FreeBSD.org>
+# $FreeBSD$
+
+PORTNAME= flang-clang
+DISTVERSION= 3.9-20170518
+CATEGORIES= devel lang
+
+MAINTAINER= jmd@FreeBSD.org
+COMMENT= Fortran compiler targeting LLVM (modified clang part)
+
+LICENSE= LLVM
+LICENSE_NAME= LLVM Release License
+LICENSE_FILE= ${WRKSRC}/LICENSE.TXT
+LICENSE_PERMS= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
+
+BUILD_DEPENDS= llvm39>=0:devel/llvm39 \
+ openmp>=0:devel/openmp
+RUN_DEPENDS= llvm39>=0:devel/llvm39 \
+ openmp>=0:devel/openmp
+
+USE_LDCONFIG= ${PREFIX}/flang/lib
+USES= cmake:outsource compiler:c++11-lib libedit ninja tar:xz perl5 \
+ python shebangfix
+
+USE_GNOME+= libxml2
+
+SHEBANG_FILES= tools/scan-view/bin/scan-view \
+ tools/clang-format/git-clang-format \
+ tools/clang-format/clang-format-diff.py
+
+USE_GITHUB= yes
+GH_ACCOUNT= flang-compiler
+GH_PROJECT= clang
+GH_TAGNAME= edf56fd
+
+CMAKE_ARGS+= -DLLVM_CONFIG=${LOCALBASE}/bin/llvm-config39
+
+CMAKE_INSTALL_PREFIX= ${PREFIX}/flang
+
+post-install:
+ @${GZIP_CMD} ${STAGEDIR}/${PREFIX}/flang/man/man1/scan-build.1
+.include <bsd.port.mk>
diff --git a/devel/flang-clang/distinfo b/devel/flang-clang/distinfo
new file mode 100644
index 000000000000..bc1c07bb5aeb
--- /dev/null
+++ b/devel/flang-clang/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1495120245
+SHA256 (flang-compiler-clang-3.9-20170518-edf56fd_GH0.tar.gz) = ff5dfcc322ceb247dffe10300a0a6072face2ef458c413e2dd70fb5c8e51beaa
+SIZE (flang-compiler-clang-3.9-20170518-edf56fd_GH0.tar.gz) = 14365634
diff --git a/devel/flang-clang/pkg-descr b/devel/flang-clang/pkg-descr
new file mode 100644
index 000000000000..80c1229d5d31
--- /dev/null
+++ b/devel/flang-clang/pkg-descr
@@ -0,0 +1,3 @@
+Fortran compiler targeting LLVM (modified clang part)
+
+WWW: https://github.com/flang-compiler/clang
diff --git a/devel/flang-clang/pkg-plist b/devel/flang-clang/pkg-plist
new file mode 100644
index 000000000000..8fd958af93e8
--- /dev/null
+++ b/devel/flang-clang/pkg-plist
@@ -0,0 +1,605 @@
+flang/bin/c-index-test
+flang/bin/clang
+flang/bin/clang++
+flang/bin/clang-3.9
+flang/bin/clang-check
+flang/bin/clang-cl
+flang/bin/clang-format
+flang/bin/flang
+flang/bin/git-clang-format
+flang/bin/scan-build
+flang/bin/scan-view
+flang/include/clang-c/BuildSystem.h
+flang/include/clang-c/CXCompilationDatabase.h
+flang/include/clang-c/CXErrorCode.h
+flang/include/clang-c/CXString.h
+flang/include/clang-c/Documentation.h
+flang/include/clang-c/Index.h
+flang/include/clang-c/Platform.h
+flang/include/clang/ARCMigrate/ARCMT.h
+flang/include/clang/ARCMigrate/ARCMTActions.h
+flang/include/clang/ARCMigrate/FileRemapper.h
+flang/include/clang/AST/APValue.h
+flang/include/clang/AST/AST.h
+flang/include/clang/AST/ASTConsumer.h
+flang/include/clang/AST/ASTContext.h
+flang/include/clang/AST/ASTDiagnostic.h
+flang/include/clang/AST/ASTFwd.h
+flang/include/clang/AST/ASTImporter.h
+flang/include/clang/AST/ASTLambda.h
+flang/include/clang/AST/ASTMutationListener.h
+flang/include/clang/AST/ASTTypeTraits.h
+flang/include/clang/AST/ASTUnresolvedSet.h
+flang/include/clang/AST/ASTVector.h
+flang/include/clang/AST/Attr.h
+flang/include/clang/AST/AttrDump.inc
+flang/include/clang/AST/AttrImpl.inc
+flang/include/clang/AST/AttrIterator.h
+flang/include/clang/AST/AttrVisitor.inc
+flang/include/clang/AST/Attrs.inc
+flang/include/clang/AST/Availability.h
+flang/include/clang/AST/BaseSubobject.h
+flang/include/clang/AST/BuiltinTypes.def
+flang/include/clang/AST/CXXInheritance.h
+flang/include/clang/AST/CanonicalType.h
+flang/include/clang/AST/CharUnits.h
+flang/include/clang/AST/Comment.h
+flang/include/clang/AST/CommentBriefParser.h
+flang/include/clang/AST/CommentCommandInfo.inc
+flang/include/clang/AST/CommentCommandList.inc
+flang/include/clang/AST/CommentCommandTraits.h
+flang/include/clang/AST/CommentDiagnostic.h
+flang/include/clang/AST/CommentHTMLNamedCharacterReferences.inc
+flang/include/clang/AST/CommentHTMLTags.inc
+flang/include/clang/AST/CommentHTMLTagsProperties.inc
+flang/include/clang/AST/CommentLexer.h
+flang/include/clang/AST/CommentNodes.inc
+flang/include/clang/AST/CommentParser.h
+flang/include/clang/AST/CommentSema.h
+flang/include/clang/AST/CommentVisitor.h
+flang/include/clang/AST/Decl.h
+flang/include/clang/AST/DeclAccessPair.h
+flang/include/clang/AST/DeclBase.h
+flang/include/clang/AST/DeclCXX.h
+flang/include/clang/AST/DeclContextInternals.h
+flang/include/clang/AST/DeclFriend.h
+flang/include/clang/AST/DeclGroup.h
+flang/include/clang/AST/DeclLookups.h
+flang/include/clang/AST/DeclNodes.inc
+flang/include/clang/AST/DeclObjC.h
+flang/include/clang/AST/DeclOpenMP.h
+flang/include/clang/AST/DeclTemplate.h
+flang/include/clang/AST/DeclVisitor.h
+flang/include/clang/AST/DeclarationName.h
+flang/include/clang/AST/DependentDiagnostic.h
+flang/include/clang/AST/EvaluatedExprVisitor.h
+flang/include/clang/AST/Expr.h
+flang/include/clang/AST/ExprCXX.h
+flang/include/clang/AST/ExprObjC.h
+flang/include/clang/AST/ExprOpenMP.h
+flang/include/clang/AST/ExternalASTSource.h
+flang/include/clang/AST/GlobalDecl.h
+flang/include/clang/AST/LambdaCapture.h
+flang/include/clang/AST/LocInfoType.h
+flang/include/clang/AST/Mangle.h
+flang/include/clang/AST/MangleNumberingContext.h
+flang/include/clang/AST/NSAPI.h
+flang/include/clang/AST/NestedNameSpecifier.h
+flang/include/clang/AST/OpenMPClause.h
+flang/include/clang/AST/OperationKinds.def
+flang/include/clang/AST/OperationKinds.h
+flang/include/clang/AST/ParentMap.h
+flang/include/clang/AST/PrettyPrinter.h
+flang/include/clang/AST/RawCommentList.h
+flang/include/clang/AST/RecordLayout.h
+flang/include/clang/AST/RecursiveASTVisitor.h
+flang/include/clang/AST/Redeclarable.h
+flang/include/clang/AST/SelectorLocationsKind.h
+flang/include/clang/AST/Stmt.h
+flang/include/clang/AST/StmtCXX.h
+flang/include/clang/AST/StmtGraphTraits.h
+flang/include/clang/AST/StmtIterator.h
+flang/include/clang/AST/StmtNodes.inc
+flang/include/clang/AST/StmtObjC.h
+flang/include/clang/AST/StmtOpenMP.h
+flang/include/clang/AST/StmtVisitor.h
+flang/include/clang/AST/TemplateBase.h
+flang/include/clang/AST/TemplateName.h
+flang/include/clang/AST/Type.h
+flang/include/clang/AST/TypeLoc.h
+flang/include/clang/AST/TypeLocNodes.def
+flang/include/clang/AST/TypeLocVisitor.h
+flang/include/clang/AST/TypeNodes.def
+flang/include/clang/AST/TypeOrdering.h
+flang/include/clang/AST/TypeVisitor.h
+flang/include/clang/AST/UnresolvedSet.h
+flang/include/clang/AST/VTTBuilder.h
+flang/include/clang/AST/VTableBuilder.h
+flang/include/clang/ASTMatchers/ASTMatchFinder.h
+flang/include/clang/ASTMatchers/ASTMatchers.h
+flang/include/clang/ASTMatchers/ASTMatchersInternal.h
+flang/include/clang/ASTMatchers/ASTMatchersMacros.h
+flang/include/clang/ASTMatchers/Dynamic/Diagnostics.h
+flang/include/clang/ASTMatchers/Dynamic/Parser.h
+flang/include/clang/ASTMatchers/Dynamic/Registry.h
+flang/include/clang/ASTMatchers/Dynamic/VariantValue.h
+flang/include/clang/Analysis/Analyses/CFGReachabilityAnalysis.h
+flang/include/clang/Analysis/Analyses/Consumed.h
+flang/include/clang/Analysis/Analyses/Dominators.h
+flang/include/clang/Analysis/Analyses/FormatString.h
+flang/include/clang/Analysis/Analyses/LiveVariables.h
+flang/include/clang/Analysis/Analyses/PostOrderCFGView.h
+flang/include/clang/Analysis/Analyses/PseudoConstantAnalysis.h
+flang/include/clang/Analysis/Analyses/ReachableCode.h
+flang/include/clang/Analysis/Analyses/ThreadSafety.h
+flang/include/clang/Analysis/Analyses/ThreadSafetyCommon.h
+flang/include/clang/Analysis/Analyses/ThreadSafetyLogical.h
+flang/include/clang/Analysis/Analyses/ThreadSafetyOps.def
+flang/include/clang/Analysis/Analyses/ThreadSafetyTIL.h
+flang/include/clang/Analysis/Analyses/ThreadSafetyTraverse.h
+flang/include/clang/Analysis/Analyses/ThreadSafetyUtil.h
+flang/include/clang/Analysis/Analyses/UninitializedValues.h
+flang/include/clang/Analysis/AnalysisContext.h
+flang/include/clang/Analysis/AnalysisDiagnostic.h
+flang/include/clang/Analysis/CFG.h
+flang/include/clang/Analysis/CFGStmtMap.h
+flang/include/clang/Analysis/CallGraph.h
+flang/include/clang/Analysis/CodeInjector.h
+flang/include/clang/Analysis/DomainSpecific/CocoaConventions.h
+flang/include/clang/Analysis/DomainSpecific/ObjCNoReturn.h
+flang/include/clang/Analysis/FlowSensitive/DataflowValues.h
+flang/include/clang/Analysis/ProgramPoint.h
+flang/include/clang/Analysis/Support/BumpVector.h
+flang/include/clang/Basic/ABI.h
+flang/include/clang/Basic/AddressSpaces.h
+flang/include/clang/Basic/AllDiagnostics.h
+flang/include/clang/Basic/AttrHasAttributeImpl.inc
+flang/include/clang/Basic/AttrKinds.h
+flang/include/clang/Basic/AttrList.inc
+flang/include/clang/Basic/Attributes.h
+flang/include/clang/Basic/Builtins.def
+flang/include/clang/Basic/Builtins.h
+flang/include/clang/Basic/BuiltinsAArch64.def
+flang/include/clang/Basic/BuiltinsAMDGPU.def
+flang/include/clang/Basic/BuiltinsARM.def
+flang/include/clang/Basic/BuiltinsHexagon.def
+flang/include/clang/Basic/BuiltinsLe64.def
+flang/include/clang/Basic/BuiltinsMips.def
+flang/include/clang/Basic/BuiltinsNEON.def
+flang/include/clang/Basic/BuiltinsNVPTX.def
+flang/include/clang/Basic/BuiltinsPPC.def
+flang/include/clang/Basic/BuiltinsSystemZ.def
+flang/include/clang/Basic/BuiltinsWebAssembly.def
+flang/include/clang/Basic/BuiltinsX86.def
+flang/include/clang/Basic/BuiltinsXCore.def
+flang/include/clang/Basic/CapturedStmt.h
+flang/include/clang/Basic/CharInfo.h
+flang/include/clang/Basic/CommentOptions.h
+flang/include/clang/Basic/Cuda.h
+flang/include/clang/Basic/DebugInfoOptions.h
+flang/include/clang/Basic/Diagnostic.h
+flang/include/clang/Basic/DiagnosticASTKinds.inc
+flang/include/clang/Basic/DiagnosticAnalysisKinds.inc
+flang/include/clang/Basic/DiagnosticCategories.h
+flang/include/clang/Basic/DiagnosticCommentKinds.inc
+flang/include/clang/Basic/DiagnosticCommonKinds.inc
+flang/include/clang/Basic/DiagnosticDriverKinds.inc
+flang/include/clang/Basic/DiagnosticFrontendKinds.inc
+flang/include/clang/Basic/DiagnosticGroups.inc
+flang/include/clang/Basic/DiagnosticIDs.h
+flang/include/clang/Basic/DiagnosticIndexName.inc
+flang/include/clang/Basic/DiagnosticLexKinds.inc
+flang/include/clang/Basic/DiagnosticOptions.def
+flang/include/clang/Basic/DiagnosticOptions.h
+flang/include/clang/Basic/DiagnosticParseKinds.inc
+flang/include/clang/Basic/DiagnosticSemaKinds.inc
+flang/include/clang/Basic/DiagnosticSerializationKinds.inc
+flang/include/clang/Basic/ExceptionSpecificationType.h
+flang/include/clang/Basic/ExpressionTraits.h
+flang/include/clang/Basic/FileManager.h
+flang/include/clang/Basic/FileSystemOptions.h
+flang/include/clang/Basic/FileSystemStatCache.h
+flang/include/clang/Basic/IdentifierTable.h
+flang/include/clang/Basic/LLVM.h
+flang/include/clang/Basic/Lambda.h
+flang/include/clang/Basic/LangOptions.def
+flang/include/clang/Basic/LangOptions.h
+flang/include/clang/Basic/Linkage.h
+flang/include/clang/Basic/MacroBuilder.h
+flang/include/clang/Basic/Module.h
+flang/include/clang/Basic/ObjCRuntime.h
+flang/include/clang/Basic/OpenCLExtensions.def
+flang/include/clang/Basic/OpenCLImageTypes.def
+flang/include/clang/Basic/OpenCLOptions.h
+flang/include/clang/Basic/OpenMPKinds.def
+flang/include/clang/Basic/OpenMPKinds.h
+flang/include/clang/Basic/OperatorKinds.def
+flang/include/clang/Basic/OperatorKinds.h
+flang/include/clang/Basic/OperatorPrecedence.h
+flang/include/clang/Basic/PartialDiagnostic.h
+flang/include/clang/Basic/PlistSupport.h
+flang/include/clang/Basic/PragmaKinds.h
+flang/include/clang/Basic/PrettyStackTrace.h
+flang/include/clang/Basic/SanitizerBlacklist.h
+flang/include/clang/Basic/Sanitizers.def
+flang/include/clang/Basic/Sanitizers.h
+flang/include/clang/Basic/SourceLocation.h
+flang/include/clang/Basic/SourceManager.h
+flang/include/clang/Basic/SourceManagerInternals.h
+flang/include/clang/Basic/Specifiers.h
+flang/include/clang/Basic/TargetBuiltins.h
+flang/include/clang/Basic/TargetCXXABI.h
+flang/include/clang/Basic/TargetInfo.h
+flang/include/clang/Basic/TargetOptions.h
+flang/include/clang/Basic/TemplateKinds.h
+flang/include/clang/Basic/TokenKinds.def
+flang/include/clang/Basic/TokenKinds.h
+flang/include/clang/Basic/TypeTraits.h
+flang/include/clang/Basic/Version.h
+flang/include/clang/Basic/Version.inc
+flang/include/clang/Basic/VersionTuple.h
+flang/include/clang/Basic/VirtualFileSystem.h
+flang/include/clang/Basic/Visibility.h
+flang/include/clang/Basic/arm_neon.inc
+flang/include/clang/CodeGen/BackendUtil.h
+flang/include/clang/CodeGen/CGFunctionInfo.h
+flang/include/clang/CodeGen/CodeGenABITypes.h
+flang/include/clang/CodeGen/CodeGenAction.h
+flang/include/clang/CodeGen/ModuleBuilder.h
+flang/include/clang/CodeGen/ObjectFilePCHContainerOperations.h
+flang/include/clang/CodeGen/SwiftCallingConv.h
+flang/include/clang/Config/config.h
+flang/include/clang/Driver/Action.h
+flang/include/clang/Driver/Compilation.h
+flang/include/clang/Driver/Driver.h
+flang/include/clang/Driver/DriverDiagnostic.h
+flang/include/clang/Driver/Job.h
+flang/include/clang/Driver/Multilib.h
+flang/include/clang/Driver/Options.h
+flang/include/clang/Driver/Options.inc
+flang/include/clang/Driver/Phases.h
+flang/include/clang/Driver/SanitizerArgs.h
+flang/include/clang/Driver/Tool.h
+flang/include/clang/Driver/ToolChain.h
+flang/include/clang/Driver/Types.def
+flang/include/clang/Driver/Types.h
+flang/include/clang/Driver/Util.h
+flang/include/clang/Edit/Commit.h
+flang/include/clang/Edit/EditedSource.h
+flang/include/clang/Edit/EditsReceiver.h
+flang/include/clang/Edit/FileOffset.h
+flang/include/clang/Edit/Rewriters.h
+flang/include/clang/Format/Format.h
+flang/include/clang/Frontend/ASTConsumers.h
+flang/include/clang/Frontend/ASTUnit.h
+flang/include/clang/Frontend/ChainedDiagnosticConsumer.h
+flang/include/clang/Frontend/CodeGenOptions.def
+flang/include/clang/Frontend/CodeGenOptions.h
+flang/include/clang/Frontend/CommandLineSourceLoc.h
+flang/include/clang/Frontend/CompilerInstance.h
+flang/include/clang/Frontend/CompilerInvocation.h
+flang/include/clang/Frontend/DependencyOutputOptions.h
+flang/include/clang/Frontend/DiagnosticRenderer.h
+flang/include/clang/Frontend/FrontendAction.h
+flang/include/clang/Frontend/FrontendActions.h
+flang/include/clang/Frontend/FrontendDiagnostic.h
+flang/include/clang/Frontend/FrontendOptions.h
+flang/include/clang/Frontend/FrontendPluginRegistry.h
+flang/include/clang/Frontend/LangStandard.h
+flang/include/clang/Frontend/LangStandards.def
+flang/include/clang/Frontend/LayoutOverrideSource.h
+flang/include/clang/Frontend/LogDiagnosticPrinter.h
+flang/include/clang/Frontend/MigratorOptions.h
+flang/include/clang/Frontend/MultiplexConsumer.h
+flang/include/clang/Frontend/PCHContainerOperations.h
+flang/include/clang/Frontend/PreprocessorOutputOptions.h
+flang/include/clang/Frontend/SerializedDiagnosticPrinter.h
+flang/include/clang/Frontend/SerializedDiagnosticReader.h
+flang/include/clang/Frontend/SerializedDiagnostics.h
+flang/include/clang/Frontend/TextDiagnostic.h
+flang/include/clang/Frontend/TextDiagnosticBuffer.h
+flang/include/clang/Frontend/TextDiagnosticPrinter.h
+flang/include/clang/Frontend/Utils.h
+flang/include/clang/Frontend/VerifyDiagnosticConsumer.h
+flang/include/clang/FrontendTool/Utils.h
+flang/include/clang/Index/CodegenNameGenerator.h
+flang/include/clang/Index/CommentToXML.h
+flang/include/clang/Index/IndexDataConsumer.h
+flang/include/clang/Index/IndexSymbol.h
+flang/include/clang/Index/IndexingAction.h
+flang/include/clang/Index/USRGeneration.h
+flang/include/clang/Lex/CodeCompletionHandler.h
+flang/include/clang/Lex/DirectoryLookup.h
+flang/include/clang/Lex/ExternalPreprocessorSource.h
+flang/include/clang/Lex/HeaderMap.h
+flang/include/clang/Lex/HeaderMapTypes.h
+flang/include/clang/Lex/HeaderSearch.h
+flang/include/clang/Lex/HeaderSearchOptions.h
+flang/include/clang/Lex/LexDiagnostic.h
+flang/include/clang/Lex/Lexer.h
+flang/include/clang/Lex/LiteralSupport.h
+flang/include/clang/Lex/MacroArgs.h
+flang/include/clang/Lex/MacroInfo.h
+flang/include/clang/Lex/ModuleLoader.h
+flang/include/clang/Lex/ModuleMap.h
+flang/include/clang/Lex/MultipleIncludeOpt.h
+flang/include/clang/Lex/PPCallbacks.h
+flang/include/clang/Lex/PPConditionalDirectiveRecord.h
+flang/include/clang/Lex/PTHLexer.h
+flang/include/clang/Lex/PTHManager.h
+flang/include/clang/Lex/Pragma.h
+flang/include/clang/Lex/PreprocessingRecord.h
+flang/include/clang/Lex/Preprocessor.h
+flang/include/clang/Lex/PreprocessorLexer.h
+flang/include/clang/Lex/PreprocessorOptions.h
+flang/include/clang/Lex/ScratchBuffer.h
+flang/include/clang/Lex/Token.h
+flang/include/clang/Lex/TokenConcatenation.h
+flang/include/clang/Lex/TokenLexer.h
+flang/include/clang/Parse/AttrParserStringSwitches.inc
+flang/include/clang/Parse/ParseAST.h
+flang/include/clang/Parse/ParseDiagnostic.h
+flang/include/clang/Parse/Parser.h
+flang/include/clang/Rewrite/Core/DeltaTree.h
+flang/include/clang/Rewrite/Core/HTMLRewrite.h
+flang/include/clang/Rewrite/Core/RewriteBuffer.h
+flang/include/clang/Rewrite/Core/RewriteRope.h
+flang/include/clang/Rewrite/Core/Rewriter.h
+flang/include/clang/Rewrite/Core/TokenRewriter.h
+flang/include/clang/Rewrite/Frontend/ASTConsumers.h
+flang/include/clang/Rewrite/Frontend/FixItRewriter.h
+flang/include/clang/Rewrite/Frontend/FrontendActions.h
+flang/include/clang/Rewrite/Frontend/Rewriters.h
+flang/include/clang/Sema/AnalysisBasedWarnings.h
+flang/include/clang/Sema/AttrParsedAttrImpl.inc
+flang/include/clang/Sema/AttrParsedAttrKinds.inc
+flang/include/clang/Sema/AttrParsedAttrList.inc
+flang/include/clang/Sema/AttrSpellingListIndex.inc
+flang/include/clang/Sema/AttrTemplateInstantiate.inc
+flang/include/clang/Sema/AttributeList.h
+flang/include/clang/Sema/CXXFieldCollector.h
+flang/include/clang/Sema/CleanupInfo.h
+flang/include/clang/Sema/CodeCompleteConsumer.h
+flang/include/clang/Sema/CodeCompleteOptions.h
+flang/include/clang/Sema/DeclSpec.h
+flang/include/clang/Sema/DelayedDiagnostic.h
+flang/include/clang/Sema/Designator.h
+flang/include/clang/Sema/ExternalSemaSource.h
+flang/include/clang/Sema/IdentifierResolver.h
+flang/include/clang/Sema/Initialization.h
+flang/include/clang/Sema/Lookup.h
+flang/include/clang/Sema/LoopHint.h
+flang/include/clang/Sema/MultiplexExternalSemaSource.h
+flang/include/clang/Sema/ObjCMethodList.h
+flang/include/clang/Sema/Overload.h
+flang/include/clang/Sema/Ownership.h
+flang/include/clang/Sema/ParsedTemplate.h
+flang/include/clang/Sema/PrettyDeclStackTrace.h
+flang/include/clang/Sema/Scope.h
+flang/include/clang/Sema/ScopeInfo.h
+flang/include/clang/Sema/Sema.h
+flang/include/clang/Sema/SemaConsumer.h
+flang/include/clang/Sema/SemaDiagnostic.h
+flang/include/clang/Sema/SemaFixItUtils.h
+flang/include/clang/Sema/SemaInternal.h
+flang/include/clang/Sema/SemaLambda.h
+flang/include/clang/Sema/Template.h
+flang/include/clang/Sema/TemplateDeduction.h
+flang/include/clang/Sema/TypoCorrection.h
+flang/include/clang/Sema/Weak.h
+flang/include/clang/Serialization/ASTBitCodes.h
+flang/include/clang/Serialization/ASTDeserializationListener.h
+flang/include/clang/Serialization/ASTReader.h
+flang/include/clang/Serialization/ASTWriter.h
+flang/include/clang/Serialization/AttrPCHRead.inc
+flang/include/clang/Serialization/AttrPCHWrite.inc
+flang/include/clang/Serialization/ContinuousRangeMap.h
+flang/include/clang/Serialization/GlobalModuleIndex.h
+flang/include/clang/Serialization/Module.h
+flang/include/clang/Serialization/ModuleFileExtension.h
+flang/include/clang/Serialization/ModuleManager.h
+flang/include/clang/Serialization/SerializationDiagnostic.h
+flang/include/clang/StaticAnalyzer/Checkers/Checkers.inc
+flang/include/clang/StaticAnalyzer/Checkers/ClangCheckers.h
+flang/include/clang/StaticAnalyzer/Checkers/LocalCheckers.h
+flang/include/clang/StaticAnalyzer/Checkers/ObjCRetainCount.h
+flang/include/clang/StaticAnalyzer/Checkers/SValExplainer.h
+flang/include/clang/StaticAnalyzer/Core/Analyses.def
+flang/include/clang/StaticAnalyzer/Core/AnalyzerOptions.h
+flang/include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h
+flang/include/clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitor.h
+flang/include/clang/StaticAnalyzer/Core/BugReporter/BugType.h
+flang/include/clang/StaticAnalyzer/Core/BugReporter/CommonBugCategories.h
+flang/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h
+flang/include/clang/StaticAnalyzer/Core/Checker.h
+flang/include/clang/StaticAnalyzer/Core/CheckerManager.h
+flang/include/clang/StaticAnalyzer/Core/CheckerOptInfo.h
+flang/include/clang/StaticAnalyzer/Core/CheckerRegistry.h
+flang/include/clang/StaticAnalyzer/Core/IssueHash.h
+flang/include/clang/StaticAnalyzer/Core/PathDiagnosticConsumers.h
+flang/include/clang/StaticAnalyzer/Core/PathSensitive/APSIntType.h
+flang/include/clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h
+flang/include/clang/StaticAnalyzer/Core/PathSensitive/BasicValueFactory.h
+flang/include/clang/StaticAnalyzer/Core/PathSensitive/BlockCounter.h
+flang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h
+flang/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h
+flang/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerHelpers.h
+flang/include/clang/StaticAnalyzer/Core/PathSensitive/ConstraintManager.h
+flang/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h
+flang/include/clang/StaticAnalyzer/Core/PathSensitive/DynamicTypeInfo.h
+flang/include/clang/StaticAnalyzer/Core/PathSensitive/DynamicTypeMap.h
+flang/include/clang/StaticAnalyzer/Core/PathSensitive/Environment.h
+flang/include/clang/StaticAnalyzer/Core/PathSensitive/ExplodedGraph.h
+flang/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h
+flang/include/clang/StaticAnalyzer/Core/PathSensitive/FunctionSummary.h
+flang/include/clang/StaticAnalyzer/Core/PathSensitive/LoopWidening.h
+flang/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h
+flang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h
+flang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramStateTrait.h
+flang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState_Fwd.h
+flang/include/clang/StaticAnalyzer/Core/PathSensitive/Regions.def
+flang/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h
+flang/include/clang/StaticAnalyzer/Core/PathSensitive/SValVisitor.h
+flang/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.def
+flang/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h
+flang/include/clang/StaticAnalyzer/Core/PathSensitive/Store.h
+flang/include/clang/StaticAnalyzer/Core/PathSensitive/StoreRef.h
+flang/include/clang/StaticAnalyzer/Core/PathSensitive/SubEngine.h
+flang/include/clang/StaticAnalyzer/Core/PathSensitive/SummaryManager.h
+flang/include/clang/StaticAnalyzer/Core/PathSensitive/SymExpr.h
+flang/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
+flang/include/clang/StaticAnalyzer/Core/PathSensitive/Symbols.def
+flang/include/clang/StaticAnalyzer/Core/PathSensitive/TaintManager.h
+flang/include/clang/StaticAnalyzer/Core/PathSensitive/TaintTag.h
+flang/include/clang/StaticAnalyzer/Core/PathSensitive/WorkList.h
+flang/include/clang/StaticAnalyzer/Frontend/AnalysisConsumer.h
+flang/include/clang/StaticAnalyzer/Frontend/CheckerRegistration.h
+flang/include/clang/StaticAnalyzer/Frontend/FrontendActions.h
+flang/include/clang/StaticAnalyzer/Frontend/ModelConsumer.h
+flang/include/clang/Tooling/ArgumentsAdjusters.h
+flang/include/clang/Tooling/CommonOptionsParser.h
+flang/include/clang/Tooling/CompilationDatabase.h
+flang/include/clang/Tooling/CompilationDatabasePluginRegistry.h
+flang/include/clang/Tooling/Core/Lookup.h
+flang/include/clang/Tooling/Core/QualTypeNames.h
+flang/include/clang/Tooling/Core/Replacement.h
+flang/include/clang/Tooling/FileMatchTrie.h
+flang/include/clang/Tooling/FixIt.h
+flang/include/clang/Tooling/JSONCompilationDatabase.h
+flang/include/clang/Tooling/Refactoring.h
+flang/include/clang/Tooling/RefactoringCallbacks.h
+flang/include/clang/Tooling/ReplacementsYaml.h
+flang/include/clang/Tooling/Tooling.h
+flang/lib/clang/3.9.1/include/__clang_cuda_cmath.h
+flang/lib/clang/3.9.1/include/__clang_cuda_intrinsics.h
+flang/lib/clang/3.9.1/include/__clang_cuda_math_forward_declares.h
+flang/lib/clang/3.9.1/include/__clang_cuda_runtime_wrapper.h
+flang/lib/clang/3.9.1/include/__stddef_max_align_t.h
+flang/lib/clang/3.9.1/include/__wmmintrin_aes.h
+flang/lib/clang/3.9.1/include/__wmmintrin_pclmul.h
+flang/lib/clang/3.9.1/include/adxintrin.h
+flang/lib/clang/3.9.1/include/altivec.h
+flang/lib/clang/3.9.1/include/ammintrin.h
+flang/lib/clang/3.9.1/include/arm_acle.h
+flang/lib/clang/3.9.1/include/arm_neon.h
+flang/lib/clang/3.9.1/include/avx2intrin.h
+flang/lib/clang/3.9.1/include/avx512bwintrin.h
+flang/lib/clang/3.9.1/include/avx512cdintrin.h
+flang/lib/clang/3.9.1/include/avx512dqintrin.h
+flang/lib/clang/3.9.1/include/avx512erintrin.h
+flang/lib/clang/3.9.1/include/avx512fintrin.h
+flang/lib/clang/3.9.1/include/avx512ifmaintrin.h
+flang/lib/clang/3.9.1/include/avx512ifmavlintrin.h
+flang/lib/clang/3.9.1/include/avx512pfintrin.h
+flang/lib/clang/3.9.1/include/avx512vbmiintrin.h
+flang/lib/clang/3.9.1/include/avx512vbmivlintrin.h
+flang/lib/clang/3.9.1/include/avx512vlbwintrin.h
+flang/lib/clang/3.9.1/include/avx512vlcdintrin.h
+flang/lib/clang/3.9.1/include/avx512vldqintrin.h
+flang/lib/clang/3.9.1/include/avx512vlintrin.h
+flang/lib/clang/3.9.1/include/avxintrin.h
+flang/lib/clang/3.9.1/include/bmi2intrin.h
+flang/lib/clang/3.9.1/include/bmiintrin.h
+flang/lib/clang/3.9.1/include/clflushoptintrin.h
+flang/lib/clang/3.9.1/include/cpuid.h
+flang/lib/clang/3.9.1/include/cuda_builtin_vars.h
+flang/lib/clang/3.9.1/include/emmintrin.h
+flang/lib/clang/3.9.1/include/f16cintrin.h
+flang/lib/clang/3.9.1/include/float.h
+flang/lib/clang/3.9.1/include/fma4intrin.h
+flang/lib/clang/3.9.1/include/fmaintrin.h
+flang/lib/clang/3.9.1/include/fxsrintrin.h
+flang/lib/clang/3.9.1/include/htmintrin.h
+flang/lib/clang/3.9.1/include/htmxlintrin.h
+flang/lib/clang/3.9.1/include/ia32intrin.h
+flang/lib/clang/3.9.1/include/immintrin.h
+flang/lib/clang/3.9.1/include/intrin.h
+flang/lib/clang/3.9.1/include/inttypes.h
+flang/lib/clang/3.9.1/include/iso646.h
+flang/lib/clang/3.9.1/include/limits.h
+flang/lib/clang/3.9.1/include/lzcntintrin.h
+flang/lib/clang/3.9.1/include/mm3dnow.h
+flang/lib/clang/3.9.1/include/mm_malloc.h
+flang/lib/clang/3.9.1/include/mmintrin.h
+flang/lib/clang/3.9.1/include/module.modulemap
+flang/lib/clang/3.9.1/include/msa.h
+flang/lib/clang/3.9.1/include/mwaitxintrin.h
+flang/lib/clang/3.9.1/include/nmmintrin.h
+flang/lib/clang/3.9.1/include/opencl-c.h
+flang/lib/clang/3.9.1/include/pkuintrin.h
+flang/lib/clang/3.9.1/include/pmmintrin.h
+flang/lib/clang/3.9.1/include/popcntintrin.h
+flang/lib/clang/3.9.1/include/prfchwintrin.h
+flang/lib/clang/3.9.1/include/rdseedintrin.h
+flang/lib/clang/3.9.1/include/rtmintrin.h
+flang/lib/clang/3.9.1/include/s390intrin.h
+flang/lib/clang/3.9.1/include/shaintrin.h
+flang/lib/clang/3.9.1/include/smmintrin.h
+flang/lib/clang/3.9.1/include/stdalign.h
+flang/lib/clang/3.9.1/include/stdarg.h
+flang/lib/clang/3.9.1/include/stdatomic.h
+flang/lib/clang/3.9.1/include/stdbool.h
+flang/lib/clang/3.9.1/include/stddef.h
+flang/lib/clang/3.9.1/include/stdint.h
+flang/lib/clang/3.9.1/include/stdnoreturn.h
+flang/lib/clang/3.9.1/include/tbmintrin.h
+flang/lib/clang/3.9.1/include/tgmath.h
+flang/lib/clang/3.9.1/include/tmmintrin.h
+flang/lib/clang/3.9.1/include/unwind.h
+flang/lib/clang/3.9.1/include/vadefs.h
+flang/lib/clang/3.9.1/include/varargs.h
+flang/lib/clang/3.9.1/include/vecintrin.h
+flang/lib/clang/3.9.1/include/wmmintrin.h
+flang/lib/clang/3.9.1/include/x86intrin.h
+flang/lib/clang/3.9.1/include/xmmintrin.h
+flang/lib/clang/3.9.1/include/xopintrin.h
+flang/lib/clang/3.9.1/include/xsavecintrin.h
+flang/lib/clang/3.9.1/include/xsaveintrin.h
+flang/lib/clang/3.9.1/include/xsaveoptintrin.h
+flang/lib/clang/3.9.1/include/xsavesintrin.h
+flang/lib/clang/3.9.1/include/xtestintrin.h
+flang/lib/cmake/clang/ClangConfig.cmake
+flang/lib/cmake/clang/ClangTargets-%%CMAKE_BUILD_TYPE%%.cmake
+flang/lib/cmake/clang/ClangTargets.cmake
+flang/lib/libclang.so
+flang/lib/libclang.so.3.9
+flang/lib/libclangARCMigrate.a
+flang/lib/libclangAST.a
+flang/lib/libclangASTMatchers.a
+flang/lib/libclangAnalysis.a
+flang/lib/libclangBasic.a
+flang/lib/libclangCodeGen.a
+flang/lib/libclangDriver.a
+flang/lib/libclangDynamicASTMatchers.a
+flang/lib/libclangEdit.a
+flang/lib/libclangFormat.a
+flang/lib/libclangFrontend.a
+flang/lib/libclangFrontendTool.a
+flang/lib/libclangIndex.a
+flang/lib/libclangLex.a
+flang/lib/libclangParse.a
+flang/lib/libclangRewrite.a
+flang/lib/libclangRewriteFrontend.a
+flang/lib/libclangSema.a
+flang/lib/libclangSerialization.a
+flang/lib/libclangStaticAnalyzerCheckers.a
+flang/lib/libclangStaticAnalyzerCore.a
+flang/lib/libclangStaticAnalyzerFrontend.a
+flang/lib/libclangTooling.a
+flang/lib/libclangToolingCore.a
+flang/libexec/c++-analyzer
+flang/libexec/ccc-analyzer
+flang/man/man1/scan-build.1.gz
+flang/share/clang/clang-format-bbedit.applescript
+flang/share/clang/clang-format-diff.py
+flang/share/clang/clang-format-sublime.py
+flang/share/clang/clang-format.el
+flang/share/clang/clang-format.py
+flang/share/scan-build/scanview.css
+flang/share/scan-build/sorttable.js
+flang/share/scan-view/FileRadar.scpt
+flang/share/scan-view/GetRadarVersion.scpt
+flang/share/scan-view/Reporter.py
+flang/share/scan-view/ScanView.py
+flang/share/scan-view/bugcatcher.ico
+flang/share/scan-view/startfile.py
diff --git a/devel/flang/Makefile b/devel/flang/Makefile
new file mode 100644
index 000000000000..00691d4f6115
--- /dev/null
+++ b/devel/flang/Makefile
@@ -0,0 +1,52 @@
+# Created by: Johannes M Dieterich <jmd@FreeBSD.org>
+# $FreeBSD$
+
+PORTNAME= flang
+DISTVERSION= 3.9-20170518
+CATEGORIES= devel
+
+MAINTAINER= jmd@FreeBSD.org
+COMMENT= Fortran compiler targeting LLVM
+
+LICENSE= APACHE20
+LICENSE_FILE= ${WRKSRC}/LICENSE.txt
+
+BUILD_DEPENDS= llvm39>=0:devel/llvm39 \
+ openmp>=0:devel/openmp \
+ flang-clang>=0:devel/flang-clang
+RUN_DEPENDS= llvm39>=0:devel/llvm39 \
+ openmp>=0:devel/openmp \
+ flang-clang>=0:devel/flang-clang
+
+ONLY_FOR_ARCHS= amd64
+ONLY_FOR_ARCHS_REASON_amd64= for now only builds and is supported on amd64
+
+USE_LDCONFIG= ${PREFIX}/flang/lib
+USES= cmake:outsource compiler:c++11-lib libedit perl5 tar:xz \
+ shebangfix
+USES_PYTHON?= python:build
+USES+= ${_USES_PYTHON}
+
+USE_GITHUB= yes
+GH_ACCOUNT= flang-compiler
+GH_TAGNAME= a9ccdd7
+
+CMAKE_ARGS+= -DLLVM_CONFIG=${LOCALBASE}/bin/llvm-config39 \
+ -DCMAKE_CXX_COMPILER=${LOCALBASE}flang/bin/clang++ \
+ -DCMAKE_C_COMPILER=${LOCALBASE}/flang/bin/clang \
+ -DCMAKE_Fortran_COMPILER=${LOCALBASE}/flang/bin/flang
+
+CMAKE_INSTALL_PREFIX= ${PREFIX}/flang
+
+MAKE_JOBS_UNSAFE= yes
+
+post-patch:
+ @${CP} -r ${WRKSRC}/tools/flang2/flang2exe/x86_64-Linux ${WRKSRC}/tools/flang2/flang2exe/x86_64-FreeBSD
+
+post-install:
+ @${SED} -e 's|%%PREFIX%%|${PREFIX}|g' \
+ < ${FILESDIR}/flang.in > \
+ ${WRKDIR}/flang
+ ${INSTALL_SCRIPT} ${WRKDIR}/flang ${STAGEDIR}/${PREFIX}/bin/flang
+
+.include <bsd.port.mk>
diff --git a/devel/flang/distinfo b/devel/flang/distinfo
new file mode 100644
index 000000000000..ea3c497c0881
--- /dev/null
+++ b/devel/flang/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1495121602
+SHA256 (flang-compiler-flang-3.9-20170518-a9ccdd7_GH0.tar.gz) = ddcd8d00bf4429ca63a47d6509dc4c77708afbeda90133121bdb63505fa005b9
+SIZE (flang-compiler-flang-3.9-20170518-a9ccdd7_GH0.tar.gz) = 3574207
diff --git a/devel/flang/files/flang.in b/devel/flang/files/flang.in
new file mode 100644
index 000000000000..eef94f1d9e23
--- /dev/null
+++ b/devel/flang/files/flang.in
@@ -0,0 +1,2 @@
+#!/bin/sh
+%%PREFIX%%/flang/bin/flang -L%%PREFIX%%/flang/lib -lflang -lflangmain -lflangrti -lexecinfo $@
diff --git a/devel/flang/files/patch-CMakeLists.txt b/devel/flang/files/patch-CMakeLists.txt
new file mode 100644
index 000000000000..cf98426a07f2
--- /dev/null
+++ b/devel/flang/files/patch-CMakeLists.txt
@@ -0,0 +1,50 @@
+--- CMakeLists.txt.orig 2017-05-17 00:40:01 UTC
++++ CMakeLists.txt
+@@ -23,7 +23,7 @@ cmake_minimum_required(VERSION 2.8)
+ SET(CMAKE_Fortran_COMPILER_WORKS 1)
+
+ if( NOT DEFINED TARGET_ARCHITECTURE )
+- execute_process(COMMAND uname -i OUTPUT_STRIP_TRAILING_WHITESPACE
++ execute_process(COMMAND uname -m OUTPUT_STRIP_TRAILING_WHITESPACE
+ OUTPUT_VARIABLE TARGET_ARCHITECTURE)
+ execute_process(COMMAND uname -s OUTPUT_STRIP_TRAILING_WHITESPACE
+ OUTPUT_VARIABLE TARGET_OS)
+@@ -48,6 +48,19 @@ if( ${TARGET_OS} STREQUAL "Linux" )
+ message("Unsupported architecture: ${TARGET_ARCHITECTURE}" )
+ return()
+ endif()
++elseif( ${TARGET_OS} STREQUAL "FreeBSD" )
++ set(OS "FREEBSD")
++ set(OSNAME "FreeBSD")
++ # this is very hacky!
++ if( ${TARGET_ARCHITECTURE} STREQUAL "amd64" )
++ set(ARCHNAME x86-64)
++ set(ARCH X86)
++ set(WRDSZ 64)
++ set(TARGET_ARCHITECTURE x86_64)
++ else()
++ message("Unsupported architecture: ${TARGET_ARCHITECTURE}" )
++ return()
++ endif()
+ else()
+ message("Unsupported OS: ${TARGET_OS}" )
+ return()
+@@ -56,7 +69,8 @@ endif()
+ # The cmake documentation states that these are set. They are not so we
+ # set them here
+ set(CMAKE_HOST_SYSTEM_NAME ${TARGET_OS})
+-set(CMAKE_HOST_SYSTEM_PROCESSOR ${TARGET_ARCHITECTURE})
++# also a hack
++set(CMAKE_HOST_SYSTEM_PROCESSOR "x86-64")
+
+ # If we are not building as a part of LLVM, build Flang as an
+ # standalone project, using LLVM as an external library:
+@@ -292,7 +306,7 @@ endif()
+ # Add appropriate flags for GCC
+ if (LLVM_COMPILER_IS_GCC_COMPATIBLE)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fno-common -Woverloaded-virtual -Wcast-qual -fno-strict-aliasing -pedantic -Wno-long-long -Wall -W -Wno-unused-parameter -Wwrite-strings")
+- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror")
++ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-macro-redefined -Wno-logical-not-parentheses -Wno-unknown-warning-option")
+ endif ()
+
+ if (APPLE)
diff --git a/devel/flang/files/patch-runtime_flang_async.c b/devel/flang/files/patch-runtime_flang_async.c
new file mode 100644
index 000000000000..0b5470515e01
--- /dev/null
+++ b/devel/flang/files/patch-runtime_flang_async.c
@@ -0,0 +1,37 @@
+--- runtime/flang/async.c.orig 2017-05-17 00:40:01 UTC
++++ runtime/flang/async.c
+@@ -27,6 +27,8 @@
+ * Fio_asy_close - called from close
+ */
+
++#include <sys/signal.h>
++
+ #if !defined(INTERIX86) && !defined(TARGET_INTERIX) && !defined(TARGET_OSX) && !defined(CRAY) && !defined(TARGET_WIN_X8632)
+
+ #if !defined(TARGET_WIN_X8664)
+@@ -44,7 +46,6 @@
+ #include "stdioInterf.h"
+ #include "async.h"
+
+-
+ #define FIO_MAX_ASYNC_TRANSACTIONS 16
+
+ /* one struct per file */
+@@ -320,7 +321,7 @@ Fio_asy_read(struct asy *asy, void *adr,
+ asy->aiocb[tn].aio_reqprio = 0;
+ asy->aiocb[tn].aio_buf = adr;
+ asy->aiocb[tn].aio_nbytes = len;
+- memset(&(asy->aiocb[tn].aio_sigevent), 0, sizeof(sigevent_t));
++ memset(&(asy->aiocb[tn].aio_sigevent), 0, sizeof(struct sigevent));
+ asy->aiocb[tn].aio_offset = asy->atd[tn].off;
+ n = aio_read(&(asy->aiocb[tn]));
+ #endif
+@@ -374,7 +375,7 @@ Fio_asy_write(struct asy *asy, void *adr
+ asy->aiocb[tn].aio_reqprio = 0;
+ asy->aiocb[tn].aio_buf = adr;
+ asy->aiocb[tn].aio_nbytes = len;
+- memset(&(asy->aiocb[tn].aio_sigevent), 0, sizeof(sigevent_t));
++ memset(&(asy->aiocb[tn].aio_sigevent), 0, sizeof(struct sigevent));
+ asy->aiocb[tn].aio_offset = asy->atd[tn].off;
+ n = aio_write(&(asy->aiocb[tn]));
+ #endif
diff --git a/devel/flang/files/patch-runtime_flang_cdexp.c b/devel/flang/files/patch-runtime_flang_cdexp.c
new file mode 100644
index 000000000000..b56b2e1e769d
--- /dev/null
+++ b/devel/flang/files/patch-runtime_flang_cdexp.c
@@ -0,0 +1,12 @@
+--- runtime/flang/cdexp.c.orig 2017-05-17 00:40:01 UTC
++++ runtime/flang/cdexp.c
+@@ -22,7 +22,8 @@ __mth_i_cdexp(dcmplx_t *dcmplx, double r
+ {
+ double x, y, z;
+ x = exp(real);
+- sincos(imag, &z, &y);
++ z = sin(imag);
++ y = cos(imag);
+ y *= x;
+ z *= x;
+ d_dummy(y, z); /* should leave y & z in appropriate
diff --git a/devel/flang/files/patch-runtime_flang_cexp.c b/devel/flang/files/patch-runtime_flang_cexp.c
new file mode 100644
index 000000000000..b840933d41cd
--- /dev/null
+++ b/devel/flang/files/patch-runtime_flang_cexp.c
@@ -0,0 +1,12 @@
+--- runtime/flang/cexp.c.orig 2017-05-17 00:40:01 UTC
++++ runtime/flang/cexp.c
+@@ -22,7 +22,8 @@ __mth_i_cexp(cmplx_t *cmplx, float real,
+ {
+ float x, y, z;
+ x = exp(real);
+- sincosf(imag, &z, &y);
++ z = sinf(imag);
++ y = cosf(imag);
+ y *= x;
+ z *= x;
+ r_dummy(y, z); /* should leave y & z in appropriate
diff --git a/devel/flang/files/patch-runtime_flang_stime3f.c b/devel/flang/files/patch-runtime_flang_stime3f.c
new file mode 100644
index 000000000000..e0d08dd0ded7
--- /dev/null
+++ b/devel/flang/files/patch-runtime_flang_stime3f.c
@@ -0,0 +1,17 @@
+--- runtime/flang/stime3f.c.orig 2017-05-17 00:40:01 UTC
++++ runtime/flang/stime3f.c
+@@ -27,13 +27,7 @@
+
+ int ENT3F(STIME, stime)(int *tp)
+ {
+- int i;
+- time_t t = *tp;
+-
+- if ((i = stime(&t)))
+- i = __io_errno();
+-
+- return i;
++ return EPERM;
+ }
+
+ #endif /* !WINNT */
diff --git a/devel/flang/files/patch-runtime_flangrti_dumpregs.h b/devel/flang/files/patch-runtime_flangrti_dumpregs.h
new file mode 100644
index 000000000000..4da25a6133f0
--- /dev/null
+++ b/devel/flang/files/patch-runtime_flangrti_dumpregs.h
@@ -0,0 +1,11 @@
+--- runtime/flangrti/dumpregs.h.orig 2017-05-17 00:40:01 UTC
++++ runtime/flangrti/dumpregs.h
+@@ -21,6 +21,6 @@
+ * Declare routines that access the machine registers
+ */
+
+-void dumpregs(gregset_t *regs);
+-gregset_t *getRegs(ucontext_t *u);
++void dumpregs(void *regs);
++void *getRegs(ucontext_t *u);
+
diff --git a/devel/flang/files/patch-runtime_flangrti_erfc__scaled.c b/devel/flang/files/patch-runtime_flangrti_erfc__scaled.c
new file mode 100644
index 000000000000..adf5b26114e2
--- /dev/null
+++ b/devel/flang/files/patch-runtime_flangrti_erfc__scaled.c
@@ -0,0 +1,11 @@
+--- runtime/flangrti/erfc_scaled.c.orig 2017-05-17 00:40:01 UTC
++++ runtime/flangrti/erfc_scaled.c
+@@ -19,7 +19,7 @@
+ #pragma global - Mx, 6, 0x100
+
+ #include "mthdecls.h"
+-#if defined(TARGET_WIN) || defined(win32) || defined(TARGET_OSX)
++#if defined(TARGET_WIN) || defined(win32) || defined(TARGET_OSX) || defined(__FreeBSD__)
+ #include <float.h>
+ #else
+ #include <values.h>
diff --git a/devel/flang/files/patch-runtime_flangrti_erfc__scaledf.c b/devel/flang/files/patch-runtime_flangrti_erfc__scaledf.c
new file mode 100644
index 000000000000..a850b7e8c059
--- /dev/null
+++ b/devel/flang/files/patch-runtime_flangrti_erfc__scaledf.c
@@ -0,0 +1,11 @@
+--- runtime/flangrti/erfc_scaledf.c.orig 2017-05-17 00:40:01 UTC
++++ runtime/flangrti/erfc_scaledf.c
+@@ -19,7 +19,7 @@
+ #pragma global - Mx, 6, 0x100
+
+ #include "mthdecls.h"
+-#if defined(TARGET_WIN) || defined(win32) || defined(TARGET_OSX)
++#if defined(TARGET_WIN) || defined(win32) || defined(TARGET_OSX) || defined(__FreeBSD__)
+ #include <float.h>
+ #else
+ #include <values.h>
diff --git a/devel/flang/files/patch-runtime_flangrti_iostdinit.c b/devel/flang/files/patch-runtime_flangrti_iostdinit.c
new file mode 100644
index 000000000000..c75ed4e8909d
--- /dev/null
+++ b/devel/flang/files/patch-runtime_flangrti_iostdinit.c
@@ -0,0 +1,28 @@
+--- runtime/flangrti/iostdinit.c.orig 2017-05-17 00:40:01 UTC
++++ runtime/flangrti/iostdinit.c
+@@ -160,7 +160,7 @@ __io_ferror(void *p)
+ int
+ __io_getfd(void *fp)
+ {
+- return (((FILE *)fp)->_fileno);
++ return (((FILE *)fp)->_file);
+ }
+
+ /* is a tty? */
+@@ -270,14 +270,14 @@ extern long *_imp___timezone_dll; /* for
+ #define timezone _timezone /* cygnus, timezone is usually a function */
+ #endif
+
+-#elif !defined(DEC) && !defined(IBM) && !defined(ST100_V1_2) && !defined(OSX86) /* !defined(WINNT) */
++#elif !defined(DEC) && !defined(IBM) && !defined(ST100_V1_2) && !defined(OSX86) && !defined(__FreeBSD__) /* !defined(WINNT) */
+ extern time_t timezone; /* for the rest */
+ #endif
+
+ int
+ __io_timezone(void *tm)
+ {
+-#if defined(SUN4) || defined(PPC) || defined(OSX86)
++#if defined(SUN4) || defined(PPC) || defined(OSX86) || defined(__FreeBSD__)
+ return ((struct tm *)tm)->tm_gmtoff;
+ #elif defined(WINNT) || defined(WIN64) || defined(WIN32)
+ return (0);
diff --git a/devel/flang/files/patch-runtime_flangrti_trace__lin.c b/devel/flang/files/patch-runtime_flangrti_trace__lin.c
new file mode 100644
index 000000000000..353a9b46e037
--- /dev/null
+++ b/devel/flang/files/patch-runtime_flangrti_trace__lin.c
@@ -0,0 +1,20 @@
+--- runtime/flangrti/trace_lin.c.orig 2017-05-17 00:40:01 UTC
++++ runtime/flangrti/trace_lin.c
+@@ -85,7 +85,7 @@ static struct sigs sigs[] = {
+ {0, CODNULL, NULL} /* end of list */
+ };
+
+-static gregset_t *regs; /* pointer to regs at signal */
++static void *regs; /* pointer to regs at signal */
+
+ /* walk the stack back */
+
+@@ -99,7 +99,7 @@ __abort_trace(int skip)
+ char **strings;
+ size_t i, n;
+
+- if (regs != (gregset_t *)0) {
++ if (regs != (void *)0) {
+ dumpregs(regs);
+ }
+
diff --git a/devel/flang/files/patch-runtime_flangrti_x86__64-Linux_dumpregs.c b/devel/flang/files/patch-runtime_flangrti_x86__64-Linux_dumpregs.c
new file mode 100644
index 000000000000..1b52fb8db1be
--- /dev/null
+++ b/devel/flang/files/patch-runtime_flangrti_x86__64-Linux_dumpregs.c
@@ -0,0 +1,11 @@
+--- runtime/flangrti/x86_64-Linux/dumpregs.c.orig 2017-05-17 00:40:01 UTC
++++ runtime/flangrti/x86_64-Linux/dumpregs.c
+@@ -40,7 +40,7 @@
+ #define RSP 15
+ #define RIP 16
+
+-#if defined(TARGET_OSX) || defined(TARGET_WIN)
++#if defined(TARGET_OSX) || defined(TARGET_WIN) || defined(__FreeBSD__)
+ /* no gregs and/or ucontext defined in for OSX or Windows */
+ void *
+ getRegs(void *u)
diff --git a/devel/flang/pkg-descr b/devel/flang/pkg-descr
new file mode 100644
index 000000000000..80c1229d5d31
--- /dev/null
+++ b/devel/flang/pkg-descr
@@ -0,0 +1,3 @@
+Fortran compiler targeting LLVM (modified clang part)
+
+WWW: https://github.com/flang-compiler/clang
diff --git a/devel/flang/pkg-plist b/devel/flang/pkg-plist
new file mode 100644
index 000000000000..a649000cb725
--- /dev/null
+++ b/devel/flang/pkg-plist
@@ -0,0 +1,20 @@
+bin/flang
+flang/bin/flang1
+flang/bin/flang2
+flang/include/ieee_arithmetic.mod
+flang/include/ieee_exceptions.mod
+flang/include/ieee_features.mod
+flang/include/iso_c_binding.mod
+flang/include/iso_fortran_env.mod
+flang/include/omp_lib.h
+flang/include/omp_lib.mod
+flang/include/omp_lib_kinds.mod
+flang/lib/libflang.a
+flang/lib/libflang.so
+flang/lib/libflangADT.a
+flang/lib/libflangArgParser.a
+flang/lib/libflangmain.a
+flang/lib/libflangrti.a
+flang/lib/libflangrti.so
+flang/lib/libompstub.a
+flang/lib/libompstub.so