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",

    "http_server_simple/http_server_simple.cpp",
    "http_server_simple/web_server_simple.cpp",
    "http_server_simple/simple_web_server_request.cpp",
    "http_server_simple/http_parser.cpp",
    "http_server_simple/http_writer.cpp",
    "http_server_simple/http_parser/http_parser.c",

    "nodes/static_pages/static_page.cpp",
    "nodes/static_pages/static_page_file.cpp",
    "nodes/static_pages/static_page_folder_files.cpp",

    "nodes/folder_serve_nodes/browsable_folder_serve_node.cpp",
    "nodes/folder_serve_nodes/folder_serve_node.cpp",

    "nodes/list_page/list_page.cpp",

    "nodes/paged_article/paged_article.cpp",
    "nodes/paged_article/paged_articles.cpp",
    #"nodes/paged_article/paged_articles_md_index.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)