-
-
Notifications
You must be signed in to change notification settings - Fork 49
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
148 lines (144 loc) · 8.57 KB
/
Copy pathCMakeLists.txt
File metadata and controls
148 lines (144 loc) · 8.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
if (EMSCRIPTEN)
add_custom_target(copy-emscripten-shell
COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_CURRENT_SOURCE_DIR}/emscripten ${CMAKE_BINARY_DIR}/emscripten
)
add_library(cute-emscripten-shell INTERFACE)
add_dependencies(cute-emscripten-shell copy-emscripten-shell)
target_link_options(cute-emscripten-shell INTERFACE --shell-file "${CMAKE_CURRENT_SOURCE_DIR}/emscripten/shell.html")
endif ()
function(add_sample TARGET_NAME SOURCE_FILE)
add_executable(${TARGET_NAME} ${SOURCE_FILE})
target_link_libraries(${TARGET_NAME} PRIVATE cute)
if (APPLE)
set_target_properties(${TARGET_NAME} PROPERTIES
MACOSX_BUNDLE_GUI_IDENTIFIER "com.cuteframework.${TARGET_NAME}"
MACOSX_BUNDLE_BUNDLE_VERSION "${PROJECT_VERSION}"
MACOSX_BUNDLE_SHORT_VERSION_STRING "${PROJECT_VERSION}"
)
endif()
set_target_properties(${TARGET_NAME} PROPERTIES
FOLDER "samples"
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}
)
if (EMSCRIPTEN)
set_target_properties(${TARGET_NAME} PROPERTIES OUTPUT_NAME "${TARGET_NAME}" SUFFIX ".html")
target_compile_options(${TARGET_NAME} PRIVATE -O1 -fno-rtti -fno-exceptions -gsplit-dwarf)
target_link_options(${TARGET_NAME} PRIVATE -o ${TARGET_NAME}.html -sASYNCIFY=1 -O1 -gseparate-dwarf)
target_link_libraries(${TARGET_NAME} PRIVATE cute-emscripten-shell)
endif()
endfunction()
add_sample(easysprite easy_sprite.c)
add_sample(basicserialization basic_serialization.c)
add_sample(imgui imgui.c)
add_sample(textdrawing text_drawing.cpp)
add_sample(basicsprite basic_sprite.cpp)
add_sample(basicshapes basic_shapes.cpp)
add_sample(custom_shapes custom_shapes.cpp)
add_sample(mandala mandala.cpp)
add_sample(vector_text vector_text.cpp)
add_sample(blend_modes blend_modes.cpp)
add_sample(vector_paths vector_paths.cpp)
add_sample(draw_lists draw_lists.cpp)
add_sample(draw3d draw3d.cpp)
add_sample(pixel_3d pixel_3d.c)
add_sample(skinning skinning.c)
add_sample(billboards billboards.c)
add_sample(shapes3d shapes3d.c)
add_sample(lines3d lines3d.c)
add_sample(effects3d effects3d.c)
add_sample(point_light point_light.c)
add_sample(transparency3d transparency3d.c)
add_sample(obj_loading obj_loading.c)
add_sample(model3d model3d.c)
add_sample(fireflies fireflies.c)
target_include_directories(mandala PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../src) # internal/cute_draw_internal.h for renderer toggles/stats.
add_sample(tile_perf tile_perf.cpp)
target_include_directories(tile_perf PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../src) # internal/cute_draw_internal.h for the tiled toggle.
add_sample(windowresizing window_resizing.cpp)
add_sample(canvas_modes canvas_modes.c)
add_sample(basicinput basic_input.c)
add_sample(windowevents window_events.c)
add_sample(window window.cpp)
add_sample(scratch scratch.cpp)
if (NOT EMSCRIPTEN)
add_sample(https https.c)
endif()
add_sample(spaceshooter spaceshooter.cpp)
add_sample(draw_to_texture draw_to_texture.c)
add_sample(hello_triangle hello_triangle.c)
add_sample(basicinstancing basic_instancing.c)
add_sample(basicindexedrendering basic_indexed_rendering.c)
add_sample(waves waves.cpp)
add_sample(shallow_water shallow_water.cpp)
add_sample(noise noise.c)
add_sample(fetch_image fetch_image.cpp)
add_sample(metaballs metaballs.cpp)
add_sample(timestep timestep.cpp)
add_sample(joypad joypad.c)
add_sample(outline_stencil outline_stencil.cpp)
add_sample(recolor recolor.cpp)
add_sample(rainbow_liquid rainbow_liquid.cpp)
add_sample(import_spritesheet import_spritesheet.cpp)
add_sample(stencil_pie_chart stencil_pie_chart.c)
add_sample(platformer platformer.cpp)
add_sample(polygon polygon.cpp)
add_sample(scissor scissor.c)
add_sample(ime ime.c)
add_sample(pivot pivot.cpp)
add_sample(fluid_sim fluid_sim.cpp)
add_sample(font_debug font_debug.cpp)
add_sample(hidpi hidpi.c)
# Disabled on Windows -- MSVC crashes for internal reasons when compiling these.
if(NOT WIN32)
add_sample(clay clay.c)
add_sample(clay_ui_animations clay_ui_animations.c)
endif()
add_sample(9_slice 9_slice.c)
add_sample(basic_camera basic_camera.c)
add_sample(imgui_texture imgui_texture.c)
add_sample(input_binding input_binding.c)
add_sample(compute compute.c)
add_sample(galaxy galaxy.c)
add_sample(gpu_particles gpu_particles.c)
add_sample(physics physics.c)
add_sample(physics3d physics3d.c)
add_sample(hrc hrc.c)
add_sample(hrc_gi hrc_gi.c)
add_sample(canvas_readback canvas_readback.c)
add_sample(glitch glitch.cpp)
add_sample(customsprite custom_sprite.c)
add_sample(sound_pan sound_pan.c)
# Ensure that sample data is included in web build
if (EMSCRIPTEN)
target_link_options(waves PRIVATE --preload-file "${CMAKE_CURRENT_SOURCE_DIR}/waves_data@/waves_data")
target_link_options(spaceshooter PRIVATE --preload-file "${CMAKE_CURRENT_SOURCE_DIR}/spaceshooter_data@/spaceshooter_data")
target_link_options(fluid_sim PRIVATE --preload-file "${CMAKE_CURRENT_SOURCE_DIR}/fluid_sim_data@/fluid_sim_data")
target_link_options(shallow_water PRIVATE --preload-file "${CMAKE_CURRENT_SOURCE_DIR}/shallow_water_data@/shallow_water_data")
target_link_options(import_spritesheet PRIVATE --preload-file "${CMAKE_CURRENT_SOURCE_DIR}/import_spritesheet_data@/import_spritesheet_data")
target_link_options(pivot PRIVATE --preload-file "${CMAKE_CURRENT_SOURCE_DIR}/pivot_data@/pivot_data")
target_link_options(9_slice PRIVATE --preload-file "${CMAKE_CURRENT_SOURCE_DIR}/9_slice_data@/9_slice_data")
target_link_options(customsprite PRIVATE --preload-file "${CMAKE_CURRENT_SOURCE_DIR}/custom_sprite_data@/custom_sprite_data")
# The HRC samples load every compute shader from their data dir at startup and
# exit(1) if one is missing, so the web build needs these preloaded or the
# samples die before their first frame.
target_link_options(hrc PRIVATE --preload-file "${CMAKE_CURRENT_SOURCE_DIR}/hrc_data@/hrc_data")
target_link_options(hrc_gi PRIVATE --preload-file "${CMAKE_CURRENT_SOURCE_DIR}/hrc_gi_data@/hrc_gi_data")
target_link_options(pixel_3d PRIVATE --preload-file "${CMAKE_CURRENT_SOURCE_DIR}/pixel_3d_data@/pixel_3d_data")
target_link_options(obj_loading PRIVATE --preload-file "${CMAKE_CURRENT_SOURCE_DIR}/obj_loading_data@/obj_loading_data")
target_link_options(model3d PRIVATE --preload-file "${CMAKE_CURRENT_SOURCE_DIR}/model3d_data@/model3d_data")
endif ()
# Copy over some folders for certain samples.
add_custom_command(TARGET spaceshooter PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/spaceshooter_data $<TARGET_FILE_DIR:spaceshooter>/spaceshooter_data)
add_custom_command(TARGET waves PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/waves_data $<TARGET_FILE_DIR:waves>/waves_data)
add_custom_command(TARGET fluid_sim PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/fluid_sim_data $<TARGET_FILE_DIR:fluid_sim>/fluid_sim_data)
add_custom_command(TARGET shallow_water PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/shallow_water_data $<TARGET_FILE_DIR:shallow_water>/shallow_water_data)
add_custom_command(TARGET import_spritesheet PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/import_spritesheet_data $<TARGET_FILE_DIR:import_spritesheet>/import_spritesheet_data)
add_custom_command(TARGET pivot PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/pivot_data $<TARGET_FILE_DIR:pivot>/pivot_data)
add_custom_command(TARGET scratch PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/../assets/CF_Logo_Pixel.png $<TARGET_FILE_DIR:scratch>/app_icon.png)
add_custom_command(TARGET 9_slice PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/9_slice_data $<TARGET_FILE_DIR:9_slice>/9_slice_data)
add_custom_command(TARGET hrc PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/hrc_data $<TARGET_FILE_DIR:hrc>/hrc_data)
add_custom_command(TARGET hrc_gi PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/hrc_gi_data $<TARGET_FILE_DIR:hrc_gi>/hrc_gi_data)
add_custom_command(TARGET pixel_3d PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/pixel_3d_data $<TARGET_FILE_DIR:pixel_3d>/pixel_3d_data)
add_custom_command(TARGET obj_loading PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/obj_loading_data $<TARGET_FILE_DIR:obj_loading>/obj_loading_data)
add_custom_command(TARGET model3d PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/model3d_data $<TARGET_FILE_DIR:model3d>/model3d_data)
add_custom_command(TARGET customsprite PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/custom_sprite_data $<TARGET_FILE_DIR:customsprite>/custom_sprite_data)