diff --git a/CMakeLists.txt b/CMakeLists.txt index 609ae6c17..8a4b73947 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -121,7 +121,11 @@ setupVersionNumbers() if(NOT TORQUE_TEMPLATE) set(TORQUE_TEMPLATE "BaseGame" CACHE STRING "the template to use") endif() -installTemplate(${TORQUE_TEMPLATE}) + +if (NOT TORQUE_INSTALLED_TEMPLATE) + installTemplate(${TORQUE_TEMPLATE}) + set(TORQUE_INSTALLED_TEMPLATE TRUE CACHE BOOL "Whether or not the game template is installed. This may be reset to false (or removed) to force a reinstall.") +endif(NOT TORQUE_INSTALLED_TEMPLATE) # Generate torqueConfig.h in our temp directory CONFIGURE_FILE("${CMAKE_SOURCE_DIR}/Tools/CMake/torqueConfig.h.in" "${CMAKE_BINARY_DIR}/temp/torqueConfig.h") diff --git a/Engine/source/CMakeLists.txt b/Engine/source/CMakeLists.txt index 17d5f1ba0..fa9f7a80c 100644 --- a/Engine/source/CMakeLists.txt +++ b/Engine/source/CMakeLists.txt @@ -56,8 +56,6 @@ file(GLOB TORQUE_CONSOLE_SOURCES "console/*.cpp") file(GLOB TORQUE_MATH_SOURCES "math/*.cpp" "math/util/*.cpp") # Handle persistence -#addPathRec("${srcDir}/persistence") - file(GLOB TORQUE_PERSISTENCE_SOURCES "persistence/taml/*.cpp" "persistence/taml/binary/*.cpp" "persistence/taml/xml/*.cpp") # Handle Cinterface @@ -91,6 +89,16 @@ endif (WIN32) # Handle terrain file(GLOB TORQUE_TERRAIN_SOURCES "terrain/*.cpp") +if (WIN32 AND TORQUE_D3D11) + file(GLOB TORQUE_TERRAIN_SOURCES_HLSL "terrain/hlsl/*.cpp") + set(TORQUE_TERRAIN_SOURCES ${TORQUE_TERRAIN_SOURCES} ${TORQUE_TERRAIN_SOURCES_HLSL}) +endif (WIN32 AND TORQUE_D3D11) + +if (TORQUE_OPENGL) + file(GLOB TORQUE_TERRAIN_SOURCES_GLSL "terrain/glsl/*.cpp") + set(TORQUE_TERRAIN_SOURCES ${TORQUE_TERRAIN_SOURCES} ${TORQUE_TERRAIN_SOURCES_GLSL}) +endif (TORQUE_OPENGL) + # Handle Materials file(GLOB TORQUE_MATERIALS_SOURCES "materials/*.cpp") @@ -135,11 +143,10 @@ endif (WIN32) # Handle platformSDL file(GLOB TORQUE_PLATFORM_SDL_SOURCES "platformSDL/*.cpp" "platformSDL/threads/*.cpp") - ################# Start building libs ################### set(TORQUE_COMPILE_DEFINITIONS ICE_NO_DLL PCRE_STATIC TORQUE_ADVANCED_LIGHTING TORQUE_SHADERGEN - TORQUE_OPENGL TORQUE_OPCODE TORQUE_ASSIMP TORQUE_SDL TORQUE_COLLADA + TORQUE_OPCODE TORQUE_ASSIMP TORQUE_SDL TORQUE_COLLADA TORQUE_UNICODE UNICODE _UNICODE) # Set common linkages @@ -152,14 +159,13 @@ set (TORQUE_SOURCE_FILES "main/main.cpp" ${TORQUE_CINTERFACE_SOURCES} ${TORQUE_MATH_SOURCES} ${TORQUE_PLATFORM_SOURCES} ${TORQUE_ASSETS_SOURCES} ${TORQUE_UTIL_SOURCES} ${TORQUE_CORE_SOURCES} ${TORQUE_PERSISTENCE_SOURCES} ${TORQUE_MODULE_SOURCES} - ${TORQUE_PLATFORM_SDL_SOURCES} ${TORQUE_PLATFORM_MAC_SOURCES} ${TORQUE_PLATFORM_POSIX_SOURCES} + ${TORQUE_PLATFORM_SDL_SOURCES} ${TORQUE_PLATFORM_POSIX_SOURCES} ${TORQUE_WINDOW_MANAGER_SOURCES} ${TORQUE_SCENE_SOURCES} ${TORQUE_COLLISION_SOURCES} ${TORQUE_T3D_SOURCES} ${TORQUE_TS_SOURCES} ${TORQUE_SIM_SOURCES} ${TORQUE_MATERIALS_SOURCES} ${TORQUE_SHADERGEN_SOURCES} ${TORQUE_LIGHTING_SOURCES} ${TORQUE_GUI_SOURCES} ${TORQUE_ENVIRONMENT_SOURCES} ${TORQUE_TERRAIN_SOURCES} ${TORQUE_POSTFX_SOURCES} ${TORQUE_I18N_SOURCES} ${TORQUE_CONSOLE_SOURCES} ${TORQUE_SFX_SOURCES} ${TORQUE_GFX_SOURCES}) - # When on Windows, we need to link against winsock and windows codecs if (WIN32) set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} WS2_32.LIB windowscodecs.lib) @@ -167,7 +173,7 @@ if (WIN32) # If D3D11 is enabled, we need to link to DirectX if (TORQUE_D3D11) - set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} dxguid.lib) + set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} dxguid.lib) endif (TORQUE_D3D11) endif (WIN32) @@ -179,9 +185,14 @@ endif (WIN32 AND TORQUE_D3D11) # Only link Apple frameworks when on an Apple platform if (APPLE) enable_language(OBJC) + set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} ${TORQUE_PLATFORM_MAC_SOURCES}) set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} "-framework Cocoa" "-framework AppKit" "-framework CoreData" "-framework Foundation") endif (APPLE) +if (TORQUE_OPENGL) + set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} TORQUE_OPENGL) +endif (TORQUE_OPENGL) + # Search module directories set(TORQUE_MODULE_PATHS "${CMAKE_SOURCE_DIR}/Tools/CMake/modules") @@ -226,8 +237,7 @@ target_link_libraries(${TORQUE_APP_NAME} ${TORQUE_LINK_LIBRARIES}) target_include_directories(${TORQUE_APP_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_BINARY_DIR}/temp") if (WIN32) - # FIXME: Torque is angry about these warnings - set_target_properties(${TORQUE_APP_NAME} PROPERTIES COMPILE_FLAGS "-DUNICODE -D_UNICODE -D_CRT_SECURE_NO_WARNINGS /MP /Zc:wchar_t-") + set_target_properties(${TORQUE_APP_NAME} PROPERTIES COMPILE_FLAGS "-D_CRT_SECURE_NO_WARNINGS /MP /Zc:wchar_t-") endif (WIN32) if (APPLE) @@ -243,17 +253,18 @@ if (UNIX AND NOT APPLE) endif (UNIX AND NOT APPLE) # Process link libraries for dynamic links - we do this on OSX to ensure the binaries end up in the correct App directory +# as in the root CMake we force everything to be in game if (APPLE) get_target_property(GAME_LINK_LIBRARIES ${TORQUE_APP_NAME} LINK_LIBRARIES) foreach (GAME_LINK_LIBRARY ${GAME_LINK_LIBRARIES}) # For eg. OSX some links are not valid targets - for example frameworks provided by OS if (TARGET ${GAME_LINK_LIBRARY}) - get_target_property(LINK_LIBRARY_TYPE ${GAME_LINK_LIBRARY} TYPE) + get_target_property(LINK_LIBRARY_TYPE ${GAME_LINK_LIBRARY} TYPE) - # Only pay attention to shared libraries - if ("${LINK_LIBRARY_TYPE}" STREQUAL "SHARED_LIBRARY") - set_target_properties( ${GAME_LINK_LIBRARY} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "game/${TORQUE_APP_NAME}.app/Resources") - endif() + # Only pay attention to shared libraries and make them output to the app resources + if ("${LINK_LIBRARY_TYPE}" STREQUAL "SHARED_LIBRARY") + set_target_properties( ${GAME_LINK_LIBRARY} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${TORQUE_APP_GAME_DIRECTORY}/${TORQUE_APP_NAME}.app/Resources") + endif() endif() endforeach() endif (APPLE) \ No newline at end of file diff --git a/Templates/BaseGame/CMakeLists.txt b/Templates/BaseGame/CMakeLists.txt index 598b3aae7..e2ab3497c 100644 --- a/Templates/BaseGame/CMakeLists.txt +++ b/Templates/BaseGame/CMakeLists.txt @@ -1,22 +1,24 @@ file(GLOB TEMPLATE_FILES "*.bat" "*.command") -install(FILES ${TEMPLATE_FILES} DESTINATION .) +foreach(TEMPLATE_FILE ${TEMPLATE_FILES}) + file(COPY ${TEMPLATE_FILE} DESTINATION "${TORQUE_APP_ROOT_DIRECTORY}") +endforeach() # Perform installation minus scripts -install(DIRECTORY "game" "source" DESTINATION . - PATTERN "*.tscript" - EXCLUDE PATTERN) - +file(COPY "game" "source" DESTINATION "${TORQUE_APP_ROOT_DIRECTORY}" PATTERN "*.tscript" EXCLUDE PATTERN + PATTERN "*.in" EXCLUDE PATTERN) # Enumerate scripts and install with extension file(GLOB_RECURSE SCRIPT_FILES "game/*.tscript") foreach(ITEM ${SCRIPT_FILES}) get_filename_component( dir ${ITEM} DIRECTORY ) get_filename_component( scriptName ${ITEM} NAME ) - STRING(REGEX REPLACE "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/" "${CMAKE_INSTALL_PREFIX}/" INSTALL_DIR ${dir}) + STRING(REGEX REPLACE "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/" "${TORQUE_APP_ROOT_DIRECTORY}/" INSTALL_DIR ${dir}) STRING(REGEX REPLACE ".tscript" ".${TORQUE_SCRIPT_EXTENSION}" newScriptName ${scriptName}) - install( FILES ${ITEM} DESTINATION ${INSTALL_DIR} RENAME ${newScriptName} ) + + # We can't use the file(COPY command to copy to a new file name so we copy as-is first then rename + file(COPY ${ITEM} DESTINATION ${INSTALL_DIR}) + file(RENAME ${INSTALL_DIR}/${scriptName} ${INSTALL_DIR}/${newScriptName}) endforeach() -# Once the full tree is installed, perform configurations on several files -CONFIGURE_FILE("game/main.tscript.in" "${CMAKE_BINARY_DIR}/main.${TORQUE_SCRIPT_EXTENSION}") -install(FILES "${CMAKE_BINARY_DIR}/main.${TORQUE_SCRIPT_EXTENSION}" DESTINATION "${CMAKE_INSTALL_PREFIX}/game") \ No newline at end of file +# Once the full tree is installed, perform configurations +CONFIGURE_FILE("game/main.tscript.in" "${TORQUE_APP_GAME_DIRECTORY}/main.${TORQUE_SCRIPT_EXTENSION}") \ No newline at end of file