# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you 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.

# This file is used for creating OSGi bundles with biz.aQute.bnd
#
# bnd is a tool that automatically discovers the possible exports and
# imports by examining the class files, and generates the OSGi meta-info
# based on that and this file.

-failok: false

Bundle-SymbolicName: ${moduleOrg}.${moduleName}
Bundle-Version: ${versionForOSGi}
Bundle-License: Apache License, Version 2.0; see: http://www.apache.org/licenses/LICENSE-2.0.txt
Bundle-Vendor: freemarker.org

Export-Package: !freemarker.test.*, freemarker.*;version="${versionForOSGi}"
# Important:
# Packages that don't match nor the Export-Package nor the
# Private-Package mainfest header will be excluded from
# the .jar file!

Import-Package: !freemarker.*, *;resolution:="optional"
# The above makes all imports optional (like org.python, etc.),
# except those that were explicitly listed (or are inside java.*).
# Thus, even when the Java platfrom includes a package, it won't
# be automatically imported, unless bnd generates the import statement
# for them. Thus, when J2SE-1.5 becomes a requirement, these should be
# added to the above list, as then they won't be optional anymore:
#   javax.xml.*, org.w3c.dom.*, org.xml.sax.*.

# This is needed for "a.class.from.another.Bundle"?new() to work.
DynamicImport-Package: *

# List whole version range between minimum up to where we use new features
# if available. See also: http://wiki.eclipse.org/Execution_Environments,
# "Compiling against more than is required"
Bundle-RequiredExecutionEnvironment: JavaSE-16, JavaSE-15, JavaSE-14, JavaSE-13, JavaSE-12, JavaSE-11, JavaSE-10, JavaSE-9, JavaSE-1.8

# for reproducible build (see https://bnd.bndtools.org/instructions/reproducible.html 
# and https://bnd.bndtools.org/instructions/noextraheaders.html)
-reproducible: true
-noextraheaders: true

# Non-OSGi meta:
Main-Class: freemarker.core.CommandLine
Extension-name: FreeMarker
Specification-Title: FreeMarker
Specification-Version: ${versionForMf}
Specification-Vendor: freemarker.org
Implementation-Title: FreeMarker
Implementation-Version: ${versionForMf}
Implementation-Vendor: freemarker.org
Automatic-Module-Name: freemarker
