From b5eb00bdb1631efc433bb6915c01f1271ac3eaa1 Mon Sep 17 00:00:00 2001 From: Ben Doherty Date: Fri, 14 Dec 2018 14:03:35 -0800 Subject: [PATCH] Fix shaders compilation with VS (#641) --- CMakeLists.txt | 11 +++++------ shaders/CMakeLists.txt | 6 +----- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6ad3a4898e..5624486c14 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -288,19 +288,18 @@ function(get_resgen_vars ARCHIVE_DIR ARCHIVE_NAME) ${ARCHIVE_DIR}/${ARCHIVE_NAME}.apple.S ${ARCHIVE_DIR}/${ARCHIVE_NAME}.h ) - if (NOT WIN32) - set(ASM_ARCH_FLAG "-arch ${DIST_ARCH}") - endif() + set(ASM_ARCH_FLAG "-arch ${DIST_ARCH}") if (APPLE) set(ASM_SUFFIX ".apple") endif() - if (WEBGL) - set(RESGEN_HEADER "${ARCHIVE_DIR}/${ARCHIVE_NAME}.h" PARENT_SCOPE) + set(RESGEN_HEADER "${ARCHIVE_DIR}/${ARCHIVE_NAME}.h" PARENT_SCOPE) + # Visual Studio makes it difficult to use assembly without using MASM. MASM doesn't support + # the equivalent of .incbin, so on Windows we'll just tell resgen to output a C file. + if (WEBGL OR WIN32) set(RESGEN_OUTPUTS "${OUTPUTS};${ARCHIVE_DIR}/${ARCHIVE_NAME}.c" PARENT_SCOPE) set(RESGEN_FLAGS -cx ${ARCHIVE_DIR} -p ${ARCHIVE_NAME} PARENT_SCOPE) set(RESGEN_SOURCE "${ARCHIVE_DIR}/${ARCHIVE_NAME}.c" PARENT_SCOPE) else() - set(RESGEN_HEADER "${ARCHIVE_DIR}/${ARCHIVE_NAME}.h" PARENT_SCOPE) set(RESGEN_OUTPUTS "${OUTPUTS}" PARENT_SCOPE) set(RESGEN_FLAGS -x ${ARCHIVE_DIR} -p ${ARCHIVE_NAME} PARENT_SCOPE) set(RESGEN_SOURCE "${ARCHIVE_DIR}/${ARCHIVE_NAME}${ASM_SUFFIX}.S" PARENT_SCOPE) diff --git a/shaders/CMakeLists.txt b/shaders/CMakeLists.txt index 70fde07536..944a9f9972 100644 --- a/shaders/CMakeLists.txt +++ b/shaders/CMakeLists.txt @@ -64,12 +64,8 @@ if (DEFINED RESGEN_SOURCE_FLAGS) set_source_files_properties(${RESGEN_SOURCE} PROPERTIES COMPILE_FLAGS ${RESGEN_SOURCE_FLAGS}) endif() -# CMake fails to invoke ar on Windows unless there is at least one C/C++ file in the library. -set(DUMMY_SRC "${RESOURCE_DIR}/dummy.c") -add_custom_command(OUTPUT ${DUMMY_SRC} COMMAND echo "//" > ${DUMMY_SRC}) - # ================================================================================================== # Include and target definitions # ================================================================================================== -add_library(${TARGET} STATIC ${DUMMY_SRC} ${RESGEN_SOURCE}) +add_library(${TARGET} STATIC ${RESGEN_SOURCE}) target_include_directories(${TARGET} PUBLIC ${CMAKE_CURRENT_BINARY_DIR})