Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
cc4d430
Window creation, own context, partial input handling
zao Apr 20, 2021
10070d4
Send wheel events from GLFW
zao Apr 26, 2021
89c36c1
Skip GLFW context creation
zao Apr 26, 2021
29a0bab
Map GLFW keys more like the native implementation
zao Apr 27, 2021
0313aec
Move context creation to GLFW and drop async texture loading
zao Apr 27, 2021
42d3272
WIP, everything but win and ui builds
zao Apr 30, 2021
777cbf7
Port all UI files
zao May 1, 2021
c864a76
Load GIF via stb_image instead of giflib
zao May 1, 2021
ed9d5a4
Compiles on macOS, several things left as TODOs
zao May 1, 2021
3ad2ca2
Scale UI according to framebuffer size
zao May 1, 2021
2ce5bb6
Build against LuaJIT
zao May 1, 2021
53cace6
Make TreeData path separator portable
zao May 1, 2021
4456818
Linux port, replace most image formats with STB libs
zao May 2, 2021
df8bb64
Convert gray-with-alpha PNG to RGBA on load
zao May 7, 2021
4fba9cb
Replace async key query by tracking key history
zao May 8, 2021
b50d4c2
Track cursor history and implement doubleclicking
zao May 8, 2021
6b221cf
CMake build requires zlib for character builds
zao May 8, 2021
626f060
Compute correct length of console text on UNIX
zao May 8, 2021
7edabe2
Add URL opening with default browser on macOS
zao May 9, 2021
e307939
Initial port to GLESv2 with ANGLE
zao Oct 1, 2021
08c57d9
Use vertex buffers, merge adjacent colored draws
zao Oct 3, 2021
73b0adc
Merge all compatible draw calls inside layers
zao Oct 3, 2021
c30ac24
Support more wildcard patterns in file searches
zao Aug 14, 2022
c08c659
Link RE2 and use non-static dependencies in CI
zao Aug 14, 2022
ebe2fb4
Squashed commit of the following:
zao Aug 23, 2022
14cfc8c
Vendor GLAD ES2 headers, update vcpkg
zao Jan 19, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 51 additions & 24 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -1,27 +1,54 @@
name: Build DLL
on: push
on: push
jobs:
build_dll:
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
submodules: 'recursive'
- name: run-vcpkg
uses: lukka/run-vcpkg@v6.0
with:
vcpkgDirectory: '${{ github.workspace }}/vcpkg'
vcpkgArguments: '@${{ github.workspace }}/vcpkg.txt'
cleanAfterBuild: false
- name: Setup MSBuild
uses: microsoft/setup-msbuild@v1
- name: Check dependencies
run: 'ls ${{ github.workspace }}/vcpkg/installed/x86-windows-static'
- name: Build DLL
run: 'msbuild SimpleGraphic.vcxproj /p:configuration=release /p:platform=win32'
- name: Archive DLL
uses: actions/upload-artifact@v1.0.0
with:
name: SimpleGraphic.dll
path: '${{ github.workspace }}/Release/SimpleGraphic.dll'
strategy:
matrix:
include:
- platform: win32
os: windows-latest
triplet: x86-windows
# - platform: x64
# os: windows-latest
# triplet: x64-windows
runs-on: ${{ matrix.os }}
env:
VCPKG_DEFAULT_TRIPLET: ${{ matrix.triplet }}
VCPKG_INSTALLED_DIR: ${{ github.workspace }}/vcpkg_installed/
DEPS_DIR: ${{ github.workspace }}/vcpkg_installed/${{ matrix.triplet }}
steps:
- name: Checkout
uses: actions/checkout@v2
with:
submodules: "recursive"
- name: run-vcpkg
uses: lukka/run-vcpkg@v10
with:
vcpkgJsonGlob: "./vcpkg.json"
runVcpkgInstall: true
- name: Setup MSBuild
uses: microsoft/setup-msbuild@v1
- name: Check dependencies
run: "ls ${{ env.DEPS_DIR }}"
- name: Build DLL
run: "msbuild SimpleGraphic.vcxproj /p:configuration=release /p:platform=${{ matrix.platform }}"
- name: Archive DLL
uses: actions/upload-artifact@v3
with:
name: SimpleGraphic-${{ matrix.triplet }}.dll
path: "${{ github.workspace }}/Release/SimpleGraphic.dll"
- name: Archive DLL symbols
uses: actions/upload-artifact@v3
with:
name: SimpleGraphic-${{ matrix.triplet }}.pdb
path: "${{ github.workspace }}/Release/SimpleGraphic.pdb"
- name: Archive dependency DLLs
uses: actions/upload-artifact@v3
with:
name: SimpleGraphic-${{ matrix.triplet }}-deps.dll
path: "${{ env.DEPS_DIR }}/bin/*.dll"
- name: Archive dependency DLL symbols
uses: actions/upload-artifact@v3
with:
name: SimpleGraphic-${{ matrix.triplet }}-deps.pdb
path: "${{ env.DEPS_DIR }}/bin/*.pdb"
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,4 @@
/Debug/
/Release/
/SimpleGraphic.vcxproj.user
vcpkg_installed/
138 changes: 138 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
project(SimpleGraphic C CXX)
cmake_minimum_required(VERSION 3.15)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_STANDARD 17)

