summaryrefslogtreecommitdiffstats
path: root/CMake/GenerateBindings.cmake
blob: 584ad1b66b905263a910ec317fcad1cdd4c9c905 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
function(enable_bindings_generation)
	# Enumerate every Lua-exported class.
	# Changes to these files will cause binding regen:
	set(BINDING_DEPENDENCIES
		Bindings/AllToLua.pkg
		Bindings/BindingsProcessor.lua
		Bindings/LuaFunctions.h
		Bindings/LuaWindow.h
		Bindings/Plugin.h
		Bindings/PluginLua.h
		Bindings/PluginManager.h
		BiomeDef.h
		BlockArea.h
		BlockEntities/BeaconEntity.h
		BlockEntities/BedEntity.h
		BlockEntities/BlockEntity.h
		BlockEntities/BlockEntityWithItems.h
		BlockEntities/BrewingstandEntity.h
		BlockEntities/ChestEntity.h
		BlockEntities/CommandBlockEntity.h
		BlockEntities/DispenserEntity.h
		BlockEntities/DropSpenserEntity.h
		BlockEntities/DropperEntity.h
		BlockEntities/FurnaceEntity.h
		BlockEntities/HopperEntity.h
		BlockEntities/JukeboxEntity.h
		BlockEntities/MobSpawnerEntity.h
		BlockEntities/NoteEntity.h
		BlockEntities/SignEntity.h
		BlockEntities/MobHeadEntity.h
		BlockEntities/FlowerPotEntity.h
		BlockType.h
		BlockInfo.h
		BoundingBox.h
		ChatColor.h
		ChunkDef.h
		ClientHandle.h
		Color.h
		CompositeChat.h
		CraftingRecipes.h
		Cuboid.h
		Defines.h
		EffectID.h
		Enchantments.h
		Entities/Boat.h
		Entities/ArrowEntity.h
		Entities/Entity.h
		Entities/ExpOrb.h
		Entities/EntityEffect.h
		Entities/ExpBottleEntity.h
		Entities/FallingBlock.h
		Entities/FireChargeEntity.h
		Entities/FireworkEntity.h
		Entities/Floater.h
		Entities/GhastFireballEntity.h
		Entities/HangingEntity.h
		Entities/ItemFrame.h
		Entities/LeashKnot.h
		Entities/Pawn.h
		Entities/Player.h
		Entities/Painting.h
		Entities/Pickup.h
		Entities/ProjectileEntity.h
		Entities/SplashPotionEntity.h
		Entities/ThrownEggEntity.h
		Entities/ThrownEnderPearlEntity.h
		Entities/ThrownSnowballEntity.h
		Entities/TNTEntity.h
		Entities/WitherSkullEntity.h
		Generating/ChunkDesc.h
		IniFile.h
		Inventory.h
		Item.h
		ItemGrid.h
		Map.h
		MapManager.h
		Mobs/Monster.h
		Mobs/MonsterTypes.h
		OSSupport/File.h
		Protocol/MojangAPI.h
		Root.h
		Scoreboard.h
		Server.h
		Statistics.h
		StringUtils.h
		UI/Window.h
		UUID.h
		Vector3.h
		WebAdmin.h
		World.h
	)

	# List all the files that are generated as part of the Bindings build process:
	set(BINDING_OUTPUTS
		Bindings.cpp
		Bindings.h
		LuaState_Declaration.inc
		LuaState_Implementation.cpp
		LuaState_Typedefs.inc
	)

	# Make the file paths absolute and pointing to the bindings folder:
	set(BINDINGS_FOLDER "${PROJECT_SOURCE_DIR}/src/Bindings/")
	list(TRANSFORM BINDING_OUTPUTS PREPEND ${BINDINGS_FOLDER})
	list(TRANSFORM BINDING_DEPENDENCIES PREPEND "${PROJECT_SOURCE_DIR}/src/")

	# Generate the bindings:
	add_custom_command(
		OUTPUT ${BINDING_OUTPUTS}
		COMMAND luaexe BindingsProcessor.lua
		WORKING_DIRECTORY ${BINDINGS_FOLDER}
		DEPENDS ${BINDING_DEPENDENCIES} luaexe
	)
endfunction()