import os

Import('env')

module_env = env.Clone()

sources = [

    "register_types.cpp",

    "file_cache.cpp",

    "http/csrf_token.cpp",
    "http/http_server_enums.cpp",
    "http/http_session.cpp",
    "http/http_session_manager.cpp",
    "http/web_node.cpp",
    "http/web_permission.cpp",
    "http/web_root.cpp",
    "http/web_server.cpp",
    "http/web_server_cookie.cpp",
    "http/web_server_middleware.cpp",
    "http/web_server_request.cpp",

    "html/html_builder_bind.cpp",
    "html/html_builder.cpp",
    "html/paginator.cpp",
    "html/html_parser.cpp",
    "html/bbcode_parser.cpp",
    "html/form_validator.cpp",

    "html/libs/hoedown/autolink.c",
    "html/libs/hoedown/buffer.c",
    "html/libs/hoedown/document.c",
    "html/libs/hoedown/escape.c",
    "html/libs/hoedown/html.c",
    "html/libs/hoedown/html_blocks.c",
    "html/libs/hoedown/html_smartypants.c",
    "html/libs/hoedown/stack.c",
    "html/libs/hoedown/version.c",
    "html/markdown_renderer.cpp",

    "nodes/static_pages/static_web_page.cpp",
    "nodes/static_pages/static_web_page_file.cpp",
    "nodes/static_pages/static_web_page_folder_files.cpp",

    "nodes/folder_serve_nodes/browsable_folder_serve_web_page.cpp",
    "nodes/folder_serve_nodes/folder_serve_web_page.cpp",

    "nodes/list_page/list_web_page.cpp",

    "nodes/paged_article/paged_article_web_page.cpp",
    "nodes/paged_article/paged_articles_web_page.cpp",
    #"nodes/paged_article/paged_articles_md_index_web_page.cpp",

    "nodes/redirect/redirect_web_page.cpp",
    "nodes/redirect/alias_web_page.cpp",
]

if env["tools"]:
    sources.append("editor/web_editor.cpp")
    sources.append("editor/web_editor_plugin.cpp")
    sources.append("editor/web_editor_web_server.cpp")
    sources.append("editor/web_editor_web_server_request.cpp")

if ARGUMENTS.get('custom_modules_shared', 'no') == 'yes':
    # Shared lib compilation
    module_env.Append(CCFLAGS=['-fPIC'])
    module_env['LIBS'] = []
    shared_lib = module_env.SharedLibrary(target='#bin/web', source=sources)
    shared_lib_shim = shared_lib[0].name.rsplit('.', 1)[0]
    env.Append(LIBS=[shared_lib_shim])
    env.Append(LIBPATH=['#bin'])
else:
    # Static compilation
    module_env.add_source_files(env.modules_sources, sources)