147 lines
3.9 KiB
CMake
147 lines
3.9 KiB
CMake
# gui libraries ---------------------------------------------------------------
|
|
set(IMGUI_PATH "lib/imgui")
|
|
file(GLOB IMGUI_SOURCES ${IMGUI_PATH}/*.cpp)
|
|
add_library("ImGui" STATIC ${IMGUI_SOURCES})
|
|
target_include_directories("ImGui" PUBLIC ${IMGUI_PATH})
|
|
target_include_directories(ImGui PUBLIC ${SDL2_INCLUDE_DIR})
|
|
target_compile_definitions(ImGui PUBLIC
|
|
IMGUI_IMPL_OPENGL_LOADER_CUSTOM=<SDL2/SDL_opengl.h> GL_GLEXT_PROTOTYPES=1)
|
|
|
|
set(IMGUI_FILE_DLG_PATH "lib/ImGuiFileDialog")
|
|
file(GLOB IMGUI_FILE_DLG_SOURCES ${IMGUI_FILE_DLG_PATH}/*.cpp)
|
|
add_library("ImGuiFileDialog" STATIC ${IMGUI_FILE_DLG_SOURCES})
|
|
target_include_directories(ImGuiFileDialog PUBLIC ${IMGUI_PATH})
|
|
target_compile_definitions(ImGuiFileDialog PUBLIC
|
|
IMGUI_IMPL_OPENGL_LOADER_CUSTOM=<SDL2/SDL_opengl.h> GL_GLEXT_PROTOTYPES=1)
|
|
|
|
set(IMGUI_COLOR_TEXT_EDIT_PATH "lib/ImGuiColorTextEdit")
|
|
file(GLOB IMGUI_COLOR_TEXT_EDIT_SOURCES ${IMGUI_COLOR_TEXT_EDIT_PATH}/*.cpp)
|
|
add_library("ImGuiColorTextEdit" STATIC ${IMGUI_COLOR_TEXT_EDIT_SOURCES})
|
|
target_include_directories(ImGuiColorTextEdit PUBLIC ${IMGUI_PATH})
|
|
target_compile_definitions(ImGuiColorTextEdit PUBLIC
|
|
IMGUI_IMPL_OPENGL_LOADER_CUSTOM=<SDL2/SDL_opengl.h> GL_GLEXT_PROTOTYPES=1)
|
|
|
|
set(
|
|
IMGUI_SRC
|
|
${IMGUI_PATH}/imgui.cpp
|
|
${IMGUI_PATH}/imgui_demo.cpp
|
|
${IMGUI_PATH}/imgui_draw.cpp
|
|
${IMGUI_PATH}/imgui_widgets.cpp
|
|
${IMGUI_PATH}/backends/imgui_impl_sdl.cpp
|
|
${IMGUI_PATH}/backends/imgui_impl_sdlrenderer.cpp
|
|
${IMGUI_PATH}/misc/cpp/imgui_stdlib.cpp
|
|
${IMGUI_FILE_DLG_PATH}/ImGuiFileDialog.cpp
|
|
${IMGUI_COLOR_TEXT_EDIT_PATH}/TextEditor.cpp
|
|
)
|
|
|
|
# Asar Assembly ---------------------------------------------------------------
|
|
add_subdirectory(lib/asar/src)
|
|
set(ASAR_GEN_EXE OFF)
|
|
set(ASAR_GEN_DLL ON)
|
|
set(ASAR_GEN_LIB OFF)
|
|
set(ASAR_GEN_EXE_TEST OFF)
|
|
set(ASAR_GEN_DLL_TEST OFF)
|
|
|
|
# yaze source files -----------------------------------------------------------
|
|
set(
|
|
YAZE_APP_CORE_SRC
|
|
app/core/common.cc
|
|
app/core/controller.cc
|
|
)
|
|
|
|
set(
|
|
YAZE_APP_EDITOR_SRC
|
|
app/editor/assembly_editor.cc
|
|
app/editor/dungeon_editor.cc
|
|
app/editor/master_editor.cc
|
|
app/editor/overworld_editor.cc
|
|
app/editor/palette_editor.cc
|
|
app/editor/screen_editor.cc
|
|
)
|
|
|
|
set(
|
|
YAZE_APP_GFX_SRC
|
|
app/gfx/bitmap.cc
|
|
app/gfx/pseudo_vram.cc
|
|
app/gfx/snes_palette.cc
|
|
app/gfx/snes_tile.cc
|
|
)
|
|
|
|
set(
|
|
YAZE_APP_ZELDA3_SRC
|
|
app/zelda3/overworld_map.cc
|
|
app/zelda3/overworld.cc
|
|
app/zelda3/screen.cc
|
|
)
|
|
|
|
set(
|
|
YAZE_APP_ASM_SRC
|
|
app/asm/script.cc
|
|
)
|
|
|
|
set(
|
|
YAZE_GUI_SRC
|
|
gui/canvas.cc
|
|
gui/input.cc
|
|
gui/style.cc
|
|
gui/widgets.cc
|
|
)
|
|
|
|
add_executable(
|
|
yaze
|
|
app/yaze.cc
|
|
app/rom.cc
|
|
${YAZE_APP_ASM_SRC}
|
|
${YAZE_APP_CORE_SRC}
|
|
${YAZE_APP_EDITOR_SRC}
|
|
${YAZE_APP_GFX_SRC}
|
|
${YAZE_APP_ZELDA3_SRC}
|
|
${YAZE_GUI_SRC}
|
|
${IMGUI_SRC}
|
|
lib/asar/src/asar-dll-bindings/c/asardll.c
|
|
)
|
|
|
|
target_include_directories(
|
|
yaze PUBLIC
|
|
lib/
|
|
app/
|
|
${ASAR_INCLUDE_DIR}
|
|
${CMAKE_SOURCE_DIR}/src/
|
|
${PNG_INCLUDE_DIRS}
|
|
${SDL2_INCLUDE_DIR}
|
|
${GLEW_INCLUDE_DIRS}
|
|
lib/asar/src/asar-dll-bindings/c
|
|
)
|
|
|
|
set(SDL_TARGETS SDL2::SDL2)
|
|
|
|
if(WIN32 OR MINGW)
|
|
list(PREPEND SDL_TARGETS SDL2::SDL2main)
|
|
add_definitions(-DSDL_MAIN_HANDLED)
|
|
endif()
|
|
|
|
target_link_libraries(
|
|
yaze PUBLIC
|
|
${ABSL_TARGETS}
|
|
${SDL_TARGETS}
|
|
${PNG_LIBRARIES}
|
|
${GLEW_LIBRARIES}
|
|
${OPENGL_LIBRARIES}
|
|
${CMAKE_DL_LIBS}
|
|
ImGui
|
|
)
|
|
|
|
set_target_properties(yaze
|
|
PROPERTIES
|
|
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
|
|
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
|
|
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
|
|
LINK_FLAGS "${CMAKE_CURRENT_SOURCE_DIR}/yaze.res"
|
|
)
|
|
|
|
set (source "${CMAKE_SOURCE_DIR}/assets")
|
|
set (destination "${CMAKE_CURRENT_BINARY_DIR}/assets")
|
|
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E create_symlink ${source} ${destination}
|
|
DEPENDS ${destination}
|
|
COMMENT "symbolic link resources folder from ${source} => ${destination}") |