cmake_minimum_required(VERSION 3.10)
project(PanoPainterWebGL LANGUAGES C CXX)
file(COPY ../data
    DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
add_executable(panopainter 
    ../src/version.gen.h
    src/main.cpp
    ../libs/yoga/yoga/event/event.cpp
    ../libs/yoga/yoga/internal/experiments.cpp
    ../libs/yoga/yoga/log.cpp
    ../libs/yoga/yoga/Utils.cpp
    ../libs/yoga/yoga/YGConfig.cpp
    ../libs/yoga/yoga/YGEnums.cpp
    ../libs/yoga/yoga/YGLayout.cpp
    ../libs/yoga/yoga/YGNode.cpp
    ../libs/yoga/yoga/YGNodePrint.cpp
    ../libs/yoga/yoga/YGStyle.cpp
    ../libs/yoga/yoga/YGValue.cpp
    ../libs/yoga/yoga/Yoga.cpp
    ../libs/tinyxml2/tinyxml2.cpp
    ../libs/jpeg/jpgd.cpp
    ../libs/jpeg/jpge.cpp
    ../libs/poly2tri/poly2tri/common/shapes.cc
    ../libs/poly2tri/poly2tri/sweep/advancing_front.cc
    ../libs/poly2tri/poly2tri/sweep/cdt.cc
    ../libs/poly2tri/poly2tri/sweep/sweep_context.cc
    ../libs/poly2tri/poly2tri/sweep/sweep.cc
    ../libs/fmt/src/format.cc
    ../src/pch.cpp
    ../src/util.cpp
    ../src/rtt.cpp
    ../src/bezier.cpp
    ../src/asset.cpp
    ../src/image.cpp
    ../src/texture.cpp
    ../src/font.cpp
    ../src/shader.cpp
    ../src/shape.cpp
    ../src/app.cpp
    ../src/app_cloud.cpp
    ../src/app_dialogs.cpp
    ../src/app_events.cpp
    ../src/app_layout.cpp
    ../src/app_shaders.cpp
    ../src/app_vr.cpp
    ../src/brush.cpp
    ../src/canvas.cpp
    ../src/canvas_layer.cpp
    ../src/canvas_actions.cpp
    ../src/canvas_modes.cpp
    ../src/log.cpp
    ../src/action.cpp
    ../src/layout.cpp
    ../src/version.cpp
    ../src/node.cpp
    ../src/node_about.cpp
    ../src/node_border.cpp
    ../src/node_button.cpp
    ../src/node_button_custom.cpp
    ../src/node_canvas.cpp
    ../src/node_checkbox.cpp
    ../src/node_color_quad.cpp
    ../src/node_colorwheel.cpp
    ../src/node_combobox.cpp
    ../src/node_changelog.cpp
    ../src/node_dialog_browse.cpp
    ../src/node_dialog_cloud.cpp
    ../src/node_dialog_open.cpp
    ../src/node_dialog_picker.cpp
    ../src/node_dialog_layer_rename.cpp
    ../src/node_dialog_resize.cpp
    ../src/node_icon.cpp
    ../src/node_image.cpp
    ../src/node_image_texture.cpp
    ../src/node_message_box.cpp
    ../src/node_panel_brush.cpp
    ../src/node_panel_color.cpp
    ../src/node_panel_grid.cpp
    ../src/node_panel_floating.cpp
    ../src/node_panel_layer.cpp
    ../src/node_panel_stroke.cpp
    ../src/node_panel_quick.cpp
    ../src/node_popup_menu.cpp
    ../src/node_progress_bar.cpp
    ../src/node_settings.cpp
    ../src/node_slider.cpp
    ../src/node_stroke_preview.cpp
    ../src/node_text.cpp
    ../src/node_text_input.cpp
    ../src/node_tool_bucket.cpp
    ../src/node_usermanual.cpp
    ../src/node_viewport.cpp
    ../src/node_scroll.cpp
    ../src/abr.cpp
    ../src/binary_stream.cpp
    ../src/serializer.cpp
    ../src/settings.cpp
    ../src/node_input_box.cpp
    ../src/node_dialog_export_ppbr.cpp
    ../src/node_panel_animation.cpp
    ../src/mp4enc.cpp
    ../src/node_remote_page.cpp
    ../src/node_shorcuts.cpp
    ../src/node_metadata.cpp
)
target_compile_options(panopainter PRIVATE -O3)
target_compile_features(panopainter PRIVATE cxx_std_23)
set_target_properties(panopainter PROPERTIES 
    CXX_EXTENSIONS OFF
    SUFFIX ".html"
    RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/html"
    LINK_FLAGS "\
        -s USE_GLFW=3\
        -s USE_WEBGL2=1\
        -s FULL_ES3=1\
        -s USE_PTHREADS=1\
        -s ASSERTIONS=2\
        -s TOTAL_MEMORY=512Mb\
        -s ALLOW_MEMORY_GROWTH=1\
        -s WASM_MEM_MAX=2048MB\
        --embed-file data\
        --js-library ../src/mylib.js\
        --bind"
)
target_include_directories(panopainter PRIVATE
    src
    ../src
    ../libs/glm
    ../libs/tinyxml2
    ../libs/yoga
    ../libs/stb
    ../libs/jpeg
    ../libs/poly2tri/poly2tri
    ../libs/base64
    ../libs/sqlite3
    ../libs/nanort
    ../libs/hash-library
    ../libs/fmt/include
    ../libs/glad/include
    ../libs/tinyfiledialogs
)
add_custom_command(
    OUTPUT  ../src/version.gen.h
	COMMAND python scripts/pre-build.py release
	WORKING_DIRECTORY ../../
)
add_custom_target(
    gen_version ALL
    DEPENDS ../src/version.gen.h
)
