Update CMakeLists.txt
All checks were successful
ci/woodpecker/push/woodpecker.json Pipeline was successful
All checks were successful
ci/woodpecker/push/woodpecker.json Pipeline was successful
This commit is contained in:
parent
e47ecd51cc
commit
f966885cf2
137
CMakeLists.txt
137
CMakeLists.txt
@ -1,6 +1,5 @@
|
|||||||
|
|
||||||
# Libpdw: Primitives Done well!
|
# Copyright (C) 2024 Rebekah Rowe
|
||||||
# Copyright (C) 2022 Rebekah Rowe
|
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
@ -24,45 +23,78 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|||||||
set(CMAKE_EXPORT_COMPILE_COMMANDS true)
|
set(CMAKE_EXPORT_COMPILE_COMMANDS true)
|
||||||
|
|
||||||
find_package(Doxygen)
|
find_package(Doxygen)
|
||||||
find_package(ImageMagick REQUIRED COMPONENTS convert identify )
|
|
||||||
#if (NOT ImageMagick_idenity_FOUND)
|
|
||||||
#message(FATAL "Please install imagemagick identify")
|
|
||||||
|
|
||||||
|
add_library(libpdw STATIC "")
|
||||||
|
|
||||||
|
file(GLOB_RECURSE sources "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp")
|
||||||
|
target_sources(libpdw PUBLIC ${sources})
|
||||||
|
|
||||||
|
target_include_directories(libpdw PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/example-src/lib/" "${CMAKE_CURRENT_SOURCE_DIR}/src/" "${CMAKE_CURRENT_SOURCE_DIR}/include/libpdw")
|
||||||
|
|
||||||
|
if (DOXYGEN_FOUND)
|
||||||
|
doxygen_add_docs(libpdw-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
|
||||||
|
find_package(GLEW)
|
||||||
|
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)
|
||||||
|
|
||||||
|
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 libpdw
|
||||||
|
hydride
|
||||||
|
glez
|
||||||
|
${PNG_LIBRARIES} GL GLU GLEW ${FREETYPE_LIBRARIES} ${X11_X11_LIB} ${X11_Xext_LIB} ${X11_Xfixes_LIB})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# EMBED CMAKE
|
||||||
|
find_package(ImageMagick REQUIRED COMPONENTS convert 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>
|
||||||
@ -89,21 +121,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}")
|
||||||
|
|
||||||
@ -112,15 +144,15 @@ public:
|
|||||||
file(APPEND "${EMBED_HEADER_DIR}/embed_resources.hpp" "extern const std::byte _binary_${obj_cleaned_name}_start; extern const std::byte _binary_${obj_cleaned_name}_end; \n")
|
file(APPEND "${EMBED_HEADER_DIR}/embed_resources.hpp" "extern const std::byte _binary_${obj_cleaned_name}_start; extern const std::byte _binary_${obj_cleaned_name}_end; \n")
|
||||||
|
|
||||||
if (type STREQUAL "image")
|
if (type STREQUAL "image")
|
||||||
cmake_path(GET file_path PARENT_PATH file_parent)
|
cmake_path(GET file_path PARENT_PATH file_parent)
|
||||||
cmake_path(GET file_path FILENAME file_name)
|
cmake_path(GET file_path FILENAME file_name)
|
||||||
exec_program("${ImageMagick_identify_EXECUTABLE}" "${file_parent}"
|
exec_program("${ImageMagick_identify_EXECUTABLE}" "${file_parent}"
|
||||||
ARGS -format "%[fx:w]" "${file_name}"
|
ARGS -format "%[fx:w]" "${file_name}"
|
||||||
OUTPUT_VARIABLE image_width)
|
OUTPUT_VARIABLE image_width)
|
||||||
exec_program("${ImageMagick_identify_EXECUTABLE}" "${file_parent}"
|
exec_program("${ImageMagick_identify_EXECUTABLE}" "${file_parent}"
|
||||||
ARGS -format "%[fx:h]" "${file_name}"
|
ARGS -format "%[fx:h]" "${file_name}"
|
||||||
OUTPUT_VARIABLE image_height)
|
OUTPUT_VARIABLE image_height)
|
||||||
file(APPEND "${EMBED_HEADER_DIR}/embed_resources.hpp" "inline EmbededImage embeded_${obj_cleaned_name}(${image_width}, ${image_height}, EmbededResource(&_binary_${obj_cleaned_name}_start, &_binary_${obj_cleaned_name}_end)); \n")
|
file(APPEND "${EMBED_HEADER_DIR}/embed_resources.hpp" "inline EmbededImage embeded_${obj_cleaned_name}(${image_width}, ${image_height}, EmbededResource(&_binary_${obj_cleaned_name}_start, &_binary_${obj_cleaned_name}_end)); \n")
|
||||||
|
|
||||||
elseif (type STREQUAL "embed")
|
elseif (type STREQUAL "embed")
|
||||||
file(APPEND "${EMBED_HEADER_DIR}/embed_resources.hpp" "inline EmbededResource embeded_${obj_cleaned_name}(&_binary_${obj_cleaned_name}_start, &_binary_${obj_cleaned_name}_end); \n")
|
file(APPEND "${EMBED_HEADER_DIR}/embed_resources.hpp" "inline EmbededResource embeded_${obj_cleaned_name}(&_binary_${obj_cleaned_name}_start, &_binary_${obj_cleaned_name}_end); \n")
|
||||||
@ -132,30 +164,5 @@ endfunction()
|
|||||||
|
|
||||||
EmbedResources("${CMAKE_CURRENT_SOURCE_DIR}/res/opensans.ttf" "${CMAKE_CURRENT_SOURCE_DIR}/res/logo.png" "${CMAKE_CURRENT_SOURCE_DIR}/res/flame.png" "${CMAKE_CURRENT_SOURCE_DIR}/res/heart.png" "${CMAKE_CURRENT_SOURCE_DIR}/res/raindrop.png" "${CMAKE_CURRENT_SOURCE_DIR}/res/raindrop2.png" "${CMAKE_CURRENT_SOURCE_DIR}/res/snowflake.png")
|
EmbedResources("${CMAKE_CURRENT_SOURCE_DIR}/res/opensans.ttf" "${CMAKE_CURRENT_SOURCE_DIR}/res/logo.png" "${CMAKE_CURRENT_SOURCE_DIR}/res/flame.png" "${CMAKE_CURRENT_SOURCE_DIR}/res/heart.png" "${CMAKE_CURRENT_SOURCE_DIR}/res/raindrop.png" "${CMAKE_CURRENT_SOURCE_DIR}/res/raindrop2.png" "${CMAKE_CURRENT_SOURCE_DIR}/res/snowflake.png")
|
||||||
|
|
||||||
file(GLOB_RECURSE sources "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp")
|
target_sources(libpdw STATIC ${EMBED_OBJ_RET})
|
||||||
add_library(libpdw STATIC ${EMBED_OBJ_RET} ${sources})
|
target_include_directories(libpdw PRIVATE "${EMBED_HEADER_DIR}")
|
||||||
target_include_directories(libpdw PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/example-src/lib/" "${CMAKE_CURRENT_SOURCE_DIR}/src/" "${CMAKE_CURRENT_SOURCE_DIR}/include/libpdw" "${EMBED_HEADER_DIR}")
|
|
||||||
|
|
||||||
if (DOXYGEN_FOUND)
|
|
||||||
doxygen_add_docs(libpdw-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
|
|
||||||
find_package(GLEW)
|
|
||||||
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)
|
|
||||||
|
|
||||||
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 libpdw
|
|
||||||
hydride
|
|
||||||
glez
|
|
||||||
${PNG_LIBRARIES} GL GLU GLEW ${FREETYPE_LIBRARIES} ${X11_X11_LIB} ${X11_Xext_LIB} ${X11_Xfixes_LIB})
|
|
||||||
endif()
|
|
Loading…
x
Reference in New Issue
Block a user