#
# 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.
#
 
#integrate files to classpath
-cp src
-cp gen-haxe
-cp ../../lib/haxe/src

#this class wil be used as entry point for your app.
-main Main

#JavaScript target
-js bin/Tutorial.js

#You can use -D source-map-content (requires Haxe 3.1+) to have the .hx 
#files directly embedded into the map file, this way you only have to 
#upload it, and it will be always in sync with the compiled .js even if 
#you modify your .hx files.
-D source-map-content

# libs
-lib uuid

#Generate source map and add debug information
-debug

#dead code elimination : remove unused code
-dce full