diff --git a/CMakeLists.txt b/CMakeLists.txt index 7f6019c7..48a2e894 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,8 +1,6 @@ -# CMake Specifications -cmake_minimum_required(VERSION 3.10) - # Yet Another Zelda3 Editor # by scawful +cmake_minimum_required(VERSION 3.10) project(yaze VERSION 0.2.0) # Build Flags @@ -10,10 +8,11 @@ set(YAZE_BUILD_APP ON) set(YAZE_BUILD_Z3ED ON) set(YAZE_BUILD_PYTHON ON) set(YAZE_BUILD_CLIB ON) +set(YAZE_INSTALL_CLIB OFF) set(YAZE_BUILD_TESTS OFF) set(YAZE_BUILD_EXTENSIONS OFF) -# C++ Standard Specifications +# C++ Standard and CMake Specifications set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) @@ -24,12 +23,14 @@ set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH}) set(BUILD_SHARED_LIBS OFF) set(CMAKE_FIND_FRAMEWORK LAST) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Dlinux -Dstricmp=strcasecmp") +if (MACOS) + set(CMAKE_INSTALL_PREFIX /usr/local) +endif() # Abseil Standard Specifications include(cmake/absl.cmake) -# Video Libraries -find_package(PNG REQUIRED) +# SDL2 and PNG include(cmake/sdl2.cmake) # Asar diff --git a/cmake/asar.cmake b/cmake/asar.cmake index bb31d67a..c5f1fcd7 100644 --- a/cmake/asar.cmake +++ b/cmake/asar.cmake @@ -1,33 +1,36 @@ -get_target_property(ASAR_INCLUDE_DIR asar-static INCLUDE_DIRECTORIES) -target_include_directories(asar-static PRIVATE ${ASAR_INCLUDE_DIR}) +# Asar Assembler for 65816 SNES Assembly set(ASAR_GEN_EXE OFF) set(ASAR_GEN_DLL ON) set(ASAR_GEN_LIB ON) set(ASAR_GEN_EXE_TEST OFF) set(ASAR_GEN_DLL_TEST OFF) +set(ASAR_STATIC_SRC_DIR "${CMAKE_SOURCE_DIR}/src/lib/asar/src/asar") + +get_target_property(ASAR_INCLUDE_DIR asar-static INCLUDE_DIRECTORIES) +target_include_directories(asar-static PRIVATE ${ASAR_INCLUDE_DIR}) set(ASAR_STATIC_SRC - "${CMAKE_SOURCE_DIR}/src/lib/asar/src/asar/interface-lib.cpp" - "${CMAKE_SOURCE_DIR}/src/lib/asar/src/asar/addr2line.cpp" - "${CMAKE_SOURCE_DIR}/src/lib/asar/src/asar/arch-65816.cpp" - "${CMAKE_SOURCE_DIR}/src/lib/asar/src/asar/arch-spc700.cpp" - "${CMAKE_SOURCE_DIR}/src/lib/asar/src/asar/arch-superfx.cpp" - "${CMAKE_SOURCE_DIR}/src/lib/asar/src/asar/assembleblock.cpp" - "${CMAKE_SOURCE_DIR}/src/lib/asar/src/asar/crc32.cpp" - "${CMAKE_SOURCE_DIR}/src/lib/asar/src/asar/libcon.cpp" - "${CMAKE_SOURCE_DIR}/src/lib/asar/src/asar/libsmw.cpp" - "${CMAKE_SOURCE_DIR}/src/lib/asar/src/asar/libstr.cpp" - "${CMAKE_SOURCE_DIR}/src/lib/asar/src/asar/macro.cpp" - "${CMAKE_SOURCE_DIR}/src/lib/asar/src/asar/main.cpp" - "${CMAKE_SOURCE_DIR}/src/lib/asar/src/asar/asar_math.cpp" - "${CMAKE_SOURCE_DIR}/src/lib/asar/src/asar/virtualfile.cpp" - "${CMAKE_SOURCE_DIR}/src/lib/asar/src/asar/warnings.cpp" - "${CMAKE_SOURCE_DIR}/src/lib/asar/src/asar/errors.cpp" - "${CMAKE_SOURCE_DIR}/src/lib/asar/src/asar/platform/file-helpers.cpp" + "${ASAR_STATIC_SRC_DIR}/interface-lib.cpp" + "${ASAR_STATIC_SRC_DIR}/addr2line.cpp" + "${ASAR_STATIC_SRC_DIR}/arch-65816.cpp" + "${ASAR_STATIC_SRC_DIR}/arch-spc700.cpp" + "${ASAR_STATIC_SRC_DIR}/arch-superfx.cpp" + "${ASAR_STATIC_SRC_DIR}/assembleblock.cpp" + "${ASAR_STATIC_SRC_DIR}/crc32.cpp" + "${ASAR_STATIC_SRC_DIR}/libcon.cpp" + "${ASAR_STATIC_SRC_DIR}/libsmw.cpp" + "${ASAR_STATIC_SRC_DIR}/libstr.cpp" + "${ASAR_STATIC_SRC_DIR}/macro.cpp" + "${ASAR_STATIC_SRC_DIR}/main.cpp" + "${ASAR_STATIC_SRC_DIR}/asar_math.cpp" + "${ASAR_STATIC_SRC_DIR}/virtualfile.cpp" + "${ASAR_STATIC_SRC_DIR}/warnings.cpp" + "${ASAR_STATIC_SRC_DIR}/errors.cpp" + "${ASAR_STATIC_SRC_DIR}/platform/file-helpers.cpp" ) if(WIN32 OR MINGW) - list(APPEND ASAR_STATIC_SRC "${CMAKE_SOURCE_DIR}/src/lib/asar/src/asar/platform/windows/file-helpers-win32.cpp") + list(APPEND ASAR_STATIC_SRC "${ASAR_STATIC_SRC_DIR}/platform/windows/file-helpers-win32.cpp") else() - list(APPEND ASAR_STATIC_SRC "${CMAKE_SOURCE_DIR}/src/lib/asar/src/asar/platform/linux/file-helpers-linux.cpp") + list(APPEND ASAR_STATIC_SRC "${ASAR_STATIC_SRC_DIR}/platform/linux/file-helpers-linux.cpp") endif() \ No newline at end of file diff --git a/cmake/imgui.cmake b/cmake/imgui.cmake index 1d4f49e3..a2fc8b0b 100644 --- a/cmake/imgui.cmake +++ b/cmake/imgui.cmake @@ -11,23 +11,17 @@ set(IMGUI_FILE_DLG_PATH ${CMAKE_SOURCE_DIR}/src/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= GL_GLEXT_PROTOTYPES=1) set(IMGUI_COLOR_TEXT_EDIT_PATH ${CMAKE_SOURCE_DIR}/src/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= GL_GLEXT_PROTOTYPES=1) set(IMGUI_TEST_ENGINE_PATH ${CMAKE_SOURCE_DIR}/src/lib/imgui_test_engine/imgui_test_engine) file(GLOB IMGUI_TEST_ENGINE_SOURCES ${IMGUI_TEST_ENGINE_PATH}/*.cpp) add_library("ImGuiTestEngine" STATIC ${IMGUI_TEST_ENGINE_SOURCES}) target_include_directories(ImGuiTestEngine PUBLIC ${IMGUI_PATH}) target_link_libraries(ImGuiTestEngine PUBLIC ImGui) -target_compile_definitions(ImGuiTestEngine PUBLIC - IMGUI_IMPL_OPENGL_LOADER_CUSTOM= GL_GLEXT_PROTOTYPES=1) set( IMGUI_SRC diff --git a/cmake/sdl2.cmake b/cmake/sdl2.cmake index e1f95b3f..b33351c7 100644 --- a/cmake/sdl2.cmake +++ b/cmake/sdl2.cmake @@ -10,4 +10,7 @@ set(SDL_TARGETS SDL2::SDL2) if(WIN32 OR MINGW) list(PREPEND SDL_TARGETS SDL2::SDL2main ws2_32) add_definitions(-DSDL_MAIN_HANDLED) -endif() \ No newline at end of file +endif() + +# libpng +find_package(PNG REQUIRED) \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 4dd18131..b920b491 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -150,4 +150,18 @@ target_link_libraries( ${CMAKE_DL_LIBS} ImGuiTestEngine ImGui -) \ No newline at end of file +) + +if (YAZE_INSTALL_CLIB) + install(TARGETS yaze_c + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib/static) + + install( + FILES + yaze.h + base/sprite.h + base/snes_color.h + DESTINATION include) +endif() \ No newline at end of file