project(symbols) # Definition Files set(SRC src/LeafTile.def src/ServerPlayer.def src/Tile.def src/Material.def src/RakNetInstance.def src/LiquidTile.def src/LoginPacket.def src/ChestTileEntity.def src/InBedScreen.def src/LevelSource.def src/TallGrass.def src/Player.def src/ImageButton.def src/Strings.def src/ExternalFileLevelStorageSource.def src/TileEntity.def src/ItemRenderer.def src/ModelPart.def src/Biome.def src/SimpleChooseLevelScreen.def src/PauseScreen.def src/Tesselator.def src/AABB.def src/AppPlatform.def src/Minecraft.def src/OptionsFile.def src/EntityRenderer.def src/RakNet_RakString_SharedString.def src/ChunkSource.def src/Vec3.def src/NetEventCallback.def src/PathfinderMob.def src/Level.def src/RakNet_RakString.def src/StemTile.def src/LevelRenderer.def src/FillingContainer.def src/HumanoidModel.def src/TripodCameraRenderer.def src/FurnaceScreen.def src/HitResult.def src/Container.def src/PerfRenderer.def src/ParticleEngine.def src/PlayerRenderer.def src/GameMode.def src/Font.def src/RemotePlayer.def src/EntityRenderDispatcher.def src/Texture.def src/MobRenderer.def src/LargeFeature.def src/ContainerMenu.def src/Textures.def src/FurnaceTileEntity.def src/TileRenderer.def src/GrassTile.def src/WorkbenchScreen.def src/Packet.def src/RandomLevelSource.def src/SelectWorldScreen.def src/AuxDataTileItem.def src/OptionButton.def src/Touch_IngameBlockSelectionScreen.def src/OptionsPane.def src/HeavyTile.def src/Options.def src/AppPlatform_linux.def src/StartGamePacket.def src/IBuildInput.def src/ItemInstance.def src/SoundEngine.def src/GuiComponent.def src/NinecraftApp.def src/Mob.def src/MouseBuildInput.def src/FurnaceRecipes.def src/Recipes.def src/Button.def src/ChatPacket.def src/LevelData.def src/ServerSideNetworkHandler.def src/LargeCaveFeature.def src/Screen.def src/CreatorMode.def src/HumanoidMobRenderer.def src/OptionsScreen.def src/Gui.def src/Recipes_Type.def src/Inventory.def src/Common.def src/CommandServer.def src/RakNet_SystemAddress.def src/LevelSettings.def src/ServerLevel.def src/Item.def src/extra.h src/Entity.def src/RakNet_RakNetGUID.def src/RakNet_RakPeer.def src/Config.def src/ConnectedClient.def src/Mouse.def src/GameRenderer.def src/SurvivalMode.def src/AppPlatform_readAssetFile_return_value.def src/TextEditScreen.def src/StartMenuScreen.def src/ProgressScreen.def src/LocalPlayer.def src/Touch_SelectWorldScreen.def src/TileItem.def src/Tile_SoundType.def src/Options_Option.def src/LevelStorageSource.def src/SignTileEntity.def src/AgableMob.def src/PrimedTnt.def src/ItemEntity.def src/Arrow.def src/OffsetPosTranslator.def src/EntityFactory.def src/MobFactory.def src/Animal.def src/Sheep.def src/PingedCompatibleServer.def ) # Resolve Definition Files set(RESOLVED_SRC "") foreach(FILE IN LISTS SRC) list(APPEND RESOLVED_SRC "${CMAKE_CURRENT_SOURCE_DIR}/${FILE}") endforeach() # Directories function(set_and_mkdir name dir) set("${name}" "${dir}" PARENT_SCOPE) file(MAKE_DIRECTORY "${dir}") endfunction() set_and_mkdir(GENERATED_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated") set_and_mkdir(INCLUDE_OUTPUT_DIR "${GENERATED_DIR}/include") set_and_mkdir(HEADER_OUTPUT_DIR "${INCLUDE_OUTPUT_DIR}/symbols") set_and_mkdir(SRC_OUTPUT_DIR "${GENERATED_DIR}/src") # Files set(HEADER_OUTPUT_FILE "${HEADER_OUTPUT_DIR}/minecraft.h") set(SRC_OUTPUT_FILE "${SRC_OUTPUT_DIR}/minecraft.cpp") # Generate add_custom_command( OUTPUT "${SRC_OUTPUT_FILE}" "${HEADER_OUTPUT_FILE}" DEPENDS ${RESOLVED_SRC} COMMAND npm start --silent -- "${SRC_OUTPUT_FILE}" "${HEADER_OUTPUT_FILE}" ${RESOLVED_SRC} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../dependencies/symbol-processor/src" VERBATIM ) # Build add_library(symbols SHARED "${SRC_OUTPUT_FILE}" "${HEADER_OUTPUT_FILE}") # Show In IDE add_custom_target(symbols-src DEPENDS "${SRC_OUTPUT_FILE}" "${HEADER_OUTPUT_FILE}" SOURCES ${RESOLVED_SRC} ) # Include Directory target_include_directories( symbols PUBLIC "$" "$" ) # Disable C++11 String ABI target_compile_definitions(symbols PUBLIC -D_GLIBCXX_USE_CXX11_ABI=0) # Install install(TARGETS symbols DESTINATION "${MCPI_LIB_DIR}") # SDK install(TARGETS symbols EXPORT sdk DESTINATION "${MCPI_SDK_LIB_DIR}") install(DIRECTORY "${INCLUDE_OUTPUT_DIR}/" DESTINATION "${MCPI_SDK_INCLUDE_DIR}/symbols")