Răsfoiți Sursa

Improving build

BearishSun 9 ani în urmă
părinte
comite
91b50bca38

+ 2 - 5
Source/BansheeEditorExec/CMakeLists.txt

@@ -26,11 +26,8 @@ target_link_libraries(BansheeEditorExec BansheeEditor BansheeEngine BansheeUtili
 set_property(TARGET BansheeEditorExec PROPERTY FOLDER Executable)
 
 # Plugin dependencies
-add_dependencies(BansheeEditorExec BansheeFBXImporter BansheeFontImporter BansheeFreeImgImporter BansheeGLRenderAPI BansheeMono BansheeOISInput BansheePhysX BansheeSL BansheeOpenAudio RenderBeast SBansheeEngine SBansheeEditor)
-
-if(WIN32)
-	add_dependencies(BansheeEditorExec BansheeD3D11RenderAPI BansheeD3D9RenderAPI)
-endif()
+add_engine_dependencies(BansheeEditorExec)
+add_dependencies(BansheeEditorExec BansheeFBXImporter BansheeFontImporter BansheeFreeImgImporter SBansheeEditor)
 
 # Compiler flags
 target_compile_options(BansheeEditorExec PUBLIC /wd4509)

+ 30 - 0
Source/BansheeFMOD/CMakeLists.txt

@@ -0,0 +1,30 @@
+# Source files and their filters
+include(CMakeSources.cmake)
+
+# Includes
+set(BansheeFMOD_INC 
+	"Include" 
+	"../BansheeUtility/Include" 
+	"../BansheeCore/Include")
+
+include_directories(${BansheeFMOD_INC})	
+	
+# Target
+add_library(BansheeFMOD SHARED ${BS_BANSHEEFMOD_SRC})
+
+# Defines
+target_compile_definitions(BansheeFMOD PRIVATE -DBS_FMOD_EXPORTS)
+
+# Options
+set(FMOD_PATH "C:\\Program Files (x86)\\FMOD SoundSystem\\FMOD Studio API Windows" CACHE PATH "Path to the FMOD installation directory.")
+mark_as_advanced(FMOD_PATH)
+
+# Libraries
+## External libs: FMOD
+# TODO
+
+## Local libs
+target_link_libraries(BansheeFMOD PUBLIC BansheeUtility BansheeCore)
+
+# IDE specific
+set_property(TARGET BansheeFMOD PROPERTY FOLDER Plugins)

+ 15 - 0
Source/BansheeFMOD/CMakeSources.cmake

@@ -0,0 +1,15 @@
+set(BS_BANSHEEFMOD_INC_NOFILTER
+	""
+)
+
+set(BS_BANSHEEFMOD_SRC_NOFILTER
+	""
+)
+
+source_group("Header Files" FILES ${BS_BANSHEEFMOD_INC_NOFILTER})
+source_group("Source Files" FILES ${BS_BANSHEEFMOD_SRC_NOFILTER})
+
+set(BS_BANSHEEOPENAUDIO_SRC
+	${BS_BANSHEEFMOD_INC_NOFILTER}
+	${BS_BANSHEEFMOD_SRC_NOFILTER}
+)

+ 76 - 14
Source/CMakeLists.txt

@@ -7,21 +7,46 @@ set (Banshee_VERSION_MINOR 3)
 
 # Configuration types
 if(CMAKE_CONFIGURATION_TYPES) # Multiconfig generator?
-	set(CMAKE_CONFIGURATION_TYPES "Debug;OptimizedDebug;Release;" CACHE STRING "" FORCE) 
+	set(CMAKE_CONFIGURATION_TYPES "Debug;OptimizedDebug;Release;" CACHE INTERNAL "") 
 else()
 	if(NOT CMAKE_BUILD_TYPE)
 		message("Defaulting to release build.")
-		set(CMAKE_BUILD_TYPE Release CACHE STRING "" FORCE)
+		set(CMAKE_BUILD_TYPE Release CACHE INTERNAL "")
 	endif()
 	set_property(CACHE CMAKE_BUILD_TYPE PROPERTY HELPSTRING "Choose the type of build")
 	# Set the valid options for cmake-gui drop-down list
-	set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug;OptimizedDebug;Release")
+	set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS Debug OptimizedDebug Release)
 endif()
 
 if(${CMAKE_SIZEOF_VOID_P} EQUAL 8)
 	set(BS_64BIT true)
 endif()
 
