# ------------------------------------------------------------------
# Set minimum required version of CMake
# ------------------------------------------------------------------
CMake_Minimum_Required(VERSION 3.15)
project(source-python)
# ------------------------------------------------------------------
# Makefile includes.
# ------------------------------------------------------------------
include("makefiles/branch/${BRANCH}.cmake")
include("makefiles/shared.cmake")
# ------------------------------------------------------------------
# Loader
# ------------------------------------------------------------------
Set(SOURCEPYTHON_LOADER_HEADERS
loader/loader_main.h
loader/updater.h
loader/definitions.h
)
Set(SOURCEPYTHON_LOADER_SOURCES
loader/loader_main.cpp
loader/updater.cpp
)
Set(SOURCEPYTHON_LOADER_FILES
${SOURCEPYTHON_LOADER_HEADERS}
${SOURCEPYTHON_LOADER_SOURCES}
)
# ------------------------------------------------------------------
# Patches
# ------------------------------------------------------------------
Set(SOURCEPYTHON_PATCHES_HEADERS
core/patches/${SOURCE_ENGINE}/undefined_symbols.h
)
Set(SOURCEPYTHON_PATCHES_SOURCES
core/patches/${SOURCE_ENGINE}/patches.cpp
core/patches/undefined_symbols.cpp
)
Set(SOURCEPYTHON_PATCHES_FILES
${SOURCEPYTHON_PATCHES_HEADERS}
${SOURCEPYTHON_PATCHES_SOURCES}
)
# ------------------------------------------------------------------
# Utilities
# ------------------------------------------------------------------
Set(SOURCEPYTHON_UTILITIES_HEADERS
core/utilities/sp_util.h
core/utilities/shared_utils.h
core/utilities/call_python.h
core/utilities/wrap_macros.h
core/utilities/conversions.h
core/utilities/ipythongenerator.h
)
Set(SOURCEPYTHON_UTILITIES_SOURCES
core/utilities/conversions/baseentity_from.cpp
core/utilities/conversions/basehandle_from.cpp
core/utilities/conversions/edict_from.cpp
core/utilities/conversions/index_from.cpp
core/utilities/conversions/inthandle_from.cpp
core/utilities/conversions/playerinfo_from.cpp
core/utilities/conversions/pointer_from.cpp
core/utilities/conversions/userid_from.cpp
core/utilities/conversions/address_from.cpp
core/utilities/conversions/uniqueid_from.cpp
)
Set(SOURCEPYTHON_UTILITIES_FILES
${SOURCEPYTHON_UTILITIES_HEADERS}
${SOURCEPYTHON_UTILITIES_SOURCES}
)
# ------------------------------------------------------------------
# Core
# ------------------------------------------------------------------
Set(SOURCEPYTHON_CORE_HEADERS
core/sp_python.h
core/sp_main.h
core/export_main.h
core/sp_hooks.h
)
Set(SOURCEPYTHON_CORE_SOURCES
core/sp_python.cpp
core/sp_main.cpp
core/export_main.cpp
core/sp_hooks.cpp
)
Set(SOURCEPYTHON_CORE_FILES
${SOURCEPYTHON_CORE_HEADERS}
${SOURCEPYTHON_CORE_SOURCES}
)
# ------------------------------------------------------------------
# BitBuffers module.
# ------------------------------------------------------------------
Set(SOURCEPYTHON_BITBUFFERS_MODULE_HEADERS
core/modules/bitbuffers/bitbuffers.h
)
Set(SOURCEPYTHON_BITBUFFERS_MODULE_SOURCES
core/modules/bitbuffers/bitbuffers_wrap.cpp
)
# ------------------------------------------------------------------
# Colors module.
# ------------------------------------------------------------------
Set(SOURCEPYTHON_COLORS_MODULE_HEADERS
core/modules/colors/colors.h
)
Set(SOURCEPYTHON_COLORS_MODULE_SOURCES
core/modules/colors/colors_wrap.cpp
)
# ------------------------------------------------------------------
# Commands module.
# ------------------------------------------------------------------
Set(SOURCEPYTHON_COMMANDS_MODULE_HEADERS
core/modules/commands/commands_client.h
core/modules/commands/commands.h
core/modules/commands/commands_say.h
core/modules/commands/commands_server.h
)
Set(SOURCEPYTHON_COMMANDS_MODULE_SOURCES
core/modules/commands/commands_client.cpp
core/modules/commands/commands_client_wrap.cpp
core/modules/commands/commands_wrap.cpp
core/modules/commands/commands_say.cpp
core/modules/commands/commands_say_wrap.cpp
core/modules/commands/commands_server.cpp
core/modules/commands/commands_server_wrap.cpp
)
# ------------------------------------------------------------------
# Core module.
# ------------------------------------------------------------------
Set(SOURCEPYTHON_CORE_MODULE_HEADERS
core/modules/core/core.h
)
Set(SOURCEPYTHON_CORE_MODULE_SOURCES
core/modules/core/core.cpp
core/modules/core/core_wrap.cpp
)
Set(SOURCEPYTHON_CORE_CACHE_MODULE_HEADERS
core/modules/core/core_cache.h
)
Set(SOURCEPYTHON_CORE_CACHE_MODULE_SOURCES
core/modules/core/core_cache.cpp
core/modules/core/core_cache_wrap.cpp
)
# ------------------------------------------------------------------
# Cvars module.
# ------------------------------------------------------------------
Set(SOURCEPYTHON_CVARS_MODULE_HEADERS
core/modules/cvars/cvars.h
core/modules/cvars/${SOURCE_ENGINE}/cvars.h
)
Set(SOURCEPYTHON_CVARS_MODULE_SOURCES
core/modules/cvars/cvars_wrap.cpp
)
# ------------------------------------------------------------------
# Effects module
# ------------------------------------------------------------------
Set(SOURCEPYTHON_EFFECTS_MODULE_HEADERS
core/modules/effects/effects_base.h
core/modules/effects/${SOURCE_ENGINE}/effects_base_wrap.h
)
Set(SOURCEPYTHON_EFFECTS_MODULE_SOURCES
core/modules/effects/effects_wrap.cpp
core/modules/effects/effects_base_wrap.cpp
)
# ------------------------------------------------------------------
# Engines module.
# ------------------------------------------------------------------
Set(SOURCEPYTHON_ENGINES_MODULE_HEADERS
core/modules/engines/engines.h
core/modules/engines/engines_server.h
core/modules/engines/${SOURCE_ENGINE}/engines.h
core/modules/engines/${SOURCE_ENGINE}/engines_wrap.h
core/modules/engines/engines_gamerules.h
)
Set(SOURCEPYTHON_ENGINES_MODULE_SOURCES
core/modules/engines/engines_wrap.cpp
core/modules/engines/engines_server.cpp
core/modules/engines/engines_server_wrap.cpp
core/modules/engines/engines_sound_wrap.cpp
core/modules/engines/engines_trace_wrap.cpp
core/modules/engines/engines_gamerules.cpp
core/modules/engines/engines_gamerules_wrap.cpp
)
# ------------------------------------------------------------------
# Entities module
# ------------------------------------------------------------------
Set(SOURCEPYTHON_ENTITIES_MODULE_HEADERS
core/modules/entities/entities.h
core/modules/entities/${SOURCE_ENGINE}/entities.h
core/modules/entities/entities_generator.h
core/modules/entities/entities_factories.h
core/modules/entities/${SOURCE_ENGINE}/entities_factories_wrap.h
core/modules/entities/${SOURCE_ENGINE}/entities_wrap.h
core/modules/entities/entities_datamaps.h
core/modules/entities/${SOURCE_ENGINE}/entities_datamaps_wrap.h
core/modules/entities/entities_props.h
core/modules/entities/${SOURCE_ENGINE}/entities_props.h
core/modules/entities/${SOURCE_ENGINE}/entities_props_wrap.h
core/modules/entities/${SOURCE_ENGINE}/entities_constants_wrap.h
core/modules/entities/entities_entity.h
core/modules/entities/entities_collisions.h
core/modules/entities/entities_transmit.h
)
Set(SOURCEPYTHON_ENTITIES_MODULE_SOURCES
core/modules/entities/entities.cpp
core/modules/entities/entities_constants_wrap.cpp
core/modules/entities/entities_helpers_wrap.cpp
core/modules/entities/entities_wrap.cpp
core/modules/entities/entities_factories.cpp
core/modules/entities/entities_factories_wrap.cpp
core/modules/entities/entities_generator.cpp
core/modules/entities/entities_datamaps.cpp
core/modules/entities/entities_datamaps_wrap.cpp
core/modules/entities/entities_props.cpp
core/modules/entities/entities_props_wrap.cpp
core/modules/entities/entities_entity.cpp
core/modules/entities/entities_entity_wrap.cpp
core/modules/entities/entities_collisions.cpp
core/modules/entities/entities_collisions_wrap.cpp
core/modules/entities/entities_transmit.cpp
core/modules/entities/entities_transmit_wrap.cpp
)
# ------------------------------------------------------------------
# Events module.
# ------------------------------------------------------------------
Set(SOURCEPYTHON_EVENTS_MODULE_HEADERS
core/modules/events/events.h
core/modules/events/events_generator.h
)
Set(SOURCEPYTHON_EVENTS_MODULE_SOURCES
core/modules/events/events_generator.cpp
core/modules/events/events_wrap.cpp
)
# ------------------------------------------------------------------
# Filesystem module.
# ------------------------------------------------------------------
Set(SOURCEPYTHON_FILESYSTEM_MODULE_HEADERS
core/modules/filesystem/filesystem.h
)
Set(SOURCEPYTHON_FILESYSTEM_MODULE_SOURCES
core/modules/filesystem/filesystem.cpp
core/modules/filesystem/filesystem_wrap.cpp
)
# ------------------------------------------------------------------
# Filters module.
# ------------------------------------------------------------------
Set(SOURCEPYTHON_FILTERS_MODULE_HEADERS
core/modules/filters/filters_recipients.h
)
Set(SOURCEPYTHON_FILTERS_MODULE_SOURCES
core/modules/filters/filters_recipients.cpp
core/modules/filters/filters_recipients_wrap.cpp
)
# ------------------------------------------------------------------
# Globals module
# ------------------------------------------------------------------
Set(SOURCEPYTHON_GLOBALS_MODULE_HEADERS
core/modules/globals/${SOURCE_ENGINE}/globals_wrap.h
)
Set(SOURCEPYTHON_GLOBALS_MODULE_SOURCES
core/modules/globals/globals_wrap.cpp
)
# ------------------------------------------------------------------
# Keyvalues module
# ------------------------------------------------------------------
Set(SOURCEPYTHON_KEYVALUES_MODULE_HEADERS
core/modules/keyvalues/keyvalues.h
)
Set(SOURCEPYTHON_KEYVALUES_MODULE_SOURCES
core/modules/keyvalues/keyvalues_wrap.cpp
${SOURCESDK}/tier1/KeyValues.cpp
)
# ------------------------------------------------------------------
# Listeners module
# ------------------------------------------------------------------
Set(SOURCEPYTHON_LISTENERS_MODULE_HEADERS
core/modules/listeners/listeners_manager.h
)
Set(SOURCEPYTHON_LISTENERS_MODULE_SOURCES
core/modules/listeners/listeners_manager.cpp
core/modules/listeners/listeners_wrap.cpp
)
# ------------------------------------------------------------------
# Mathlib module
# ------------------------------------------------------------------
Set(SOURCEPYTHON_MATHLIB_MODULE_HEADERS
core/modules/mathlib/mathlib.h
)
Set(SOURCEPYTHON_MATHLIB_MODULE_SOURCES
core/modules/mathlib/mathlib_wrap.cpp
)
# ------------------------------------------------------------------
# Memory module
# ------------------------------------------------------------------
Set(SOURCEPYTHON_MEMORY_MODULE_HEADERS
core/modules/memory/memory_alloc.h
core/modules/memory/memory_calling_convention.h
core/modules/memory/memory_function.h
core/modules/memory/memory_function_info.h
core/modules/memory/memory_hooks.h
core/modules/memory/memory_pointer.h
core/modules/memory/memory_scanner.h
core/modules/memory/memory_signature.h
core/modules/memory/memory_tools.h
core/modules/memory/memory_utilities.h
core/modules/memory/memory_wrap.h
core/modules/memory/memory_rtti.h
core/modules/memory/memory_exception.h
)
Set(SOURCEPYTHON_MEMORY_MODULE_SOURCES
core/modules/memory/memory_function.cpp
core/modules/memory/memory_hooks.cpp
core/modules/memory/memory_pointer.cpp
core/modules/memory/memory_scanner.cpp
core/modules/memory/memory_wrap.cpp
core/modules/memory/memory_rtti.cpp
core/modules/memory/memory_exception.cpp
)
# ------------------------------------------------------------------
# Messages module.
# ------------------------------------------------------------------
Set(SOURCEPYTHON_MESSAGES_MODULE_HEADERS
core/modules/messages/messages.h
)
Set(SOURCEPYTHON_MESSAGES_MODULE_SOURCES
core/modules/messages/messages.cpp
core/modules/messages/messages_wrap.cpp
)
# ------------------------------------------------------------------
# NetChannel module.
# ------------------------------------------------------------------
Set(SOURCEPYTHON_NET_CHANNEL_MODULE_HEADERS
)
Set(SOURCEPYTHON_NET_CHANNEL_MODULE_SOURCES
core/modules/net_channel/net_channel_wrap.cpp
)
# ------------------------------------------------------------------
# Physics module.
# ------------------------------------------------------------------
Set(SOURCEPYTHON_PHYSICS_MODULE_HEADERS
core/modules/physics/physics.h
)
Set(SOURCEPYTHON_PHYSICS_MODULE_SOURCES
core/modules/physics/physics.cpp
core/modules/physics/physics_wrap.cpp
)
# ------------------------------------------------------------------
# Players module
# ------------------------------------------------------------------
Set(SOURCEPYTHON_PLAYERS_MODULE_HEADERS
core/modules/players/players_wrap.h
core/modules/players/players_entity.h
core/modules/players/players_generator.h
core/modules/players/${SOURCE_ENGINE}/players_constants_wrap.h
core/modules/players/${SOURCE_ENGINE}/players_wrap.h
)
Set(SOURCEPYTHON_PLAYERS_MODULE_SOURCES
core/modules/players/players_bots_wrap.cpp
core/modules/players/players_constants_wrap.cpp
core/modules/players/players_entity.cpp
core/modules/players/players_helpers_wrap.cpp
core/modules/players/players_wrap.cpp
core/modules/players/players_generator.cpp
core/modules/players/players_voice.cpp
)
# ------------------------------------------------------------------
# Plugins module
# ------------------------------------------------------------------
Set(SOURCEPYTHON_PLUGINS_MODULE_HEADERS
core/modules/plugins/plugins.h
)
Set(SOURCEPYTHON_PLUGINS_MODULE_SOURCES
core/modules/plugins/plugins.cpp
core/modules/plugins/plugins_wrap.cpp
)
# ------------------------------------------------------------------
# Steam module.
# ------------------------------------------------------------------
Set(SOURCEPYTHON_STEAM_MODULE_HEADERS
core/modules/steam/steam_wrap.h
core/modules/steam/${SOURCE_ENGINE}/steam_wrap.h
)
Set(SOURCEPYTHON_STEAM_MODULE_SOURCES
core/modules/steam/steam_wrap.cpp
)
# ------------------------------------------------------------------
# StringTables module.
# ------------------------------------------------------------------
Set(SOURCEPYTHON_STRINGTABLES_MODULE_HEADERS
core/modules/stringtables/stringtables.h
)
Set(SOURCEPYTHON_STRINGTABLES_MODULE_SOURCES
core/modules/stringtables/stringtables.cpp
core/modules/stringtables/stringtables_wrap.cpp
)
# ------------------------------------------------------------------
# Studio module.
# ------------------------------------------------------------------
Set(SOURCEPYTHON_STUDIO_MODULE_HEADERS
core/modules/studio/studio.h
)
Set(SOURCEPYTHON_STUDIO_MODULE_SOURCES
# hl2sdk/${BRANCH}/public/studio.cpp
core/modules/studio/studio_wrap.cpp
core/modules/studio/studio_constants_wrap.cpp
core/modules/studio/studio_cache_wrap.cpp
)
# ------------------------------------------------------------------
# Weapons module.
# ------------------------------------------------------------------
Set(SOURCEPYTHON_WEAPONS_MODULE_HEADERS
core/modules/weapons/${SOURCE_ENGINE}/weapons_constants_wrap.h
core/modules/weapons/${SOURCE_ENGINE}/weapons_scripts_wrap.h
core/modules/weapons/weapons_entity.h
)
Set(SOURCEPYTHON_WEAPONS_MODULE_SOURCES
core/modules/weapons/weapons_constants_wrap.cpp
core/modules/weapons/weapons_scripts_wrap.cpp
core/modules/weapons/weapons_entity.cpp
core/modules/weapons/weapons_entity_wrap.cpp
)
# ------------------------------------------------------------------
# All module source files
# ------------------------------------------------------------------
Set(SOURCEPYTHON_MODULE_FILES
${SOURCEPYTHON_CORE_CACHE_MODULE_HEADERS}
${SOURCEPYTHON_CORE_CACHE_MODULE_SOURCES}
# CFunctionInfo must be exposed at first
${SOURCEPYTHON_MEMORY_MODULE_HEADERS}
${SOURCEPYTHON_MEMORY_MODULE_SOURCES}
${SOURCEPYTHON_BITBUFFERS_MODULE_HEADERS}
${SOURCEPYTHON_BITBUFFERS_MODULE_SOURCES}
${SOURCEPYTHON_COLORS_MODULE_HEADERS}
${SOURCEPYTHON_COLORS_MODULE_SOURCES}
${SOURCEPYTHON_COMMANDS_MODULE_HEADERS}
${SOURCEPYTHON_COMMANDS_MODULE_SOURCES}
${SOURCEPYTHON_CVARS_MODULE_HEADERS}
${SOURCEPYTHON_CVARS_MODULE_SOURCES}
${SOURCEPYTHON_EFFECTS_MODULE_HEADERS}
${SOURCEPYTHON_EFFECTS_MODULE_SOURCES}
${SOURCEPYTHON_ENGINES_MODULE_HEADERS}
${SOURCEPYTHON_ENGINES_MODULE_SOURCES}
${SOURCEPYTHON_ENTITIES_MODULE_HEADERS}
${SOURCEPYTHON_ENTITIES_MODULE_SOURCES}
# Moved here cause CSourcePython relies on IEntityListener being
# exposed at run-time.
${SOURCEPYTHON_CORE_MODULE_HEADERS}
${SOURCEPYTHON_CORE_MODULE_SOURCES}
${SOURCEPYTHON_EVENTS_MODULE_HEADERS}
${SOURCEPYTHON_EVENTS_MODULE_SOURCES}
${SOURCEPYTHON_GLOBALS_MODULE_HEADERS}
${SOURCEPYTHON_GLOBALS_MODULE_SOURCES}
${SOURCEPYTHON_KEYVALUES_MODULE_HEADERS}
${SOURCEPYTHON_KEYVALUES_MODULE_SOURCES}
${SOURCEPYTHON_LISTENERS_MODULE_HEADERS}
${SOURCEPYTHON_LISTENERS_MODULE_SOURCES}
${SOURCEPYTHON_MATHLIB_MODULE_HEADERS}
${SOURCEPYTHON_MATHLIB_MODULE_SOURCES}
${SOURCEPYTHON_MESSAGES_MODULE_HEADERS}
${SOURCEPYTHON_MESSAGES_MODULE_SOURCES}
${SOURCEPYTHON_MESSAGES_MODULE_GAME_SOURCES}
${SOURCEPYTHON_NET_CHANNEL_MODULE_HEADERS}
${SOURCEPYTHON_NET_CHANNEL_MODULE_SOURCES}
${SOURCEPYTHON_PHYSICS_MODULE_HEADERS}
${SOURCEPYTHON_PHYSICS_MODULE_SOURCES}
${SOURCEPYTHON_PLAYERS_MODULE_HEADERS}
${SOURCEPYTHON_PLAYERS_MODULE_SOURCES}
${SOURCEPYTHON_PLUGINS_MODULE_HEADERS}
${SOURCEPYTHON_PLUGINS_MODULE_SOURCES}
${SOURCEPYTHON_FILTERS_MODULE_HEADERS}
${SOURCEPYTHON_FILTERS_MODULE_SOURCES}
${SOURCEPYTHON_FILESYSTEM_MODULE_HEADERS}
${SOURCEPYTHON_FILESYSTEM_MODULE_SOURCES}
${SOURCEPYTHON_STEAM_MODULE_HEADERS}
${SOURCEPYTHON_STEAM_MODULE_SOURCES}
${SOURCEPYTHON_STRINGTABLES_MODULE_HEADERS}
${SOURCEPYTHON_STRINGTABLES_MODULE_SOURCES}
${SOURCEPYTHON_STUDIO_MODULE_HEADERS}
${SOURCEPYTHON_STUDIO_MODULE_SOURCES}
${SOURCEPYTHON_WEAPONS_MODULE_HEADERS}
${SOURCEPYTHON_WEAPONS_MODULE_SOURCES}
)
# ------------------------------------------------------------------
# Create source groups for everything to make our projects nice and
# clean.
# ------------------------------------------------------------------
Source_Group("Header Files\\Core" FILES ${SOURCEPYTHON_CORE_HEADERS})
Source_Group("Header Files\\Patches" FILES ${SOURCEPYTHON_PATCHES_HEADERS})
Source_Group("Header Files\\Utilities" FILES ${SOURCEPYTHON_UTILITIES_HEADERS})
Source_Group("Header Files\\Modules\\BitBuffers" FILES ${SOURCEPYTHON_BITBUFFERS_MODULE_HEADERS})
Source_Group("Header Files\\Modules\\Colors" FILES ${SOURCEPYTHON_COLORS_MODULE_HEADERS})
Source_Group("Header Files\\Modules\\Commands" FILES ${SOURCEPYTHON_COMMANDS_MODULE_HEADERS})
Source_Group("Header Files\\Modules\\Core" FILES ${SOURCEPYTHON_CORE_MODULE_HEADERS})
Source_Group("Header Files\\Modules\\Cvars" FILES ${SOURCEPYTHON_CVARS_MODULE_HEADERS})
Source_Group("Header Files\\Modules\\Effects" FILES ${SOURCEPYTHON_EFFECTS_MODULE_HEADERS})
Source_Group("Header Files\\Modules\\Engines" FILES ${SOURCEPYTHON_ENGINES_MODULE_HEADERS})
Source_Group("Header Files\\Modules\\Entities" FILES ${SOURCEPYTHON_ENTITIES_MODULE_HEADERS})
Source_Group("Header Files\\Modules\\Events" FILES ${SOURCEPYTHON_EVENTS_MODULE_HEADERS})
Source_Group("Header Files\\Modules\\Globals" FILES ${SOURCEPYTHON_GLOBALS_MODULE_HEADERS})
Source_Group("Header Files\\Modules\\KeyValues" FILES ${SOURCEPYTHON_KEYVALUES_MODULE_HEADERS})
Source_Group("Header Files\\Modules\\Listeners" FILES ${SOURCEPYTHON_LISTENERS_MODULE_HEADERS})
Source_Group("Header Files\\Modules\\Mathlib" FILES ${SOURCEPYTHON_MATHLIB_MODULE_HEADERS})
Source_Group("Header Files\\Modules\\Memory" FILES ${SOURCEPYTHON_MEMORY_MODULE_HEADERS})
Source_Group("Header Files\\Modules\\Messages" FILES ${SOURCEPYTHON_MESSAGES_MODULE_HEADERS})
Source_Group("Header Files\\Modules\\NetChannel" FILES ${SOURCEPYTHON_NET_CHANNEL_MODULE_HEADERS})
Source_Group("Header Files\\Modules\\Physics" FILES ${SOURCEPYTHON_PHYSICS_MODULE_HEADERS})
Source_Group("Header Files\\Modules\\Players" FILES ${SOURCEPYTHON_PLAYERS_MODULE_HEADERS})
Source_Group("Header Files\\Modules\\Plugins" FILES ${SOURCEPYTHON_PLUGINS_MODULE_HEADERS})
Source_Group("Header Files\\Modules\\Filesystem" FILES ${SOURCEPYTHON_FILESYSTEM_MODULE_HEADERS})
Source_Group("Header Files\\Modules\\Filters" FILES ${SOURCEPYTHON_FILTERS_MODULE_HEADERS})
Source_Group("Header Files\\Modules\\StringTables" FILES ${SOURCEPYTHON_STRINGTABLES_MODULE_HEADERS})
Source_Group("Header Files\\Modules\\Steam" FILES ${SOURCEPYTHON_STEAM_MODULE_HEADERS})
Source_Group("Header Files\\Modules\\Studio" FILES ${SOURCEPYTHON_STUDIO_MODULE_HEADERS})
Source_Group("Header Files\\Modules\\Weapons" FILES ${SOURCEPYTHON_WEAPONS_MODULE_HEADERS})
Source_Group("Source Files\\Core" FILES ${SOURCEPYTHON_CORE_SOURCES})
Source_Group("Source Files\\Patches" FILES ${SOURCEPYTHON_PATCHES_SOURCES})
Source_Group("Source Files\\Utilities" FILES ${SOURCEPYTHON_UTILITIES_SOURCES})
Source_Group("Source Files\\Modules\\BitBuffers" FILES ${SOURCEPYTHON_BITBUFFERS_MODULE_SOURCES})
Source_Group("Source Files\\Modules\\Colors" FILES ${SOURCEPYTHON_COLORS_MODULE_SOURCES})
Source_Group("Source Files\\Modules\\Commands" FILES ${SOURCEPYTHON_COMMANDS_MODULE_SOURCES})
Source_Group("Source Files\\Modules\\Core" FILES ${SOURCEPYTHON_CORE_MODULE_SOURCES})
Source_Group("Source Files\\Modules\\Cvars" FILES ${SOURCEPYTHON_CVARS_MODULE_SOURCES})
Source_Group("Source Files\\Modules\\Effects" FILES ${SOURCEPYTHON_EFFECTS_MODULE_SOURCES})
Source_Group("Source Files\\Modules\\Engines" FILES ${SOURCEPYTHON_ENGINES_MODULE_SOURCES})
Source_Group("Source Files\\Modules\\Entities" FILES ${SOURCEPYTHON_ENTITIES_MODULE_SOURCES})
Source_Group("Source Files\\Modules\\Events" FILES ${SOURCEPYTHON_EVENTS_MODULE_SOURCES})
Source_Group("Source Files\\Modules\\Globals" FILES ${SOURCEPYTHON_GLOBALS_MODULE_SOURCES})
Source_Group("Source Files\\Modules\\KeyValues" FILES ${SOURCEPYTHON_KEYVALUES_MODULE_SOURCES})
Source_Group("Source Files\\Modules\\Listeners" FILES ${SOURCEPYTHON_LISTENERS_MODULE_SOURCES})
Source_Group("Source Files\\Modules\\Mathlib" FILES ${SOURCEPYTHON_MATHLIB_MODULE_SOURCES})
Source_Group("Source Files\\Modules\\Memory" FILES ${SOURCEPYTHON_MEMORY_MODULE_SOURCES})
Source_Group("Source Files\\Modules\\Messages" FILES ${SOURCEPYTHON_MESSAGES_MODULE_SOURCES})
Source_Group("Source Files\\Modules\\NetChannel" FILES ${SOURCEPYTHON_NET_CHANNEL_MODULE_SOURCES})
Source_Group("Source Files\\Modules\\Physics" FILES ${SOURCEPYTHON_PHYSICS_MODULE_SOURCES})
Source_Group("Source Files\\Modules\\Players" FILES ${SOURCEPYTHON_PLAYERS_MODULE_SOURCES})
Source_Group("Source Files\\Modules\\Plugins" FILES ${SOURCEPYTHON_PLUGINS_MODULE_SOURCES})
Source_Group("Source Files\\Modules\\Filesystem" FILES ${SOURCEPYTHON_FILESYSTEM_MODULE_SOURCES})
Source_Group("Source Files\\Modules\\Filters" FILES ${SOURCEPYTHON_FILTERS_MODULE_SOURCES})
Source_Group("Source Files\\Modules\\Steam" FILES ${SOURCEPYTHON_STEAM_MODULE_SOURCES})
Source_Group("Source Files\\Modules\\StringTables" FILES ${SOURCEPYTHON_STRINGTABLES_MODULE_SOURCES})
Source_Group("Source Files\\Modules\\Studio" FILES ${SOURCEPYTHON_STUDIO_MODULE_SOURCES})
Source_Group("Source Files\\Modules\\Weapons" FILES ${SOURCEPYTHON_WEAPONS_MODULE_SOURCES})
# ------------------------------------------------------------------
# All SourcePython source files. Ideally we break out each group of
# files into their own defines (as above with SOURCEPYTHON_CORE_FILES.
# ------------------------------------------------------------------
# ------------------------------------------------------------------
# This basically creates the SourcePython project. Certain project
# attributes like Target_Link_Libraries need to be declared after
# this line.
# ------------------------------------------------------------------
Add_Library(core SHARED
${SOURCEPYTHON_PATCHES_FILES}
${SOURCEPYTHON_CORE_FILES}
${SOURCEPYTHON_MODULE_FILES}
${SOURCEPYTHON_UTILITIES_FILES}
)
Add_Library(source-python SHARED
${SOURCEPYTHON_LOADER_FILES}
)
# ------------------------------------------------------------------
# Remove prefixes for core and source-python
# ------------------------------------------------------------------
Set_Target_Properties(core PROPERTIES PREFIX "")
Set_Target_Properties(source-python PROPERTIES PREFIX "")
# ------------------------------------------------------------------
# Include the base makefile.
# ------------------------------------------------------------------
If(WIN32)
include("makefiles/win32/win32.base.cmake")
Else()
include("makefiles/linux/linux.base.cmake")
EndIf()
# ------------------------------------------------------------------
# Definitions
# ------------------------------------------------------------------
Add_Definitions(
-DGAME_DLL=1
-DSOURCE_ENGINE=${SOURCE_ENGINE}
-DSOURCE_ENGINE_BRANCH=${BRANCH}
-DBOOST_PYTHON_MAX_ARITY=32
-DASMJIT_STATIC=1
)
# ------------------------------------------------------------------
# Setup link libraries for this project.
# ------------------------------------------------------------------
Target_Link_Libraries(core ${SOURCEPYTHON_LINK_LIBRARIES})
Target_Link_Libraries(core ${SOURCEPYTHON_LINK_LIBRARIES_RELEASE})
Target_Link_Libraries(source-python ${SOURCEPYTHON_LINK_LIBRARIES})