cmake_minimum_required(VERSION 3.9)
project(MonetDBLite_C)

set(CMAKE_CXX_STANDARD 11)

set (CMAKE_C_FLAGS "-DLIBGDK -DLIBMAL -DLIBOPTIMIZER -DLIBSTREAM")
include_directories(src)
include_directories(src/common)
include_directories(src/embedded)
include_directories(src/gdk)
include_directories(src/mal/mal)
include_directories(src/mal/modules)
include_directories(src/mal/optimizer)
include_directories(src/mal/sqlbackend)
include_directories(src/sql/common)
include_directories(src/sql/include)
include_directories(src/sql/server)
include_directories(src/sql/storage)
include_directories(src/sql/storage/bat)

add_library(monetdb5 SHARED
        src/common/fsync.c
        src/common/mutils.c
        src/common/mutils.h
        src/common/stream.c
        src/common/stream.h
        src/embedded/embedded.c
        src/embedded/embedded.h
        src/embedded/undef.h
        src/gdk/gdk.h
        src/gdk/gdk_aggr.c
        src/gdk/gdk_align.c
        src/gdk/gdk_atomic.h
        src/gdk/gdk_atoms.c
        src/gdk/gdk_atoms.h
        src/gdk/gdk_bat.c
        src/gdk/gdk_batop.c
        src/gdk/gdk_bbp.c
        src/gdk/gdk_bbp.h
        src/gdk/gdk_calc.c
        src/gdk/gdk_calc.h
        src/gdk/gdk_calc_compare.h
        src/gdk/gdk_calc_private.h
        src/gdk/gdk_cand.h
        src/gdk/gdk_cross.c
        src/gdk/gdk_delta.c
        src/gdk/gdk_delta.h
        src/gdk/gdk_firstn.c
        src/gdk/gdk_group.c
        src/gdk/gdk_hash.c
        src/gdk/gdk_hash.h
        src/gdk/gdk_heap.c
        src/gdk/gdk_imprints.c
        src/gdk/gdk_imprints.h
        src/gdk/gdk_join.c
        src/gdk/gdk_logger.c
        src/gdk/gdk_logger.h
        src/gdk/gdk_orderidx.c
        src/gdk/gdk_posix.c
        src/gdk/gdk_posix.h
        src/gdk/gdk_private.h
        src/gdk/gdk_project.c
        src/gdk/gdk_qsort.c
        src/gdk/gdk_qsort_impl.h
        src/gdk/gdk_sample.c
        src/gdk/gdk_search.c
        src/gdk/gdk_select.c
        src/gdk/gdk_ssort.c
        src/gdk/gdk_ssort_impl.h
        src/gdk/gdk_storage.c
        src/gdk/gdk_storage.h
        src/gdk/gdk_system.c
        src/gdk/gdk_system.h
        src/gdk/gdk_system_private.h
        src/gdk/gdk_tm.c
        src/gdk/gdk_tm.h
        src/gdk/gdk_unique.c
        src/gdk/gdk_utils.c
        src/gdk/gdk_utils.h
        src/gdk/gdk_value.c
        src/mal/mal/mal.c
        src/mal/mal/mal.h
        src/mal/mal/mal_atom.c
        src/mal/mal/mal_atom.h
        src/mal/mal/mal_builder.c
        src/mal/mal/mal_builder.h
        src/mal/mal/mal_client.c
        src/mal/mal/mal_client.h
        src/mal/mal/mal_dataflow.c
        src/mal/mal/mal_dataflow.h
        src/mal/mal/mal_errors.h
        src/mal/mal/mal_exception.c
        src/mal/mal/mal_exception.h
        src/mal/mal/mal_function.c
        src/mal/mal/mal_function.h
        src/mal/mal/mal_import.c
        src/mal/mal/mal_import.h
        src/mal/mal/mal_instruction.c
        src/mal/mal/mal_instruction.h
        src/mal/mal/mal_interpreter.c
        src/mal/mal/mal_interpreter.h
        src/mal/mal/mal_linker.c
        src/mal/mal/mal_linker.h
        src/mal/mal/mal_listing.c
        src/mal/mal/mal_listing.h
        src/mal/mal/mal_module.c
        src/mal/mal/mal_module.h
        src/mal/mal/mal_namespace.c
        src/mal/mal/mal_namespace.h
        src/mal/mal/mal_parser.c
        src/mal/mal/mal_parser.h
        src/mal/mal/mal_private.h
        src/mal/mal/mal_resolve.c
        src/mal/mal/mal_resolve.h
        src/mal/mal/mal_runtime.c
        src/mal/mal/mal_runtime.h
        src/mal/mal/mal_scenario.c
        src/mal/mal/mal_scenario.h
        src/mal/mal/mal_session.c
        src/mal/mal/mal_session.h
        src/mal/mal/mal_stack.c
        src/mal/mal/mal_stack.h
        src/mal/mal/mal_type.c
        src/mal/mal/mal_type.h
        src/mal/mal/mal_utils.c
        src/mal/mal/mal_utils.h
        src/mal/modules/aggr.c
        src/mal/modules/algebra.c
        src/mal/modules/algebra.h
        src/mal/modules/bat5.c
        src/mal/modules/bat5.h
        src/mal/modules/batcalc.c
        src/mal/modules/batExtensions.c
        src/mal/modules/batExtensions.h
        src/mal/modules/batmmath.c
        src/mal/modules/batmmath.h
        src/mal/modules/batstr.c
        src/mal/modules/blob.c
        src/mal/modules/blob.h
        src/mal/modules/calc.c
        src/mal/modules/group.c
        src/mal/modules/group.h
        src/mal/modules/iterator.c
        src/mal/modules/iterator.h
        src/mal/modules/language.c
        src/mal/modules/language.h
        src/mal/modules/manifold.c
        src/mal/modules/manifold.h
        src/mal/modules/mat.c
        src/mal/modules/mat.h
        src/mal/modules/mkey.c
        src/mal/modules/mkey.h
        src/mal/modules/mmath.c
        src/mal/modules/mmath.h
        src/mal/modules/mtime.c
        src/mal/modules/mtime.h
        src/mal/modules/orderidx.c
        src/mal/modules/orderidx.h
        src/mal/modules/pcre.c
        src/mal/modules/projectionpath.c
        src/mal/modules/projectionpath.h
        src/mal/modules/sample.c
        src/mal/modules/sample.h
        src/mal/modules/str.c
        src/mal/modules/str.h
        src/mal/modules/tablet.c
        src/mal/modules/tablet.h
        src/mal/optimizer/opt_aliases.c
        src/mal/optimizer/opt_aliases.h
        src/mal/optimizer/opt_candidates.c
        src/mal/optimizer/opt_candidates.h
        src/mal/optimizer/opt_coercion.c
        src/mal/optimizer/opt_coercion.h
        src/mal/optimizer/opt_commonTerms.c
        src/mal/optimizer/opt_commonTerms.h
        src/mal/optimizer/opt_constants.c
        src/mal/optimizer/opt_constants.h
        src/mal/optimizer/opt_costModel.c
        src/mal/optimizer/opt_costModel.h
        src/mal/optimizer/opt_dataflow.c
        src/mal/optimizer/opt_dataflow.h
        src/mal/optimizer/opt_deadcode.c
        src/mal/optimizer/opt_deadcode.h
        src/mal/optimizer/opt_emptybind.c
        src/mal/optimizer/opt_emptybind.h
        src/mal/optimizer/opt_evaluate.c
        src/mal/optimizer/opt_evaluate.h
        src/mal/optimizer/opt_garbageCollector.c
        src/mal/optimizer/opt_garbageCollector.h
        src/mal/optimizer/opt_generator.c
        src/mal/optimizer/opt_generator.h
        src/mal/optimizer/opt_inline.c
        src/mal/optimizer/opt_inline.h
        src/mal/optimizer/opt_macro.c
        src/mal/optimizer/opt_macro.h
        src/mal/optimizer/opt_matpack.c
        src/mal/optimizer/opt_matpack.h
        src/mal/optimizer/opt_mergetable.c
        src/mal/optimizer/opt_mergetable.h
        src/mal/optimizer/opt_mitosis.c
        src/mal/optimizer/opt_mitosis.h
        src/mal/optimizer/opt_multiplex.c
        src/mal/optimizer/opt_multiplex.h
        src/mal/optimizer/opt_pipes.c
        src/mal/optimizer/opt_pipes.h
        src/mal/optimizer/opt_prelude.c
        src/mal/optimizer/opt_prelude.h
        src/mal/optimizer/opt_profiler.c
        src/mal/optimizer/opt_profiler.h
        src/mal/optimizer/opt_projectionpath.c
        src/mal/optimizer/opt_projectionpath.h
        src/mal/optimizer/opt_pushselect.c
        src/mal/optimizer/opt_pushselect.h
        src/mal/optimizer/opt_remap.c
        src/mal/optimizer/opt_remap.h
        src/mal/optimizer/opt_reorder.c
        src/mal/optimizer/opt_reorder.h
        src/mal/optimizer/opt_support.c
        src/mal/optimizer/opt_support.h
        src/mal/optimizer/opt_wrapper.c
        src/mal/optimizer/optimizer.c
        src/mal/optimizer/optimizer.h
        src/mal/optimizer/optimizer_private.h
        src/mal/sqlbackend/mal_backend.c
        src/mal/sqlbackend/mal_backend.h
        src/mal/sqlbackend/rel_bin.c
        src/mal/sqlbackend/rel_bin.h
        src/mal/sqlbackend/sql.c
        src/mal/sqlbackend/sql.h
        src/mal/sqlbackend/sql_assert.c
        src/mal/sqlbackend/sql_assert.h
        src/mal/sqlbackend/sql_bat2time.c
        src/mal/sqlbackend/sql_cast.c
        src/mal/sqlbackend/sql_cast.h
        src/mal/sqlbackend/sql_cast_impl_down_from_flt.h
        src/mal/sqlbackend/sql_cast_impl_int.h
        src/mal/sqlbackend/sql_cast_impl_up_to_flt.h
        src/mal/sqlbackend/sql_cat.c
        src/mal/sqlbackend/sql_cat.h
        src/mal/sqlbackend/sql_execute.c
        src/mal/sqlbackend/sql_execute.h
        src/mal/sqlbackend/sql_fround.c
        src/mal/sqlbackend/sql_fround_impl.h
        src/mal/sqlbackend/sql_gencode.c
        src/mal/sqlbackend/sql_gencode.h
        src/mal/sqlbackend/sql_optimizer.c
        src/mal/sqlbackend/sql_optimizer.h
        src/mal/sqlbackend/sql_orderidx.c
        src/mal/sqlbackend/sql_orderidx.h
        src/mal/sqlbackend/sql_rank.c
        src/mal/sqlbackend/sql_rank.h
        src/mal/sqlbackend/sql_result.c
        src/mal/sqlbackend/sql_result.h
        src/mal/sqlbackend/sql_round.c
        src/mal/sqlbackend/sql_round_impl.h
        src/mal/sqlbackend/sql_scenario.c
        src/mal/sqlbackend/sql_scenario.h
        src/mal/sqlbackend/sql_statement.c
        src/mal/sqlbackend/sql_statement.h
        src/mal/sqlbackend/sql_statistics.c
        src/mal/sqlbackend/sql_statistics.h
        src/mal/sqlbackend/sql_transaction.c
        src/mal/sqlbackend/sql_transaction.h
        src/mal/sqlbackend/sql_upgrades.c
        src/mal/sqlbackend/sql_upgrades.h
        src/mal/sqlbackend/sql_user.c
        src/mal/sqlbackend/sql_user.h
        src/sql/common/sql_backend.c
        src/sql/common/sql_backend.h
        src/sql/common/sql_changeset.c
        src/sql/common/sql_hash.c
        src/sql/common/sql_keyword.c
        src/sql/common/sql_list.c
        src/sql/common/sql_mem.c
        src/sql/common/sql_stack.c
        src/sql/common/sql_string.c
        src/sql/common/sql_string.h
        src/sql/common/sql_types.c
        src/sql/common/sql_types.h
        src/sql/include/sql_catalog.h
        src/sql/include/sql_hash.h
        src/sql/include/sql_keyword.h
        src/sql/include/sql_list.h
        src/sql/include/sql_mem.h
        src/sql/include/sql_query.h
        src/sql/include/sql_relation.h
        src/sql/include/sql_stack.h
        src/sql/server/rel_distribute.c
        src/sql/server/rel_distribute.h
        src/sql/server/rel_dump.c
        src/sql/server/rel_dump.h
        src/sql/server/rel_exp.c
        src/sql/server/rel_exp.h
        src/sql/server/rel_optimizer.c
        src/sql/server/rel_optimizer.h
        src/sql/server/rel_partition.c
        src/sql/server/rel_partition.h
        src/sql/server/rel_planner.c
        src/sql/server/rel_planner.h
        src/sql/server/rel_prop.c
        src/sql/server/rel_prop.h
        src/sql/server/rel_psm.c
        src/sql/server/rel_psm.h
        src/sql/server/rel_rel.c
        src/sql/server/rel_rel.h
        src/sql/server/rel_remote.c
        src/sql/server/rel_remote.h
        src/sql/server/rel_schema.c
        src/sql/server/rel_schema.h
        src/sql/server/rel_select.c
        src/sql/server/rel_select.h
        src/sql/server/rel_semantic.c
        src/sql/server/rel_semantic.h
        src/sql/server/rel_sequence.c
        src/sql/server/rel_sequence.h
        src/sql/server/rel_trans.c
        src/sql/server/rel_trans.h
        src/sql/server/rel_updates.c
        src/sql/server/rel_updates.h
        src/sql/server/rel_xml.c
        src/sql/server/rel_xml.h
        src/sql/server/sql_atom.c
        src/sql/server/sql_atom.h
        src/sql/server/sql_datetime.c
        src/sql/server/sql_datetime.h
        src/sql/server/sql_decimal.c
        src/sql/server/sql_decimal.h
        src/sql/server/sql_env.c
        src/sql/server/sql_env.h
        src/sql/server/sql_mvc.c
        src/sql/server/sql_mvc.h
        src/sql/server/sql_parser.h
        src/sql/server/sql_parser.tab.c
        src/sql/server/sql_parser.tab.h
        src/sql/server/sql_privileges.c
        src/sql/server/sql_privileges.h
        src/sql/server/sql_qc.c
        src/sql/server/sql_qc.h
        src/sql/server/sql_scan.c
        src/sql/server/sql_scan.h
        src/sql/server/sql_semantic.c
        src/sql/server/sql_semantic.h
        src/sql/server/sql_symbol.c
        src/sql/server/sql_symbol.h
        src/sql/storage/bat/bat_logger.c
        src/sql/storage/bat/bat_logger.h
        src/sql/storage/bat/bat_storage.c
        src/sql/storage/bat/bat_storage.h
        src/sql/storage/bat/bat_table.c
        src/sql/storage/bat/bat_table.h
        src/sql/storage/bat/bat_utils.c
        src/sql/storage/bat/bat_utils.h
        src/sql/storage/bat/nop_logger.c
        src/sql/storage/bat/nop_logger.h
        src/sql/storage/bat/res_table.c
        src/sql/storage/bat/res_table.h
        src/sql/storage/sql_catalog.c
        src/sql/storage/sql_storage.h
        src/sql/storage/store.c
        src/sql/storage/store_dependency.c
        src/sql/storage/store_dependency.h
        src/sql/storage/store_sequence.c
        src/sql/storage/store_sequence.h
        src/monetdb_config.h
        src/monetdb_config.h.in
)

add_executable(readme 
        tests/readme/readme.c
)

target_link_libraries(readme monetdb5 pthread dl m)

