diff options
| author | Bryan Galdrikian <[email protected]> | 2017-02-24 09:32:20 -0800 |
|---|---|---|
| committer | Bryan Galdrikian <[email protected]> | 2017-02-24 09:32:20 -0800 |
| commit | e1bf674c16e3c8472b29574159c789cd3f0c64e0 (patch) | |
| tree | 9f0cfce09c71a2c27ff19589fcad6cd83504477c /tools/compiler | |
| parent | first commit (diff) | |
| download | blast-e1bf674c16e3c8472b29574159c789cd3f0c64e0.tar.xz blast-e1bf674c16e3c8472b29574159c789cd3f0c64e0.zip | |
Updating to [email protected] and [email protected] with a new directory structure.
NvBlast folder is gone, files have been moved to top level directory. README is changed to reflect this.
Diffstat (limited to 'tools/compiler')
| -rw-r--r-- | tools/compiler/cmake/ApexImporter.cmake | 82 | ||||
| -rw-r--r-- | tools/compiler/cmake/AuthoringTool.cmake | 98 | ||||
| -rw-r--r-- | tools/compiler/cmake/DataConverter.cmake | 60 | ||||
| -rw-r--r-- | tools/compiler/cmake/Windows/ApexImporter.cmake | 22 | ||||
| -rw-r--r-- | tools/compiler/cmake/Windows/AuthoringTool.cmake | 22 | ||||
| -rw-r--r-- | tools/compiler/cmake/Windows/CMakeLists.txt | 58 | ||||
| -rw-r--r-- | tools/compiler/cmake/Windows/DataConverter.cmake | 22 |
7 files changed, 364 insertions, 0 deletions
diff --git a/tools/compiler/cmake/ApexImporter.cmake b/tools/compiler/cmake/ApexImporter.cmake new file mode 100644 index 0000000..13a691e --- /dev/null +++ b/tools/compiler/cmake/ApexImporter.cmake @@ -0,0 +1,82 @@ +# +# Build ApexImporter common +# + +SET(APEXIMPORTER_SOURCE_DIR ${PROJECT_SOURCE_DIR}/ApexImporter/src) +SET(TOOLS_COMMON_DIR ${BLAST_ROOT_DIR}/tools/common) +FIND_PACKAGE(PhysXSDK $ENV{PM_PhysX_VERSION} REQUIRED) +FIND_PACKAGE(ApexSDK $ENV{PM_Apex_VERSION} REQUIRED) +FIND_PACKAGE(PxSharedSDK $ENV{PM_PxShared_VERSION} REQUIRED) +FIND_PACKAGE(tclap $ENV{PM_tclap_VERSION} REQUIRED) +FIND_PACKAGE(FBXSDK $ENV{PM_FBXSDK_VERSION} REQUIRED) + +# Include here after the directories are defined so that the platform specific file can use the variables. +include(${PROJECT_CMAKE_FILES_DIR}/${TARGET_BUILD_PLATFORM}/ApexImporter.cmake) + +SET(COMMON_FILES + ${APEXIMPORTER_PLATFORM_COMMON_FILES} + + ${APEXIMPORTER_SOURCE_DIR}/Main.cpp + ${APEXIMPORTER_SOURCE_DIR}/ApexDestructibleObjExporter.cpp + ${APEXIMPORTER_SOURCE_DIR}/ApexDestructibleObjExporter.h + ${BLAST_ROOT_DIR}/tools/common/BlastDataExporter.cpp + ${BLAST_ROOT_DIR}/tools/common/BlastDataExporter.h + ${TOOLS_COMMON_DIR}/IMeshFileWriter.h + ${TOOLS_COMMON_DIR}/ObjFileWriter.h + ${TOOLS_COMMON_DIR}/ObjFileWriter.cpp + ${TOOLS_COMMON_DIR}/FbxFileWriter.h + ${TOOLS_COMMON_DIR}/FbxFileWriter.cpp + ${TOOLS_COMMON_DIR}/FbxUtils.h + ${TOOLS_COMMON_DIR}/FbxUtils.cpp +) + +ADD_EXECUTABLE(ApexImporter + ${COMMON_FILES} +) + +set_target_properties(ApexImporter + PROPERTIES DEBUG_POSTFIX ${CMAKE_DEBUG_POSTFIX} + CHECKED_POSTFIX ${CMAKE_CHECKED_POSTFIX} + RELEASE_POSTFIX ${CMAKE_RELEASE_POSTFIX} + PROFILE_POSTFIX ${CMAKE_PROFILE_POSTFIX} +) + +SOURCE_GROUP("src" FILES ${COMMON_FILES}) + +# Target specific compile options + +TARGET_INCLUDE_DIRECTORIES(ApexImporter + PRIVATE ${APEXIMPORTER_PLATFORM_INCLUDES} + + PRIVATE ${BLAST_ROOT_DIR}/sdk/common + PRIVATE ${TOOLS_COMMON_DIR} + + PRIVATE ${PHYSXSDK_INCLUDE_DIRS} + PRIVATE ${APEXSDK_INCLUDE_DIRS} + PRIVATE ${PXSHAREDSDK_INCLUDE_DIRS} + PRIVATE ${TCLAP_INCLUDE_DIRS} + PRIVATE ${FBXSDK_INCLUDE_DIRS} +) + +TARGET_COMPILE_DEFINITIONS(ApexImporter + PRIVATE ${APEXIMPORTER_COMPILE_DEFS} +) + +SET_TARGET_PROPERTIES(ApexImporter PROPERTIES + COMPILE_PDB_NAME_DEBUG "ApexImporter${CMAKE_DEBUG_POSTFIX}" + COMPILE_PDB_NAME_CHECKED "ApexImporter${CMAKE_CHECKED_POSTFIX}" + COMPILE_PDB_NAME_PROFILE "ApexImporter${CMAKE_PROFILE_POSTFIX}" + COMPILE_PDB_NAME_RELEASE "ApexImporter${CMAKE_RELEASE_POSTFIX}" +) + +# Do final direct sets after the target has been defined +TARGET_LINK_LIBRARIES(ApexImporter + PRIVATE NvBlast NvBlastExtPhysX NvBlastExtAuthoring NvBlastExtImport Rpcrt4 $<$<OR:$<CONFIG:debug>,$<CONFIG:checked>,$<CONFIG:profile>>:${NVTOOLSEXT_LIB}> + PRIVATE ${FBXSDK_LIBRARIES} +) + +ADD_CUSTOM_COMMAND(TARGET ApexImporter POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different + ${APEXSDK_DLLS} ${PHYSXSDK_DLLS} ${PXSHAREDSDK_DLLS} + ${BL_EXE_OUTPUT_DIR} +) diff --git a/tools/compiler/cmake/AuthoringTool.cmake b/tools/compiler/cmake/AuthoringTool.cmake new file mode 100644 index 0000000..3ba77d8 --- /dev/null +++ b/tools/compiler/cmake/AuthoringTool.cmake @@ -0,0 +1,98 @@ +# +# Build AuthoringTool common +# + +SET(AUTHORTINGTOOL_SOURCE_DIR ${PROJECT_SOURCE_DIR}/AuthoringTool/src) +SET(TOOLS_COMMON_SOURCE_DIR ${PROJECT_SOURCE_DIR}/common) + +SET(EXT_AUTHORING_INCLUDE_DIR ${BLAST_ROOT_DIR}/sdk/extensions/authoring/include) +SET(TK_INCLUDE_DIR ${BLAST_ROOT_DIR}/sdk/toolkit/include) + +FIND_PACKAGE(PhysXSDK $ENV{PM_PhysXSDK_VERSION} REQUIRED) +FIND_PACKAGE(PxSharedSDK $ENV{PM_PxSharedSDK_VERSION} REQUIRED) +FIND_PACKAGE(tclap $ENV{PM_tclap_VERSION} REQUIRED) +FIND_PACKAGE(tinyObjLoader $ENV{PM_tinyObjLoader_VERSION} REQUIRED) +FIND_PACKAGE(FBXSDK $ENV{PM_FBXSDK_VERSION} REQUIRED) + + +# Include here after the directories are defined so that the platform specific file can use the variables. +include(${PROJECT_CMAKE_FILES_DIR}/${TARGET_BUILD_PLATFORM}/AuthoringTool.cmake) + +SET(COMMON_FILES + ${AUTHORTINGTOOL_PLATFORM_COMMON_FILES} + + ${AUTHORTINGTOOL_SOURCE_DIR}/AuthoringTool.cpp + ${TOOLS_COMMON_SOURCE_DIR}/IMeshFileReader.h + ${TOOLS_COMMON_SOURCE_DIR}/IMeshFileWriter.h + ${TOOLS_COMMON_SOURCE_DIR}/FbxFileReader.h + ${TOOLS_COMMON_SOURCE_DIR}/FbxFileReader.cpp + ${TOOLS_COMMON_SOURCE_DIR}/ObjFileReader.h + ${TOOLS_COMMON_SOURCE_DIR}/ObjFileReader.cpp + ${TOOLS_COMMON_SOURCE_DIR}/ObjFileWriter.h + ${TOOLS_COMMON_SOURCE_DIR}/ObjFileWriter.cpp + ${TOOLS_COMMON_SOURCE_DIR}/FbxFileWriter.h + ${TOOLS_COMMON_SOURCE_DIR}/FbxFileWriter.cpp + ${TOOLS_COMMON_SOURCE_DIR}/FbxUtils.h + ${TOOLS_COMMON_SOURCE_DIR}/FbxUtils.cpp + ${AUTHORTINGTOOL_SOURCE_DIR}/SimpleRandomGenerator.h + ${AUTHORTINGTOOL_SOURCE_DIR}/FractureProcessor.h + ${AUTHORTINGTOOL_SOURCE_DIR}/FractureProcessor.cpp + ${TOOLS_COMMON_SOURCE_DIR}/BlastDataExporter.h + ${TOOLS_COMMON_SOURCE_DIR}/BlastDataExporter.cpp +) + +ADD_EXECUTABLE(AuthoringTool + ${COMMON_FILES} +) + +set_target_properties(AuthoringTool + PROPERTIES DEBUG_POSTFIX ${CMAKE_DEBUG_POSTFIX} + CHECKED_POSTFIX ${CMAKE_CHECKED_POSTFIX} + RELEASE_POSTFIX ${CMAKE_RELEASE_POSTFIX} + PROFILE_POSTFIX ${CMAKE_PROFILE_POSTFIX} +) + +SOURCE_GROUP("src" FILES ${COMMON_FILES}) + +# Target specific compile options + +TARGET_INCLUDE_DIRECTORIES(AuthoringTool + PRIVATE ${AUTHORTINGTOOL_PLATFORM_INCLUDES} + + PRIVATE ${TOOLS_COMMON_SOURCE_DIR} + PRIVATE ${EXT_AUTHORING_INCLUDE_DIR} + PRIVATE ${TK_INCLUDE_DIR} + PRIVATE ${BLAST_ROOT_DIR}/sdk/common + + PRIVATE ${PHYSXSDK_INCLUDE_DIRS} + PRIVATE ${PXSHAREDSDK_INCLUDE_DIRS} + PRIVATE ${TCLAP_INCLUDE_DIRS} + PRIVATE ${TINYOBJLOADER_INCLUDE_DIRS} + PRIVATE ${FBXSDK_INCLUDE_DIRS} +) + +TARGET_COMPILE_DEFINITIONS(AuthoringTool + PRIVATE ${AUTHORTINGTOOL_COMPILE_DEFS} +) + +SET_TARGET_PROPERTIES(AuthoringTool PROPERTIES + PDB_NAME_DEBUG "AuthoringTool${CMAKE_DEBUG_POSTFIX}" + PDB_NAME_CHECKED "AuthoringTool${CMAKE_CHECKED_POSTFIX}" + PDB_NAME_PROFILE "AuthoringTool${CMAKE_PROFILE_POSTFIX}" + PDB_NAME_RELEASE "AuthoringTool${CMAKE_RELEASE_POSTFIX}" +) + +# Do final direct sets after the target has been defined +TARGET_LINK_LIBRARIES(AuthoringTool + PRIVATE NvBlast NvBlastTk NvBlastExtSerialization NvBlastExtPhysX NvBlastExtAuthoring + PRIVATE ${FBXSDK_LIBRARIES} +) + +# Copy the dlls from the deps + +ADD_CUSTOM_COMMAND(TARGET AuthoringTool POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different + ${APEXSDK_DLLS} ${PHYSXSDK_DLLS} ${PXSHAREDSDK_DLLS} + ${BL_EXE_OUTPUT_DIR} +) + diff --git a/tools/compiler/cmake/DataConverter.cmake b/tools/compiler/cmake/DataConverter.cmake new file mode 100644 index 0000000..3239f61 --- /dev/null +++ b/tools/compiler/cmake/DataConverter.cmake @@ -0,0 +1,60 @@ +# +# Build DataConverter common +# + +SET(DATACONVERTER_SOURCE_DIR ${PROJECT_SOURCE_DIR}/DataConverter/src) + +FIND_PACKAGE(tclap $ENV{PM_tclap_VERSION} REQUIRED) + +# Include here after the directories are defined so that the platform specific file can use the variables. +include(${PROJECT_CMAKE_FILES_DIR}/${TARGET_BUILD_PLATFORM}/DataConverter.cmake) + +SET(COMMON_FILES + ${DATACONVERTER_PLATFORM_COMMON_FILES} + + ${DATACONVERTER_SOURCE_DIR}/Main.cpp +) + +ADD_EXECUTABLE(DataConverter + ${COMMON_FILES} +) + +set_target_properties(DataConverter + PROPERTIES DEBUG_POSTFIX ${CMAKE_DEBUG_POSTFIX} + CHECKED_POSTFIX ${CMAKE_CHECKED_POSTFIX} + RELEASE_POSTFIX ${CMAKE_RELEASE_POSTFIX} + PROFILE_POSTFIX ${CMAKE_PROFILE_POSTFIX} +) + + +SOURCE_GROUP("src" FILES ${COMMON_FILES}) + +# Target specific compile options + +TARGET_INCLUDE_DIRECTORIES(DataConverter + PRIVATE ${DATACONVERTER_PLATFORM_INCLUDES} + PRIVATE ${BLAST_ROOT_DIR}/source/common + + PRIVATE ${TCLAP_INCLUDE_DIRS} +) + +TARGET_COMPILE_DEFINITIONS(DataConverter + PRIVATE ${DATACONVERTER_COMPILE_DEFS} +) + +SET_TARGET_PROPERTIES(DataConverter PROPERTIES + PDB_NAME_DEBUG "DataConverter${CMAKE_DEBUG_POSTFIX}" + PDB_NAME_CHECKED "DataConverter${CMAKE_CHECKED_POSTFIX}" + PDB_NAME_PROFILE "DataConverter${CMAKE_PROFILE_POSTFIX}" + PDB_NAME_RELEASE "DataConverter${CMAKE_RELEASE_POSTFIX}" +) + +# Do final direct sets after the target has been defined +TARGET_LINK_LIBRARIES(DataConverter NvBlast NvBlastExtConverterLL) + + +ADD_CUSTOM_COMMAND(TARGET DataConverter POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different + ${PHYSXSDK_DLLS} ${PXSHAREDSDK_DLLS} + ${BL_EXE_OUTPUT_DIR} +) diff --git a/tools/compiler/cmake/Windows/ApexImporter.cmake b/tools/compiler/cmake/Windows/ApexImporter.cmake new file mode 100644 index 0000000..f6ad72b --- /dev/null +++ b/tools/compiler/cmake/Windows/ApexImporter.cmake @@ -0,0 +1,22 @@ +# +# Build ApexImporter Windows +# + +SET(APEXIMPORTER_PLATFORM_COMMON_FILES +) + +SET(APEXIMPORTER_PLATFORM_INCLUDES +) + +SET(APEXIMPORTER_COMPILE_DEFS + # Common to all configurations + ${BLASTTOOLS_SLN_COMPILE_DEFS};_CONSOLE + + $<$<CONFIG:debug>:${BLASTTOOLS_SLN_DEBUG_COMPILE_DEFS}> + $<$<CONFIG:checked>:${BLASTTOOLS_SLN_CHECKED_COMPILE_DEFS}> + $<$<CONFIG:profile>:${BLASTTOOLS_SLN_PROFILE_COMPILE_DEFS}> + $<$<CONFIG:release>:${BLASTTOOLS_SLN_RELEASE_COMPILE_DEFS}> +) + +#TARGET_LINK_LIBRARIES(NvBlast PUBLIC ${NVTOOLSEXT_LIBRARIES}) +#SET_TARGET_PROPERTIES(NvBlast PROPERTIES LINK_FLAGS "/MAP" ) diff --git a/tools/compiler/cmake/Windows/AuthoringTool.cmake b/tools/compiler/cmake/Windows/AuthoringTool.cmake new file mode 100644 index 0000000..f981c1f --- /dev/null +++ b/tools/compiler/cmake/Windows/AuthoringTool.cmake @@ -0,0 +1,22 @@ +# +# Build AuthoringTool Windows +# + +SET(AUTHORTINGTOOL_PLATFORM_COMMON_FILES +) + +SET(AUTHORTINGTOOL_PLATFORM_INCLUDES +) + +SET(AUTHORTINGTOOL_COMPILE_DEFS + # Common to all configurations + ${BLASTTOOLS_SLN_COMPILE_DEFS};_CONSOLE + + $<$<CONFIG:debug>:${BLASTTOOLS_SLN_DEBUG_COMPILE_DEFS}> + $<$<CONFIG:checked>:${BLASTTOOLS_SLN_CHECKED_COMPILE_DEFS}> + $<$<CONFIG:profile>:${BLASTTOOLS_SLN_PROFILE_COMPILE_DEFS}> + $<$<CONFIG:release>:${BLASTTOOLS_SLN_RELEASE_COMPILE_DEFS}> +) + +#TARGET_LINK_LIBRARIES(NvBlast PUBLIC ${NVTOOLSEXT_LIBRARIES}) +#SET_TARGET_PROPERTIES(NvBlast PROPERTIES LINK_FLAGS "/MAP" ) diff --git a/tools/compiler/cmake/Windows/CMakeLists.txt b/tools/compiler/cmake/Windows/CMakeLists.txt new file mode 100644 index 0000000..541a209 --- /dev/null +++ b/tools/compiler/cmake/Windows/CMakeLists.txt @@ -0,0 +1,58 @@ +#Platform specific compile flags and project includes + +SET(CMAKE_CXX_FLAGS "/EHsc /GR- /GF /MP /Gy /d2Zi+ /errorReport:prompt /fp:fast /Gd /Gm- /GS- /nologo /W4 /WX /Zc:forScope /Zc:inline /Zc:wchar_t /Zi") + +# Are we using the static or dynamic RT library? Whatever we use, it needs to be the same in any dependencies +# we pull in or we're potentially having mismatch issues. +IF(STATIC_WINCRT) + SET(WINCRT_NDEBUG "/MT") + SET(WINCRT_DEBUG "/MTd") +ELSE() + SET(WINCRT_NDEBUG "/MD") + SET(WINCRT_DEBUG "/MDd") +ENDIF() + +SET(CMAKE_CXX_FLAGS_DEBUG "/Od /RTCsu ${WINCRT_DEBUG}") +SET(CMAKE_CXX_FLAGS_CHECKED "/Ox ${WINCRT_NDEBUG}") +SET(CMAKE_CXX_FLAGS_PROFILE "/Ox ${WINCRT_NDEBUG}") +SET(CMAKE_CXX_FLAGS_RELEASE "/Ox ${WINCRT_NDEBUG}") + +# Build PDBs for all configurations +SET(CMAKE_SHARED_LINKER_FLAGS "/DEBUG") + +IF(CMAKE_CL_64) + ADD_DEFINITIONS(-DWIN64) +ENDIF(CMAKE_CL_64) + +SET(BLASTTOOLS_SLN_COMPILE_DEFS WIN32;WIN64;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;) + +SET(BLASTTOOLS_SLN_DEBUG_COMPILE_DEFS _DEBUG;NV_DEBUG=1;) +SET(BLASTTOOLS_SLN_CHECKED_COMPILE_DEFS NDEBUG;NV_CHECKED=1;) +SET(BLASTTOOLS_SLN_PROFILE_COMPILE_DEFS NDEBUG;NV_PROFILE=1;) +SET(BLASTTOOLS_SLN_RELEASE_COMPILE_DEFS NDEBUG;) + +IF(CMAKE_CL_64) + SET(LIBPATH_SUFFIX "x64") +ELSE(CMAKE_CL_64) + SET(LIBPATH_SUFFIX "x86") +ENDIF(CMAKE_CL_64) + +SET(CMAKE_DEBUG_POSTFIX "${CMAKE_DEBUG_POSTFIX}_${LIBPATH_SUFFIX}") +SET(CMAKE_PROFILE_POSTFIX "${CMAKE_PROFILE_POSTFIX}_${LIBPATH_SUFFIX}") +SET(CMAKE_CHECKED_POSTFIX "${CMAKE_CHECKED_POSTFIX}_${LIBPATH_SUFFIX}") +SET(CMAKE_RELEASE_POSTFIX "${CMAKE_RELEASE_POSTFIX}_${LIBPATH_SUFFIX}") + +# Should this be here or in the common part? +#ADD_SUBDIRECTORY(${BLAST_ROOT_DIR}/sdk "${CMAKE_CURRENT_BINARY_DIR}/blast_bin") + + +# Include all of the projects +INCLUDE(${PROJECT_CMAKE_FILES_DIR}/ApexImporter.cmake) +INCLUDE(${PROJECT_CMAKE_FILES_DIR}/DataConverter.cmake) + +# Exclude AuthoringTool because VC12 can't handle Capn Proto. +if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 19.0.0.0) + INCLUDE(${PROJECT_CMAKE_FILES_DIR}/AuthoringTool.cmake) +else() + SET(SERIALIZATION_INCLUDED 0) +endif() diff --git a/tools/compiler/cmake/Windows/DataConverter.cmake b/tools/compiler/cmake/Windows/DataConverter.cmake new file mode 100644 index 0000000..a0c5316 --- /dev/null +++ b/tools/compiler/cmake/Windows/DataConverter.cmake @@ -0,0 +1,22 @@ +# +# Build DataConverter Windows +# + +SET(DATACONVERTER_PLATFORM_COMMON_FILES +) + +SET(DATACONVERTER_PLATFORM_INCLUDES +) + +SET(DATACONVERTER_COMPILE_DEFS + # Common to all configurations + ${BLASTTOOLS_SLN_COMPILE_DEFS};_CONSOLE + + $<$<CONFIG:debug>:${BLASTTOOLS_SLN_DEBUG_COMPILE_DEFS}> + $<$<CONFIG:checked>:${BLASTTOOLS_SLN_CHECKED_COMPILE_DEFS}> + $<$<CONFIG:profile>:${BLASTTOOLS_SLN_PROFILE_COMPILE_DEFS}> + $<$<CONFIG:release>:${BLASTTOOLS_SLN_RELEASE_COMPILE_DEFS}> +) + +#TARGET_LINK_LIBRARIES(NvBlast PUBLIC ${NVTOOLSEXT_LIBRARIES}) +#SET_TARGET_PROPERTIES(NvBlast PROPERTIES LINK_FLAGS "/MAP" ) |