diff --git a/CMakeLists.txt b/CMakeLists.txt index 6f323f7..270c86f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,22 +5,34 @@ endif() cmake_minimum_required(VERSION 3.25) +set(APPLICATION_NAME "Antkeeper") +set(APPLICATION_VERSION "0.0.1") +set(APPLICATION_AUTHOR "C. J. Howard") + +# Slugify application name +string(TOLOWER ${APPLICATION_NAME} APPLICATION_SLUG) +string(REPLACE " " "-" APPLICATION_SLUG ${APPLICATION_SLUG}) + # Create superbuild project -project(antkeeper-superbuild VERSION "0.0.1") +project(${APPLICATION_SLUG}-superbuild VERSION ${APPLICATION_VERSION}) + +set(APPLICATION_VERSION_MAJOR ${PROJECT_VERSION_MAJOR}) +set(APPLICATION_VERSION_MINOR ${PROJECT_VERSION_MINOR}) +set(APPLICATION_VERSION_PATCH ${PROJECT_VERSION_PATCH}) # Setup package variables -set(PACKAGE_NAME ${PROJECT_NAME}) -set(PACKAGE_VERSION ${PROJECT_VERSION}) -set(PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR}) -set(PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR}) -set(PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH}) +set(PACKAGE_NAME ${APPLICATION_NAME}) +set(PACKAGE_VERSION ${APPLICATION_VERSION}) +set(PACKAGE_VERSION_MAJOR ${APPLICATION_VERSION_MAJOR}) +set(PACKAGE_VERSION_MINOR ${APPLICATION_VERSION_MINOR}) +set(PACKAGE_VERSION_PATCH ${APPLICATION_VERSION_PATCH}) get_filename_component(PACKAGE_PLATFORM ${CMAKE_BINARY_DIR} NAME CACHE) if(CMAKE_BUILD_TYPE STREQUAL "Debug") set(PACKAGE_BUILD_TYPE debug) else() set(PACKAGE_BUILD_TYPE release) endif() -set(PACKAGE_FILENAME ${PACKAGE_NAME}-${PACKAGE_VERSION}-${PACKAGE_PLATFORM}) +set(PACKAGE_FILENAME ${APPLICATION_SLUG}-${PACKAGE_VERSION}-${PACKAGE_PLATFORM}) set(PACKAGE_INSTALL_DIR ${CMAKE_SOURCE_DIR}/bin/${PACKAGE_BUILD_TYPE}/${PACKAGE_FILENAME}) set(PACKAGE_DIST_DIR ${CMAKE_SOURCE_DIR}/dist/${PACKAGE_BUILD_TYPE}) @@ -41,30 +53,23 @@ endif() # Options set(BLENDER "blender" CACHE FILEPATH "Path to Blender executable") -set(INKSCAPE "inkscape" CACHE FILEPATH "Path to Inkscape executable") -# Set C++ compiler flags -if(CMAKE_COMPILER_IS_GNUCC) - set(CMAKE_CXX_FLAGS "-Wall -Wextra") - set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} -g") - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -O3") -elseif(MSVC) - set(CMAKE_CXX_FLAGS "/MP /W3 /GR- /GS- /EHsc /D_WIN32_WINNT=0x0501 /DWINVER=0x0501") +# Set compiler and linker flags +if(MSVC) + set(CMAKE_CXX_FLAGS "/MP /GR- /GS- /EHsc /D_WIN32_WINNT=0x0501 /DWINVER=0x0501") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} /MTd") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} /MT /O2") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /nologo") + set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /OPT:REF /OPT:ICF /INCREMENTAL:NO") +elseif(CMAKE_COMPILER_IS_GNUCC) + set(CMAKE_CXX_FLAGS "") + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} -g") + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -O3") endif() - -# Set C compiler flags set(CMAKE_C_FLAGS "${CMAKE_CXX_FLAGS}") set(CMAKE_C_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}") set(CMAKE_C_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") -# Set executable linker flags -if(MSVC) - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /nologo") - set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /OPT:REF /OPT:ICF /INCREMENTAL:NO") -endif() - # Setup module directories set(MODULE_SOURCE_DIR "${PROJECT_SOURCE_DIR}/modules") set(MODULE_BUILD_DIR "${PROJECT_BINARY_DIR}/modules/build") @@ -288,7 +293,9 @@ ExternalProject_Add(antkeeper-source "-DCMAKE_INSTALL_PREFIX=${PACKAGE_INSTALL_DIR}" "-DPACKAGE_PLATFORM=${PACKAGE_PLATFORM}" "-DCMAKE_PREFIX_PATH=${MODULE_INSTALL_DIR}" - "-DVERSION_STRING=${PROJECT_VERSION}" + "-DAPPLICATION_NAME=${APPLICATION_NAME}" + "-DAPPLICATION_VERSION=${APPLICATION_VERSION}" + "-DAPPLICATION_AUTHOR=${APPLICATION_AUTHOR}" "-DCMAKE_CXX_FLAGS='${CMAKE_CXX_FLAGS}'" "-DCMAKE_CXX_FLAGS_DEBUG='${CMAKE_CXX_FLAGS_DEBUG}'" "-DCMAKE_CXX_FLAGS_RELEASE='${CMAKE_CXX_FLAGS_RELEASE}'" @@ -309,8 +316,10 @@ if(EXISTS ${MODULE_SOURCE_DIR}/antkeeper-data/CMakeLists.txt) "-DCMAKE_INSTALL_PREFIX=${PACKAGE_INSTALL_DIR}" "-DPACKAGE_PLATFORM=${PACKAGE_PLATFORM}" "-DCMAKE_PREFIX_PATH=${MODULE_INSTALL_DIR}" + "-DAPPLICATION_NAME=${APPLICATION_NAME}" + "-DAPPLICATION_VERSION=${APPLICATION_VERSION}" + "-DAPPLICATION_AUTHOR=${APPLICATION_AUTHOR}" "-DBLENDER=${BLENDER}" - "-DINKSCAPE=${INKSCAPE}" BUILD_ALWAYS 1) endif() @@ -333,13 +342,13 @@ add_custom_target(cpack add_custom_target(dist DEPENDS cpack) # Configure CPack variables -set(CPACK_PACKAGE_NAME "${PACKAGE_NAME}") -set(CPACK_PACKAGE_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}") -set(CPACK_PACKAGE_VERSION_MINOR "${PROJECT_VERSION_MINOR}") -set(CPACK_PACKAGE_VERSION_PATCH "${PROJECT_VERSION_PATCH}") -set(CPACK_PACKAGE_FILE_NAME "${PACKAGE_NAME}-${PACKAGE_VERSION}-${PACKAGE_PLATFORM}") +set(CPACK_PACKAGE_NAME "${APPLICATION_NAME}") +set(CPACK_PACKAGE_VERSION_MAJOR "${APPLICATION_VERSION_MAJOR}") +set(CPACK_PACKAGE_VERSION_MINOR "${APPLICATION_VERSION_MINOR}") +set(CPACK_PACKAGE_VERSION_PATCH "${APPLICATION_VERSION_PATCH}") +set(CPACK_PACKAGE_FILE_NAME "${APPLICATION_SLUG}-${PACKAGE_VERSION}-${PACKAGE_PLATFORM}") set(CPACK_PACKAGE_DESCRIPTION "") -set(CPACK_PACKAGE_CONTACT "Christopher J. Howard ") +set(CPACK_PACKAGE_CONTACT "${APPLICATION_AUTHOR}") set(CPACK_COMPONENTS_ALL "package") # Configure .tgz and .zip distribution packages diff --git a/modules/antkeeper-source b/modules/antkeeper-source index 7f9eba6..f25e7ce 160000 --- a/modules/antkeeper-source +++ b/modules/antkeeper-source @@ -1 +1 @@ -Subproject commit 7f9eba6cda91b151ba6db7cfbe2620deccb7f03e +Subproject commit f25e7ce98639a5666aecda993e444c634e03f66d diff --git a/modules/glad/glad.c b/modules/glad/glad.c index f9fd689..327590b 100644 --- a/modules/glad/glad.c +++ b/modules/glad/glad.c @@ -1,12 +1,13 @@ /* - OpenGL loader generated by glad 0.1.35 on Sun Jun 5 13:01:47 2022. + OpenGL loader generated by glad 0.1.34 on Wed Aug 30 09:51:51 2023. Language/Generator: C/C++ Specification: gl APIs: gl=3.3 Profile: core Extensions: + GL_ARB_clip_control, GL_EXT_texture_filter_anisotropic Loader: True Local files: True @@ -14,9 +15,9 @@ Reproducible: False Commandline: - --profile="core" --api="gl=3.3" --generator="c" --spec="gl" --local-files --extensions="GL_EXT_texture_filter_anisotropic" + --profile="core" --api="gl=3.3" --generator="c" --spec="gl" --local-files --extensions="GL_ARB_clip_control,GL_EXT_texture_filter_anisotropic" Online: - https://glad.dav1d.de/#profile=core&language=c&specification=gl&loader=on&api=gl%3D3.3&extensions=GL_EXT_texture_filter_anisotropic + https://glad.dav1d.de/#profile=core&language=c&specification=gl&loader=on&api=gl%3D3.3&extensions=GL_ARB_clip_control&extensions=GL_EXT_texture_filter_anisotropic */ #include @@ -641,7 +642,9 @@ PFNGLVERTEXP4UIPROC glad_glVertexP4ui = NULL; PFNGLVERTEXP4UIVPROC glad_glVertexP4uiv = NULL; PFNGLVIEWPORTPROC glad_glViewport = NULL; PFNGLWAITSYNCPROC glad_glWaitSync = NULL; +int GLAD_GL_ARB_clip_control = 0; int GLAD_GL_EXT_texture_filter_anisotropic = 0; +PFNGLCLIPCONTROLPROC glad_glClipControl = NULL; static void load_GL_VERSION_1_0(GLADloadproc load) { if(!GLAD_GL_VERSION_1_0) return; glad_glCullFace = (PFNGLCULLFACEPROC)load("glCullFace"); @@ -1055,8 +1058,13 @@ static void load_GL_VERSION_3_3(GLADloadproc load) { glad_glSecondaryColorP3ui = (PFNGLSECONDARYCOLORP3UIPROC)load("glSecondaryColorP3ui"); glad_glSecondaryColorP3uiv = (PFNGLSECONDARYCOLORP3UIVPROC)load("glSecondaryColorP3uiv"); } +static void load_GL_ARB_clip_control(GLADloadproc load) { + if(!GLAD_GL_ARB_clip_control) return; + glad_glClipControl = (PFNGLCLIPCONTROLPROC)load("glClipControl"); +} static int find_extensionsGL(void) { if (!get_exts()) return 0; + GLAD_GL_ARB_clip_control = has_ext("GL_ARB_clip_control"); GLAD_GL_EXT_texture_filter_anisotropic = has_ext("GL_EXT_texture_filter_anisotropic"); free_exts(); return 1; @@ -1136,6 +1144,7 @@ int gladLoadGLLoader(GLADloadproc load) { load_GL_VERSION_3_3(load); if (!find_extensionsGL()) return 0; + load_GL_ARB_clip_control(load); return GLVersion.major != 0 || GLVersion.minor != 0; } diff --git a/modules/glad/glad.h b/modules/glad/glad.h index e31f5a4..83bfed3 100644 --- a/modules/glad/glad.h +++ b/modules/glad/glad.h @@ -1,12 +1,13 @@ /* - OpenGL loader generated by glad 0.1.35 on Sun Jun 5 13:01:47 2022. + OpenGL loader generated by glad 0.1.34 on Wed Aug 30 09:51:51 2023. Language/Generator: C/C++ Specification: gl APIs: gl=3.3 Profile: core Extensions: + GL_ARB_clip_control, GL_EXT_texture_filter_anisotropic Loader: True Local files: True @@ -14,9 +15,9 @@ Reproducible: False Commandline: - --profile="core" --api="gl=3.3" --generator="c" --spec="gl" --local-files --extensions="GL_EXT_texture_filter_anisotropic" + --profile="core" --api="gl=3.3" --generator="c" --spec="gl" --local-files --extensions="GL_ARB_clip_control,GL_EXT_texture_filter_anisotropic" Online: - https://glad.dav1d.de/#profile=core&language=c&specification=gl&loader=on&api=gl%3D3.3&extensions=GL_EXT_texture_filter_anisotropic + https://glad.dav1d.de/#profile=core&language=c&specification=gl&loader=on&api=gl%3D3.3&extensions=GL_ARB_clip_control&extensions=GL_EXT_texture_filter_anisotropic */ @@ -2121,8 +2122,19 @@ typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIVPROC)(GLenum type, const GLuint GLAPI PFNGLSECONDARYCOLORP3UIVPROC glad_glSecondaryColorP3uiv; #define glSecondaryColorP3uiv glad_glSecondaryColorP3uiv #endif +#define GL_NEGATIVE_ONE_TO_ONE 0x935E +#define GL_ZERO_TO_ONE 0x935F +#define GL_CLIP_ORIGIN 0x935C +#define GL_CLIP_DEPTH_MODE 0x935D #define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE #define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF +#ifndef GL_ARB_clip_control +#define GL_ARB_clip_control 1 +GLAPI int GLAD_GL_ARB_clip_control; +typedef void (APIENTRYP PFNGLCLIPCONTROLPROC)(GLenum origin, GLenum depth); +GLAPI PFNGLCLIPCONTROLPROC glad_glClipControl; +#define glClipControl glad_glClipControl +#endif #ifndef GL_EXT_texture_filter_anisotropic #define GL_EXT_texture_filter_anisotropic 1 GLAPI int GLAD_GL_EXT_texture_filter_anisotropic; diff --git a/modules/stb/stb_image.c b/modules/stb/stb_image.c index 225851f..9771b2f 100644 --- a/modules/stb/stb_image.c +++ b/modules/stb/stb_image.c @@ -6,7 +6,7 @@ #define STBI_NO_HDR #define STBI_NO_PIC #define STBI_NO_PNM -#define STBI_NO_FAILURE_STRINGS +//#define STBI_NO_FAILURE_STRINGS #define STBI_NO_LINEAR #define STBI_NO_STDIO