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