Skip to content
Snippets Groups Projects
Commit 143d3324 authored by Joseph Walton-Rivers's avatar Joseph Walton-Rivers
Browse files

attempt to simplify config

parent 64de307c
No related branches found
No related tags found
No related merge requests found
Pipeline #3312 failed
......@@ -22,18 +22,18 @@ stages: # List of stages for jobs, and their order of execution
.f34-ogl:
image: git.fossgalaxy.com:8042/gamedev/containers/fedora:34-opengl
before_script:
- dnf install -y pkgconfig\(dri\) pkgconfig\(glu\) pkgconfig\(x11\) pkgconfig\(xcursor\) pkgconfig\(xi\) pkgconfig\(xinerama\) pkgconfig\(xrandr\)
- dnf install -y libxcb-devel libfontenc-devel libXaw-devel libXcomposite-devel libXcursor-devel libXdmcp-devel libXft-devel libXtst-devel libXinerama-devel libxkbfile-devel libXrandr-devel libXres-devel libXScrnSaver-devel libXvMC-devel xorg-x11-xtrans-devel xcb-util-wm-devel xcb-util-image-devel xcb-util-keysyms-devel xcb-util-renderutil-devel libXdamage-devel libXxf86vm-devel libXv-devel xkeyboard-config-devel xcb-util-devel libuuid-devel
- pip install conan
build:f34-conan-xorg:
extends: .f34-ogl
stage: build
script:
- dnf group install -y "Development Tools"
- dnf install -y pkgconfig\(dri\) pkgconfig\(glu\) pkgconfig\(x11\) pkgconfig\(xcursor\) pkgconfig\(xi\) pkgconfig\(xinerama\) pkgconfig\(xrandr\)
- dnf install -y libxcb-devel libfontenc-devel libXaw-devel libXcomposite-devel libXcursor-devel libXdmcp-devel libXft-devel libXtst-devel libXinerama-devel libxkbfile-devel libXrandr-devel libXres-devel libXScrnSaver-devel libXvMC-devel xorg-x11-xtrans-devel xcb-util-wm-devel xcb-util-image-devel xcb-util-keysyms-devel xcb-util-renderutil-devel libXdamage-devel libXxf86vm-devel libXv-devel xkeyboard-config-devel xcb-util-devel libuuid-devel
- pip install conan
- mkdir build && cd build
- cmake .. -DCMAKE_BUILD_TYPE=Debug
- make
- cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug
- cmake --build build
- camke --build build -t test
artifacts:
paths:
- build/fggl/
......
......@@ -10,39 +10,57 @@ project(fggl
HOMEPAGE_URL ""
LANGUAGES CXX)
##
# begin conan support
##
if(NOT EXISTS "${CMAKE_BINARY_DIR}/conan.cmake")
message(STATUS "Downloading conan.cmake from https://github.com/conan-io/cmake-conan")
file(DOWNLOAD "https://raw.githubusercontent.com/conan-io/cmake-conan/0.18.1/conan.cmake"
"${CMAKE_BINARY_DIR}/conan.cmake"
TLS_VERIFY ON)
endif()
if (CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
# slightly cleaner conan support
set(CMAKE_MODULE_PATH ${CMAKE_BINARY_DIR} ${CMAKE_MODULE_PATH})
set(CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR} ${CMAKE_PREFIX_PATH})
include( cmake/conan.cmake )
execute_process( COMMAND ls ${CMAKE_BINARY_DIR} )
conan_cmake_configure(
REQUIRES
opengl/system
glfw/3.3.7
glad/0.1.35
glm/0.9.9.8
spdlog/1.10.0
GENERATORS
cmake_find_package_multi
OPTIONS
glad:gl_profile=core
glad:gl_version=4.5
glad:extensions="GL_ARB_get_program_binary"
)
foreach(TYPE ${CMAKE_CONFIGURATION_TYPES})
conan_cmake_autodetect( settings BUILD_TYPE ${TYPE} )
conan_cmake_install(
PATH_OR_REFERENCE .
BUILD missing
REMOTE connancenter
SETTINGS ${settings}
)
endforeach()
include(${CMAKE_BINARY_DIR}/conan.cmake)
include(${CMAKE_BINARY_DIR}/conan_paths.cmake)
execute_process( COMMAND ls ${CMAKE_BINARY_DIR} )
#list(APPEND CMAKE_MODULE_PATH ${CMAKE_BINARY_DIR})
#list(APPEND CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR})
# testing support
include(CTest)
# Documentation support
find_package(Doxygen)
if (Doxygen_FOUND)
add_subdirectory( docs )
else()
message(STATUS "Doxygen not found, not building docs")
endif()
endif()
#conan_cmake_autodetect(settings)
conan_cmake_run(CONANFILE conanfile.txt # or relative build/conanfile.txt
BUILD_TYPE ${CONAN_BUILD_TYPE}
BASIC_SETUP CMAKE_TARGETS
BUILD missing
SETTINGS ${settings}
)
##
# end conan support
##
# Set C++ version
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
add_library(${PROJECT_NAME} STATIC)
##
# begin windows support
......@@ -59,45 +77,8 @@ set(FGGL_WAYLAND True)
include(GNUInstallDirs)
target_include_directories(${PROJECT_NAME}
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/vendor/headers
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
)
# Doxygen Support
# Based on https://vicrucann.github.io/tutorials/quick-cmake-doxygen/
option(BUILD_DOC "Build Documentation" ON)
find_package( Doxygen )
if (DOXYGEN_FOUND)
# Set docs folder
set(DOXYGEN_IN ${CMAKE_CURRENT_SOURCE_DIR}/docs/Doxyfile.in)
set(DOXYGEN_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
# configure file
configure_file(${DOXYGEN_IN} ${DOXYGEN_OUT} @ONLY)
message("Doxygen build started")
# note the option ALL which allows to build the docs together with the application
add_custom_target( doc_doxygen ALL
COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating API documentation with Doxygen"
VERBATIM )
endif (DOXYGEN_FOUND)
# depedencies
find_package( glfw3 )
if ( GLFW3_FOUND )
target_link_libraries(fggl PRIVATE glfw)
else()
message("GLFW couldn't be found - something strange is going on")
find_package( CONAN_PKG::glfw )
target_link_libraries(fggl PRIVATE glfw)
endif()
# engine
......
This diff is collapsed.
{
"graph_lock": {
"nodes": {
"0": {
"options": "glfw:shared=False\nglfw:vulkan_static=False",
"requires": [
"1"
],
"path": "conanfile.txt",
"context": "host"
},
"1": {
"ref": "glfw/3.3.7#b1675b8bd08103ef3974e36843431966",
"options": "shared=False\nvulkan_static=False",
"package_id": "d3cffeefc8c8bcb6be8abdd182cb1b56fc81bacc",
"prev": "7a205e7cb0d8ac4470491033ab29c8ac",
"requires": [
"2"
],
"context": "host"
},
"2": {
"ref": "opengl/system#3582b5d3184289461f73339622c71d31",
"options": "",
"package_id": "5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9",
"prev": "e0c823b9bed28348dd7f3bcedf045c58",
"context": "host"
}
},
"revisions_enabled": true
},
"version": "0.4",
"profile_host": "[settings]\narch=x86_64\narch_build=x86_64\nbuild_type=Release\ncompiler=Visual Studio\ncompiler.runtime=MD\ncompiler.version=16\nos=Windows\nos_build=Windows\n[options]\n[build_requires]\n[env]\n"
}
\ No newline at end of file
[requires]
opengl/system
glfw/3.3.7
glad/0.1.35
glm/0.9.9.8
spdlog/1.10.0
[generators]
cmake_find_package
cmake_paths
[options]
glad:gl_profile=core
glad:gl_version=4.5
glad:extensions="GL_ARB_get_program_binary"
\ No newline at end of file
set(DOXYGEN_EXTRACT_ALL YES)
set(DOXYGEN_BUILDIN_STL_SUPPORT YES)
doxygen_add_docs(docs
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}/include"
)
# Config mode dependencies
find_package(fmt CONFIG)
find_package(spdlog CONFIG)
find_package(glfw3 CONFIG)
# headers
file(GLOB HEADER_LIST CONFIGURE_DEPENDS "${fggl_SOURCE_DIR}/include/fggl/*.hpp" )
# the fggl library itself
add_library(fggl ${HEADER_LIST})
# we need to tell people using the library about our headers
target_include_directories( fggl
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/fggl>
$<INSTALL_INTERFACE:include/fggl>
)
# users of this library need at least C++17
target_compile_features( fggl PUBLIC cxx_std_17 )
# IDE support for nice header files
source_group(
TREE "${PROJECT_SOURCE_DIR}/include"
PREFIX "Header Files"
FILES ${HEADER_LIST}
)
# Generation of configuration header
configure_file(FgglConfig.h.in FgglConfig.h)
# clang tidy
......
......@@ -7,6 +7,14 @@ target_sources(fggl
atlas.cpp
)
find_package( glfw3 )
if ( GLFW3_FOUND )
target_link_libraries(fggl PRIVATE glfw)
else()
message("GLFW couldn't be found - something strange is going on")
target_link_libraries(fggl PRIVATE glfw)
endif()
# OpenGL backend
add_subdirectory(ogl)
add_subdirectory(ogl4)
......
......@@ -27,7 +27,7 @@ endif()
# GLEW
find_package( glad )
find_package( glad CONFIG )
target_link_libraries(${PROJECT_NAME} PUBLIC glad::glad)
# FreeType
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment