diff --git a/CMakeLists.txt b/CMakeLists.txt index d71d6ea26..bebb66f20 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,6 +24,10 @@ endif() set(TORQUE_APP_ROOT_DIRECTORY "${CMAKE_SOURCE_DIR}/My Projects/${TORQUE_APP_NAME}") set(TORQUE_APP_GAME_DIRECTORY "${TORQUE_APP_ROOT_DIRECTORY}/game") +#library handling +set(TORQUE_LIB_ROOT_DIRECTORY "${CMAKE_SOURCE_DIR}/Engine/Lib") +set(TORQUE_LIB_TARG_DIRECTORY "${CMAKE_BINARY_DIR}/Engine/Lib") + # Ensure all possible configurations end up in the project directory set(CMAKE_INSTALL_PREFIX "${TORQUE_APP_ROOT_DIRECTORY}") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${TORQUE_APP_GAME_DIRECTORY}") @@ -67,6 +71,6 @@ if (NOT TORQUE_INSTALLED_TEMPLATE) 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") +configure_file("${CMAKE_SOURCE_DIR}/Tools/CMake/torqueConfig.h.in" "${TORQUE_APP_ROOT_DIRECTORY}/source/torqueConfig.h") add_subdirectory(Engine) diff --git a/Engine/lib/CMakeLists.txt b/Engine/lib/CMakeLists.txt index 976af0e54..1944b6446 100644 --- a/Engine/lib/CMakeLists.txt +++ b/Engine/lib/CMakeLists.txt @@ -5,7 +5,7 @@ get_filename_component(ZLIB_ROOT "zlib" REALPATH BASE_DIR "${CMAKE_CURRENT_SOURC set(ZLIB_ROOT "${ZLIB_ROOT}" CACHE STRING "ZLib root location" FORCE) mark_as_advanced(ZLIB_ROOT) # Png depends on zlib -add_subdirectory(zlib ${CMAKE_BINARY_DIR}/temp/zlib EXCLUDE_FROM_ALL) +add_subdirectory(zlib ${TORQUE_LIB_TARG_DIRECTORY}/zlib EXCLUDE_FROM_ALL) if(APPLE) enable_language(OBJC) @@ -109,8 +109,8 @@ mark_as_advanced(SDL_WERROR) mark_as_advanced(SDL_X11) mark_as_advanced(SDL_XINPUT) -add_subdirectory(sdl ${CMAKE_BINARY_DIR}/temp/sdl2 EXCLUDE_FROM_ALL) -add_subdirectory(nativeFileDialogs ${CMAKE_BINARY_DIR}/temp/nfd EXCLUDE_FROM_ALL) +add_subdirectory(sdl ${TORQUE_LIB_TARG_DIRECTORY}/sdl2 EXCLUDE_FROM_ALL) +add_subdirectory(nativeFileDialogs ${TORQUE_LIB_TARG_DIRECTORY}/nfd EXCLUDE_FROM_ALL) # Assimp advanced_option(ASSIMP_HUNTER_ENABLED "Enable Hunter package manager support" OFF) @@ -151,7 +151,7 @@ mark_as_advanced(ASSIMP_LIBRARY_OUTPUT_DIRECTORY) mark_as_advanced(ASSIMP_LIBRARY_SUFFIX) mark_as_advanced(ASSIMP_PACKAGE_VERSION) mark_as_advanced(ASSIMP_RUNTIME_OUTPUT_DIRECTORY) -add_subdirectory(assimp ${CMAKE_BINARY_DIR}/temp/assimp EXCLUDE_FROM_ALL) +add_subdirectory(assimp ${TORQUE_LIB_TARG_DIRECTORY}/assimp EXCLUDE_FROM_ALL) target_compile_definitions(assimp PUBLIC ASSIMP_BUILD_NO_OWN_ZLIB) if (TORQUE_CPU_ARM32 OR TORQUE_CPU_ARM64) set(PNG_ARM_NEON on CACHE BOOL "" FORCE) @@ -175,17 +175,17 @@ endif() mark_as_advanced(PNG_DEBUG) mark_as_advanced(PNG_FRAMEWORK) mark_as_advanced(PNG_PREFIX) -add_subdirectory(lpng ${CMAKE_BINARY_DIR}/temp/lpng EXCLUDE_FROM_ALL) +add_subdirectory(lpng ${TORQUE_LIB_TARG_DIRECTORY}/lpng EXCLUDE_FROM_ALL) -add_subdirectory(ljpeg ${CMAKE_BINARY_DIR}/temp/ljpeg EXCLUDE_FROM_ALL) -add_subdirectory(tinyxml ${CMAKE_BINARY_DIR}/temp/tinyxml EXCLUDE_FROM_ALL) -add_subdirectory(opcode ${CMAKE_BINARY_DIR}/temp/opcode EXCLUDE_FROM_ALL) -add_subdirectory(pcre ${CMAKE_BINARY_DIR}/temp/pcre EXCLUDE_FROM_ALL) -add_subdirectory(convexDecomp ${CMAKE_BINARY_DIR}/temp/convexDecomp EXCLUDE_FROM_ALL) -add_subdirectory(squish ${CMAKE_BINARY_DIR}/temp/squish EXCLUDE_FROM_ALL) -add_subdirectory(collada ${CMAKE_BINARY_DIR}/temp/collada EXCLUDE_FROM_ALL) -add_subdirectory(glad ${CMAKE_BINARY_DIR}/temp/glad EXCLUDE_FROM_ALL) +add_subdirectory(ljpeg ${TORQUE_LIB_TARG_DIRECTORY}/ljpeg EXCLUDE_FROM_ALL) +add_subdirectory(tinyxml ${TORQUE_LIB_TARG_DIRECTORY}/tinyxml EXCLUDE_FROM_ALL) +add_subdirectory(opcode ${TORQUE_LIB_TARG_DIRECTORY}/opcode EXCLUDE_FROM_ALL) +add_subdirectory(pcre ${TORQUE_LIB_TARG_DIRECTORY}/pcre EXCLUDE_FROM_ALL) +add_subdirectory(convexDecomp ${TORQUE_LIB_TARG_DIRECTORY}/convexDecomp EXCLUDE_FROM_ALL) +add_subdirectory(squish ${TORQUE_LIB_TARG_DIRECTORY}/squish EXCLUDE_FROM_ALL) +add_subdirectory(collada ${TORQUE_LIB_TARG_DIRECTORY}/collada EXCLUDE_FROM_ALL) +add_subdirectory(glad ${TORQUE_LIB_TARG_DIRECTORY}/glad EXCLUDE_FROM_ALL) #hidden options if(TORQUE_SFX_OPENAL) @@ -251,11 +251,11 @@ if(TORQUE_SFX_OPENAL) mark_as_advanced(AUDIOUNIT_INCLUDE_DIR) endif() -add_subdirectory(libvorbis ${CMAKE_BINARY_DIR}/temp/libvorbis EXCLUDE_FROM_ALL) -add_subdirectory(libogg ${CMAKE_BINARY_DIR}/temp/libogg EXCLUDE_FROM_ALL) -add_subdirectory(libtheora ${CMAKE_BINARY_DIR}/temp/libtheora EXCLUDE_FROM_ALL) +add_subdirectory(libvorbis ${TORQUE_LIB_TARG_DIRECTORY}/libvorbis EXCLUDE_FROM_ALL) +add_subdirectory(libogg ${TORQUE_LIB_TARG_DIRECTORY}/libogg EXCLUDE_FROM_ALL) +add_subdirectory(libtheora ${TORQUE_LIB_TARG_DIRECTORY}/libtheora EXCLUDE_FROM_ALL) if(TORQUE_TESTING) - add_subdirectory(gtest ${CMAKE_BINARY_DIR}/temp/gtest EXCLUDE_FROM_ALL) + add_subdirectory(gtest ${TORQUE_LIB_TARG_DIRECTORY}/gtest EXCLUDE_FROM_ALL) endif() #endif() \ No newline at end of file diff --git a/Engine/source/CMakeLists.txt b/Engine/source/CMakeLists.txt index 7525d560b..7182fdd34 100644 --- a/Engine/source/CMakeLists.txt +++ b/Engine/source/CMakeLists.txt @@ -229,6 +229,9 @@ endif(TORQUE_TESTING) # Add the collected files to our engine group source_group(TREE "${CMAKE_SOURCE_DIR}/Engine/source" PREFIX "Engine" FILES ${TORQUE_SOURCE_FILES}) +file(GLOB_RECURSE TORQUE_APP_GAME_SOURCES "${TORQUE_APP_ROOT_DIRECTORY}/source/*.cpp" "${TORQUE_APP_ROOT_DIRECTORY}/source/*.h") +source_group(TREE "${TORQUE_APP_ROOT_DIRECTORY}/source" PREFIX "Source Files" FILES ${TORQUE_APP_GAME_SOURCES}) +set(TORQUE_INCLUDE_DIRECTORIES ${TORQUE_INCLUDE_DIRECTORIES} "${TORQUE_APP_ROOT_DIRECTORY}/source") ################# Engine Module Handling ################### @@ -239,7 +242,7 @@ endif() # Before doing module scanning, store away the engine sources - we do this so that modules # can be placed into the proper filters -set(TORQUE_SOURCE_FILES_TEMPORARY ${TORQUE_SOURCE_FILES}) +set(TORQUE_SOURCE_FILES_TEMPORARY ${TORQUE_SOURCE_FILES} ${TORQUE_APP_GAME_SOURCES}) set(TORQUE_SOURCE_FILES "") foreach (TORQUE_MODULE_PATH ${TORQUE_MODULE_PATHS}) @@ -299,8 +302,8 @@ endforeach() if (WIN32) set(APPLICATION_ICON_PATH "${CMAKE_SOURCE_DIR}/Tools/CMake/torque.ico") - configure_file("${CMAKE_SOURCE_DIR}/Tools/CMake/torque-win.rc.in" "${CMAKE_BINARY_DIR}/temp/torque.rc") - set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} "${CMAKE_BINARY_DIR}/temp/torque.rc") + configure_file("${CMAKE_SOURCE_DIR}/Tools/CMake/torque-win.rc.in" "${TORQUE_APP_ROOT_DIRECTORY}/source/torque.rc") + set(TORQUE_SOURCE_FILES ${TORQUE_SOURCE_FILES} "${TORQUE_APP_ROOT_DIRECTORY}/source/torque.rc") endif (WIN32) # Prepare OSX Plist @@ -309,7 +312,7 @@ if (APPLE) set_source_files_properties("${CMAKE_SOURCE_DIR}/Tools/CMake/torque.icns" PROPERTIES MACOSX_PACKAGE_LOCATION "Resources") set(EXECUTABLE_NAME "${TORQUE_APP_NAME}") - configure_file("${CMAKE_SOURCE_DIR}/Tools/CMake/Info.plist.in" "${CMAKE_BINARY_DIR}/temp/Info.plist" COPYONLY) + configure_file("${CMAKE_SOURCE_DIR}/Tools/CMake/Info.plist.in" "${TORQUE_APP_ROOT_DIRECTORY}/source/Info.plist" COPYONLY) endif (APPLE) addDef(TORQUE_DEBUG Debug) @@ -349,7 +352,7 @@ endif (TORQUE_DYNAMIC_LIBRARY AND NOT TORQUE_TESTING) if (APPLE) add_executable(${TORQUE_APP_NAME} MACOSX_BUNDLE ${TORQUE_SOURCE_FILES}) - set_target_properties(${TORQUE_APP_NAME} PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${CMAKE_BINARY_DIR}/temp/Info.plist") + set_target_properties(${TORQUE_APP_NAME} PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${TORQUE_APP_ROOT_DIRECTORY}/source/Info.plist") # Ensure the shared libraries are actually referenced at the correct path set(CMAKE_XCODE_ATTRIBUTE_LD_RUNPATH_SEARCH_PATHS "@executable_path/../Frameworks") diff --git a/Tools/CMake/modules/bullet.cmake b/Tools/CMake/modules/bullet.cmake index c06d1d3cc..52a2a2c47 100644 --- a/Tools/CMake/modules/bullet.cmake +++ b/Tools/CMake/modules/bullet.cmake @@ -9,11 +9,11 @@ if(TORQUE_PHYSICS_BULLET) Bullet2FileLoader BulletDynamics Bullet3OpenCL_clew Bullet3Common LinearMath Bullet3Geometry Bullet3Collision) set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} TORQUE_PHYSICS_BULLET TORQUE_PHYSICS_ENABLED) - set(TORQUE_INCLUDE_DIRECTORIES ${TORQUE_INCLUDE_DIRECTORIES} "${CMAKE_SOURCE_DIR}/Engine/lib/bullet/src" ) + set(TORQUE_INCLUDE_DIRECTORIES ${TORQUE_INCLUDE_DIRECTORIES} "${TORQUE_LIB_ROOT_DIRECTORY}/bullet/src" ) # Since Bullet lives elsewhere we need to ensure it is known to Torque when providing a link to it set(BUILD_SHARED_LIBS OFF CACHE BOOL "Bullet Shared Libs" FORCE) set(BUILD_CPU_DEMOS OFF CACHE BOOL "Bullet CPU Demos" FORCE) set(BUILD_BULLET2_DEMOS OFF CACHE BOOL "Bullet2 Demos" FORCE) - add_subdirectory("${CMAKE_SOURCE_DIR}/Engine/lib/bullet" ${CMAKE_BINARY_DIR}/temp/bullet EXCLUDE_FROM_ALL) + add_subdirectory("${TORQUE_LIB_ROOT_DIRECTORY}/bullet" ${TORQUE_LIB_TARG_DIRECTORY}/bullet EXCLUDE_FROM_ALL) endif(TORQUE_PHYSICS_BULLET) diff --git a/Tools/CMake/modules/module_curl.cmake b/Tools/CMake/modules/module_curl.cmake index 3a0b25ded..3e3c2da85 100644 --- a/Tools/CMake/modules/module_curl.cmake +++ b/Tools/CMake/modules/module_curl.cmake @@ -48,11 +48,11 @@ elseif(APPLE) set(CURL_USE_OPENSSL OFF CACHE INTERNAL "" FORCE) set(CURL_USE_SECTRANSP ON CACHE INTERNAL "" FORCE) endif() -add_subdirectory("${CMAKE_SOURCE_DIR}/Engine/lib/curl" "${CMAKE_CURRENT_BINARY_DIR}/curl") +add_subdirectory("${TORQUE_LIB_ROOT_DIRECTORY}/curl" "${CMAKE_CURRENT_BINARY_DIR}/curl") set(CURL_LIBRARIES libcurl) -set(CURL_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/Engine/lib/curl/include") +set(CURL_INCLUDE_DIRS "${TORQUE_LIB_ROOT_DIRECTORY}/curl/include") set_property(TARGET libcurl APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS CURL_STATICLIB) set(TORQUE_LINK_LIBRARIES ${TORQUE_LINK_LIBRARIES} libcurl) -set(TORQUE_INCLUDE_DIRECTORIES ${TORQUE_INCLUDE_DIRECTORIES} "${CMAKE_SOURCE_DIR}/Engine/lib/curl/src" ) +set(TORQUE_INCLUDE_DIRECTORIES ${TORQUE_INCLUDE_DIRECTORIES} "${TORQUE_LIB_ROOT_DIRECTORY}/curl/src" ) diff --git a/Tools/CMake/modules/navigation.cmake b/Tools/CMake/modules/navigation.cmake index 6a9da93ff..a76868107 100644 --- a/Tools/CMake/modules/navigation.cmake +++ b/Tools/CMake/modules/navigation.cmake @@ -10,6 +10,6 @@ if(TORQUE_NAVIGATION) set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} recast TORQUE_NAVIGATION_ENABLED) # Since recast lives elsewhere we need to ensure it is known to Torque when providing a link to it - add_subdirectory("${CMAKE_SOURCE_DIR}/Engine/lib/recast" ${CMAKE_BINARY_DIR}/temp/recast EXCLUDE_FROM_ALL) + add_subdirectory("${TORQUE_LIB_ROOT_DIRECTORY}/recast" ${TORQUE_LIB_TARG_DIRECTORY}/recast EXCLUDE_FROM_ALL) source_group(TREE "${CMAKE_SOURCE_DIR}/Engine/source/navigation/" PREFIX "Modules/NAVIGATION" FILES ${TORQUE_NAV_SOURCES}) endif(TORQUE_NAVIGATION) diff --git a/Tools/CMake/modules/openal.cmake b/Tools/CMake/modules/openal.cmake index fc7d16a22..7bf8e4453 100644 --- a/Tools/CMake/modules/openal.cmake +++ b/Tools/CMake/modules/openal.cmake @@ -23,5 +23,5 @@ if(TORQUE_SFX_OPENAL) set(ALSOFT_UTILS OFF CACHE BOOL "OpenAL Utilities" FORCE) set(ALSOFT_UPDATE_BUILD_VERSION OFF CACHE BOOL "Update build Version" UPDATE) - add_subdirectory("${CMAKE_SOURCE_DIR}/Engine/lib/openal-soft" ${CMAKE_BINARY_DIR}/temp/openal-soft EXCLUDE_FROM_ALL) + add_subdirectory("${TORQUE_LIB_ROOT_DIRECTORY}/openal-soft" ${TORQUE_LIB_TARG_DIRECTORY}/openal-soft EXCLUDE_FROM_ALL) endif(TORQUE_SFX_OPENAL)