cmake_minimum_required(VERSION 3.7.2) project(Project) get_filename_component(VIRY3D_LIB_SRC_DIR ${CMAKE_SOURCE_DIR}/lib/src ABSOLUTE) get_filename_component(VIRY3D_APP_SRC_DIR ${CMAKE_SOURCE_DIR}/app/src ABSOLUTE) function(string_ends_with str suffix var) string(LENGTH "${str}" str_length) string(LENGTH "${suffix}" suffix_length) set(value FALSE) if (NOT ${str_length} LESS ${suffix_length}) math(EXPR str_offset "${str_length} - ${suffix_length}") string(SUBSTRING "${str}" ${str_offset} ${suffix_length} str_suffix) if (str_suffix STREQUAL suffix) set(value TRUE) endif () endif () set(${var} ${value} PARENT_SCOPE) endfunction() file(GLOB_RECURSE VIRY3D_ASSETS ${VIRY3D_APP_SRC_DIR}/../bin/Assets/*.*) foreach (item ${VIRY3D_ASSETS}) string_ends_with(${item} ".cache" is_cache) if (${is_cache}) list(REMOVE_ITEM VIRY3D_ASSETS ${item}) endif () endforeach () set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DFT2_BUILD_LIBRARY -DAL_LIBTYPE_STATIC -DAL_ALEXT_PROTOTYPES -DFPM_DEFAULT -DSIZEOF_INT=4") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DFT2_BUILD_LIBRARY -DAL_LIBTYPE_STATIC -DAL_ALEXT_PROTOTYPES -DFPM_DEFAULT -DSIZEOF_INT=4") file(GLOB VIRY3D_DEP_SRCS ${VIRY3D_LIB_SRC_DIR}/crypto/md5/md5.c ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/noop/NoopDriver.cpp ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/noop/PlatformNoop.cpp ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/CircularBuffer.cpp ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/CommandBufferQueue.cpp ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/CommandStream.cpp ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/Driver.cpp ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/Handle.cpp ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/Platform.cpp ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/Program.cpp ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/SamplerGroup.cpp ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/TextureReshaper.cpp ${VIRY3D_LIB_SRC_DIR}/filament/libs/utils/src/Allocator.cpp ${VIRY3D_LIB_SRC_DIR}/filament/libs/utils/src/ashmem.cpp ${VIRY3D_LIB_SRC_DIR}/filament/libs/utils/src/CallStack.cpp ${VIRY3D_LIB_SRC_DIR}/filament/libs/utils/src/CountDownLatch.cpp ${VIRY3D_LIB_SRC_DIR}/filament/libs/utils/src/CString.cpp ${VIRY3D_LIB_SRC_DIR}/filament/libs/utils/src/Log.cpp ${VIRY3D_LIB_SRC_DIR}/filament/libs/utils/src/ostream.cpp ${VIRY3D_LIB_SRC_DIR}/filament/libs/utils/src/Panic.cpp ${VIRY3D_LIB_SRC_DIR}/filament/libs/utils/src/Profiler.cpp ${VIRY3D_LIB_SRC_DIR}/filament/libs/utils/src/sstream.cpp ${VIRY3D_LIB_SRC_DIR}/filament/libs/utils/src/Systrace.cpp ${VIRY3D_LIB_SRC_DIR}/freetype/src/autofit/autofit.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/base/ftbase.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/base/ftbbox.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/base/ftbitmap.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/base/ftdebug.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/base/ftfntfmt.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/base/ftfstype.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/base/ftgasp.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/base/ftglyph.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/base/ftgxval.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/base/ftinit.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/base/ftlcdfil.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/base/ftmm.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/base/ftotval.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/base/ftpatent.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/base/ftpfr.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/base/ftstroke.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/base/ftsynth.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/base/ftsystem.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/base/fttype1.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/base/ftwinfnt.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/bdf/bdf.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/cache/ftcache.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/cff/cff.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/cid/type1cid.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/gzip/ftgzip.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/lzw/ftlzw.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/pcf/pcf.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/pfr/pfr.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/psaux/psaux.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/pshinter/pshinter.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/psnames/psmodule.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/raster/raster.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/sfnt/sfnt.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/smooth/smooth.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/truetype/truetype.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/type1/type1.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/type42/type42.c ${VIRY3D_LIB_SRC_DIR}/freetype/src/winfonts/winfnt.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jaricom.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jcapimin.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jcapistd.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jcarith.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jccoefct.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jccolor.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jcdctmgr.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jchuff.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jcinit.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jcmainct.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jcmarker.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jcmaster.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jcomapi.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jcparam.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jcprepct.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jcsample.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jctrans.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jdapimin.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jdapistd.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jdarith.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jdatadst.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jdatasrc.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jdcoefct.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jdcolor.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jddctmgr.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jdhuff.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jdinput.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jdmainct.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jdmarker.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jdmaster.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jdmerge.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jdpostct.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jdsample.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jdtrans.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jerror.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jfdctflt.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jfdctfst.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jfdctint.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jidctflt.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jidctfst.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jidctint.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jmemmgr.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jmemnobs.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jquant1.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jquant2.c ${VIRY3D_LIB_SRC_DIR}/jpeg/jutils.c ${VIRY3D_LIB_SRC_DIR}/jsoncpp/src/lib_json/json_reader.cpp ${VIRY3D_LIB_SRC_DIR}/jsoncpp/src/lib_json/json_value.cpp ${VIRY3D_LIB_SRC_DIR}/jsoncpp/src/lib_json/json_writer.cpp ${VIRY3D_LIB_SRC_DIR}/png/png.c ${VIRY3D_LIB_SRC_DIR}/png/pngerror.c ${VIRY3D_LIB_SRC_DIR}/png/pngget.c ${VIRY3D_LIB_SRC_DIR}/png/pngmem.c ${VIRY3D_LIB_SRC_DIR}/png/pngpread.c ${VIRY3D_LIB_SRC_DIR}/png/pngread.c ${VIRY3D_LIB_SRC_DIR}/png/pngrio.c ${VIRY3D_LIB_SRC_DIR}/png/pngrtran.c ${VIRY3D_LIB_SRC_DIR}/png/pngrutil.c ${VIRY3D_LIB_SRC_DIR}/png/pngset.c ${VIRY3D_LIB_SRC_DIR}/png/pngtrans.c ${VIRY3D_LIB_SRC_DIR}/png/pngwio.c ${VIRY3D_LIB_SRC_DIR}/png/pngwrite.c ${VIRY3D_LIB_SRC_DIR}/png/pngwtran.c ${VIRY3D_LIB_SRC_DIR}/png/pngwutil.c ${VIRY3D_LIB_SRC_DIR}/xml/tinyxml2.cpp ${VIRY3D_LIB_SRC_DIR}/zlib/ioapi.c ${VIRY3D_LIB_SRC_DIR}/zlib/unzip.c ) source_group(TREE ${VIRY3D_LIB_SRC_DIR}/.. FILES ${VIRY3D_DEP_SRCS}) add_library(Viry3DDep STATIC ${VIRY3D_DEP_SRCS}) target_include_directories(Viry3DDep PRIVATE ${VIRY3D_LIB_SRC_DIR} ${VIRY3D_LIB_SRC_DIR}/freetype/include ${VIRY3D_LIB_SRC_DIR}/jsoncpp/include ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/include ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src ${VIRY3D_LIB_SRC_DIR}/filament/libs/math/include ${VIRY3D_LIB_SRC_DIR}/filament/libs/utils/include ) file(GLOB VIRY3D_LIB_SRCS ${VIRY3D_LIB_SRC_DIR}/*.h ${VIRY3D_LIB_SRC_DIR}/*.cpp ${VIRY3D_LIB_SRC_DIR}/2d/*.h ${VIRY3D_LIB_SRC_DIR}/2d/*.cpp ${VIRY3D_LIB_SRC_DIR}/animation/*.h ${VIRY3D_LIB_SRC_DIR}/animation/*.cpp ${VIRY3D_LIB_SRC_DIR}/audio/*.h ${VIRY3D_LIB_SRC_DIR}/audio/*.cpp ${VIRY3D_LIB_SRC_DIR}/graphics/*.h ${VIRY3D_LIB_SRC_DIR}/graphics/*.cpp ${VIRY3D_LIB_SRC_DIR}/io/*.h ${VIRY3D_LIB_SRC_DIR}/io/*.cpp ${VIRY3D_LIB_SRC_DIR}/math/*.h ${VIRY3D_LIB_SRC_DIR}/math/*.cpp ${VIRY3D_LIB_SRC_DIR}/memory/*.h ${VIRY3D_LIB_SRC_DIR}/memory/*.cpp ${VIRY3D_LIB_SRC_DIR}/physics/*.h ${VIRY3D_LIB_SRC_DIR}/physics/*.cpp ${VIRY3D_LIB_SRC_DIR}/postprocessing/*.h ${VIRY3D_LIB_SRC_DIR}/postprocessing/*.cpp ${VIRY3D_LIB_SRC_DIR}/string/*.h ${VIRY3D_LIB_SRC_DIR}/string/*.cpp ${VIRY3D_LIB_SRC_DIR}/thread/*.h ${VIRY3D_LIB_SRC_DIR}/thread/*.cpp ${VIRY3D_LIB_SRC_DIR}/time/*.h ${VIRY3D_LIB_SRC_DIR}/time/*.cpp ${VIRY3D_LIB_SRC_DIR}/ui/*.h ${VIRY3D_LIB_SRC_DIR}/ui/*.cpp ${VIRY3D_LIB_SRC_DIR}/video/*.h ${VIRY3D_LIB_SRC_DIR}/video/*.cpp ) source_group(TREE ${VIRY3D_LIB_SRC_DIR}/.. FILES ${VIRY3D_LIB_SRCS}) add_library(Viry3D STATIC ${VIRY3D_LIB_SRCS}) target_include_directories(Viry3D PRIVATE ${VIRY3D_LIB_SRC_DIR} ${VIRY3D_LIB_SRC_DIR}/freetype/include ${VIRY3D_LIB_SRC_DIR}/mp3/mad ${VIRY3D_LIB_SRC_DIR}/openal/include ${VIRY3D_LIB_SRC_DIR}/openal/android ${VIRY3D_LIB_SRC_DIR}/openal/OpenAL32/Include ${VIRY3D_LIB_SRC_DIR}/jsoncpp/include ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/include ${VIRY3D_LIB_SRC_DIR}/filament/libs/math/include ${VIRY3D_LIB_SRC_DIR}/filament/libs/utils/include ${VIRY3D_LIB_SRC_DIR}/ffmpeg/include ) file(GLOB VIRY3D_APP_SRCS ${VIRY3D_APP_SRC_DIR}/*.h ${VIRY3D_APP_SRC_DIR}/*.cpp ) source_group(TREE ${VIRY3D_APP_SRC_DIR}/.. FILES ${VIRY3D_APP_SRCS}) # filament opengl if (${Target} MATCHES "Windows" OR ${Target} MATCHES "Android" OR ${Target} MATCHES "Mac" OR ${Target} MATCHES "iOS" OR ${Target} MATCHES "WASM") file(GLOB VIRY3D_DEP_SRCS_FILAMENT_OPENGL ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/opengl/gl_headers.cpp ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/opengl/GLUtils.cpp ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/opengl/OpenGLBlitter.cpp ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/opengl/OpenGLDriver.cpp ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/opengl/OpenGLPlatform.cpp ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/opengl/OpenGLProgram.cpp ) source_group(TREE ${VIRY3D_LIB_SRC_DIR}/.. FILES ${VIRY3D_DEP_SRCS_FILAMENT_OPENGL}) target_sources(Viry3DDep PRIVATE ${VIRY3D_DEP_SRCS_FILAMENT_OPENGL}) target_include_directories(Viry3DDep PRIVATE ${VIRY3D_LIB_SRC_DIR}/filament/libs/bluegl/include ) endif () # filament vulkan if (${Target} MATCHES "Windows" OR ${Target} MATCHES "Android") file(GLOB VIRY3D_DEP_SRCS_FILAMENT_VULKAN ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/vulkan/VulkanBinder.cpp ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/vulkan/VulkanBuffer.cpp ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/vulkan/VulkanContext.cpp ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/vulkan/VulkanDisposer.cpp ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/vulkan/VulkanDriver.cpp ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/vulkan/VulkanFboCache.cpp ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/vulkan/VulkanHandles.cpp ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/vulkan/VulkanPlatform.cpp ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/vulkan/VulkanSamplerCache.cpp ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/vulkan/VulkanStagePool.cpp ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/vulkan/VulkanUtility.cpp ${VIRY3D_LIB_SRC_DIR}/filament/libs/bluevk/src/BlueVK.cpp ) source_group(TREE ${VIRY3D_LIB_SRC_DIR}/.. FILES ${VIRY3D_DEP_SRCS_FILAMENT_VULKAN}) target_sources(Viry3DDep PRIVATE ${VIRY3D_DEP_SRCS_FILAMENT_VULKAN}) target_include_directories(Viry3DDep PRIVATE ${VIRY3D_LIB_SRC_DIR}/filament/libs/bluevk/include ${VIRY3D_LIB_SRC_DIR}/filament/third_party/vkmemalloc/src ) endif () # filament metal if (${Target} MATCHES "Mac" OR ${Target} MATCHES "iOS") file(GLOB VIRY3D_DEP_SRCS_FILAMENT_METAL ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/metal/MetalBlitter.mm ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/metal/MetalBufferPool.mm ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/metal/MetalContext.mm ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/metal/MetalDriver.mm ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/metal/MetalExternalImage.mm ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/metal/MetalHandles.mm ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/metal/MetalResourceTracker.cpp ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/metal/MetalState.mm ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/metal/PlatformMetal.mm ) source_group(TREE ${VIRY3D_LIB_SRC_DIR}/.. FILES ${VIRY3D_DEP_SRCS_FILAMENT_METAL}) target_sources(Viry3DDep PRIVATE ${VIRY3D_DEP_SRCS_FILAMENT_METAL}) endif () # filament d3d if (${Target} MATCHES "Windows" OR ${Target} MATCHES "UWP") file(GLOB VIRY3D_DEP_SRCS_FILAMENT_D3D11 ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/d3d/D3D11Context.cpp ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/d3d/D3D11Driver.cpp ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/d3d/D3D11Handles.cpp ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/d3d/PlatformD3D11.cpp ) source_group(TREE ${VIRY3D_LIB_SRC_DIR}/.. FILES ${VIRY3D_DEP_SRCS_FILAMENT_D3D11}) target_sources(Viry3DDep PRIVATE ${VIRY3D_DEP_SRCS_FILAMENT_D3D11}) endif () # glslang if (${Target} MATCHES "Windows" OR ${Target} MATCHES "UWP") file(GLOB VIRY3D_DEP_SRCS_GLSLANG ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/glslang/GenericCodeGen/CodeGen.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/glslang/GenericCodeGen/Link.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/glslang/MachineIndependent/attribute.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/glslang/MachineIndependent/Constant.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/glslang/MachineIndependent/glslang_tab.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/glslang/MachineIndependent/InfoSink.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/glslang/MachineIndependent/Initialize.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/glslang/MachineIndependent/Intermediate.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/glslang/MachineIndependent/intermOut.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/glslang/MachineIndependent/IntermTraverse.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/glslang/MachineIndependent/iomapper.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/glslang/MachineIndependent/limits.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/glslang/MachineIndependent/linkValidate.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/glslang/MachineIndependent/parseConst.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/glslang/MachineIndependent/ParseContextBase.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/glslang/MachineIndependent/ParseHelper.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/glslang/MachineIndependent/PoolAlloc.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/glslang/MachineIndependent/preprocessor/PpAtom.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/glslang/MachineIndependent/preprocessor/PpContext.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/glslang/MachineIndependent/preprocessor/PpScanner.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/glslang/MachineIndependent/propagateNoContraction.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/glslang/MachineIndependent/reflection.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/glslang/MachineIndependent/RemoveTree.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/glslang/MachineIndependent/Scan.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/glslang/MachineIndependent/ShaderLang.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/glslang/MachineIndependent/SymbolTable.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/glslang/MachineIndependent/Versions.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/glslang/OSDependent/Windows/ossource.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/OGLCompilersDLL/InitializeDll.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/SPIRV/disassemble.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/SPIRV/doc.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/SPIRV/GlslangToSpv.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/SPIRV/InReadableOrder.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/SPIRV/Logger.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/SPIRV/SpvBuilder.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/SPIRV/SpvPostProcess.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/glslang/SPIRV/SPVRemapper.cpp ) source_group(TREE ${VIRY3D_LIB_SRC_DIR}/.. FILES ${VIRY3D_DEP_SRCS_GLSLANG}) target_sources(Viry3DDep PRIVATE ${VIRY3D_DEP_SRCS_GLSLANG}) target_include_directories(Viry3DDep PRIVATE ) endif () # vulkan shader compiler if (${Target} MATCHES "Windows" OR ${Target} MATCHES "UWP" OR ${Target} MATCHES "Android") file(GLOB VIRY3D_LIB_SRCS_VULKAN ${VIRY3D_LIB_SRC_DIR}/vulkan/*.h ${VIRY3D_LIB_SRC_DIR}/vulkan/*.cpp ) source_group(TREE ${VIRY3D_LIB_SRC_DIR}/.. FILES ${VIRY3D_LIB_SRCS_VULKAN}) target_sources(Viry3D PRIVATE ${VIRY3D_LIB_SRCS_VULKAN}) target_include_directories(Viry3D PRIVATE ) endif () # spirv_cross if (${Target} MATCHES "Windows" OR ${Target} MATCHES "UWP") file(GLOB VIRY3D_DEP_SRCS_SPIRV_CROSS ${VIRY3D_LIB_SRC_DIR}/vulkan/spirv_cross/spirv_cfg.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/spirv_cross/spirv_cpp.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/spirv_cross/spirv_cross.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/spirv_cross/spirv_cross_util.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/spirv_cross/spirv_glsl.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/spirv_cross/spirv_hlsl.cpp ${VIRY3D_LIB_SRC_DIR}/vulkan/spirv_cross/spirv_msl.cpp ) source_group(TREE ${VIRY3D_LIB_SRC_DIR}/.. FILES ${VIRY3D_DEP_SRCS_SPIRV_CROSS}) target_sources(Viry3DDep PRIVATE ${VIRY3D_DEP_SRCS_SPIRV_CROSS}) endif () # lua if (TRUE) file(GLOB VIRY3D_DEP_SRCS_LUA ${VIRY3D_LIB_SRC_DIR}/lua/lpeg/lpcap.c ${VIRY3D_LIB_SRC_DIR}/lua/lpeg/lpcode.c ${VIRY3D_LIB_SRC_DIR}/lua/lpeg/lpprint.c ${VIRY3D_LIB_SRC_DIR}/lua/lpeg/lptree.c ${VIRY3D_LIB_SRC_DIR}/lua/lpeg/lpvm.c ${VIRY3D_LIB_SRC_DIR}/lua/lapi.c ${VIRY3D_LIB_SRC_DIR}/lua/lauxlib.c ${VIRY3D_LIB_SRC_DIR}/lua/lbaselib.c ${VIRY3D_LIB_SRC_DIR}/lua/lbitlib.c ${VIRY3D_LIB_SRC_DIR}/lua/lcode.c ${VIRY3D_LIB_SRC_DIR}/lua/lcorolib.c ${VIRY3D_LIB_SRC_DIR}/lua/lctype.c ${VIRY3D_LIB_SRC_DIR}/lua/ldblib.c ${VIRY3D_LIB_SRC_DIR}/lua/ldebug.c ${VIRY3D_LIB_SRC_DIR}/lua/ldo.c ${VIRY3D_LIB_SRC_DIR}/lua/ldump.c ${VIRY3D_LIB_SRC_DIR}/lua/lfunc.c ${VIRY3D_LIB_SRC_DIR}/lua/lgc.c ${VIRY3D_LIB_SRC_DIR}/lua/linit.c ${VIRY3D_LIB_SRC_DIR}/lua/liolib.c ${VIRY3D_LIB_SRC_DIR}/lua/llex.c ${VIRY3D_LIB_SRC_DIR}/lua/lmathlib.c ${VIRY3D_LIB_SRC_DIR}/lua/lmem.c ${VIRY3D_LIB_SRC_DIR}/lua/loadlib.c ${VIRY3D_LIB_SRC_DIR}/lua/lobject.c ${VIRY3D_LIB_SRC_DIR}/lua/lopcodes.c ${VIRY3D_LIB_SRC_DIR}/lua/loslib.c ${VIRY3D_LIB_SRC_DIR}/lua/lparser.c ${VIRY3D_LIB_SRC_DIR}/lua/lstate.c ${VIRY3D_LIB_SRC_DIR}/lua/lstring.c ${VIRY3D_LIB_SRC_DIR}/lua/lstrlib.c ${VIRY3D_LIB_SRC_DIR}/lua/ltable.c ${VIRY3D_LIB_SRC_DIR}/lua/ltablib.c ${VIRY3D_LIB_SRC_DIR}/lua/ltm.c ${VIRY3D_LIB_SRC_DIR}/lua/lundump.c ${VIRY3D_LIB_SRC_DIR}/lua/lutf8lib.c ${VIRY3D_LIB_SRC_DIR}/lua/lvm.c ${VIRY3D_LIB_SRC_DIR}/lua/lzio.c ) source_group(TREE ${VIRY3D_LIB_SRC_DIR}/.. FILES ${VIRY3D_DEP_SRCS_LUA}) target_sources(Viry3DDep PRIVATE ${VIRY3D_DEP_SRCS_LUA}) target_include_directories(Viry3DDep PRIVATE ${VIRY3D_LIB_SRC_DIR}/lua ) endif () # noise if (FALSE) file(GLOB VIRY3D_DEP_SRCS_NOISE ${VIRY3D_LIB_SRC_DIR}/noise/model/cylinder.cpp ${VIRY3D_LIB_SRC_DIR}/noise/model/line.cpp ${VIRY3D_LIB_SRC_DIR}/noise/model/plane.cpp ${VIRY3D_LIB_SRC_DIR}/noise/model/sphere.cpp ${VIRY3D_LIB_SRC_DIR}/noise/module/abs.cpp ${VIRY3D_LIB_SRC_DIR}/noise/module/add.cpp ${VIRY3D_LIB_SRC_DIR}/noise/module/billow.cpp ${VIRY3D_LIB_SRC_DIR}/noise/module/blend.cpp ${VIRY3D_LIB_SRC_DIR}/noise/module/cache.cpp ${VIRY3D_LIB_SRC_DIR}/noise/module/checkerboard.cpp ${VIRY3D_LIB_SRC_DIR}/noise/module/clamp.cpp ${VIRY3D_LIB_SRC_DIR}/noise/module/const.cpp ${VIRY3D_LIB_SRC_DIR}/noise/module/curve.cpp ${VIRY3D_LIB_SRC_DIR}/noise/module/cylinders.cpp ${VIRY3D_LIB_SRC_DIR}/noise/module/displace.cpp ${VIRY3D_LIB_SRC_DIR}/noise/module/exponent.cpp ${VIRY3D_LIB_SRC_DIR}/noise/module/invert.cpp ${VIRY3D_LIB_SRC_DIR}/noise/module/max.cpp ${VIRY3D_LIB_SRC_DIR}/noise/module/min.cpp ${VIRY3D_LIB_SRC_DIR}/noise/module/modulebase.cpp ${VIRY3D_LIB_SRC_DIR}/noise/module/multiply.cpp ${VIRY3D_LIB_SRC_DIR}/noise/module/perlin.cpp ${VIRY3D_LIB_SRC_DIR}/noise/module/power.cpp ${VIRY3D_LIB_SRC_DIR}/noise/module/ridgedmulti.cpp ${VIRY3D_LIB_SRC_DIR}/noise/module/rotatepoint.cpp ${VIRY3D_LIB_SRC_DIR}/noise/module/scalebias.cpp ${VIRY3D_LIB_SRC_DIR}/noise/module/scalepoint.cpp ${VIRY3D_LIB_SRC_DIR}/noise/module/select.cpp ${VIRY3D_LIB_SRC_DIR}/noise/module/spheres.cpp ${VIRY3D_LIB_SRC_DIR}/noise/module/terrace.cpp ${VIRY3D_LIB_SRC_DIR}/noise/module/translatepoint.cpp ${VIRY3D_LIB_SRC_DIR}/noise/module/turbulence.cpp ${VIRY3D_LIB_SRC_DIR}/noise/module/voronoi.cpp ${VIRY3D_LIB_SRC_DIR}/noise/latlon.cpp ${VIRY3D_LIB_SRC_DIR}/noise/noisegen.cpp ${VIRY3D_LIB_SRC_DIR}/noise/noiseutils.cpp ) source_group(TREE ${VIRY3D_LIB_SRC_DIR}/.. FILES ${VIRY3D_DEP_SRCS_NOISE}) target_sources(Viry3DDep PRIVATE ${VIRY3D_DEP_SRCS_NOISE}) endif () # imgui if (TRUE) file(GLOB VIRY3D_DEP_SRCS_IMGUI ${VIRY3D_LIB_SRC_DIR}/imgui/imgui.cpp ${VIRY3D_LIB_SRC_DIR}/imgui/imgui_demo.cpp ${VIRY3D_LIB_SRC_DIR}/imgui/imgui_draw.cpp ${VIRY3D_LIB_SRC_DIR}/imgui/imgui_widgets.cpp ) source_group(TREE ${VIRY3D_LIB_SRC_DIR}/.. FILES ${VIRY3D_DEP_SRCS_IMGUI}) target_sources(Viry3DDep PRIVATE ${VIRY3D_DEP_SRCS_IMGUI}) endif () # zlib if (${Target} MATCHES "Windows" OR ${Target} MATCHES "UWP" OR ${Target} MATCHES "WASM" ) file(GLOB VIRY3D_DEP_SRCS_ZLIB ${VIRY3D_LIB_SRC_DIR}/zlib/adler32.c ${VIRY3D_LIB_SRC_DIR}/zlib/compress.c ${VIRY3D_LIB_SRC_DIR}/zlib/crc32.c ${VIRY3D_LIB_SRC_DIR}/zlib/deflate.c ${VIRY3D_LIB_SRC_DIR}/zlib/gzclose.c ${VIRY3D_LIB_SRC_DIR}/zlib/gzlib.c ${VIRY3D_LIB_SRC_DIR}/zlib/gzread.c ${VIRY3D_LIB_SRC_DIR}/zlib/gzwrite.c ${VIRY3D_LIB_SRC_DIR}/zlib/infback.c ${VIRY3D_LIB_SRC_DIR}/zlib/inffast.c ${VIRY3D_LIB_SRC_DIR}/zlib/inflate.c ${VIRY3D_LIB_SRC_DIR}/zlib/inftrees.c ${VIRY3D_LIB_SRC_DIR}/zlib/trees.c ${VIRY3D_LIB_SRC_DIR}/zlib/uncompr.c ${VIRY3D_LIB_SRC_DIR}/zlib/zutil.c ) source_group(TREE ${VIRY3D_LIB_SRC_DIR}/.. FILES ${VIRY3D_DEP_SRCS_ZLIB}) target_sources(Viry3DDep PRIVATE ${VIRY3D_DEP_SRCS_ZLIB}) target_include_directories(Viry3DDep PRIVATE ${VIRY3D_LIB_SRC_DIR}/zlib ) endif () # mp3 if (${Target} MATCHES "Windows" OR ${Target} MATCHES "UWP" OR ${Target} MATCHES "Android" OR ${Target} MATCHES "Mac" OR ${Target} MATCHES "iOS" ) file(GLOB VIRY3D_DEP_SRCS_MP3 ${VIRY3D_LIB_SRC_DIR}/mp3/mad/bit.c ${VIRY3D_LIB_SRC_DIR}/mp3/mad/decoder.c ${VIRY3D_LIB_SRC_DIR}/mp3/mad/fixed.c ${VIRY3D_LIB_SRC_DIR}/mp3/mad/frame.c ${VIRY3D_LIB_SRC_DIR}/mp3/mad/huffman.c ${VIRY3D_LIB_SRC_DIR}/mp3/mad/id3tag/compat.c ${VIRY3D_LIB_SRC_DIR}/mp3/mad/id3tag/crc.c ${VIRY3D_LIB_SRC_DIR}/mp3/mad/id3tag/field.c ${VIRY3D_LIB_SRC_DIR}/mp3/mad/id3tag/frametype.c ${VIRY3D_LIB_SRC_DIR}/mp3/mad/id3tag/genre.c ${VIRY3D_LIB_SRC_DIR}/mp3/mad/id3tag/id3_debug.c ${VIRY3D_LIB_SRC_DIR}/mp3/mad/id3tag/id3_frame.c ${VIRY3D_LIB_SRC_DIR}/mp3/mad/id3tag/id3_version.c ${VIRY3D_LIB_SRC_DIR}/mp3/mad/id3tag/latin1.c ${VIRY3D_LIB_SRC_DIR}/mp3/mad/id3tag/parse.c ${VIRY3D_LIB_SRC_DIR}/mp3/mad/id3tag/render.c ${VIRY3D_LIB_SRC_DIR}/mp3/mad/id3tag/tag.c ${VIRY3D_LIB_SRC_DIR}/mp3/mad/id3tag/ucs4.c ${VIRY3D_LIB_SRC_DIR}/mp3/mad/id3tag/utf8.c ${VIRY3D_LIB_SRC_DIR}/mp3/mad/id3tag/utf16.c ${VIRY3D_LIB_SRC_DIR}/mp3/mad/id3tag/util.c ${VIRY3D_LIB_SRC_DIR}/mp3/mad/layer3.c ${VIRY3D_LIB_SRC_DIR}/mp3/mad/layer12.c ${VIRY3D_LIB_SRC_DIR}/mp3/mad/mad_stream.c ${VIRY3D_LIB_SRC_DIR}/mp3/mad/mad_timer.c ${VIRY3D_LIB_SRC_DIR}/mp3/mad/synth.c ${VIRY3D_LIB_SRC_DIR}/mp3/mad/version.c ) source_group(TREE ${VIRY3D_LIB_SRC_DIR}/.. FILES ${VIRY3D_DEP_SRCS_MP3}) target_sources(Viry3DDep PRIVATE ${VIRY3D_DEP_SRCS_MP3}) target_include_directories(Viry3DDep PRIVATE ${VIRY3D_LIB_SRC_DIR}/mp3/mad ) endif () # openal if (${Target} MATCHES "Windows" OR ${Target} MATCHES "UWP" OR ${Target} MATCHES "Android") file(GLOB VIRY3D_DEP_SRCS_OPENAL ${VIRY3D_LIB_SRC_DIR}/openal/Alc/backends/loopback.c ${VIRY3D_LIB_SRC_DIR}/openal/Alc/backends/null.c ${VIRY3D_LIB_SRC_DIR}/openal/Alc/backends/thread_msg_queue_cpp11.cpp ${VIRY3D_LIB_SRC_DIR}/openal/Alc/ALc.c ${VIRY3D_LIB_SRC_DIR}/openal/Alc/ALc_cpp11.cpp ${VIRY3D_LIB_SRC_DIR}/openal/Alc/alcConfig.c ${VIRY3D_LIB_SRC_DIR}/openal/Alc/alcDedicated.c ${VIRY3D_LIB_SRC_DIR}/openal/Alc/alcEcho.c ${VIRY3D_LIB_SRC_DIR}/openal/Alc/alcModulator.c ${VIRY3D_LIB_SRC_DIR}/openal/Alc/alcReverb.c ${VIRY3D_LIB_SRC_DIR}/openal/Alc/alcRing.c ${VIRY3D_LIB_SRC_DIR}/openal/Alc/ALu.c ${VIRY3D_LIB_SRC_DIR}/openal/Alc/bs2b.c ${VIRY3D_LIB_SRC_DIR}/openal/Alc/helpers.c ${VIRY3D_LIB_SRC_DIR}/openal/Alc/hrtf.c ${VIRY3D_LIB_SRC_DIR}/openal/Alc/mixer.c ${VIRY3D_LIB_SRC_DIR}/openal/Alc/panning.c ${VIRY3D_LIB_SRC_DIR}/openal/OpenAL32/alError.c ${VIRY3D_LIB_SRC_DIR}/openal/OpenAL32/alExtension.c ${VIRY3D_LIB_SRC_DIR}/openal/OpenAL32/alListener.c ${VIRY3D_LIB_SRC_DIR}/openal/OpenAL32/alSource.c ${VIRY3D_LIB_SRC_DIR}/openal/OpenAL32/alThunk.c ) source_group(TREE ${VIRY3D_LIB_SRC_DIR}/.. FILES ${VIRY3D_DEP_SRCS_OPENAL}) target_sources(Viry3DDep PRIVATE ${VIRY3D_DEP_SRCS_OPENAL}) target_include_directories(Viry3DDep PRIVATE ${VIRY3D_LIB_SRC_DIR}/openal/include ${VIRY3D_LIB_SRC_DIR}/openal/OpenAL32/Include ) endif () if (${Target} MATCHES "Windows") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVR_WINDOWS -DVR_VULKAN=1 -DVR_GLES=1 -DVR_D3D=1 -DVK_USE_PLATFORM_WIN32_KHR -DFILAMENT_DRIVER_SUPPORTS_VULKAN") add_definitions(-W3 -D_CRT_SECURE_NO_WARNINGS -D_CRT_RAND_S -D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES -DGLEW_STATIC) set_property(GLOBAL PROPERTY USE_FOLDERS ON) set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "CMakeTargets") file(GLOB VIRY3D_DEP_SRCS_WIN ${VIRY3D_LIB_SRC_DIR}/openal/Alc/backends/xaudio2.cpp ${VIRY3D_LIB_SRC_DIR}/openal/Alc/alcThread.c ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/opengl/PlatformWGL.cpp ${VIRY3D_LIB_SRC_DIR}/filament/libs/bluegl/src/BlueGL.cpp ${VIRY3D_LIB_SRC_DIR}/filament/libs/bluegl/src/BlueGLWindows.cpp ${VIRY3D_LIB_SRC_DIR}/filament/libs/bluegl/src/BlueGLCoreWindowsImpl.S ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/vulkan/PlatformVkWindows.cpp ${VIRY3D_LIB_SRC_DIR}/filament/libs/bluevk/src/BlueVKWindows.cpp ) enable_language(ASM_MASM) set_property(SOURCE ${VIRY3D_LIB_SRC_DIR}/filament/libs/bluegl/src/BlueGLCoreWindowsImpl.S PROPERTY LANGUAGE ASM_MASM) source_group(TREE ${VIRY3D_LIB_SRC_DIR}/.. FILES ${VIRY3D_DEP_SRCS_WIN}) target_sources(Viry3DDep PRIVATE ${VIRY3D_DEP_SRCS_WIN}) target_include_directories(Viry3DDep PRIVATE ${VIRY3D_LIB_SRC_DIR}/openal/win ) target_include_directories(Viry3D PRIVATE ${VIRY3D_LIB_SRC_DIR}/zlib ${VIRY3D_LIB_SRC_DIR}/filament/libs/bluevk/include ) source_group(src FILES ${VIRY3D_APP_SRC_DIR}/../project/win/Main.cpp) add_executable(Viry3DApp ${VIRY3D_APP_SRCS} ${VIRY3D_APP_SRC_DIR}/../project/win/Main.cpp ) target_link_libraries(Viry3DApp Viry3D Viry3DDep opengl32.lib d3d11.lib d3dcompiler.lib winmm.lib Xaudio2.lib ) set_property(TARGET Viry3DApp PROPERTY LINK_FLAGS "/SUBSYSTEM:WINDOWS") set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) string(REPLACE "/" "\\" BIN_DIR ${EXECUTABLE_OUTPUT_PATH}/$(Configuration)) string(REPLACE "/" "\\" ASSETS_COPY_SRC ${CMAKE_SOURCE_DIR}/app/bin/Assets) string(REPLACE "/" "\\" ICON_SRC ${CMAKE_SOURCE_DIR}/app/bin/icon.ico) string(REPLACE "/" "\\" FFMPEG_DLL_DIR_SRC ${VIRY3D_LIB_SRC_DIR}/ffmpeg/bin/win/${Arch}) add_custom_command(TARGET Viry3DApp POST_BUILD COMMAND xcopy ${ASSETS_COPY_SRC} ${BIN_DIR}\\Assets\\ /s /d /y COMMAND copy /Y ${ICON_SRC} ${BIN_DIR}\\icon.ico COMMAND copy /Y ${FFMPEG_DLL_DIR_SRC}\\avcodec-58.dll ${BIN_DIR}\\avcodec-58.dll COMMAND copy /Y ${FFMPEG_DLL_DIR_SRC}\\avformat-58.dll ${BIN_DIR}\\avformat-58.dll COMMAND copy /Y ${FFMPEG_DLL_DIR_SRC}\\avutil-56.dll ${BIN_DIR}\\avutil-56.dll COMMAND copy /Y ${FFMPEG_DLL_DIR_SRC}\\swresample-3.dll ${BIN_DIR}\\swresample-3.dll COMMAND copy /Y ${FFMPEG_DLL_DIR_SRC}\\swscale-5.dll ${BIN_DIR}\\swscale-5.dll ) add_executable(CubeMapToSphericalPolynomial ${VIRY3D_APP_SRC_DIR}/../project/CubeMapToSphericalPolynomial/CubeMapToSphericalPolynomial.cpp ) target_include_directories(CubeMapToSphericalPolynomial PRIVATE ${VIRY3D_LIB_SRC_DIR} ${VIRY3D_LIB_SRC_DIR}/jsoncpp/include ) target_link_libraries(CubeMapToSphericalPolynomial Viry3D Viry3DDep winmm.lib Xaudio2.lib ) add_executable(CubeMapCompress ${VIRY3D_APP_SRC_DIR}/../project/CubeMapCompress/CubeMapCompress.cpp ) target_include_directories(CubeMapCompress PRIVATE ${VIRY3D_LIB_SRC_DIR} ${VIRY3D_LIB_SRC_DIR}/jsoncpp/include ${VIRY3D_APP_SRC_DIR}/../project/CubeMapCompress/Compressonator/include ) target_link_libraries(CubeMapCompress Viry3D Viry3DDep winmm.lib Xaudio2.lib ${VIRY3D_APP_SRC_DIR}/../project/CubeMapCompress/Compressonator/lib/VS2015/${Arch}/Compressonator_MD_DLL.lib ) string(REPLACE "/" "\\" COMP_DLL_SRC ${VIRY3D_APP_SRC_DIR}/../project/CubeMapCompress/Compressonator/lib/VS2015/${Arch}/Compressonator_MD_DLL.dll) string(REPLACE "/" "\\" COMP_DLL_DST ${BIN_DIR}/Compressonator_MD_DLL.dll) add_custom_command(TARGET CubeMapCompress POST_BUILD COMMAND copy /Y ${COMP_DLL_SRC} ${COMP_DLL_DST} ) elseif (${Target} MATCHES "UWP") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVR_UWP -DVR_VULKAN=0 -DVR_GLES=0 -DVR_D3D=1") add_definitions(-W3 -D_CRT_SECURE_NO_WARNINGS -D_CRT_RAND_S -D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES -DGLEW_STATIC /sdl-) set_property(GLOBAL PROPERTY USE_FOLDERS ON) set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "CMakeTargets") file(GLOB VIRY3D_DEP_SRCS_UWP ${VIRY3D_LIB_SRC_DIR}/openal/Alc/backends/xaudio2.cpp ${VIRY3D_LIB_SRC_DIR}/openal/Alc/alcThreadCpp11.cpp ) source_group(TREE ${VIRY3D_LIB_SRC_DIR}/.. FILES ${VIRY3D_DEP_SRCS_UWP}) target_sources(Viry3DDep PRIVATE ${VIRY3D_DEP_SRCS_UWP}) target_include_directories(Viry3DDep PRIVATE ${VIRY3D_LIB_SRC_DIR}/openal/win ) target_include_directories(Viry3D PRIVATE ${VIRY3D_LIB_SRC_DIR}/zlib ) set(UWP_ASSETS ${VIRY3D_APP_SRC_DIR}/../project/uwp/Assets/LockScreenLogo.scale-200.png ${VIRY3D_APP_SRC_DIR}/../project/uwp/Assets/SplashScreen.scale-200.png ${VIRY3D_APP_SRC_DIR}/../project/uwp/Assets/Square44x44Logo.scale-200.png ${VIRY3D_APP_SRC_DIR}/../project/uwp/Assets/Square44x44Logo.targetsize-24_altform-unplated.png ${VIRY3D_APP_SRC_DIR}/../project/uwp/Assets/Square150x150Logo.scale-200.png ${VIRY3D_APP_SRC_DIR}/../project/uwp/Assets/StoreLogo.png ${VIRY3D_APP_SRC_DIR}/../project/uwp/Assets/Wide310x150Logo.scale-200.png ) set(UWP_CONTENT ${VIRY3D_ASSETS} ${UWP_ASSETS} ${VIRY3D_APP_SRC_DIR}/../project/uwp/Package.appxmanifest ) set(UWP_RESOURCE_FILES ${UWP_CONTENT} ${VIRY3D_APP_SRC_DIR}/../project/uwp/app_TemporaryKey.pfx) foreach (item ${VIRY3D_ASSETS}) get_filename_component(dir ${item} DIRECTORY) string(LENGTH ${VIRY3D_APP_SRC_DIR}/../bin/ root_length) string(SUBSTRING ${dir} ${root_length} -1 local_dir) set_property(SOURCE ${item} PROPERTY VS_DEPLOYMENT_LOCATION ${local_dir}) endforeach () set_property(SOURCE ${UWP_ASSETS} PROPERTY VS_DEPLOYMENT_LOCATION "Assets") set_property(SOURCE ${UWP_CONTENT} PROPERTY VS_DEPLOYMENT_CONTENT 1) source_group("Resource Files" FILES ${UWP_RESOURCE_FILES}) source_group(TREE ${VIRY3D_APP_SRC_DIR}/../bin FILES ${VIRY3D_ASSETS}) source_group(TREE ${VIRY3D_APP_SRC_DIR}/../project/uwp FILES ${UWP_ASSETS}) source_group(src FILES ${VIRY3D_APP_SRC_DIR}/../project/uwp/Main.cpp) add_executable(Viry3DApp ${VIRY3D_APP_SRCS} ${VIRY3D_APP_SRC_DIR}/../project/uwp/Main.cpp ${UWP_RESOURCE_FILES} ) target_link_libraries(Viry3DApp Viry3D Viry3DDep mincore.lib ) set_property(TARGET Viry3DApp PROPERTY LINK_FLAGS "/SUBSYSTEM:WINDOWS") set_property(TARGET Viry3DApp PROPERTY VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION "10.0.10240.0") set_property(TARGET Viry3DApp PROPERTY VS_WINRT_COMPONENT TRUE) elseif (${Target} MATCHES "Android") get_filename_component(SHADERC_SRC ${ANDROID_NDK}/sources/third_party/shaderc ABSOLUTE) set(GLSLANG_SPIRV_INCLUDE_DIR ${SHADERC_SRC}/third_party/glslang) add_library(shaderc_lib STATIC IMPORTED) set_target_properties(shaderc_lib PROPERTIES IMPORTED_LOCATION ${SHADERC_SRC}/libs/${ANDROID_STL}/${ANDROID_ABI}/libshaderc.a) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -fexceptions -frtti -DVR_ANDROID -DVR_VULKAN=1 -DVR_GLES=1 -DVK_USE_PLATFORM_ANDROID_KHR -DFILAMENT_DRIVER_SUPPORTS_VULKAN") add_definitions(-Wall -DIOAPI_NO_64 -DHAVE_GCC_DESTRUCTOR) target_sources(Viry3DDep PRIVATE ${VIRY3D_LIB_SRC_DIR}/openal/Alc/backends/opensl.c ${VIRY3D_LIB_SRC_DIR}/openal/Alc/alcThread.c ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/android/ExternalStreamManagerAndroid.cpp ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/android/ExternalTextureManagerAndroid.cpp ${VIRY3D_LIB_SRC_DIR}/filament/libs/utils/src/linux/Condition.cpp ${VIRY3D_LIB_SRC_DIR}/filament/libs/utils/src/linux/Mutex.cpp ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/android/VirtualMachineEnv.cpp ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/opengl/PlatformEGL.cpp ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/vulkan/PlatformVkAndroid.cpp ${VIRY3D_LIB_SRC_DIR}/filament/libs/bluevk/src/BlueVKLinuxAndroid.cpp ) target_include_directories(Viry3DDep PRIVATE ${VIRY3D_LIB_SRC_DIR}/openal/android ) target_include_directories(Viry3D PRIVATE ${ANDROID_NDK}/sources/third_party/shaderc/include ${SHADERC_SRC}/third_party/spirv-tools/include ${SHADERC_SRC}/third_party/spirv-tools/include/spirv-tools ) add_library(Viry3DApp SHARED ${VIRY3D_APP_SRCS} ${CMAKE_SOURCE_DIR}/app/project/android/app/src/main/jni/jni.cpp ) target_link_libraries(Viry3DApp Viry3D Viry3DDep android log z OpenSLES EGL GLESv3 shaderc_lib # for vulkan shader compile ) # build shaderc # ndk-bundle/sources/third_party/shaderc # ../../../ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk APP_STL:=c++_shared APP_ABI=armeabi-v7a APP_PLATFORM=android-18 libshaderc_combined elseif (${Target} MATCHES "Mac") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -DVR_MAC -DVR_VULKAN=0 -DVR_GLES=1 -DVR_METAL=1 -DVR_USE_METAL=1") add_definitions(-Wall -DHAVE_ASSERT_H -DFILAMENT_SUPPORTS_METAL) file(GLOB VIRY3D_DEP_SRCS_MAC ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/opengl/PlatformCocoaGL.mm ${VIRY3D_LIB_SRC_DIR}/filament/libs/bluegl/src/BlueGL.cpp ${VIRY3D_LIB_SRC_DIR}/filament/libs/bluegl/src/BlueGLDarwin.cpp ${VIRY3D_LIB_SRC_DIR}/filament/libs/bluegl/src/BlueGLCoreDarwinImpl.S ) enable_language(ASM_MASM) set_property(SOURCE ${VIRY3D_LIB_SRC_DIR}/filament/libs/bluegl/src/BlueGLCoreDarwinImpl.S PROPERTY LANGUAGE ASM_MASM) set_source_files_properties(${VIRY3D_LIB_SRC_DIR}/filament/libs/bluegl/src/BlueGLCoreDarwinImpl.S PROPERTIES XCODE_EXPLICIT_FILE_TYPE "sourcecode.asm") source_group(TREE ${VIRY3D_LIB_SRC_DIR}/.. FILES ${VIRY3D_DEP_SRCS_MAC}) target_sources(Viry3DDep PRIVATE ${VIRY3D_DEP_SRCS_MAC}) set_source_files_properties(${VIRY3D_LIB_SRC_DIR}/Debug.cpp PROPERTIES COMPILE_FLAGS "-x objective-c++") set_source_files_properties(${VIRY3D_LIB_SRC_DIR}/Engine.cpp PROPERTIES COMPILE_FLAGS "-x objective-c++") target_include_directories(Viry3D PRIVATE ${VIRY3D_LIB_SRC_DIR}/vulkan/MoltenVK/include ${VIRY3D_LIB_SRC_DIR}/vulkan/MoltenVK/MoltenVKShaderConverter/MoltenVKGLSLToSPIRVConverter/macOS/MoltenVKGLSLToSPIRVConverter.framework/Headers ${VIRY3D_LIB_SRC_DIR}/vulkan/MoltenVK/MoltenVKShaderConverter/MoltenVKSPIRVToMSLConverter/macOS/MoltenVKSPIRVToMSLConverter.framework/Headers ) set_source_files_properties(${VIRY3D_APP_SRC_DIR}/../project/mac/app/Assets.xcassets ${VIRY3D_APP_SRC_DIR}/../bin/Assets ${VIRY3D_LIB_SRC_DIR}/ffmpeg/bin/mac/libavcodec.58.dylib ${VIRY3D_LIB_SRC_DIR}/ffmpeg/bin/mac/libavformat.58.dylib ${VIRY3D_LIB_SRC_DIR}/ffmpeg/bin/mac/libavutil.56.dylib ${VIRY3D_LIB_SRC_DIR}/ffmpeg/bin/mac/libswresample.3.dylib ${VIRY3D_LIB_SRC_DIR}/ffmpeg/bin/mac/libswscale.5.dylib PROPERTIES MACOSX_PACKAGE_LOCATION Resources ) add_executable(Viry3DApp ${VIRY3D_APP_SRCS} ${VIRY3D_APP_SRC_DIR}/../project/mac/Main.m ${VIRY3D_APP_SRC_DIR}/../project/mac/AppDelegate.m ${VIRY3D_APP_SRC_DIR}/../project/mac/ViewController.mm ${VIRY3D_APP_SRC_DIR}/../project/mac/app/Assets.xcassets ${VIRY3D_APP_SRC_DIR}/../bin/Assets ${VIRY3D_LIB_SRC_DIR}/ffmpeg/bin/mac/libavcodec.58.dylib ${VIRY3D_LIB_SRC_DIR}/ffmpeg/bin/mac/libavformat.58.dylib ${VIRY3D_LIB_SRC_DIR}/ffmpeg/bin/mac/libavutil.56.dylib ${VIRY3D_LIB_SRC_DIR}/ffmpeg/bin/mac/libswresample.3.dylib ${VIRY3D_LIB_SRC_DIR}/ffmpeg/bin/mac/libswscale.5.dylib ) target_include_directories(Viry3DApp PRIVATE ${VIRY3D_LIB_SRC_DIR}/vulkan/MoltenVK/include ) target_link_libraries(Viry3DApp Viry3D Viry3DDep ${VIRY3D_LIB_SRC_DIR}/vulkan/MoltenVK/macOS/libMoltenVK.a ${VIRY3D_LIB_SRC_DIR}/vulkan/MoltenVK/MoltenVKShaderConverter/MoltenVKGLSLToSPIRVConverter/macOS/MoltenVKGLSLToSPIRVConverter.framework ${VIRY3D_LIB_SRC_DIR}/vulkan/MoltenVK/MoltenVKShaderConverter/MoltenVKSPIRVToMSLConverter/macOS/MoltenVKSPIRVToMSLConverter.framework "-framework OpenAL" "-framework AppKit" "-framework Metal" "-framework QuartzCore" "-framework IOKit" z.1.2.8 ) set_target_properties(Viry3DApp PROPERTIES MACOSX_BUNDLE TRUE MACOSX_BUNDLE_INFO_PLIST ${VIRY3D_APP_SRC_DIR}/../project/mac/app/Info.plist XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_APPICON_NAME AppIcon ) elseif (${Target} MATCHES "iOS") set(XCODE_IOS_PLATFORM iphoneos) execute_process(COMMAND xcodebuild -version -sdk ${XCODE_IOS_PLATFORM} Path OUTPUT_VARIABLE CMAKE_OSX_SYSROOT ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) message(STATUS "found ios sdk: ${CMAKE_OSX_SYSROOT}") set(CMAKE_OSX_DEPLOYMENT_TARGET "") set(CMAKE_OSX_ARCHITECTURES arm64) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -DVR_IOS -DVR_VULKAN=0 -DVR_GLES=1 -DVR_METAL=1 -DVR_USE_METAL=0") add_definitions(-Wall -DIOS -DHAVE_ASSERT_H -DFILAMENT_SUPPORTS_METAL) file(GLOB VIRY3D_DEP_SRCS_IOS ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/opengl/PlatformCocoaTouchGL.mm ) source_group(TREE ${VIRY3D_LIB_SRC_DIR}/.. FILES ${VIRY3D_DEP_SRCS_IOS}) target_sources(Viry3DDep PRIVATE ${VIRY3D_DEP_SRCS_IOS}) set_source_files_properties(${VIRY3D_LIB_SRC_DIR}/Debug.cpp PROPERTIES COMPILE_FLAGS "-x objective-c++") set_source_files_properties(${VIRY3D_LIB_SRC_DIR}/Engine.cpp PROPERTIES COMPILE_FLAGS "-x objective-c++") file(GLOB VIRY3D_LIB_SRCS_IOS ${VIRY3D_LIB_SRC_DIR}/ios/*.h ${VIRY3D_LIB_SRC_DIR}/ios/*.mm ) source_group(TREE ${VIRY3D_LIB_SRC_DIR}/.. FILES ${VIRY3D_LIB_SRCS_IOS}) target_sources(Viry3D PRIVATE ${VIRY3D_LIB_SRCS_IOS}) target_include_directories(Viry3D PRIVATE ${VIRY3D_LIB_SRC_DIR}/vulkan/MoltenVK/include ${VIRY3D_LIB_SRC_DIR}/vulkan/MoltenVK/MoltenVKShaderConverter/MoltenVKGLSLToSPIRVConverter/iOS/MoltenVKGLSLToSPIRVConverter.framework/Headers ${VIRY3D_LIB_SRC_DIR}/vulkan/MoltenVK/MoltenVKShaderConverter/MoltenVKSPIRVToMSLConverter/iOS/MoltenVKSPIRVToMSLConverter.framework/Headers ) set_source_files_properties(${VIRY3D_APP_SRC_DIR}/../project/ios/app/Assets.xcassets ${VIRY3D_APP_SRC_DIR}/../project/ios/app/Base.lproj/LaunchScreen.storyboard ${VIRY3D_APP_SRC_DIR}/../bin/Assets PROPERTIES MACOSX_PACKAGE_LOCATION Resources ) add_executable(Viry3DApp ${VIRY3D_APP_SRCS} ${VIRY3D_APP_SRC_DIR}/../project/ios/Main.m ${VIRY3D_APP_SRC_DIR}/../project/ios/AppDelegate.m ${VIRY3D_APP_SRC_DIR}/../project/ios/ViewController.mm ${VIRY3D_APP_SRC_DIR}/../project/ios/app/Assets.xcassets ${VIRY3D_APP_SRC_DIR}/../project/ios/app/Base.lproj/LaunchScreen.storyboard ${VIRY3D_APP_SRC_DIR}/../bin/Assets ) target_include_directories(Viry3DApp PRIVATE ${VIRY3D_LIB_SRC_DIR}/vulkan/MoltenVK/include ) target_link_libraries(Viry3DApp Viry3D Viry3DDep ${VIRY3D_LIB_SRC_DIR}/vulkan/MoltenVK/iOS/libMoltenVK.a ${VIRY3D_LIB_SRC_DIR}/vulkan/MoltenVK/MoltenVKShaderConverter/MoltenVKGLSLToSPIRVConverter/iOS/MoltenVKGLSLToSPIRVConverter.framework ${VIRY3D_LIB_SRC_DIR}/vulkan/MoltenVK/MoltenVKShaderConverter/MoltenVKSPIRVToMSLConverter/iOS/MoltenVKSPIRVToMSLConverter.framework "-framework OpenAL" "-framework UIKit" "-framework Metal" "-framework OpenGLES" "-framework QuartzCore" "-framework IOKit" "-framework ARKit" "-framework CoreVideo" z.1.2.8 ) set_target_properties(Viry3DApp PROPERTIES MACOSX_BUNDLE TRUE MACOSX_BUNDLE_INFO_PLIST ${VIRY3D_APP_SRC_DIR}/../project/ios/app/Info.plist XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_APPICON_NAME AppIcon ) elseif (${Target} MATCHES "WASM") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -DVR_WASM -DVR_VULKAN=0 -DVR_GLES=1") add_definitions(-Wall -s WASM=1 -O3) target_sources(Viry3DDep PRIVATE ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/src/opengl/PlatformWebGL.cpp ) target_include_directories(Viry3D PRIVATE ${VIRY3D_LIB_SRC_DIR}/zlib ) add_library(Viry3DApp STATIC ${VIRY3D_APP_SRCS} ${VIRY3D_APP_SRC_DIR}/../project/web/Main.cpp ) endif () target_include_directories(Viry3DApp PRIVATE ${VIRY3D_LIB_SRC_DIR} ${VIRY3D_LIB_SRC_DIR}/jsoncpp/include ${VIRY3D_LIB_SRC_DIR}/filament/filament/backend/include ${VIRY3D_LIB_SRC_DIR}/filament/libs/math/include ${VIRY3D_LIB_SRC_DIR}/filament/libs/utils/include ${VIRY3D_APP_SRC_DIR} )