if (APPLE)
enable_language(OBJCXX)
endif ()

list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")

include(${PROJECT_SOURCE_DIR}/vcpkg/scripts/buildsystems/vcpkg.cmake)

set(SIMPLEGRAPHIC_SOURCES
"config.h"
"engine/common/common.cpp"
"engine/common/console.cpp"
"engine/common/console.h"
"engine/common/keylist.h"
"engine/common/memtrak3.cpp"
"engine/common/memtrak3.h"
"engine/common/streams.cpp"
"engine/common/streams.h"
"engine/core/core_config.cpp"
"engine/core/core_config.h"
"engine/core/core_image.cpp"
"engine/core/core_image.h"
"engine/core/core_main.cpp"
"engine/core/core_main.h"
"engine/core/core_video.cpp"
"engine/core/core_video.h"
"engine/render/r_font.cpp"
"engine/render/r_font.h"
"engine/render/r_main.cpp"
"engine/render/r_main.h"
"engine/render/r_texture.cpp"
"engine/render/r_texture.h"
# "engine/system/win/sys_console.cpp"
"engine/system/win/sys_console_unix.cpp"
"engine/system/win/sys_local.h"
"engine/system/win/sys_main.cpp"
"engine/system/win/sys_opengl.cpp"
"engine/system/win/sys_video.cpp"
"engine/system/sys_console.h"
"engine/system/sys_main.h"
"engine/system/sys_opengl.h"
"engine/system/sys_video.h"
"win/entry.cpp"
"stb_image.h"
"stb_image_write.h"
"ui.h"
"ui_api.cpp"
"ui_console.cpp"
"ui_console.h"
"ui_debug.cpp"
"ui_debug.h"
"ui_local.h"
"ui_main.cpp"
"ui_main.h"
"ui_subscript.cpp"
"ui_subscript.h"
)

set (SIMPLEGRAPHIC_PLATFORM_SOURCES)
if (APPLE)
set (SIMPLEGRAPHIC_PLATFORM_SOURCES
"engine/system/win/sys_macos.mm"
)
endif()

add_library(SimpleGraphic SHARED
${SIMPLEGRAPHIC_SOURCES}
${SIMPLEGRAPHIC_PLATFORM_SOURCES}
)

target_compile_definitions(SimpleGraphic
PRIVATE
"GLFW_INCLUDE_NONE"
"GL_SILENCE_DEPRECATION"
"SIMPLEGRAPHIC_EXPORTS"
)

target_include_directories(SimpleGraphic
PUBLIC
"${CMAKE_CURRENT_SOURCE_DIR}"
"${CMAKE_CURRENT_SOURCE_DIR}/engine"
)

find_package(unofficial-angle CONFIG REQUIRED)
find_package(fmt CONFIG REQUIRED)
find_package(glfw3 CONFIG REQUIRED)
find_package(LuaJit REQUIRED)
find_package(re2 CONFIG REQUIRED)
find_package(Threads REQUIRED)
find_package(ZLIB REQUIRED)

target_include_directories(SimpleGraphic
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/dep/glad/include
${JPEG_INCLUDE_DIR}
${LUAJIT_INCLUDE_DIR}
)

if (CMAKE_SYSTEM_NAME MATCHES "Linux")
target_link_options(SimpleGraphic
PRIVATE
"-export-dynamic"
)
endif ()

if (WIN32)
target_link_libraries(SimpleGraphic
PRIVATE
"winmm.lib"
)
endif ()

if (APPLE)
find_library(CORE_FOUNDATION_LIBRARY CoreFoundation)
find_library(APPLICATION_SERVICES_LIBRARY ApplicationServices)
target_link_libraries(SimpleGraphic
PRIVATE
${CORE_FOUNDATION_LIBRARY}
${APPLICATION_SERVICES_LIBRARY}
)
endif ()

