Added doxygen build support

This commit is contained in:
Rebekah 2022-04-04 14:41:04 -04:00
parent 065885b3f2
commit 96557465c2
Signed by: oneechanhax
GPG Key ID: 183EB7902964DAE5

View File

@ -7,45 +7,46 @@ set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS true)
find_package(Doxygen)
find_package(ImageMagick REQUIRED COMPONENTS convert identify )
#if (NOT ImageMagick_idenity_FOUND)
#message(FATAL "Please install imagemagick identify")
function(CommandConvertImageToRgba file_in)
cmake_path(GET file_in FILENAME filename)
cmake_path(GET file_in PARENT_PATH filepath)
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${filename}.rgba
WORKING_DIRECTORY ${filepath}
COMMAND ${ImageMagick_convert_EXECUTABLE}
ARGS ${filename} -depth 8 -format rgba ${CMAKE_CURRENT_BINARY_DIR}/${filename}.rgba
DEPENDS ${file_in}
POST_BUILD)
set(FUNC_RET ${CMAKE_CURRENT_BINARY_DIR}/${filename}.rgba PARENT_SCOPE)
cmake_path(GET file_in FILENAME filename)
cmake_path(GET file_in PARENT_PATH filepath)
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${filename}.rgba
WORKING_DIRECTORY ${filepath}
COMMAND ${ImageMagick_convert_EXECUTABLE}
ARGS ${filename} -depth 8 -format rgba ${CMAKE_CURRENT_BINARY_DIR}/${filename}.rgba
DEPENDS ${file_in}
POST_BUILD)
set(FUNC_RET ${CMAKE_CURRENT_BINARY_DIR}/${filename}.rgba PARENT_SCOPE)
endfunction()
function(CommandConvertToObjcopy file_in)
cmake_path(GET file_in FILENAME filename)
cmake_path(GET file_in PARENT_PATH filepath)
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${filename}.o
cmake_path(GET file_in FILENAME filename)
cmake_path(GET file_in PARENT_PATH filepath)
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${filename}.o
WORKING_DIRECTORY ${filepath}
COMMAND ${CMAKE_OBJCOPY}
ARGS --input binary --output elf64-x86-64 --binary-architecture i386 ${filename} ${CMAKE_CURRENT_BINARY_DIR}/${filename}.o
DEPENDS ${file_in}
POST_BUILD)
set(FUNC_RET ${CMAKE_CURRENT_BINARY_DIR}/${filename}.o PARENT_SCOPE)
set(FUNC_RET ${CMAKE_CURRENT_BINARY_DIR}/${filename}.o PARENT_SCOPE)
endfunction()
function(CommandConvertImageToObject file_in)
CommandConvertImageToRgba("${file_in}")
CommandConvertToObjcopy(${FUNC_RET})
set(FUNC_RET ${FUNC_RET} PARENT_SCOPE)
CommandConvertImageToRgba("${file_in}")
CommandConvertToObjcopy(${FUNC_RET})
set(FUNC_RET ${FUNC_RET} PARENT_SCOPE)
endfunction()
function(EmbedResources)
set(EMBED_HEADER_DIR "${CMAKE_CURRENT_BINARY_DIR}/")
set(EMBED_HEADER_DIR "${EMBED_HEADER_DIR}" PARENT_SCOPE)
file(WRITE "${EMBED_HEADER_DIR}/embed_resources.hpp" "
set(EMBED_HEADER_DIR "${CMAKE_CURRENT_BINARY_DIR}/")
set(EMBED_HEADER_DIR "${EMBED_HEADER_DIR}" PARENT_SCOPE)
file(WRITE "${EMBED_HEADER_DIR}/embed_resources.hpp" "
/* AUTOGENERATED CMAKE EMBEDED FILE HEADER!!! DO NOT EDIT THIS FILE!!!
ALL CHANGES WILL BE WIPED!!! */
#include <cstddef>
@ -72,21 +73,21 @@ public:
};
")
set(EMBED_OBJ_RET "")
foreach(file_path ${ARGV})
cmake_path(GET file_path EXTENSION LAST_ONLY file_ext)
set(type "embed")
if (file_ext STREQUAL ".jpg")
set(type "image")
endif()
if (file_ext STREQUAL ".png")
set(type "image")
endif()
set(EMBED_OBJ_RET "")
foreach(file_path ${ARGV})
cmake_path(GET file_path EXTENSION LAST_ONLY file_ext)
set(type "embed")
if (file_ext STREQUAL ".jpg")
set(type "image")
endif()
if (file_ext STREQUAL ".png")
set(type "image")
endif()
if (type STREQUAL "image")
CommandConvertImageToObject(${file_path})
elseif (type STREQUAL "embed")
CommandConvertToObjcopy(${file_path})
if (type STREQUAL "image")
CommandConvertImageToObject(${file_path})
elseif (type STREQUAL "embed")
CommandConvertToObjcopy(${file_path})
endif()
list(APPEND EMBED_OBJ_RET "${FUNC_RET}")
@ -119,6 +120,10 @@ file(GLOB_RECURSE sources "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp")
add_library(libpdraw STATIC ${EMBED_OBJ_RET} ${sources})
target_include_directories(libpdraw PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/example-src/lib/" "${CMAKE_CURRENT_SOURCE_DIR}/src/" "${CMAKE_CURRENT_SOURCE_DIR}/include/libpdraw" "${EMBED_HEADER_DIR}")
if (DOXYGEN_FOUND)
doxygen_add_docs(libpdraw-docs)
endif()
# Example using xoverlay
set(OpenGL_GL_PREFERENCE "GLVND")
find_package(PNG) # We need to link all this again since we prebuilt them staticly
@ -127,14 +132,14 @@ find_package(OpenGL)
find_package(X11)
find_package(Freetype)
if(PNG_FOUND AND GLEW_FOUND AND OPENGL_FOUND AND X11_FOUND AND FREETYPE_FOUND)
project (example)
project (example)
file(GLOB_RECURSE sources "${CMAKE_CURRENT_SOURCE_DIR}/example-src/*.c*")
add_executable(example ${sources})
file(GLOB_RECURSE sources "${CMAKE_CURRENT_SOURCE_DIR}/example-src/*.c*")
add_executable(example ${sources})
target_include_directories(example PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/example-src/lib/" "${CMAKE_CURRENT_SOURCE_DIR}/include/")
target_link_libraries(example libpdraw
target_include_directories(example PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/example-src/lib/" "${CMAKE_CURRENT_SOURCE_DIR}/include/")
target_link_libraries(example libpdraw
"${CMAKE_CURRENT_SOURCE_DIR}/example-src/lib/libxoverlay.a"
glez
glez
${PNG_LIBRARIES} GL GLU GLEW ${FREETYPE_LIBRARIES} ${X11_X11_LIB} ${X11_Xext_LIB} ${X11_Xfixes_LIB})
endif()