Home | History | Annotate | Download | only in smoke
      1 set (GLMINC_PREFIX ${PROJECT_SOURCE_DIR}/libs)
      2 
      3 macro(generate_dispatch_table out)
      4     add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/${out}
      5         COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/generate-dispatch-table.py ${CMAKE_CURRENT_SOURCE_DIR}/${out}
      6         DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/generate-dispatch-table.py
      7         )
      8 endmacro()
      9 
     10 macro(glsl_to_spirv src)
     11     add_custom_command(OUTPUT ${src}.h
     12         COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/glsl-to-spirv ${CMAKE_CURRENT_SOURCE_DIR}/${src} ${src}.h ${GLSLANG_VALIDATOR}
     13         DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/glsl-to-spirv ${CMAKE_CURRENT_SOURCE_DIR}/${src} ${GLSLANG_VALIDATOR}
     14         )
     15 endmacro()
     16 
     17 generate_dispatch_table(HelpersDispatchTable.h)
     18 generate_dispatch_table(HelpersDispatchTable.cpp)
     19 glsl_to_spirv(Smoke.frag)
     20 glsl_to_spirv(Smoke.vert)
     21 glsl_to_spirv(Smoke.push_constant.vert)
     22 
     23 set(sources
     24     Game.cpp
     25     Game.h
     26     Helpers.h
     27     HelpersDispatchTable.cpp
     28     HelpersDispatchTable.h
     29     Smoke.cpp
     30     Smoke.h
     31     Smoke.frag.h
     32     Smoke.vert.h
     33     Smoke.push_constant.vert.h
     34     Main.cpp
     35     Meshes.cpp
     36     Meshes.h
     37     Meshes.teapot.h
     38     Simulation.cpp
     39     Simulation.h
     40     Shell.cpp
     41     Shell.h
     42     )
     43 
     44 set(definitions
     45     PRIVATE -DVK_NO_PROTOTYPES
     46     PRIVATE -DGLM_FORCE_RADIANS)
     47 
     48 set(includes
     49     PRIVATE ${GLMINC_PREFIX}
     50     PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
     51 
     52 set(libraries PRIVATE ${CMAKE_THREAD_LIBS_INIT})
     53 
     54 if(TARGET vulkan)
     55     list(APPEND definitions PRIVATE -DUNINSTALLED_LOADER="$<TARGET_FILE:vulkan>")
     56 endif()
     57 
     58 if(WIN32)
     59     list(APPEND definitions PRIVATE -DVK_USE_PLATFORM_WIN32_KHR)
     60     list(APPEND definitions PRIVATE -DWIN32_LEAN_AND_MEAN)
     61 
     62     list(APPEND sources ShellWin32.cpp ShellWin32.h)
     63 else()
     64     list(APPEND libraries PRIVATE -ldl -lrt)
     65 
     66     if(BUILD_WSI_XCB_SUPPORT AND DEMOS_WSI_SELECTION STREQUAL "XCB")
     67         find_package(XCB REQUIRED)
     68 
     69         list(APPEND sources ShellXcb.cpp ShellXcb.h)
     70         list(APPEND definitions PRIVATE -DVK_USE_PLATFORM_XCB_KHR)
     71         list(APPEND includes PRIVATE ${XCB_INCLUDES})
     72         list(APPEND libraries PRIVATE ${XCB_LIBRARIES})
     73     elseif(BUILD_WSI_WAYLAND_SUPPORT AND DEMOS_WSI_SELECTION STREQUAL "WAYLAND")
     74         find_package(Wayland REQUIRED)
     75 
     76         list(APPEND sources ShellWayland.cpp ShellWayland.h)
     77         list(APPEND definitions PRIVATE -DVK_USE_PLATFORM_WAYLAND_KHR)
     78         list(APPEND includes PRIVATE ${WAYLAND_CLIENT_INCLUDE_DIR})
     79         list(APPEND libraries PRIVATE ${WAYLAND_CLIENT_LIBRARIES})
     80     endif()
     81 endif()
     82 
     83 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/..)
     84 
     85 add_executable(smoketest ${sources})
     86 target_compile_definitions(smoketest ${definitions})
     87 target_include_directories(smoketest ${includes})
     88 target_link_libraries(smoketest ${libraries})
     89 
     90 if(UNIX)
     91     if(INSTALL_LVL_FILES)
     92         install(TARGETS smoketest DESTINATION ${CMAKE_INSTALL_BINDIR})
     93     endif()
     94 endif()
     95