target_link_libraries(SimpleGraphic
PRIVATE
unofficial::angle::libEGL
unofficial::angle::libGLESv2
fmt::fmt
glfw
${LUAJIT_LIBRARIES}
re2::re2
Threads::Threads
ZLIB::ZLIB
)
21 changes: 14 additions & 7 deletions SimpleGraphic.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -107,20 +107,24 @@
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;_DEBUG;SIMPLEGRAPHIC_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32;SIMPLEGRAPHIC_EXPORTS;_WINDOWS;_USRDLL;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PrecompiledHeaderFile>
</PrecompiledHeaderFile>
<AdditionalIncludeDirectories>$(SolutionDir);$(SolutionDir)engine;$(SolutionDir)vcpkg\installed\x86-windows-static\include;%(AdditionalLibraryDirectories)LuaJIT/src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir);$(SolutionDir)engine;$(SolutionDir)vcpkg_installed\x86-windows\include;%(AdditionalLibraryDirectories)LuaJIT/src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
<ExceptionHandling>Async</ExceptionHandling>
<LanguageStandard>stdcpp17</LanguageStandard>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableUAC>false</EnableUAC>
<AdditionalLibraryDirectories>$(SolutionDir)vcpkg\installed\x86-windows-static\lib;%(AdditionalLibraryDirectories)LuaJIT/src;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>gif.lib;jpeg.lib;lzma.lib;libpng16.lib;lua51.lib;tiff.lib;zlib.lib;opengl32.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(SolutionDir)vcpkg_installed\x86-windows\lib;$(SolutionDir)vcpkg_installed\x86-windows\debug\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>d3d11.lib;d3d9.lib;dxgi.lib;dxguid.lib;libANGLE.lib;libGLESv2.lib;re2.lib;lua51.lib;zlib.lib;opengl32.lib;winmm.lib;glfw3dll.lib;fmt.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
Expand All @@ -134,18 +138,21 @@
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PrecompiledHeaderFile>
</PrecompiledHeaderFile>
<AdditionalIncludeDirectories>$(SolutionDir);$(SolutionDir)engine;$(SolutionDir)vcpkg\installed\x86-windows-static\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir);$(SolutionDir)engine;$(SolutionDir)vcpkg_installed\x86-windows-static\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir);$(SolutionDir)engine;$(SolutionDir)vcpkg_installed\x86-windows\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DisableSpecificWarnings>4996</DisableSpecificWarnings>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<ExceptionHandling>Async</ExceptionHandling>
<LanguageStandard>stdcpp17</LanguageStandard>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableUAC>false</EnableUAC>
<AdditionalLibraryDirectories>$(SolutionDir)vcpkg\installed\x86-windows-static\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>gif.lib;jpeg.lib;lzma.lib;libpng16.lib;lua51.lib;zlib.lib;opengl32.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(SolutionDir)vcpkg_installed\x86-windows\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>d3d11.lib;d3d9.lib;dxgi.lib;dxguid.lib;libANGLE.lib;libGLESv2.lib;re2.lib;lua51.lib;zlib.lib;opengl32.lib;winmm.lib;glfw3dll.lib;fmt.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
Expand Down
38 changes: 38 additions & 0 deletions cmake/FindLuaJit.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# - Try to find luajit
# Once done this will define
# LUAJIT_FOUND - System has luajit
# LUAJIT_INCLUDE_DIRS - The luajit include directories
# LUAJIT_LIBRARIES - The libraries needed to use luajit

find_package(PkgConfig)
if (PKG_CONFIG_FOUND)
pkg_check_modules(PC_LUAJIT QUIET luajit)
endif()

set(LUAJIT_DEFINITIONS ${PC_LUAJIT_CFLAGS_OTHER})

find_path(LUAJIT_INCLUDE_DIR luajit.h
PATHS ${PC_LUAJIT_INCLUDEDIR} ${PC_LUAJIT_INCLUDE_DIRS}
PATH_SUFFIXES luajit-2.0 luajit-2.1)

if(MSVC)
list(APPEND LUAJIT_NAMES lua51)
elseif(MINGW)
list(APPEND LUAJIT_NAMES libluajit libluajit-5.1)
else()
list(APPEND LUAJIT_NAMES luajit-5.1)
endif()

find_library(LUAJIT_LIBRARY NAMES ${LUAJIT_NAMES}
PATHS ${PC_LUAJIT_LIBDIR} ${PC_LUAJIT_LIBRARY_DIRS})

set(LUAJIT_LIBRARIES ${LUAJIT_LIBRARY})
set(LUAJIT_INCLUDE_DIRS ${LUAJIT_INCLUDE_DIR})

include(FindPackageHandleStandardArgs)
# handle the QUIETLY and REQUIRED arguments and set LUAJIT_FOUND to TRUE
# if all listed variables are TRUE
find_package_handle_standard_args(LuaJit DEFAULT_MSG
LUAJIT_LIBRARY LUAJIT_INCLUDE_DIR)

mark_as_advanced(LUAJIT_INCLUDE_DIR LUAJIT_LIBRARY)
Loading