add_subdirectory(test)

wl_library(scripting_base
  SRCS
    lua.h
    lua.cc
    lua_errors.cc
    lua_errors.h
    report_error.cc
    report_error.h
  DEPENDS
    base_exceptions
    third_party_eris
)

wl_library(scripting_luna
  SRCS
    luna.h
    luna_impl.cc
    luna_impl.h
  DEPENDS
    base_macros
    scripting_base
)

wl_library(scripting_lua_table
  SRCS
    lua_table.cc
    lua_table.h
  DEPENDS
    base
    base_geometry
    scripting_base
    scripting_coroutine
)

wl_library(scripting_coroutine
  SRCS
    lua_coroutine.cc
    lua_coroutine.h
  DEPENDS
    base
    io_fileread
    logic_exceptions
    scripting_base
    # TODO(sirver): Cyclic dependency. introduce a seam so that logic can
    # push/pull new parameters to coroutines.
    scripting_logic
    scripting_lua_interface
)

wl_library(scripting_lua_interface
  SRCS
    lua_globals.cc
    lua_globals.h
    lua_interface.cc
    lua_interface.h
    lua_path.cc
    lua_path.h
    lua_styles.cc
    lua_styles.h
    run_script.cc
    run_script.h
  USES_SDL2
  DEPENDS
    base
    base_macros
    build_info
    graphic
    io_fileread
    io_filesystem
    logic_addons
    logic_exceptions
    scripting_base
    scripting_logic
    scripting_lua_table
    scripting_luna
    sound
    note_sound
)

wl_library(scripting_logic
  SRCS
    eris.h
    factory.cc
    factory.h
    globals.cc
    globals.h
    logic.cc
    logic.h
    lua_bases.cc
    lua_bases.h
    lua_editor.cc
    lua_editor.h
    lua_game.cc
    lua_game.h
    lua_map.cc
    lua_map.h
    lua_root.cc
    lua_root.h
    lua_root_notifications.cc
    lua_root_notifications.h
    lua_ui.cc
    lua_ui.h
    map/lua_base_immovable.cc
    map/lua_base_immovable.h
    map/lua_bob.cc
    map/lua_bob.h
    map/lua_building.cc
    map/lua_building_description.cc
    map/lua_building_description.h
    map/lua_building.h
    map/lua_construction_site.cc
    map/lua_construction_site_description.cc
    map/lua_construction_site_description.h
    map/lua_construction_site.h
    map/lua_dismantle_site.cc
    map/lua_dismantle_site_description.cc
    map/lua_dismantle_site_description.h
    map/lua_dismantle_site.h
    map/lua_economy.cc
    map/lua_economy.h
    map/lua_ferry_fleet_yard_interface.cc
    map/lua_ferry_fleet_yard_interface.h
    map/lua_field.cc
    map/lua_field.h
    map/lua_flag.cc
    map/lua_flag.h
    map/lua_immovable_description.cc
    map/lua_immovable_description.h
    map/lua_map.cc
    map/lua_map.h
    map/lua_map_object.cc
    map/lua_map_object_description.cc
    map/lua_map_object_description.h
    map/lua_map_object.h
    map/lua_market.cc
    map/lua_market_description.cc
    map/lua_market_description.h
    map/lua_market.h
    map/lua_military_site.cc
    map/lua_military_site_description.cc
    map/lua_military_site_description.h
    map/lua_military_site.h
    map/lua_naval_invasion_base.cc
    map/lua_naval_invasion_base.h
    map/lua_pinned_note.cc
    map/lua_pinned_note.h
    map/lua_player_immovable.cc
    map/lua_player_immovable.h
    map/lua_player_slot.cc
    map/lua_player_slot.h
    map/lua_port_dock.cc
    map/lua_port_dock.h
    map/lua_production_site.cc
    map/lua_production_site_description.cc
    map/lua_production_site_description.h
    map/lua_production_site.h
    map/lua_resource_description.cc
    map/lua_resource_description.h
    map/lua_road.cc
    map/lua_road.h
    map/lua_ship.cc
    map/lua_ship_description.cc
    map/lua_ship_description.h
    map/lua_ship_fleet_yard_interface.cc
    map/lua_ship_fleet_yard_interface.h
    map/lua_ship.h
    map/lua_soldier.cc
    map/lua_soldier_description.cc
    map/lua_soldier_description.h
    map/lua_soldier.h
    map/lua_terrain_description.cc
    map/lua_terrain_description.h
    map/lua_training_site.cc
    map/lua_training_site_description.cc
    map/lua_training_site_description.h
    map/lua_training_site.h
    map/lua_tribe_description.cc
    map/lua_tribe_description.h
    map/lua_ware_description.cc
    map/lua_ware_description.h
    map/lua_warehouse.cc
    map/lua_warehouse_description.cc
    map/lua_warehouse_description.h
    map/lua_warehouse.h
    map/lua_worker.cc
    map/lua_worker_description.cc
    map/lua_worker_description.h
    map/lua_worker.h
    persistence.cc
    persistence.h
    ui/lua_box.cc
    ui/lua_box.h
    ui/lua_button.cc
    ui/lua_button.h
    ui/lua_checkbox.cc
    ui/lua_checkbox.h
    ui/lua_dropdown.cc
    ui/lua_dropdown.h
    ui/lua_listselect.cc
    ui/lua_listselect.h
    ui/lua_main_menu.cc
    ui/lua_main_menu.h
    ui/lua_map_view.cc
    ui/lua_map_view.h
    ui/lua_multiline_textarea.cc
    ui/lua_multiline_textarea.h
    ui/lua_pagination.cc
    ui/lua_pagination.h
    ui/lua_panel.cc
    ui/lua_panel.h
    ui/lua_panel_create_child.cc
    ui/lua_progress_bar.cc
    ui/lua_progress_bar.h
    ui/lua_radio_button.cc
    ui/lua_radio_button.h
    ui/lua_slider.cc
    ui/lua_slider.h
    ui/lua_spin_box.cc
    ui/lua_spin_box.h
    ui/lua_tab.cc
    ui/lua_tab.h
    ui/lua_table.cc
    ui/lua_table.h
    ui/lua_tab_panel.cc
    ui/lua_tab_panel.h
    ui/lua_textarea.cc
    ui/lua_textarea.h
    ui/lua_text_input_panel.cc
    ui/lua_text_input_panel.h
    ui/lua_ui_helper_functions.cc
    ui/lua_ui_helper_functions.h
    ui/lua_window.cc
    ui/lua_window.h
  USES_SDL2
  DEPENDS
    base
    base_macros
    chat
    economy
    graphic
    graphic_fonthandler
    io_fileread
    io_filesystem
    io_profile
    logic
    commands
    logic_constants
    logic_filesystem_constants
    logic_game_controller
    logic_game_settings
    logic_map
    logic_map_objects
    logic_objectives
    logic_widelands_geometry
    map_io
    scripting_base
    scripting_coroutine
    scripting_lua_interface
    scripting_lua_table
    scripting_luna
    third_party_eris
    ui_basic
    ui_fsmenu
    widelands_options
    wui
    wui_mapview_pixelfunctions
)