+# Options
+set(AUDIO_MODULE "OpenAudio" CACHE STRING "Audio backend to use.")
+set_property(CACHE AUDIO_MODULE PROPERTY STRINGS OpenAudio FMOD)
+
+set(PHYSICS_MODULE "PhysX" CACHE STRING "Physics backend to use.")
+set_property(CACHE PHYSICS_MODULE PROPERTY STRINGS PhysX)
+
+set(INPUT_MODULE "OIS" CACHE STRING "Input backend to use.")
+set_property(CACHE INPUT_MODULE PROPERTY STRINGS OIS)
+
+if(WIN32)
+set(RENDER_API_MODULE "DirectX 11" CACHE STRING "Render API to use.")
+set_property(CACHE RENDER_API_MODULE PROPERTY STRINGS "DirectX 11" "DirectX 9" "OpenGL")
+else()
+set(RENDER_API_MODULE "OpenGL" CACHE STRING "Render API to use.")
+set_property(CACHE RENDER_API_MODULE PROPERTY STRINGS "OpenGL")
+endif()
+
+set(RENDERER_MODULE "RenderBeast" CACHE STRING "Renderer backend to use.")
+set_property(CACHE RENDERER_MODULE PROPERTY STRINGS RenderBeast)
+
+set(BUILD_EDITOR ON CACHE BOOL "If true both the engine and the editor will be built.")
+
+mark_as_advanced(CMAKE_INSTALL_PREFIX)
+
 # Global compile & linker flags
 ## Compiler-agnostic settings
 ### Target at least C++11
