| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- cmake_minimum_required(VERSION 3.18)
- project(UIDefEdit LANGUAGES C CXX)
- set(CMAKE_CXX_STANDARD 17)
- set(CMAKE_CXX_STANDARD_REQUIRED ON)
- set(CMAKE_CXX_EXTENSIONS OFF)
- # ImGui sources
- set(IMGUI_DIR ${CMAKE_SOURCE_DIR}/third_party/imgui)
- set(IMGUI_SOURCES
- ${IMGUI_DIR}/imgui.cpp
- ${IMGUI_DIR}/imgui_demo.cpp
- ${IMGUI_DIR}/imgui_draw.cpp
- ${IMGUI_DIR}/imgui_tables.cpp
- ${IMGUI_DIR}/imgui_widgets.cpp
- ${IMGUI_DIR}/backends/imgui_impl_android.cpp
- ${IMGUI_DIR}/backends/imgui_impl_opengl3.cpp
- )
- # pugixml
- set(PUGIXML_DIR ${CMAKE_SOURCE_DIR}/third_party/pugixml)
- set(PUGIXML_SOURCES ${PUGIXML_DIR}/pugixml.cpp)
- # Application sources
- set(APP_SOURCES
- src/main.cpp
- src/app.cpp
- src/canvas/canvas.cpp
- src/canvas/grid.cpp
- src/canvas/selection.cpp
- src/model/control_registry.cpp
- src/model/control_instance.cpp
- src/util/undo_redo.cpp
- src/ui/toolbar.cpp
- src/ui/toolbox.cpp
- src/ui/doc_tree.cpp
- src/ui/properties.cpp
- src/ui/file_dialog.cpp
- src/xml/xml_writer.cpp
- src/xml/xml_reader.cpp
- src/xml/xsd_validator.cpp
- src/ui/validation_panel.cpp
- src/util/platform.cpp
- )
- add_library(uidef-tool SHARED
- ${APP_SOURCES}
- ${IMGUI_SOURCES}
- ${PUGIXML_SOURCES}
- )
- target_include_directories(uidef-tool PRIVATE
- ${CMAKE_SOURCE_DIR}/src
- ${IMGUI_DIR}
- ${IMGUI_DIR}/backends
- ${CMAKE_SOURCE_DIR}/third_party/pugixml
- )
- target_compile_definitions(uidef-tool PRIVATE
- IMGUI_IMPL_OPENGL_ES3
- )
- # Force export ANativeActivity_onCreate (needed by NativeActivity)
- # Clear RPATH/RUNPATH — Termux's clang sets RUNPATH to its own lib dir
- # which is inaccessible from the installed APK's app context
- set(CMAKE_SKIP_BUILD_RPATH TRUE)
- set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
- set(CMAKE_INSTALL_RPATH "")
- target_link_options(uidef-tool PRIVATE
- "LINKER:-u,ANativeActivity_onCreate"
- "LINKER:--disable-new-dtags"
- "LINKER:-rpath,"
- )
- # Link system libraries
- target_link_libraries(uidef-tool PRIVATE
- android
- log
- EGL
- GLESv3
- )
- # libxml2 — built from source as static library (no ICU/iconv dependencies)
- set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
- set(LIBXML2_WITH_ICONV OFF CACHE BOOL "" FORCE)
- set(LIBXML2_WITH_ICU OFF CACHE BOOL "" FORCE)
- set(LIBXML2_WITH_LZMA OFF CACHE BOOL "" FORCE)
- set(LIBXML2_WITH_ZLIB OFF CACHE BOOL "" FORCE)
- set(LIBXML2_WITH_PYTHON OFF CACHE BOOL "" FORCE)
- set(LIBXML2_WITH_PROGRAMS OFF CACHE BOOL "" FORCE)
- set(LIBXML2_WITH_TESTS OFF CACHE BOOL "" FORCE)
- set(LIBXML2_WITH_HTTP OFF CACHE BOOL "" FORCE)
- set(LIBXML2_WITH_FTP OFF CACHE BOOL "" FORCE)
- set(LIBXML2_WITH_LEGACY OFF CACHE BOOL "" FORCE)
- set(LIBXML2_WITH_MODULES OFF CACHE BOOL "" FORCE)
- set(LIBXML2_WITH_CATALOG OFF CACHE BOOL "" FORCE)
- set(LIBXML2_WITH_DEBUG OFF CACHE BOOL "" FORCE)
- set(LIBXML2_WITH_SCHEMAS ON CACHE BOOL "" FORCE)
- set(LIBXML2_WITH_THREADS ON CACHE BOOL "" FORCE)
- add_subdirectory(third_party/libxml2)
- target_link_libraries(uidef-tool PRIVATE LibXml2)
- target_include_directories(uidef-tool PRIVATE
- ${CMAKE_BINARY_DIR}/third_party/libxml2
- ${CMAKE_SOURCE_DIR}/third_party/libxml2/include
- )
|