Merge pull request #215 from olvaffe/linux-cmake

Use CMake on Linux
This commit is contained in:
Baldur Karlsson
2016-03-11 21:55:17 +01:00
15 changed files with 521 additions and 401 deletions
+2 -1
View File
@@ -6,6 +6,7 @@ Development32/
Development64/
Release32/
Release64/
build/
dist/
Resources/*.png
qrenderdoc/Makefile*
@@ -14,7 +15,7 @@ qrenderdoc/Makefile*
*.ilk
*.manifest
*.user
bin/
bin
obj/
.obj/
*.opensdf
+44
View File
@@ -0,0 +1,44 @@
cmake_minimum_required(VERSION 2.8.12)
if(WIN32)
message(FATAL_ERROR "CMake is not needed on Windows, just open and build renderdoc.sln")
endif()
# disallow in-source builds because we have a top-level wrapper Makefile
if(CMAKE_BINARY_DIR STREQUAL CMAKE_SOURCE_DIR)
message(FATAL_ERROR "In-source builds not allowed")
endif()
project(RenderDoc CXX C)
option(ENABLE_GL "Enable GL driver" ON)
option(ENABLE_VULKAN "Enable Vulkan driver" ON)
option(ENABLE_RENDERDOCCMD "Enable renderdoccmd" ON)
option(ENABLE_QRENDERDOC "Enable qrenderdoc" ON)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -fvisibility-inlines-hidden")
set(warning_flags
-Wall
-Werror
-Wno-unused
-Wno-unknown-pragmas
-Wno-reorder)
string(REPLACE ";" " " warning_flags "${warning_flags}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${warning_flags}")
endif()
add_subdirectory(renderdoc)
if(ENABLE_RENDERDOCCMD)
add_subdirectory(renderdoccmd)
endif()
if(ENABLE_QRENDERDOC)
add_subdirectory(qrenderdoc)
endif()
+18 -11
View File
@@ -1,13 +1,20 @@
.PHONY: all
all:
mkdir -p bin/
cd renderdoc && $(MAKE) librenderdoc.so
cd renderdoccmd && $(MAKE) bin/renderdoccmd
cd qrenderdoc && qmake "CONFIG+=debug" && $(MAKE)
cp renderdoc/librenderdoc.so renderdoc/driver/vulkan/renderdoc_capture.json renderdoccmd/bin/renderdoccmd bin/
SRC_DIR := $(shell pwd)
DST_DIR := $(SRC_DIR)/build
.PHONY: all clean renderdoc qrenderdoc
all: renderdoc qrenderdoc
@ln -sf "$(DST_DIR)/bin"
renderdoc:
@mkdir -p "$(DST_DIR)" && cd "$(DST_DIR)" && \
cmake -DENABLE_QRENDERDOC=OFF "$(SRC_DIR)" && \
$(MAKE)
qrenderdoc: renderdoc
@mkdir -p "$(DST_DIR)"/qrenderdoc && cd "$(DST_DIR)"/qrenderdoc && \
qmake "CONFIG+=debug" "DESTDIR=$(DST_DIR)/bin" "$(SRC_DIR)"/qrenderdoc && \
$(MAKE)
.PHONY: clean
clean:
cd renderdoc && $(MAKE) clean
cd renderdoccmd && $(MAKE) clean
cd qrenderdoc && rm -rf .obj Makefile*
@rm -rf "$(DST_DIR)" bin
+7
View File
@@ -0,0 +1,7 @@
set(output_dir ${CMAKE_BINARY_DIR}/bin)
include(ExternalProject)
ExternalProject_Add(qrenderdoc
DEPENDS renderdoc
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}
CONFIGURE_COMMAND qmake "CONFIG+=debug" "DESTDIR=${output_dir}" ${CMAKE_CURRENT_SOURCE_DIR})
+4 -3
View File
@@ -46,11 +46,12 @@ win32 {
QMAKE_CXXFLAGS_WARN_ON -= -w34100
} else {
DESTDIR = $$_PRO_FILE_PWD_/../bin
isEmpty(DESTDIR) {
DESTDIR = $$_PRO_FILE_PWD_/../bin
}
# Link against the core library
LIBS += -L$$_PRO_FILE_PWD_/../renderdoc -lrenderdoc
LIBS += -L$$DESTDIR -lrenderdoc
QMAKE_LFLAGS += '-Wl,-rpath,\'\$$ORIGIN\''
QMAKE_CXXFLAGS += -std=c++11 -Wno-unused-parameter -Wno-reorder
+238
View File
@@ -0,0 +1,238 @@
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(RDOC_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
set(RDOC_DEFINITIONS PRIVATE -DRENDERDOC_EXPORTS)
set(RDOC_INCLUDES
PRIVATE ${RDOC_SOURCE_DIR}
PRIVATE ${RDOC_SOURCE_DIR}/3rdparty)
set(RDOC_LIBRARIES)
# get git commit hash
execute_process(COMMAND sh ${CMAKE_SOURCE_DIR}/calc_hash.sh
OUTPUT_VARIABLE GIT_COMMIT_HASH)
string(STRIP ${GIT_COMMIT_HASH} GIT_COMMIT_HASH)
list(APPEND RDOC_DEFINITIONS
PRIVATE -DGIT_COMMIT_HASH="${GIT_COMMIT_HASH}")
if(UNIX)
find_package(PkgConfig REQUIRED)
find_package(Threads REQUIRED)
find_package(X11 REQUIRED)
# This should be fixed and moved to FindXCB.cmake
pkg_check_modules(PC_XCB REQUIRED xcb xcb-keysyms)
set(XCB_INCLUDE_DIRS)
set(XCB_LIBRARIES xcb xcb-keysyms)
list(APPEND RDOC_DEFINITIONS
PUBLIC -DRENDERDOC_PLATFORM=linux
PRIVATE -DLINUX)
list(APPEND RDOC_INCLUDES
PRIVATE ${X11_X11_INCLUDE_PATH}
PRIVATE ${XCB_INCLUDE_DIRS})
list(APPEND RDOC_LIBRARIES
PRIVATE m
PRIVATE dl
PRIVATE ${CMAKE_THREAD_LIBS_INIT}
PRIVATE ${X11_X11_LIB}
PRIVATE ${XCB_LIBRARIES})
endif()
set(sources
api/app/renderdoc_app.h
api/replay/basic_types.h
api/replay/capture_options.h
api/replay/control_types.h
api/replay/d3d11_pipestate.h
api/replay/data_types.h
api/replay/gl_pipestate.h
api/replay/renderdoc_replay.h
api/replay/replay_enums.h
api/replay/shader_types.h
api/replay/vk_pipestate.h
common/common.cpp
common/common.h
common/custom_assert.h
common/dds_readwrite.cpp
common/dds_readwrite.h
common/globalconfig.h
common/shader_cache.h
common/threading.h
common/timing.h
common/wrapped_pool.h
core/core.cpp
core/core.h
core/crash_handler.h
core/remote_access.cpp
core/remote_replay.cpp
core/replay_proxy.cpp
core/replay_proxy.h
core/resource_manager.cpp
core/resource_manager.h
core/socket_helpers.h
data/glsl/debuguniforms.h
data/glsl/texsample.h
data/hlsl/debugcbuffers.h
data/spv/debuguniforms.h
data/spv/texsample.h
data/version.h
hooks/hooks.cpp
hooks/hooks.h
maths/camera.cpp
maths/camera.h
maths/formatpacking.h
maths/half_convert.h
maths/matrix.cpp
maths/matrix.h
maths/quat.h
maths/vec.h
os/os_specific.cpp
os/os_specific.h
replay/app_api.cpp
replay/capture_options.cpp
replay/entry_points.cpp
replay/replay_driver.h
replay/replay_output.cpp
replay/replay_renderer.cpp
replay/replay_renderer.h
replay/type_helpers.cpp
replay/type_helpers.h
serialise/grisu2.cpp
serialise/serialiser.cpp
serialise/serialiser.h
serialise/string_utils.cpp
serialise/string_utils.h
serialise/utf8printf.cpp
3rdparty/jpeg-compressor/jpgd.cpp
3rdparty/jpeg-compressor/jpgd.h
3rdparty/jpeg-compressor/jpge.cpp
3rdparty/jpeg-compressor/jpge.h
3rdparty/lz4/lz4.c
3rdparty/lz4/lz4.h
3rdparty/stb/stb_image.h
3rdparty/stb/stb_image_write.h
3rdparty/stb/stb_impl.c
3rdparty/stb/stb_truetype.h
3rdparty/tinyexr/tinyexr.cpp
3rdparty/tinyexr/tinyexr.h)
if(UNIX)
list(APPEND sources
data/embedded_files.h
os/linux/linux_callstack.cpp
os/linux/linux_hook.cpp
os/linux/linux_hook.h
os/linux/linux_network.cpp
os/linux/linux_process.cpp
os/linux/linux_stringio.cpp
os/linux/linux_threading.cpp
os/linux_specific.h)
# linux_libentry must be the last so that library_loaded is called after
# static objects are constructed.
list(APPEND sources os/linux/linux_libentry.cpp)
endif()
add_library(rdoc OBJECT ${sources})
target_compile_definitions(rdoc ${RDOC_DEFINITIONS})
target_include_directories(rdoc ${RDOC_INCLUDES})
set(data
data/glsl/arraymscopy.comp
data/glsl/blit.frag
data/glsl/blit.vert
data/glsl/checkerboard.frag
data/glsl/debuguniforms.h
data/glsl/generic.frag
data/glsl/generic.vert
data/glsl/histogram.comp
data/glsl/mesh.comp
data/glsl/mesh.frag
data/glsl/mesh.geom
data/glsl/mesh.vert
data/glsl/outline.frag
data/glsl/quadoverdraw.frag
data/glsl/texdisplay.frag
data/glsl/texsample.h
data/glsl/text.frag
data/glsl/text.vert
data/spv/blit.vert
data/spv/checkerboard.frag
data/spv/debuguniforms.h
data/spv/fixedcol.frag
data/spv/histogram.comp
data/spv/mesh.frag
data/spv/mesh.geom
data/spv/mesh.vert
data/spv/minmaxresult.comp
data/spv/minmaxtile.comp
data/spv/outline.frag
data/spv/quadresolve.frag
data/spv/quadwrite.frag
data/spv/texdisplay.frag
data/spv/texsample.h
data/spv/text.frag
data/spv/text.vert
data/sourcecodepro.ttf)
set(data_objects)
if(UNIX)
# this is fragile...
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
set(bfdarch "i386")
set(bfdtarget "elf64-x86-64")
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "i686")
set(bfdarch "i386")
set(bfdtarget "elf32-i386")
else()
message(FATAL_ERROR "Unknown target architecture")
endif()
set(data_command ${CMAKE_OBJCOPY} -I binary -O ${bfdtarget} -B ${bfdarch})
foreach(res ${data})
# strip "data/"
string(SUBSTRING ${res} 5 -1 in)
set(working_dir ${CMAKE_CURRENT_SOURCE_DIR}/data)
set(out ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/data.obj/${in}.o)
get_filename_component(out_dir ${out} DIRECTORY)
add_custom_command(OUTPUT ${out}
COMMAND ${CMAKE_COMMAND} -E make_directory ${out_dir}
COMMAND ${data_command} ${in} ${out}
WORKING_DIRECTORY ${working_dir}
DEPENDS ${res})
list(APPEND data_objects ${out})
endforeach()
endif()
set(renderdoc_objects)
if(ENABLE_GL)
add_subdirectory(driver/gl)
list(APPEND renderdoc_objects $<TARGET_OBJECTS:rdoc_gl>)
endif()
if(ENABLE_VULKAN)
add_subdirectory(driver/vulkan)
list(APPEND renderdoc_objects $<TARGET_OBJECTS:rdoc_vulkan>)
endif()
if(ENABLE_GL OR ENABLE_VULKAN)
add_subdirectory(driver/shaders/spirv)
list(APPEND renderdoc_objects $<TARGET_OBJECTS:rdoc_spirv>)
endif()
# rdoc must be after its drivers because of linux_libentry.cpp
list(APPEND renderdoc_objects
$<TARGET_OBJECTS:rdoc>
${data_objects})
add_library(renderdoc SHARED ${renderdoc_objects})
target_compile_definitions(renderdoc ${RDOC_DEFINITIONS})
target_include_directories(renderdoc ${RDOC_INCLUDES})
target_link_libraries(renderdoc ${RDOC_LIBRARIES})
-151
View File
@@ -1,151 +0,0 @@
CC=gcc
CPP=g++
COMMIT=`sh ../calc_hash.sh`
MACROS=-DLINUX \
-DRENDERDOC_PLATFORM=linux \
-DRENDERDOC_EXPORTS \
-DGIT_COMMIT_HASH="\"$(COMMIT)\""
CFLAGS=-c -Wall -Werror -Wno-unused -Wno-unknown-pragmas -fPIC $(MACROS) -I. -I3rdparty/
CPPFLAGS=-std=c++11 -g -Wno-reorder -fvisibility=hidden -fvisibility-inlines-hidden
LDFLAGS=-lpthread -lrt -shared -ldl -lX11 -lxcb-keysyms
LIBS=driver/gl/rdoc_gl.a driver/vulkan/rdoc_vulkan.a driver/shaders/spirv/rdoc_spirv.a
OBJDIR=.obj
OBJECTS=replay/replay_output.o \
replay/replay_renderer.o \
replay/entry_points.o \
replay/type_helpers.o \
replay/app_api.o \
replay/capture_options.o \
hooks/hooks.o \
serialise/serialiser.o \
serialise/grisu2.o \
serialise/utf8printf.o \
serialise/string_utils.o \
common/common.o \
common/dds_readwrite.o \
core/remote_access.o \
core/replay_proxy.o \
core/remote_replay.o \
core/resource_manager.o \
core/core.o \
maths/camera.o \
maths/matrix.o \
os/os_specific.o \
3rdparty/jpeg-compressor/jpgd.o \
3rdparty/jpeg-compressor/jpge.o \
3rdparty/lz4/lz4.o \
3rdparty/stb/stb_impl.o \
3rdparty/tinyexr/tinyexr.o \
os/linux/linux_callstack.o \
os/linux/linux_hook.o \
os/linux/linux_network.o \
os/linux/linux_process.o \
os/linux/linux_stringio.o \
os/linux/linux_threading.o \
os/linux/linux_libentry.o
# linux_libentry must be the last object file
DATA=data/glsl/debuguniforms.ho \
data/glsl/texsample.ho \
data/glsl/blit.frago \
data/glsl/blit.verto \
data/glsl/texdisplay.frago \
data/glsl/checkerboard.frago \
data/glsl/generic.frago \
data/glsl/generic.verto \
data/glsl/mesh.verto \
data/glsl/mesh.frago \
data/glsl/mesh.geomo \
data/glsl/mesh.compo \
data/glsl/text.verto \
data/glsl/text.frago \
data/glsl/quadoverdraw.frago \
data/glsl/histogram.compo \
data/glsl/arraymscopy.compo \
data/glsl/outline.frago \
data/spv/blit.verto \
data/spv/checkerboard.frago \
data/spv/texdisplay.frago \
data/spv/text.verto \
data/spv/text.frago \
data/spv/fixedcol.frago \
data/spv/mesh.verto \
data/spv/mesh.geomo \
data/spv/mesh.frago \
data/spv/histogram.compo \
data/spv/minmaxtile.compo \
data/spv/minmaxresult.compo \
data/spv/outline.frago \
data/spv/debuguniforms.ho \
data/spv/texsample.ho \
data/spv/quadwrite.frago \
data/spv/quadresolve.frago \
data/sourcecodepro.ttfo
.PHONY: all
all: librenderdoc.so
$(OBJDIR)/%.o: %.cpp
@mkdir -p $$(dirname $@)
$(CPP) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
@$(CPP) $(CFLAGS) $(CPPFLAGS) -MM -MT $(OBJDIR)/$*.o $< > $(OBJDIR)/$*.d
$(OBJDIR)/%.o: %.c
@mkdir -p $$(dirname $@)
$(CC) $(CFLAGS) -c -o $@ $<
@$(CC) $(CFLAGS) -MM -MT $(OBJDIR)/$*.o $< > $(OBJDIR)/$*.d
# objcopy needs to be run in with paths in current directory
# to produce the right symbol names
OBJGEN = \
mkdir -p $$(dirname $@); \
cd data/; \
objcopy --input binary --output elf64-x86-64 --binary-architecture i386 $$(echo $< | sed -e '{s/data\///g}') $$(basename $@); \
cd - > /dev/null 2>&1; \
mv data/$$(basename $@) $@;
$(OBJDIR)/%.verto: %.vert
@echo Object building $@
@$(OBJGEN)
$(OBJDIR)/%.frago: %.frag
@echo Object building $@
@$(OBJGEN)
$(OBJDIR)/%.geomo: %.geom
@echo Object building $@
@$(OBJGEN)
$(OBJDIR)/%.compo: %.comp
@echo Object building $@
@$(OBJGEN)
$(OBJDIR)/%.ttfo: %.ttf
@echo Object building $@
@$(OBJGEN)
$(OBJDIR)/%.ho: %.h
@echo Object building $@
@$(OBJGEN)
OBJDIR_OBJECTS=$(addprefix $(OBJDIR)/, $(OBJECTS))
OBJDIR_DATA=$(addprefix $(OBJDIR)/, $(DATA))
-include $(OBJDIR_OBJECTS:.o=.d)
driver/gl/rdoc_gl.a: force_look
cd driver/gl && $(MAKE) rdoc_gl.a
driver/vulkan/rdoc_vulkan.a: force_look
cd driver/vulkan && $(MAKE) rdoc_vulkan.a
driver/shaders/spirv/rdoc_spirv.a: force_look
cd driver/shaders/spirv && $(MAKE) rdoc_spirv.a
force_look:
true
librenderdoc.so: $(OBJDIR_OBJECTS) $(OBJDIR_DATA) $(LIBS)
$(CPP) -o librenderdoc.so $(OBJDIR_DATA) -Wl,--whole-archive $(LIBS) -Wl,--no-whole-archive $(OBJDIR_OBJECTS) $(LDFLAGS)
.PHONY: clean
clean:
rm -rf librenderdoc.so $(OBJDIR)
cd driver/gl && $(MAKE) clean
cd driver/vulkan && $(MAKE) clean
cd driver/shaders/spirv && $(MAKE) clean
+46
View File
@@ -0,0 +1,46 @@
set(sources
gl_common.cpp
gl_common.h
gl_counters.cpp
gl_debug.cpp
gl_driver.cpp
gl_driver.h
gl_enum.h
gl_hookset_defs.h
gl_hookset.h
gl_manager.cpp
gl_manager.h
gl_renderstate.cpp
gl_renderstate.h
gl_replay.cpp
gl_replay.h
gl_resources.cpp
gl_resources.h
gl_shader_refl.cpp
gl_shader_refl.h
official/glcorearb.h
official/glext.h
official/glxext.h
official/wglext.h
wrappers/gl_buffer_funcs.cpp
wrappers/gl_debug_funcs.cpp
wrappers/gl_draw_funcs.cpp
wrappers/gl_emulated.cpp
wrappers/gl_framebuffer_funcs.cpp
wrappers/gl_get_funcs.cpp
wrappers/gl_query_funcs.cpp
wrappers/gl_sampler_funcs.cpp
wrappers/gl_shader_funcs.cpp
wrappers/gl_state_funcs.cpp
wrappers/gl_texture_funcs.cpp
wrappers/gl_uniform_funcs.cpp)
if(UNIX)
list(APPEND sources
gl_replay_linux.cpp
gl_hooks_linux.cpp)
endif()
add_library(rdoc_gl OBJECT ${sources})
target_compile_definitions(rdoc_gl ${RDOC_DEFINITIONS})
target_include_directories(rdoc_gl ${RDOC_INCLUDES})
-58
View File
@@ -1,58 +0,0 @@
CC=gcc
CPP=g++
COMMIT=`sh ../../../calc_hash.sh`
MACROS=-DLINUX \
-DRENDERDOC_PLATFORM=linux \
-DRENDERDOC_EXPORTS \
-DGIT_COMMIT_HASH="\"$(COMMIT)\""
CFLAGS=-c -Wall -Werror -Wno-unused -Wno-unknown-pragmas -fPIC $(MACROS) -I../../ -I../../3rdparty/
CPPFLAGS=-std=c++11 -g -Wno-reorder -fvisibility=hidden -fvisibility-inlines-hidden
LDFLAGS=-lpthread -lrt -shared -ldl -lX11
OBJDIR=.obj
OBJECTS=gl_common.o \
gl_driver.o \
gl_manager.o \
gl_debug.o \
gl_counters.o \
gl_replay.o \
gl_replay_linux.o \
gl_hooks_linux.o \
gl_shader_refl.o \
gl_resources.o \
gl_renderstate.o \
wrappers/gl_buffer_funcs.o \
wrappers/gl_debug_funcs.o \
wrappers/gl_draw_funcs.o \
wrappers/gl_emulated.o \
wrappers/gl_framebuffer_funcs.o \
wrappers/gl_get_funcs.o \
wrappers/gl_query_funcs.o \
wrappers/gl_sampler_funcs.o \
wrappers/gl_shader_funcs.o \
wrappers/gl_state_funcs.o \
wrappers/gl_texture_funcs.o \
wrappers/gl_uniform_funcs.o
.PHONY: all
all: rdoc_gl.a
$(OBJDIR)/%.o: %.cpp
@mkdir -p $$(dirname $@)
$(CPP) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
@$(CPP) $(CFLAGS) $(CPPFLAGS) -MM -MT $(OBJDIR)/$*.o $< > $(OBJDIR)/$*.d
$(OBJDIR)/%.o: %.c
@mkdir -p $$(dirname $@)
$(CC) $(CFLAGS) -c -o $@ $<
@$(CC) $(CFLAGS) -MM -MT $(OBJDIR)/$*.o $< > $(OBJDIR)/$*.d
OBJDIR_OBJECTS=$(addprefix $(OBJDIR)/, $(OBJECTS))
-include $(OBJDIR_OBJECTS:.o=.d)
rdoc_gl.a: $(OBJDIR_OBJECTS)
ar rcs rdoc_gl.a $(OBJDIR_OBJECTS)
.PHONY: clean
clean:
rm -rf rdoc_gl.a $(OBJDIR)
@@ -0,0 +1,81 @@
set(glslang_dir ${RDOC_SOURCE_DIR}/3rdparty/glslang)
set(glslang_sources
${glslang_dir}/OGLCompilersDLL/InitializeDll.cpp
${glslang_dir}/OGLCompilersDLL/InitializeDll.h
${glslang_dir}/SPIRV/GlslangToSpv.cpp
${glslang_dir}/SPIRV/GlslangToSpv.h
${glslang_dir}/SPIRV/GLSL.std.450.h
${glslang_dir}/SPIRV/InReadableOrder.cpp
${glslang_dir}/SPIRV/SpvBuilder.cpp
${glslang_dir}/SPIRV/SpvBuilder.h
${glslang_dir}/SPIRV/spvIR.h
${glslang_dir}/glslang/GenericCodeGen/CodeGen.cpp
${glslang_dir}/glslang/GenericCodeGen/Link.cpp
${glslang_dir}/glslang/Include/arrays.h
${glslang_dir}/glslang/Include/BaseTypes.h
${glslang_dir}/glslang/Include/Common.h
${glslang_dir}/glslang/Include/ConstantUnion.h
${glslang_dir}/glslang/Include/InfoSink.h
${glslang_dir}/glslang/Include/InitializeGlobals.h
${glslang_dir}/glslang/Include/intermediate.h
${glslang_dir}/glslang/Include/PoolAlloc.h
${glslang_dir}/glslang/Include/ResourceLimits.h
${glslang_dir}/glslang/Include/revision.h
${glslang_dir}/glslang/Include/ShHandle.h
${glslang_dir}/glslang/Include/Types.h
${glslang_dir}/glslang/MachineIndependent/Constant.cpp
${glslang_dir}/glslang/MachineIndependent/glslang_tab.cpp
${glslang_dir}/glslang/MachineIndependent/glslang_tab.cpp.h
${glslang_dir}/glslang/MachineIndependent/gl_types.h
${glslang_dir}/glslang/MachineIndependent/InfoSink.cpp
${glslang_dir}/glslang/MachineIndependent/Initialize.cpp
${glslang_dir}/glslang/MachineIndependent/Initialize.h
${glslang_dir}/glslang/MachineIndependent/Intermediate.cpp
${glslang_dir}/glslang/MachineIndependent/intermOut.cpp
${glslang_dir}/glslang/MachineIndependent/IntermTraverse.cpp
${glslang_dir}/glslang/MachineIndependent/limits.cpp
${glslang_dir}/glslang/MachineIndependent/linkValidate.cpp
${glslang_dir}/glslang/MachineIndependent/localintermediate.h
${glslang_dir}/glslang/MachineIndependent/parseConst.cpp
${glslang_dir}/glslang/MachineIndependent/ParseHelper.cpp
${glslang_dir}/glslang/MachineIndependent/ParseHelper.h
${glslang_dir}/glslang/MachineIndependent/PoolAlloc.cpp
${glslang_dir}/glslang/MachineIndependent/preprocessor/PpAtom.cpp
${glslang_dir}/glslang/MachineIndependent/preprocessor/PpContext.cpp
${glslang_dir}/glslang/MachineIndependent/preprocessor/PpContext.h
${glslang_dir}/glslang/MachineIndependent/preprocessor/Pp.cpp
${glslang_dir}/glslang/MachineIndependent/preprocessor/PpMemory.cpp
${glslang_dir}/glslang/MachineIndependent/preprocessor/PpScanner.cpp
${glslang_dir}/glslang/MachineIndependent/preprocessor/PpSymbols.cpp
${glslang_dir}/glslang/MachineIndependent/preprocessor/PpTokens.cpp
${glslang_dir}/glslang/MachineIndependent/preprocessor/PpTokens.h
${glslang_dir}/glslang/MachineIndependent/reflection.cpp
${glslang_dir}/glslang/MachineIndependent/reflection.h
${glslang_dir}/glslang/MachineIndependent/RemoveTree.cpp
${glslang_dir}/glslang/MachineIndependent/RemoveTree.h
${glslang_dir}/glslang/MachineIndependent/ScanContext.h
${glslang_dir}/glslang/MachineIndependent/Scan.cpp
${glslang_dir}/glslang/MachineIndependent/Scan.h
${glslang_dir}/glslang/MachineIndependent/ShaderLang.cpp
${glslang_dir}/glslang/MachineIndependent/SymbolTable.cpp
${glslang_dir}/glslang/MachineIndependent/SymbolTable.h
${glslang_dir}/glslang/MachineIndependent/Versions.cpp
${glslang_dir}/glslang/MachineIndependent/Versions.h
${glslang_dir}/glslang/OSDependent/osinclude.h
${glslang_dir}/glslang/Public/ShaderLang.h)
if(UNIX)
list(APPEND glslang_sources
${glslang_dir}/glslang/OSDependent/Unix/ossource.cpp)
endif()
set(sources
spirv_common.cpp
spirv_common.h
spirv_compile.cpp
spirv_disassemble.cpp
${glslang_sources})
add_library(rdoc_spirv OBJECT ${sources})
target_compile_definitions(rdoc_spirv ${RDOC_DEFINITIONS})
target_include_directories(rdoc_spirv ${RDOC_INCLUDES})
-76
View File
@@ -1,76 +0,0 @@
CC=gcc
CPP=g++
COMMIT=`sh ../../../../calc_hash.sh`
MACROS=-DLINUX \
-DRENDERDOC_PLATFORM=linux \
-DRENDERDOC_EXPORTS \
-DGLSLANG_OSINCLUDE_UNIX \
-DGIT_COMMIT_HASH="\"$(COMMIT)\""
CFLAGS=-c -Wall -Werror -Wno-unused -Wno-unknown-pragmas -fPIC $(MACROS) -I../../../ -I../../../3rdparty/
CPPFLAGS=-std=c++11 -g -Wno-reorder -fvisibility=hidden -fvisibility-inlines-hidden
LDFLAGS=-lpthread -lrt -shared -ldl -lX11
OBJDIR=.obj
VPATH=../../../3rdparty
# VPATH above takes care of finding the glslang files within the 3rdparty directory
OBJECTS=spirv_common.o \
spirv_compile.o \
spirv_disassemble.o \
glslang/OGLCompilersDLL/InitializeDll.o \
glslang/SPIRV/GlslangToSpv.o \
glslang/SPIRV/InReadableOrder.o \
glslang/SPIRV/SpvBuilder.o \
glslang/glslang/GenericCodeGen/CodeGen.o \
glslang/glslang/GenericCodeGen/Link.o \
glslang/glslang/MachineIndependent/Constant.o \
glslang/glslang/MachineIndependent/glslang_tab.o \
glslang/glslang/MachineIndependent/InfoSink.o \
glslang/glslang/MachineIndependent/Initialize.o \
glslang/glslang/MachineIndependent/Intermediate.o \
glslang/glslang/MachineIndependent/intermOut.o \
glslang/glslang/MachineIndependent/IntermTraverse.o \
glslang/glslang/MachineIndependent/limits.o \
glslang/glslang/MachineIndependent/linkValidate.o \
glslang/glslang/MachineIndependent/parseConst.o \
glslang/glslang/MachineIndependent/ParseHelper.o \
glslang/glslang/MachineIndependent/PoolAlloc.o \
glslang/glslang/MachineIndependent/reflection.o \
glslang/glslang/MachineIndependent/RemoveTree.o \
glslang/glslang/MachineIndependent/Scan.o \
glslang/glslang/MachineIndependent/ShaderLang.o \
glslang/glslang/MachineIndependent/SymbolTable.o \
glslang/glslang/MachineIndependent/Versions.o \
glslang/glslang/MachineIndependent/preprocessor/Pp.o \
glslang/glslang/MachineIndependent/preprocessor/PpAtom.o \
glslang/glslang/MachineIndependent/preprocessor/PpContext.o \
glslang/glslang/MachineIndependent/preprocessor/PpMemory.o \
glslang/glslang/MachineIndependent/preprocessor/PpScanner.o \
glslang/glslang/MachineIndependent/preprocessor/PpSymbols.o \
glslang/glslang/MachineIndependent/preprocessor/PpTokens.o \
glslang/glslang/OSDependent/Unix/ossource.o
.PHONY: all
all: rdoc_spirv.a
$(OBJDIR)/%.o: %.cpp
@mkdir -p $$(dirname $@)
$(CPP) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
@$(CPP) $(CFLAGS) $(CPPFLAGS) -MM -MT $(OBJDIR)/$*.o $< > $(OBJDIR)/$*.d
$(OBJDIR)/%.o: %.c
@mkdir -p $$(dirname $@)
$(CC) $(CFLAGS) -c -o $@ $<
@$(CC) $(CFLAGS) -MM -MT $(OBJDIR)/$*.o $< > $(OBJDIR)/$*.d
OBJDIR_OBJECTS=$(addprefix $(OBJDIR)/, $(OBJECTS))
-include $(OBJDIR_OBJECTS:.o=.d)
rdoc_spirv.a: $(OBJDIR_OBJECTS)
ar rcs rdoc_spirv.a $(OBJDIR_OBJECTS)
.PHONY: clean
clean:
rm -rf rdoc_spirv.a $(OBJDIR)
+61
View File
@@ -0,0 +1,61 @@
set(sources
vk_common.cpp
vk_common.h
vk_core.cpp
vk_core.h
vk_counters.cpp
vk_debug.cpp
vk_debug.h
vk_dispatchtables.cpp
vk_dispatchtables.h
vk_hookset_defs.h
vk_info.cpp
vk_info.h
vk_initstate.cpp
vk_manager.cpp
vk_manager.h
vk_memory.cpp
vk_replay.cpp
vk_replay.h
vk_resources.cpp
vk_resources.h
vk_state.cpp
vk_state.h
vk_tracelayer.cpp
official/vk_layer.h
official/vk_lunarg_debug_marker.h
official/vk_platform.h
official/vulkan.h
wrappers/vk_cmd_funcs.cpp
wrappers/vk_descriptor_funcs.cpp
wrappers/vk_device_funcs.cpp
wrappers/vk_draw_funcs.cpp
wrappers/vk_dynamic_funcs.cpp
wrappers/vk_get_funcs.cpp
wrappers/vk_misc_funcs.cpp
wrappers/vk_queue_funcs.cpp
wrappers/vk_resource_funcs.cpp
wrappers/vk_shader_funcs.cpp
wrappers/vk_sync_funcs.cpp
wrappers/vk_wsi_funcs.cpp)
set(definitions ${RDOC_DEFINITIONS})
if(UNIX)
list(APPEND sources vk_linux.cpp)
list(APPEND definitions
PRIVATE -DVK_USE_PLATFORM_XCB_KHR
PRIVATE -DVK_USE_PLATFORM_XLIB_KHR)
set(json_in ${CMAKE_CURRENT_SOURCE_DIR}/renderdoc.json)
set(json_out ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/renderdoc_capture.json)
add_custom_command(OUTPUT ${json_out}
COMMAND sed '{s%...renderdoc.dll%./librenderdoc.so%}' < ${json_in} > ${json_out}
DEPENDS ${json_in})
add_custom_target(generate-json ALL DEPENDS ${json_out})
endif()
add_library(rdoc_vulkan OBJECT ${sources})
target_compile_definitions(rdoc_vulkan ${definitions})
target_include_directories(rdoc_vulkan ${RDOC_INCLUDES})
-65
View File
@@ -1,65 +0,0 @@
CC=gcc
CPP=g++
COMMIT=`sh ../../../calc_hash.sh`
MACROS=-DLINUX \
-DRENDERDOC_PLATFORM=linux \
-DRENDERDOC_EXPORTS \
-DVK_USE_PLATFORM_XCB_KHR \
-DVK_USE_PLATFORM_XLIB_KHR \
-DGIT_COMMIT_HASH="\"$(COMMIT)\""
CFLAGS=-c -Wall -Werror -Wno-unused -Wno-unknown-pragmas -fPIC $(MACROS) -I../../ -I../../3rdparty/
CPPFLAGS=-std=c++11 -g -Wno-reorder -fvisibility=hidden -fvisibility-inlines-hidden
OBJDIR=.obj
OBJECTS=vk_dispatchtables.o \
vk_tracelayer.o \
vk_core.o \
vk_initstate.o \
vk_memory.o \
vk_common.o \
vk_manager.o \
vk_resources.o \
vk_debug.o \
vk_replay.o \
vk_counters.o \
vk_info.o \
vk_state.o \
vk_linux.o \
wrappers/vk_cmd_funcs.o \
wrappers/vk_dynamic_funcs.o \
wrappers/vk_descriptor_funcs.o \
wrappers/vk_device_funcs.o \
wrappers/vk_draw_funcs.o \
wrappers/vk_get_funcs.o \
wrappers/vk_misc_funcs.o \
wrappers/vk_queue_funcs.o \
wrappers/vk_sync_funcs.o \
wrappers/vk_resource_funcs.o \
wrappers/vk_shader_funcs.o \
wrappers/vk_wsi_funcs.o
.PHONY: all
all: rdoc_vulkan.a
$(OBJDIR)/%.o: %.cpp
@mkdir -p $$(dirname $@)
$(CPP) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
@$(CPP) $(CFLAGS) $(CPPFLAGS) -MM -MT $(OBJDIR)/$*.o $< > $(OBJDIR)/$*.d
$(OBJDIR)/%.o: %.c
@mkdir -p $$(dirname $@)
$(CC) $(CFLAGS) -c -o $@ $<
@$(CC) $(CFLAGS) -MM -MT $(OBJDIR)/$*.o $< > $(OBJDIR)/$*.d
OBJDIR_OBJECTS=$(addprefix $(OBJDIR)/, $(OBJECTS))
-include $(OBJDIR_OBJECTS:.o=.d)
renderdoc_capture.json: renderdoc.json
sed '{s%...renderdoc.dll%./librenderdoc.so%}' < renderdoc.json > renderdoc_capture.json
rdoc_vulkan.a: $(OBJDIR_OBJECTS) renderdoc_capture.json
ar rcs rdoc_vulkan.a $(OBJDIR_OBJECTS)
.PHONY: clean
clean:
rm -rf rdoc_vulkan.a $(OBJDIR)
+20
View File
@@ -0,0 +1,20 @@
set(sources renderdoccmd.cpp)
set(definitions)
set(includes PRIVATE ${CMAKE_SOURCE_DIR}/renderdoc/api)
set(libraries PRIVATE renderdoc)
if(UNIX)
list(APPEND sources renderdoccmd_linux.cpp)
list(APPEND definitions PRIVATE -DLINUX)
find_package(OpenGL REQUIRED)
list(APPEND includes PRIVATE ${OPENGL_INCLUDE_DIR})
list(APPEND libraries PRIVATE ${OPENGL_gl_LIBRARY})
list(APPEND libraries PRIVATE -lxcb)
endif()
add_executable(renderdoccmd ${sources})
target_compile_definitions(renderdoccmd ${definitions})
target_include_directories(renderdoccmd ${includes})
target_link_libraries(renderdoccmd ${libraries})
-36
View File
@@ -1,36 +0,0 @@
CC=gcc
CPP=g++
COMMIT=`sh ../calc_hash.sh`
MACROS=-DLINUX \
-DRENDERDOC_PLATFORM=linux \
-DGIT_COMMIT_HASH="\"$(COMMIT)\""
CFLAGS=-c -Wall -Werror -fPIC $(MACROS) -I../renderdoc/api/
CPPFLAGS=-std=c++11 -g -Wno-unused -Wno-unknown-pragmas -Wno-reorder
LDFLAGS=-L../renderdoc/ -lrenderdoc -lGL -lxcb -Wl,-rpath,'$$ORIGIN/'
OBJDIR=.obj
OBJECTS=renderdoccmd.o renderdoccmd_linux.o
.PHONY: all
all: bin/renderdoccmd
$(OBJDIR)/%.o: %.cpp
@mkdir -p $$(dirname $@)
$(CPP) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
@$(CPP) $(CFLAGS) $(CPPFLAGS) -MM -MT $(OBJDIR)/$*.o $*.cpp > $(OBJDIR)/$*.d
$(OBJDIR)/%.o: %.c
@mkdir -p $$(dirname $@)
$(CC) $(CFLAGS) -c -o $@ $<
@$(CC) $(CFLAGS) -MM -MT $(OBJDIR)/$*.o $*.c > $(OBJDIR)/$*.d
OBJDIR_OBJECTS=$(addprefix $(OBJDIR)/, $(OBJECTS))
-include $(OBJDIR_OBJECTS:.o=.d)
bin/renderdoccmd: $(OBJDIR_OBJECTS) ../renderdoc/librenderdoc.so
mkdir -p bin/
$(CPP) -o bin/renderdoccmd $(OBJDIR_OBJECTS) $(LDFLAGS)
.PHONY: clean
clean:
rm -rf bin/ $(OBJDIR)