@@ -129,6 +154,24 @@ function(add_library_per_config_suffix target_name lib_name rls_suffix debug_suf
 	target_link_libraries(${target_name} PRIVATE ${lib_name})	
 endfunction()
 
+function(add_engine_dependencies target_name)
+	if(RENDER_API_MODULE MATCHES "DirectX 11")
+		add_dependencies(${target_name} BansheeD3D11RenderAPI)
+	elseif(RENDER_API_MODULE MATCHES "DirectX 9")
+		add_dependencies(${target_name} BansheeD3D9RenderAPI)
+	else()
+		add_dependencies(${target_name} BansheeGLRenderAPI)
+	endif()
+
+	if(AUDIO_MODULE MATCHES "FMOD")
+		add_dependencies(${target_name} BansheeFMOD)
+	else() # Default to OpenAudio
+		add_dependencies(${target_name} BansheeOpenAudio)
+	endif()
+	
+	add_dependencies(${target_name} BansheeMono BansheeOISInput BansheePhysX RenderBeast SBansheeEngine)
+endfunction()
+
 set_property(GLOBAL PROPERTY USE_FOLDERS TRUE)
 
 # Sub-directories
@@ -136,15 +179,21 @@ set_property(GLOBAL PROPERTY USE_FOLDERS TRUE)
 add_subdirectory(BansheeUtility)
 add_subdirectory(BansheeCore)
 add_subdirectory(BansheeEngine)
-add_subdirectory(BansheeEditor)
+
+#if(BUILD_EDITOR)
+	add_subdirectory(BansheeEditor)
+#endif()
 
 ## Plugins
-if(WIN32)
-	add_subdirectory(BansheeD3D9RenderAPI)
+
+if(RENDER_API_MODULE MATCHES "DirectX 11")
 	add_subdirectory(BansheeD3D11RenderAPI)
+elseif(RENDER_API_MODULE MATCHES "DirectX 9")
+	add_subdirectory(BansheeD3D9RenderAPI)
+else()
+	add_subdirectory(BansheeGLRenderAPI)
 endif()
 
-add_subdirectory(BansheeGLRenderAPI)
 add_subdirectory(BansheeFBXImporter)
 add_subdirectory(BansheeFontImporter)
 add_subdirectory(BansheeFreeImgImporter)
@@ -152,28 +201,41 @@ add_subdirectory(BansheeMono)
 add_subdirectory(BansheeOISInput)
 add_subdirectory(BansheePhysX)
 add_subdirectory(BansheeSL)
-add_subdirectory(BansheeOpenAudio)
 add_subdirectory(RenderBeast)
 
+if(AUDIO_MODULE MATCHES "FMOD")
+	add_subdirectory(BansheeFMOD)
+else() # Default to OpenAudio
+	add_subdirectory(BansheeOpenAudio)
+endif()
+
 ## Script interop
 add_subdirectory(SBansheeEngine)
-add_subdirectory(SBansheeEditor)
+
+if(BUILD_EDITOR)
+	add_subdirectory(SBansheeEditor)
+endif()
 
 ## Executables
-add_subdirectory(BansheeEditorExec)
 add_subdirectory(Game)
 add_subdirectory(ExampleProject)
 
+if(BUILD_EDITOR)
+	add_subdirectory(BansheeEditorExec)
+endif()
+
 ## Managed projects
 if(MSVC)
 	include_external_msproject(MBansheeEngine ${PROJECT_SOURCE_DIR}/MBansheeEngine/MBansheeEngine.csproj)
-	include_external_msproject(MBansheeEditor ${PROJECT_SOURCE_DIR}/MBansheeEditor/MBansheeEditor.csproj)
-	
-	add_dependencies(BansheeEditorExec MBansheeEngine MBansheeEditor)
 	add_dependencies(Game MBansheeEngine)
 	
 	set_property(TARGET MBansheeEngine PROPERTY FOLDER Script)
-	set_property(TARGET MBansheeEditor PROPERTY FOLDER Script)
+
+	if(BUILD_EDITOR)
+		include_external_msproject(MBansheeEditor ${PROJECT_SOURCE_DIR}/MBansheeEditor/MBansheeEditor.csproj)
+		add_dependencies(BansheeEditorExec MBansheeEngine MBansheeEditor)
+		set_property(TARGET MBansheeEditor PROPERTY FOLDER Script)
+	endif()
 else()
 # TODO - Use Mono compiler to build the managed code as a pre-build step
 endif()

+ 2 - 5
Source/ExampleProject/CMakeLists.txt

@@ -25,8 +25,5 @@ target_link_libraries(ExampleProject BansheeEngine BansheeUtility BansheeCore)
 set_property(TARGET ExampleProject PROPERTY FOLDER Executable)
 
 # Plugin dependencies
-add_dependencies(Game BansheeFBXImporter BansheeFontImporter BansheeFreeImgImporter BansheeGLRenderAPI BansheeMono BansheeOISInput BansheePhysX BansheeSL RenderBeast SBansheeEngine)
-
-if(WIN32)
-	add_dependencies(Game BansheeD3D11RenderAPI BansheeD3D9RenderAPI)
-endif()
+add_engine_dependencies(ExampleProject)
+add_dependencies(ExampleProject BansheeFBXImporter BansheeFontImporter BansheeFreeImgImporter)

+ 2 - 6
Source/Game/CMakeLists.txt

@@ -40,11 +40,7 @@ target_link_libraries(Game BansheeEngine BansheeUtility BansheeCore)
 set_property(TARGET Game PROPERTY FOLDER Executable)
 
 # Plugin dependencies
-add_dependencies(Game BansheeGLRenderAPI BansheeMono BansheeOISInput BansheePhysX RenderBeast BansheeOpenAudio SBansheeEngine)
-
-if(WIN32)
-	add_dependencies(Game BansheeD3D11RenderAPI BansheeD3D9RenderAPI)
-endif()
+add_engine_dependencies(Game)
 
 # Compiler flags
-target_compile_options(BansheeEditorExec PUBLIC /wd4509)
+target_compile_options(Game PUBLIC /wd4509)