Skip to content

Commit 9927879

Browse files
Merge pull request #2 from EmperorPenguin18/testing
Merge testing
2 parents 01eee11 + e0d5e8a commit 9927879

37 files changed

+21256
-1976
lines changed

.github/workflows/macos.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
name: macOS CI
2+
3+
on:
4+
push:
5+
branches: [ "main" ]
6+
pull_request:
7+
branches: [ "main" ]
8+
9+
jobs:
10+
build:
11+
12+
runs-on: macos-latest
13+
14+
steps:
15+
- uses: actions/checkout@v3
16+
- name: make dir
17+
run: mkdir build
18+
- name: change dir
19+
run: cd build
20+
- name: configure
21+
run: cmake .. -DCMAKE_BUILD_TYPE=Release
22+
- name: build
23+
run: cmake --build .
24+

.github/workflows/web.yml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
name: Emscripten CI
2+
3+
on:
4+
push:
5+
branches: [ "main" ]
6+
pull_request:
7+
branches: [ "main" ]
8+
9+
jobs:
10+
build:
11+
12+
runs-on: ubuntu-latest
13+
14+
steps:
15+
- uses: actions/checkout@v3
16+
- name: install compiler
17+
run: |
18+
sudo apt-get update
19+
sudo apt-get install emscripten
20+
- name: make dir
21+
run: mkdir build
22+
- name: change dir
23+
run: cd build
24+
- name: configure
25+
run: emcmake cmake .. -DCMAKE_BUILD_TYPE=Release
26+
- name: build
27+
run: cmake --build .
28+

.github/workflows/windows.yml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,12 @@ jobs:
1313

1414
steps:
1515
- uses: actions/checkout@v3
16-
- name: install dependencies
17-
run: bash builddeps.sh
18-
- name: make
19-
run: make release
16+
- name: make dir
17+
run: mkdir build
18+
- name: change dir
19+
run: cd build
20+
- name: configure
21+
run: cmake .. -DCMAKE_BUILD_TYPE=Release
22+
- name: build
23+
run: cmake --build .
2024

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
build

CMakeLists.txt

