diff --git a/CMakeLists.txt b/CMakeLists.txt index 546b39808..243ea485d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,21 +37,10 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) option(EQEMU_BUILD_PCH "Build with precompiled headers (Windows)" ON) -option(EQEMU_ADD_PROFILER "Link with Google perftools profiler" OFF) -option(USE_MAP_MMFS "Use memory-mapped files for maps" OFF) - -# Requires libgoogle-perftools-dev google-perftools packages for linux (debian) -if(EQEMU_ADD_PROFILER) - set(CMAKE_EXE_LINKER_FLAGS "-Wl,--no-as-needed,-lprofiler,--as-needed") -endif() - -if(USE_MAP_MMFS) - add_definitions(-DUSE_MAP_MMFS) -endif() if(MSVC) add_compile_options(/bigobj) - add_definitions(-D_CRT_SECURE_NO_WARNINGS -DNOMINMAX -DCRASH_LOGGING -D_HAS_AUTO_PTR_ETC) + add_compile_definitions(_CRT_SECURE_NO_WARNINGS NOMINMAX CRASH_LOGGING _HAS_AUTO_PTR_ETC) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP") option(EQEMU_DISABLE_MSVC_WARNINGS "Disable MSVC compile warnings." ON) @@ -59,26 +48,22 @@ if(MSVC) add_compile_options(/W0 /wd4005 /wd4996 /nologo /Os) endif() else() - add_definitions(-DHAS_UNION_SEMUN) + add_compile_definitions(HAS_UNION_SEMUN) endif() #FreeBSD support if(UNIX) if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD") - add_definitions(-DFREEBSD) - add_definitions(-D_GLIBCXX_USE_C99) + add_compile_definitions(FREEBSD) + add_compile_definitions(_GLIBCXX_USE_C99) set(FREEBSD TRUE) endif() if(CMAKE_SYSTEM_NAME MATCHES "Darwin") - add_definitions(-DDARWIN) + add_compile_definitions(DARWIN) set(DARWIN TRUE) endif() endif() -add_definitions(-DGLM_FORCE_RADIANS) -add_definitions(-DGLM_FORCE_CTOR_INIT) -add_definitions(-DGLM_ENABLE_EXPERIMENTAL) - find_package(Boost REQUIRED COMPONENTS dynamic_bitset foreach tuple) find_package(cereal CONFIG REQUIRED) find_package(fmt CONFIG REQUIRED) @@ -133,75 +118,22 @@ message(STATUS "PERL_LIBRARIES: ${PERL_LIBRARIES}") message(STATUS "PERL_VERSION: ${PERL_VERSION}") message(STATUS "**************************************************") -include_directories(SYSTEM "${CMAKE_CURRENT_SOURCE_DIR}/submodules/websocketpp") - -add_definitions(-DBOOST_BIND_GLOBAL_PLACEHOLDERS) - #options -option(EQEMU_COMMANDS_LOGGING "Enable GM Command logs" ON) option(EQEMU_BUILD_SERVER "Build the game server." ON) option(EQEMU_BUILD_LOGIN "Build the login server." ON) option(EQEMU_BUILD_TESTS "Build utility tests." OFF) option(EQEMU_BUILD_CLIENT_FILES "Build Client Import/Export Data Programs." ON) -option(EQEMU_PREFER_LUA "Build with normal Lua even if LuaJIT is found." OFF) - -#PRNG options -option(EQEMU_ADDITIVE_LFIB_PRNG "Use Additive LFib for PRNG." OFF) -mark_as_advanced(EQEMU_ADDITIVE_LFIB_PRNG) -option(EQEMU_BIASED_INT_DIST "Use biased int dist instead of uniform." OFF) -mark_as_advanced(EQEMU_BIASED_INT_DIST) -set(EQEMU_CUSTOM_PRNG_ENGINE "" CACHE STRING "Custom random engine. (ex. std::default_random_engine)") -mark_as_advanced(EQEMU_CUSTOM_PRNG_ENGINE) - -if(CMAKE_COMPILER_IS_GNUCXX) - option(EQEMU_SFMT19937 "Use GCC's extention for SIMD Fast MT19937." OFF) - mark_as_advanced(EQEMU_SFMT19937) -endif() - -if(EQEMU_ADDITIVE_LFIB_PRNG) - add_definitions(-DUSE_ADDITIVE_LFIB_PRNG) - if(EQEMU_SFMT19937) - message(STATUS "SFMT19937 and ADDITITVE_LFIB_PRNG both set, SFMT19937 ignored.") - set(EQEMU_SFMT19937 OFF) - endif() - if(NOT EQEMU_CUSTOM_PRNG_ENGINE STREQUAL "") - message(STATUS "CUSTOM_PRNG_ENGINE and ADDITITVE_LFIB_PRNG both set, CUSTOM_PRNG_ENGINE ignored.") - set(EQEMU_CUSTOM_PRNG_ENGINE "") - endif() -endif() - -if(EQEMU_SFMT19937) - add_definitions(-DUSE_SFMT19937) - if(NOT EQEMU_CUSTOM_PRNG_ENGINE STREQUAL "") - message(STATUS "CUSTOM_PRNG_ENGINE and SFMT19937 both set, CUSTOM_PRNG_ENGINE ignored.") - set(EQEMU_CUSTOM_PRNG_ENGINE "") - endif() -endif() - -if(NOT EQEMU_CUSTOM_PRNG_ENGINE STREQUAL "") - add_definitions(-DUSE_CUSTOM_PRNG_ENGINE=${EQEMU_CUSTOM_PRNG_ENGINE}) -endif() - -if(EQEMU_BIASED_INT_DIST) - add_definitions(-DBIASED_INT_DIST) -endif() - -if(EQEMU_COMMANDS_LOGGING) - add_definitions(-DCOMMANDS_LOGGING) -endif() - -if(${OPENSSL_VERSION} VERSION_GREATER_EQUAL "1.1.1") - add_compile_definitions(CPPHTTPLIB_OPENSSL_SUPPORT) -endif() if(PerlLibs_FOUND) - set(PERL_LIBRARY_TYPE " Perl") - set(PERL_LIBRARY_ENABLED ON) - set(PERL_LIBRARY_LIBS ${PERL_LIBRARY}) - set(PERL_LIBRARY_INCLUDE ${PERL_INCLUDE_PATH}) + option(EQEMU_BUILD_PERL "Build Perl parser." ON) + + if(EQEMU_BUILD_PERL) + set(PERL_LIBRARY_TYPE " Perl") + else() + set(PERL_LIBRARY_TYPE " Missing") + endif() else() set(PERL_LIBRARY_TYPE "Disabled") - set(PERL_LIBRARY_ENABLED OFF) endif() message(STATUS "") @@ -215,74 +147,33 @@ message(STATUS "* Perl: ${PERL_LIBRARY_TYPE} *") message(STATUS "* zlib: ZLIB *") message(STATUS "**************************************************") + option(EQEMU_BUILD_LUA "Build Lua parser." ON) -if(EQEMU_BUILD_LUA) - add_definitions(-DLUA_EQEMU) - - include_directories(SYSTEM "${LUAJIT_INCLUDE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/libs/luabind") - - option(EQEMU_SANITIZE_LUA_LIBS "Sanitize Lua Libraries (Remove OS and IO standard libraries from being able to run)." ON) - if(EQEMU_SANITIZE_LUA_LIBS) - add_definitions(-DSANITIZE_LUA_LIBS) - endif() -endif() - -set(SERVER_LIBS common) - -if(PERL_LIBRARY_ENABLED) - option(EQEMU_BUILD_PERL "Build Perl parser." ON) - if(EQEMU_BUILD_PERL) - set(SERVER_LIBS ${SERVER_LIBS} ${PERL_LIBRARY_LIBS} perlbind) - INCLUDE_DIRECTORIES(SYSTEM "${PERL_LIBRARY_INCLUDE}" "${CMAKE_CURRENT_SOURCE_DIR}/libs/perlbind/include") - add_definitions(-DEMBPERL) - add_definitions(-DEMBPERL_PLUGIN) - add_definitions(-DPERLBIND_NO_STRICT_SCALAR_TYPES) - endif() -endif() - -# silence obnoxious deprecation message -add_definitions(-DBOOST_BIND_GLOBAL_PLACEHOLDERS) - -if(WIN32) - set(SERVER_LIBS ${SERVER_LIBS} "ws2_32" "psapi" "iphlpapi" "userenv") -endif() - -if(UNIX) - set(SERVER_LIBS ${SERVER_LIBS} ${CMAKE_DL_LIBS} "z" "m" "pthread") - if(NOT DARWIN) - set(SERVER_LIBS ${SERVER_LIBS} "rt") - endif() - # Freebsd provides uuids in the C library - if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD") - set(SERVER_LIBS ${SERVER_LIBS} "uuid") - endif() -endif() - -set(ZONE_LIBS ${ZONE_LIBS} ${SERVER_LIBS}) - -if(EQEMU_BUILD_SERVER OR EQEMU_BUILD_LOGIN OR EQEMU_BUILD_TESTS) +if(EQEMU_BUILD_SERVER OR EQEMU_BUILD_LOGIN OR EQEMU_BUILD_TESTS OR EQEMU_BUILD_CLIENT_FILES) add_subdirectory(common) add_subdirectory(libs) +else() + message(FATAL_ERROR "No targets were selected to build, we must build at least one target.") endif() -if(EQEMU_BUILD_SERVER) - add_subdirectory(shared_memory) - add_subdirectory(world) - add_subdirectory(zone) - add_subdirectory(ucs) - add_subdirectory(queryserv) - add_subdirectory(eqlaunch) -endif() - -if(EQEMU_BUILD_LOGIN) - add_subdirectory(loginserver) -endif() - -if(EQEMU_BUILD_TESTS) - add_subdirectory(tests) -endif() - -if(EQEMU_BUILD_CLIENT_FILES) - add_subdirectory(client_files) -endif() +#if(EQEMU_BUILD_SERVER) +# add_subdirectory(shared_memory) +# add_subdirectory(world) +# add_subdirectory(zone) +# add_subdirectory(ucs) +# add_subdirectory(queryserv) +# add_subdirectory(eqlaunch) +#endif() +# +#if(EQEMU_BUILD_LOGIN) +# add_subdirectory(loginserver) +#endif() +# +#if(EQEMU_BUILD_TESTS) +# add_subdirectory(tests) +#endif() +# +#if(EQEMU_BUILD_CLIENT_FILES) +# add_subdirectory(client_files) +#endif() diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index b0d9c0b46..f2328383e 100644 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -817,6 +817,407 @@ source_group(Patches FILES patches/uf_limits.cpp ) +source_group(Repositories FILES + + # Criteria + repositories/criteria/content_filter_criteria.h + + repositories/base/base_grid_repository.h + repositories/base/base_grid_entries_repository.h + + # Base Repositories + repositories/base/base_aa_ability_repository.h + repositories/base/base_aa_ranks_repository.h + repositories/base/base_aa_rank_effects_repository.h + repositories/base/base_aa_rank_prereqs_repository.h + repositories/base/base_account_repository.h + repositories/base/base_account_flags_repository.h + repositories/base/base_account_ip_repository.h + repositories/base/base_account_rewards_repository.h + repositories/base/base_adventure_details_repository.h + repositories/base/base_adventure_members_repository.h + repositories/base/base_adventure_stats_repository.h + repositories/base/base_adventure_template_repository.h + repositories/base/base_adventure_template_entry_repository.h + repositories/base/base_adventure_template_entry_flavor_repository.h + repositories/base/base_alternate_currency_repository.h + repositories/base/base_auras_repository.h + repositories/base/base_base_data_repository.h + repositories/base/base_blocked_spells_repository.h + repositories/base/base_books_repository.h + repositories/base/base_bugs_repository.h + repositories/base/base_bug_reports_repository.h + repositories/base/base_buyer_repository.h + repositories/base/base_buyer_trade_items_repository.h + repositories/base/base_character_activities_repository.h + repositories/base/base_character_alternate_abilities_repository.h + repositories/base/base_character_alt_currency_repository.h + repositories/base/base_character_auras_repository.h + repositories/base/base_character_bandolier_repository.h + repositories/base/base_character_bind_repository.h + repositories/base/base_character_buffs_repository.h + repositories/base/base_character_corpses_repository.h + repositories/base/base_character_corpse_items_repository.h + repositories/base/base_character_currency_repository.h + repositories/base/base_character_data_repository.h + repositories/base/base_character_disciplines_repository.h + repositories/base/base_character_evolving_items_repository.h + repositories/base/base_character_expedition_lockouts_repository.h + repositories/base/base_character_exp_modifiers_repository.h + repositories/base/base_character_inspect_messages_repository.h + repositories/base/base_character_instance_safereturns_repository.h + repositories/base/base_character_item_recast_repository.h + repositories/base/base_character_languages_repository.h + repositories/base/base_character_leadership_abilities_repository.h + repositories/base/base_character_material_repository.h + repositories/base/base_character_memmed_spells_repository.h + repositories/base/base_character_parcels_repository.h + repositories/base/base_character_parcels_containers_repository.h + repositories/base/base_character_peqzone_flags_repository.h + repositories/base/base_character_pet_buffs_repository.h + repositories/base/base_character_pet_info_repository.h + repositories/base/base_character_pet_inventory_repository.h + repositories/base/base_character_potionbelt_repository.h + repositories/base/base_character_skills_repository.h + repositories/base/base_character_spells_repository.h + repositories/base/base_character_tasks_repository.h + repositories/base/base_character_task_timers_repository.h + repositories/base/base_char_create_combinations_repository.h + repositories/base/base_char_create_point_allocations_repository.h + repositories/base/base_char_recipe_list_repository.h + repositories/base/base_chatchannels_repository.h + repositories/base/base_chatchannel_reserved_names_repository.h + repositories/base/base_completed_shared_tasks_repository.h + repositories/base/base_completed_shared_task_activity_state_repository.h + repositories/base/base_completed_shared_task_members_repository.h + repositories/base/base_completed_tasks_repository.h + repositories/base/base_content_flags_repository.h + repositories/base/base_damageshieldtypes_repository.h + repositories/base/base_data_buckets_repository.h + repositories/base/base_db_str_repository.h + repositories/base/base_discord_webhooks_repository.h + repositories/base/base_discovered_items_repository.h + repositories/base/base_doors_repository.h + repositories/base/base_dynamic_zones_repository.h + repositories/base/base_dynamic_zone_lockouts_repository.h + repositories/base/base_dynamic_zone_members_repository.h + repositories/base/base_dynamic_zone_templates_repository.h + repositories/base/base_faction_association_repository.h + repositories/base/base_faction_base_data_repository.h + repositories/base/base_faction_list_repository.h + repositories/base/base_faction_list_mod_repository.h + repositories/base/base_faction_values_repository.h + repositories/base/base_fishing_repository.h + repositories/base/base_forage_repository.h + repositories/base/base_friends_repository.h + repositories/base/base_global_loot_repository.h + repositories/base/base_gm_ips_repository.h + repositories/base/base_graveyard_repository.h + repositories/base/base_ground_spawns_repository.h + repositories/base/base_group_id_repository.h + repositories/base/base_group_leaders_repository.h + repositories/base/base_guilds_repository.h + repositories/base/base_guild_ranks_repository.h + repositories/base/base_guild_permissions_repository.h + repositories/base/base_guild_members_repository.h + repositories/base/base_guild_bank_repository.h + repositories/base/base_guild_relations_repository.h + repositories/base/base_horses_repository.h + repositories/base/base_instance_list_repository.h + repositories/base/base_instance_list_player_repository.h + repositories/base/base_inventory_repository.h + repositories/base/base_inventory_snapshots_repository.h + repositories/base/base_ip_exemptions_repository.h + repositories/base/base_items_repository.h + repositories/base/base_items_evolving_details_repository.h + repositories/base/base_ldon_trap_entries_repository.h + repositories/base/base_ldon_trap_templates_repository.h + repositories/base/base_level_exp_mods_repository.h + repositories/base/base_lfguild_repository.h + repositories/base/base_login_accounts_repository.h + repositories/base/base_login_api_tokens_repository.h + repositories/base/base_login_server_admins_repository.h + repositories/base/base_login_server_list_types_repository.h + repositories/base/base_login_world_servers_repository.h + repositories/base/base_logsys_categories_repository.h + repositories/base/base_lootdrop_repository.h + repositories/base/base_lootdrop_entries_repository.h + repositories/base/base_loottable_repository.h + repositories/base/base_loottable_entries_repository.h + repositories/base/base_mail_repository.h + repositories/base/base_merchantlist_repository.h + repositories/base/base_merchantlist_temp_repository.h + repositories/base/base_name_filter_repository.h + repositories/base/base_npc_emotes_repository.h + repositories/base/base_npc_faction_repository.h + repositories/base/base_npc_faction_entries_repository.h + repositories/base/base_npc_scale_global_base_repository.h + repositories/base/base_npc_spells_repository.h + repositories/base/base_npc_spells_effects_repository.h + repositories/base/base_npc_spells_effects_entries_repository.h + repositories/base/base_npc_spells_entries_repository.h + repositories/base/base_npc_types_repository.h + repositories/base/base_npc_types_tint_repository.h + repositories/base/base_object_repository.h + repositories/base/base_object_contents_repository.h + repositories/base/base_perl_event_export_settings_repository.h + repositories/base/base_petitions_repository.h + repositories/base/base_pets_repository.h + repositories/base/base_pets_beastlord_data_repository.h + repositories/base/base_pets_equipmentset_repository.h + repositories/base/base_pets_equipmentset_entries_repository.h + repositories/base/base_player_titlesets_repository.h + repositories/base/base_player_event_aa_purchase_repository.h + repositories/base/base_player_event_killed_npc_repository.h + repositories/base/base_player_event_killed_named_npc_repository.h + repositories/base/base_player_event_killed_raid_npc_repository.h + repositories/base/base_player_event_log_settings_repository.h + repositories/base/base_player_event_logs_repository.h + repositories/base/base_player_event_loot_items_repository.h + repositories/base/base_player_event_merchant_purchase_repository.h + repositories/base/base_player_event_merchant_sell_repository.h + repositories/base/base_player_event_npc_handin_repository.h + repositories/base/base_player_event_npc_handin_entries_repository.h + repositories/base/base_player_event_speech_repository.h + repositories/base/base_player_event_trade_repository.h + repositories/base/base_player_event_trade_entries_repository.h + repositories/base/base_quest_globals_repository.h + repositories/base/base_raid_details_repository.h + repositories/base/base_raid_members_repository.h + repositories/base/base_reports_repository.h + repositories/base/base_respawn_times_repository.h + repositories/base/base_rule_sets_repository.h + repositories/base/base_rule_values_repository.h + repositories/base/base_saylink_repository.h + repositories/base/base_server_scheduled_events_repository.h + repositories/base/base_shared_tasks_repository.h + repositories/base/base_shared_task_activity_state_repository.h + repositories/base/base_shared_task_dynamic_zones_repository.h + repositories/base/base_shared_task_members_repository.h + repositories/base/base_skill_caps_repository.h + repositories/base/base_spawn2_repository.h + repositories/base/base_spawnentry_repository.h + repositories/base/base_spawngroup_repository.h + repositories/base/base_spawn_conditions_repository.h + repositories/base/base_spawn_condition_values_repository.h + repositories/base/base_spawn_events_repository.h + repositories/base/base_spells_new_repository.h + repositories/base/base_spell_buckets_repository.h + repositories/base/base_spell_globals_repository.h + repositories/base/base_starting_items_repository.h + repositories/base/base_start_zones_repository.h + repositories/base/base_tasks_repository.h + repositories/base/base_tasksets_repository.h + repositories/base/base_task_activities_repository.h + repositories/base/base_timers_repository.h + repositories/base/base_titles_repository.h + repositories/base/base_trader_repository.h + repositories/base/base_tradeskill_recipe_repository.h + repositories/base/base_tradeskill_recipe_entries_repository.h + repositories/base/base_traps_repository.h + repositories/base/base_tributes_repository.h + repositories/base/base_tribute_levels_repository.h + repositories/base/base_veteran_reward_templates_repository.h + repositories/base/base_zone_repository.h + repositories/base/base_zone_points_repository.h + + # Extended Repositories + repositories/aa_ability_repository.h + repositories/aa_ranks_repository.h + repositories/aa_rank_effects_repository.h + repositories/aa_rank_prereqs_repository.h + repositories/account_repository.h + repositories/account_flags_repository.h + repositories/account_ip_repository.h + repositories/account_rewards_repository.h + repositories/adventure_details_repository.h + repositories/adventure_members_repository.h + repositories/adventure_stats_repository.h + repositories/adventure_template_repository.h + repositories/adventure_template_entry_repository.h + repositories/adventure_template_entry_flavor_repository.h + repositories/alternate_currency_repository.h + repositories/auras_repository.h + repositories/base_data_repository.h + repositories/blocked_spells_repository.h + repositories/books_repository.h + repositories/bugs_repository.h + repositories/bug_reports_repository.h + repositories/buyer_buy_lines_repository.h + repositories/buyer_trade_items_repository.h + repositories/character_activities_repository.h + repositories/character_alternate_abilities_repository.h + repositories/character_alt_currency_repository.h + repositories/character_auras_repository.h + repositories/character_bandolier_repository.h + repositories/character_bind_repository.h + repositories/character_buffs_repository.h + repositories/character_corpses_repository.h + repositories/character_corpse_items_repository.h + repositories/character_currency_repository.h + repositories/character_data_repository.h + repositories/character_disciplines_repository.h + repositories/character_evolving_items_repository.h + repositories/character_expedition_lockouts_repository.h + repositories/character_exp_modifiers_repository.h + repositories/character_inspect_messages_repository.h + repositories/character_instance_safereturns_repository.h + repositories/character_item_recast_repository.h + repositories/character_languages_repository.h + repositories/character_leadership_abilities_repository.h + repositories/character_material_repository.h + repositories/character_memmed_spells_repository.h + repositories/character_parcels_repository.h + repositories/character_parcels_containers_repository.h + repositories/character_peqzone_flags_repository.h + repositories/character_pet_buffs_repository.h + repositories/character_pet_info_repository.h + repositories/character_pet_inventory_repository.h + repositories/character_potionbelt_repository.h + repositories/character_skills_repository.h + repositories/character_spells_repository.h + repositories/character_tasks_repository.h + repositories/character_task_timers_repository.h + repositories/char_create_combinations_repository.h + repositories/char_create_point_allocations_repository.h + repositories/char_recipe_list_repository.h + repositories/chatchannels_repository.h + repositories/chatchannel_reserved_names_repository.h + repositories/completed_shared_tasks_repository.h + repositories/completed_shared_task_activity_state_repository.h + repositories/completed_shared_task_members_repository.h + repositories/completed_tasks_repository.h + repositories/content_flags_repository.h + repositories/damageshieldtypes_repository.h + repositories/data_buckets_repository.h + repositories/db_str_repository.h + repositories/discord_webhooks_repository.h + repositories/discovered_items_repository.h + repositories/doors_repository.h + repositories/dynamic_zones_repository.h + repositories/dynamic_zone_lockouts_repository.h + repositories/dynamic_zone_members_repository.h + repositories/dynamic_zone_templates_repository.h + repositories/faction_association_repository.h + repositories/faction_base_data_repository.h + repositories/faction_list_repository.h + repositories/faction_list_mod_repository.h + repositories/faction_values_repository.h + repositories/fishing_repository.h + repositories/forage_repository.h + repositories/friends_repository.h + repositories/global_loot_repository.h + repositories/gm_ips_repository.h + repositories/graveyard_repository.h + repositories/ground_spawns_repository.h + repositories/group_id_repository.h + repositories/group_leaders_repository.h + repositories/guilds_repository.h + repositories/guild_ranks_repository.h + repositories/guild_permissions_repository.h + repositories/guild_members_repository.h + repositories/guild_bank_repository.h + repositories/guild_relations_repository.h + repositories/horses_repository.h + repositories/instance_list_repository.h + repositories/instance_list_player_repository.h + repositories/inventory_repository.h + repositories/inventory_snapshots_repository.h + repositories/ip_exemptions_repository.h + repositories/items_repository.h + repositories/items_evolving_details_repository.h + repositories/ldon_trap_entries_repository.h + repositories/ldon_trap_templates_repository.h + repositories/level_exp_mods_repository.h + repositories/lfguild_repository.h + repositories/login_accounts_repository.h + repositories/login_api_tokens_repository.h + repositories/login_server_admins_repository.h + repositories/login_server_list_types_repository.h + repositories/login_world_servers_repository.h + repositories/logsys_categories_repository.h + repositories/lootdrop_repository.h + repositories/lootdrop_entries_repository.h + repositories/loottable_repository.h + repositories/loottable_entries_repository.h + repositories/mail_repository.h + repositories/merchantlist_repository.h + repositories/merchantlist_temp_repository.h + repositories/name_filter_repository.h + repositories/npc_emotes_repository.h + repositories/npc_faction_repository.h + repositories/npc_faction_entries_repository.h + repositories/npc_scale_global_base_repository.h + repositories/npc_spells_repository.h + repositories/npc_spells_effects_repository.h + repositories/npc_spells_effects_entries_repository.h + repositories/npc_spells_entries_repository.h + repositories/npc_types_repository.h + repositories/npc_types_tint_repository.h + repositories/object_repository.h + repositories/object_contents_repository.h + repositories/perl_event_export_settings_repository.h + repositories/petitions_repository.h + repositories/pets_repository.h + repositories/pets_beastlord_data_repository.h + repositories/pets_equipmentset_repository.h + repositories/pets_equipmentset_entries_repository.h + repositories/player_titlesets_repository.h + repositories/player_event_aa_purchase_repository.h + repositories/player_event_killed_npc_repository.h + repositories/player_event_killed_named_npc_repository.h + repositories/player_event_killed_raid_npc_repository.h + repositories/player_event_log_settings_repository.h + repositories/player_event_logs_repository.h + repositories/player_event_loot_items_repository.h + repositories/player_event_merchant_purchase_repository.h + repositories/player_event_merchant_sell_repository.h + repositories/player_event_npc_handin_repository.h + repositories/player_event_npc_handin_entries_repository.h + repositories/player_event_speech_repository.h + repositories/player_event_trade_repository.h + repositories/player_event_trade_entries_repository.h + repositories/quest_globals_repository.h + repositories/raid_details_repository.h + repositories/raid_members_repository.h + repositories/reports_repository.h + repositories/respawn_times_repository.h + repositories/rule_sets_repository.h + repositories/rule_values_repository.h + repositories/saylink_repository.h + repositories/server_scheduled_events_repository.h + repositories/shared_tasks_repository.h + repositories/shared_task_activity_state_repository.h + repositories/shared_task_dynamic_zones_repository.h + repositories/shared_task_members_repository.h + repositories/skill_caps_repository.h + repositories/spawn2_repository.h + repositories/spawnentry_repository.h + repositories/spawngroup_repository.h + repositories/spawn_conditions_repository.h + repositories/spawn_condition_values_repository.h + repositories/spawn_events_repository.h + repositories/spells_new_repository.h + repositories/spell_buckets_repository.h + repositories/spell_globals_repository.h + repositories/starting_items_repository.h + repositories/start_zones_repository.h + repositories/tasks_repository.h + repositories/tasksets_repository.h + repositories/task_activities_repository.h + repositories/timers_repository.h + repositories/titles_repository.h + repositories/trader_repository.h + repositories/tradeskill_recipe_repository.h + repositories/tradeskill_recipe_entries_repository.h + repositories/traps_repository.h + repositories/tributes_repository.h + repositories/tribute_levels_repository.h + repositories/veteran_reward_templates_repository.h + repositories/zone_repository.h + repositories/zone_points_repository.h +) + source_group(StackWalker FILES StackWalker/StackWalker.h StackWalker/StackWalker.cpp @@ -830,12 +1231,65 @@ source_group(Util FILES util/uuid.h ) +option(EQEMU_ADD_PROFILER "Link with Google perftools profiler" OFF) +#PRNG options +option(EQEMU_ADDITIVE_LFIB_PRNG "Use Additive LFib for PRNG." OFF) +mark_as_advanced(EQEMU_ADDITIVE_LFIB_PRNG) +option(EQEMU_BIASED_INT_DIST "Use biased int dist instead of uniform." OFF) +mark_as_advanced(EQEMU_BIASED_INT_DIST) +set(EQEMU_CUSTOM_PRNG_ENGINE "" CACHE STRING "Custom random engine. (ex. std::default_random_engine)") +mark_as_advanced(EQEMU_CUSTOM_PRNG_ENGINE) + +if(CMAKE_COMPILER_IS_GNUCXX) + option(EQEMU_SFMT19937 "Use GCC's extention for SIMD Fast MT19937." OFF) + mark_as_advanced(EQEMU_SFMT19937) +endif() + include_directories(Patches SocketLib StackWalker) add_library(common ${common_sources} ${common_headers} ${repositories}) +target_compile_definitions(common PUBLIC BOOST_BIND_GLOBAL_PLACEHOLDERS GLM_FORCE_RADIANS GLM_FORCE_CTOR_INIT GLM_ENABLE_EXPERIMENTAL) +target_include_directories(common PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/../submodules/websocketpp") target_link_libraries(common PUBLIC cereal::cereal fmt::fmt unofficial::libmariadb $,libuv::uv_a,libuv::uv> OpenSSL::SSL OpenSSL::Crypto ZLIB::ZLIB) +# Requires libgoogle-perftools-dev google-perftools packages for linux (debian) +if(EQEMU_ADD_PROFILER) + set(CMAKE_EXE_LINKER_FLAGS "-Wl,--no-as-needed,-lprofiler,--as-needed") +endif() + +if(EQEMU_ADDITIVE_LFIB_PRNG) + target_compile_definitions(common PUBLIC USE_ADDITIVE_LFIB_PRNG) + if(EQEMU_SFMT19937) + message(STATUS "SFMT19937 and ADDITITVE_LFIB_PRNG both set, SFMT19937 ignored.") + set(EQEMU_SFMT19937 OFF) + endif() + if(NOT EQEMU_CUSTOM_PRNG_ENGINE STREQUAL "") + message(STATUS "CUSTOM_PRNG_ENGINE and ADDITITVE_LFIB_PRNG both set, CUSTOM_PRNG_ENGINE ignored.") + set(EQEMU_CUSTOM_PRNG_ENGINE "") + endif() +endif() + +if(EQEMU_SFMT19937) + target_compile_definitions(common PUBLIC USE_SFMT19937) + if(NOT EQEMU_CUSTOM_PRNG_ENGINE STREQUAL "") + message(STATUS "CUSTOM_PRNG_ENGINE and SFMT19937 both set, CUSTOM_PRNG_ENGINE ignored.") + set(EQEMU_CUSTOM_PRNG_ENGINE "") + endif() +endif() + +if(NOT EQEMU_CUSTOM_PRNG_ENGINE STREQUAL "") + target_compile_definitions(common PUBLIC USE_CUSTOM_PRNG_ENGINE=${EQEMU_CUSTOM_PRNG_ENGINE}) +endif() + +if(EQEMU_BIASED_INT_DIST) + target_compile_definitions(common PUBLIC BIASED_INT_DIST) +endif() + +if(${OPENSSL_VERSION} VERSION_GREATER_EQUAL "1.1.1") + target_compile_definitions(common PUBLIC CPPHTTPLIB_OPENSSL_SUPPORT) +endif() + if(UNIX) set_source_files_properties("SocketLib/Mime.cpp" PROPERTY COMPILE_FLAGS -Wno-unused-result) set_source_files_properties("patches/sod.cpp" "patches/sof.cpp" "patches/rof.cpp" "patches/rof2.cpp" "patches/uf.cpp" PROPERTIES COMPILE_FLAGS -O0) diff --git a/libs/luabind/CMakeLists.txt b/libs/luabind/CMakeLists.txt index 982e7b7b5..ef93f9a03 100644 --- a/libs/luabind/CMakeLists.txt +++ b/libs/luabind/CMakeLists.txt @@ -20,12 +20,9 @@ set(lb_sources src/wrapper_base.cpp ) -set(lb_headers - -) - -add_library(luabind ${lb_sources} ${lb_headers}) -target_link_libraries(luabind PRIVATE Boost::dynamic_bitset Boost::tuple Boost::foreach ${LUAJIT_LIBRARY}) +add_library(luabind ${lb_sources}) +target_include_directories(luabind PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${LUAJIT_INCLUDE_DIR}) +target_link_libraries(luabind PUBLIC Boost::dynamic_bitset Boost::tuple Boost::foreach ${LUAJIT_LIBRARY}) if(UNIX) set_source_files_properties(${lb_sources} PROPERTY COMPILE_FLAGS -Wno-deprecated-declarations) diff --git a/libs/perlbind/CMakeLists.txt b/libs/perlbind/CMakeLists.txt index 01d30a61b..9f505a329 100644 --- a/libs/perlbind/CMakeLists.txt +++ b/libs/perlbind/CMakeLists.txt @@ -2,10 +2,6 @@ cmake_minimum_required(VERSION 3.20.0) project(perlbind LANGUAGES CXX) -set(CMAKE_FIND_LIBRARY_SUFFIXES ".lib" ".so" ".a") - -find_package(PerlLibs) - set(PERLBIND_HEADERS include/perlbind/array.h include/perlbind/forward.h @@ -45,6 +41,8 @@ target_include_directories(perlbind PUBLIC $ $) +target_compile_definitions(perlbind PUBLIC EMBPERL EMBPERL_PLUGIN PERLBIND_NO_STRICT_SCALAR_TYPES) + option(PERLBIND_BUILD_TESTS "Build tests" OFF) option(PERLBIND_ENABLE_ASAN "Build with address sanitizer" OFF)