Lines changed: 210 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,210 @@
1+
cmake_minimum_required(VERSION 3.15)
2+
project(tidalpp)
3+
4+
option(STATIC "Build the game to work as a single binary" OFF)
5+
6+
if (CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
7+
set(STATIC ON)
8+
endif()
9+
10+
message(STATUS "Static build: ${STATIC}")
11+
message(STATUS "Platform: ${CMAKE_SYSTEM_NAME}")
12+
13+
if (STATIC)
14+
set(BUILD_SHARED_LIBS OFF)
15+
set(BUILD_STATIC_LIBS ON)
16+
set(BUILD_SHARED OFF CACHE BOOL "Don't build chipmunk shared")
17+
set(BUILD_STATIC ON CACHE BOOL "Build chipmunk static")
18+
set(LUA_ENABLE_SHARED OFF CACHE BOOL "Don't build Lua shared")
19+
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
20+
set(CMAKE_EXE_LINKER_FLAGS "-static")
21+
endif()
22+
else()
23+
set(BUILD_SHARED_LIBS ON)
24+
set(BUILD_STATIC_LIBS OFF)
25+
set(BUILD_SHARED ON CACHE BOOL "Build chipmunk shared")
26+
set(BUILD_STATIC OFF CACHE BOOL "Don't build chipmunk static")
27+
set(LUA_ENABLE_SHARED ON CACHE BOOL "Build Lua shared")
28+
endif()
29+
30+
add_executable(tidalpp)
31+
32+
target_sources(tidalpp PRIVATE src/actions.c src/assets.c src/common.c src/engine.c src/filesystem.c src/fonts.c src/instance.c src/main.c src/zpl.c)
33+
34+
message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
35+
set(CMAKE_CXX_FLAGS_DEBUG_INIT "-Wall")
36+
37+
include(FetchContent)
38+
39+
# Math dependency
40+
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
41+
target_link_libraries(tidalpp PRIVATE m)
42+
endif()
43+
44+
# SDL2 dependency
45+
if (CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
46+
target_link_options(tidalpp PRIVATE "-sUSE_SDL=2")
47+
target_link_options(tidalpp PRIVATE "-sALLOW_MEMORY_GROWTH")
48+
#target_link_libraries(tidalpp PRIVATE SDL2)
49+
set_target_properties(tidalpp PROPERTIES SUFFIX ".html") # remove later
50+
else()
51+
find_path(
52+
SDL_INCLUDE_DIR
53+
NAMES "SDL.h"
54+
PATHS "/usr/include/SDL2"
55+
)
56+
message(STATUS "${SDL_INCLUDE_DIR}")
57+
find_library(SDL_LIB "SDL2" "/usr/lib")
58+
message(STATUS "${SDL_LIB}")
59+
if (SDL_INCLUDE_DIR AND SDL_LIB AND (NOT STATIC))
60+
message(STATUS "Using system SDL2 lib")
61+
target_link_libraries(tidalpp PRIVATE SDL2 SDL2main)
62+
else()
63+
FetchContent_Declare(
64+
SDL
65+
GIT_REPOSITORY https://github.com/libsdl-org/SDL
66+
GIT_TAG 8a5ba43d00252c6c8b33c9aa4f1048222955ab4d # 2.28.3
67+
)
68+
FetchContent_GetProperties(SDL)
69+
if(NOT SDL_POPULATED)
70+
FetchContent_Populate(SDL)
71+
file(READ "${sdl_SOURCE_DIR}/src/video/x11/SDL_x11xinput2.h" TEXT)
72+
string(REPLACE "typedef struct XGenericEventCookie XGenericEventCookie;" "" TEXT "${TEXT}")
73+
file(WRITE "${sdl_SOURCE_DIR}/src/video/x11/SDL_x11xinput2.h" "${TEXT}")
74+
set(SDL_TEST OFF CACHE BOOL "Don't build test")
75+
add_subdirectory(${sdl_SOURCE_DIR} ${sdl_BINARY_DIR} EXCLUDE_FROM_ALL)
76+
if (STATIC)
77+
set_target_properties(SDL2-static PROPERTIES OUTPUT_NAME "SDL2")
78+
else()
79+
set_target_properties(SDL2 PROPERTIES OUTPUT_NAME "SDL2")
80+
endif()
81+
add_dependencies(tidalpp SDL2::SDL2)
82+
add_dependencies(tidalpp SDL2::SDL2main)
83+
target_include_directories(tidalpp PRIVATE "${sdl_BINARY_DIR}/include")
84+
target_include_directories(tidalpp PRIVATE "${sdl_BINARY_DIR}/include-config-release/SDL2")
85+
target_include_directories(tidalpp PRIVATE "${sdl_BINARY_DIR}/include-config-debug/SDL2")
86+
target_include_directories(tidalpp PRIVATE "${sdl_SOURCE_DIR}/include")
87+
target_link_directories(tidalpp PRIVATE ${sdl_BINARY_DIR})
88+
endif()
89+
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
90+
target_link_libraries(tidalpp PRIVATE SDL2d SDL2maind)
91+
else()
92+
target_link_libraries(tidalpp PRIVATE SDL2 SDL2main)
93+
endif()
94+
endif()
95+
endif()
96+
97+
# Chipmunk2D dependency
98+
find_path(
99+
CHIPMUNK_INCLUDE_DIR
100+
NAMES "chipmunk.h"
101+
PATHS "/usr/include/chipmunk"
102+
)
103+
message(STATUS "${CHIPMUNK_INCLUDE_DIR}")
104+
find_library(CHIPMUNK_LIB "chipmunk" "/usr/lib")
105+
message(STATUS "${CHIPMUNK_LIB}")
106+
if (CHIPMUNK_INCLUDE_DIR AND CHIPMUNK_LIB AND (NOT STATIC))
107+
message(STATUS "Using system chipmunk lib")
108+
else()
109+
FetchContent_Declare(
110+
chipmunk
111+
GIT_REPOSITORY https://github.com/slembcke/Chipmunk2D
112+
GIT_TAG 87340c216bf97554dc552371bbdecf283f7c540e # 7.0.3
113+
)
114+
FetchContent_GetProperties(chipmunk)
115+
if(NOT chipmunk_POPULATED)
116+
FetchContent_Populate(chipmunk)
117+
file(READ "${chipmunk_SOURCE_DIR}/src/cpHastySpace.c" TEXT)
118+
string(REPLACE "#include <sys/sysctl.h>" "" TEXT "${TEXT}")
119+
file(WRITE "${chipmunk_SOURCE_DIR}/src/cpHastySpace.c" "${TEXT}")
120+
set(BUILD_DEMOS OFF CACHE BOOL "Don't build demos")
121+
add_subdirectory(${chipmunk_SOURCE_DIR} ${chipmunk_BINARY_DIR} EXCLUDE_FROM_ALL)
122+
if (STATIC)
123+
add_dependencies(tidalpp chipmunk_static)
124+
else()
125+
add_dependencies(tidalpp chipmunk)
126+
endif()
127+
target_include_directories(tidalpp PRIVATE "${chipmunk_SOURCE_DIR}/include")
128+
target_link_directories(tidalpp PRIVATE "${chipmunk_BINARY_DIR}/src")
129+
endif()
130+
endif()
131+
target_link_libraries(tidalpp PRIVATE chipmunk)
132+
133+
# Stb dependency
134+
find_path(
135+
STB_INCLUDE_DIR
136+
NAMES "stb_image.h"
137+
PATHS "/usr/include/stb"
138+
)
139+
message(STATUS "${STB_INCLUDE_DIR}")
140+
if (STB_INCLUDE_DIR)
141+
target_include_directories(tidalpp PRIVATE ${STB_INCLUDE_DIR})
142+
else()
143+
FetchContent_Declare(
144+
stb
145+
GIT_REPOSITORY https://github.com/nothings/stb
146+
GIT_TAG 5736b15f7ea0ffb08dd38af21067c314d6a3aae9 # Commit Jan 29 2023
147+
)
148+
FetchContent_GetProperties(stb)
149+
if(NOT stb_POPULATED)
150+
FetchContent_Populate(stb)
151+
target_include_directories(tidalpp PRIVATE ${stb_SOURCE_DIR})
152+
endif()
153+
endif()
154+
155+
# nanoSVG dependency
156+
find_path(
157+
NANOSVG_INCLUDE_DIR
158+
NAMES "nanosvgrast.h"
159+
PATHS "/usr/include/nanosvg"
160+
)
161+
message(STATUS "${NANOSVG_INCLUDE_DIR}")
162+
if (NANOSVG_INCLUDE_DIR)
163+
target_include_directories(tidalpp PRIVATE ${NANOSVG_INCLUDE_DIR})
164+
else()
165+
FetchContent_Declare(
166+
nanosvg
167+
GIT_REPOSITORY https://github.com/memononen/nanosvg
168+
GIT_TAG 9da543e8329fdd81b64eb48742d8ccb09377aed1 # Commit Dec 4 2022
169+
)
170+
FetchContent_GetProperties(nanosvg)
171+
if(NOT nanosvg_POPULATED)
172+
FetchContent_Populate(nanosvg)
173+
target_include_directories(tidalpp PRIVATE "${nanosvg_SOURCE_DIR}/src")
174+
endif()
175+
endif()
176+
177+
# Lua dependency
178+
find_path(
179+
LUA_INCLUDE_DIR
180+
NAMES "lua.h"
181+
PATHS "/usr/include"
182+
)
183+
message(STATUS "${LUA_INCLUDE_DIR}")
184+
find_library(LUA_LIB "lua" "/usr/lib")
185+
message(STATUS "${LUA_LIB}")
186+
if (LUA_INCLUDE_DIR AND LUA_LIB AND (NOT STATIC))
187+
message(STATUS "Using system Lua lib")
188+
else()
189+
FetchContent_Declare(
190+
lua
191+
GIT_REPOSITORY https://github.com/walterschell/Lua
192+
GIT_TAG 88246d621abf7b6fba9332f49229d507f020e450 # Commit Aug 8 2023
193+
)
194+
FetchContent_GetProperties(lua)
195+
if(NOT lua_POPULATED)
196+
FetchContent_Populate(lua)
197+
add_subdirectory(${lua_SOURCE_DIR} ${lua_BINARY_DIR} EXCLUDE_FROM_ALL)
198+
if (STATIC)
199+
set_target_properties(lua_static PROPERTIES OUTPUT_NAME "lua")
200+
else()
201+
set_target_properties(lua_shared PROPERTIES OUTPUT_NAME "lua")
202+
endif()
203+
add_dependencies(tidalpp Lua::Library)
204+
target_include_directories(tidalpp PRIVATE "${lua_SOURCE_DIR}/lua-5.4.6/include")
205+
target_link_directories(tidalpp PRIVATE "${lua_BINARY_DIR}/lua-5.4.6")
206+
endif()
207+
endif()
208+
target_link_libraries(tidalpp PRIVATE lua)
209+
210+
install(TARGETS tidalpp DESTINATION bin)

PKGBUILD

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,20 @@ url='https://github.com/EmperorPenguin18/tidalpp/'
88
source=("https://github.com/EmperorPenguin18/$pkgname/archive/$pkgver.tar.gz")
99
arch=('x86_64')
1010
license=('LGPL3')
11-
depends=('sdl2' 'physfs' 'cjson' 'chipmunk' 'sdl2_image' 'soloud' 'sdl2_fontcache' 'openssl')
12-
sha256sums=('d7e1b99a076f2b598c40a5971efd2032084a8bf5fe518a8471b9775da50b1687')
11+
depends=('sdl2' 'chipmunk' 'stb' 'nanosvg' 'lua')
12+
optdepends=('openssl' 'emscripten')
13+
makedepends=('cmake')
14+
sha256sums=('')
1315

1416
build () {
1517
cd "$srcdir/$pkgname-$pkgver"
16-
make release
18+
mkdir build
19+
cd build
20+
cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release
21+
cmake --build .
1722
}
1823

1924
package () {
2025
cd "$srcdir/$pkgname-$pkgver"
21-
install -Dm755 tidalpp -t "$pkgdir/usr/bin"
26+
cmake --build . --target install
2227
}

README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,14 @@ Simple game engine
44
## Features
55
- Developed on Linux, and should work on Windows
66
- Uses SDL2 for cross-platform media capabilities
7-
- To access the filesystem PHYSFS is used
87
- Physics engine using Chipmunk2d
98
- Objects can be defined using plain test (Json)
109

1110
Features will be added to suit other projects I'm working on.
1211

1312
## Dependencies
1413

15-
SDL2, PHYSFS, cJSON, Chipmunk, SDL image, Soloud, SDL FontCache, and libcrypt (openssl)
14+
SDL2, Chipmunk, and Lua
1615

1716
## Install
1817
Arch

0 commit comments

Comments
 (0)