Skip to content

Commit 653de47

Browse files
committed
change: Use CMake build system
1 parent a5f786e commit 653de47

File tree

4 files changed

+369
-19
lines changed

4 files changed

+369
-19
lines changed

.github/workflows/compilation.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515

1616
- name: Install dependencies
1717
run: |
18-
apk add build-base git
18+
apk add build-base git cmake
1919
2020
- name: Compile project with everything enabled
2121
env:
@@ -34,4 +34,4 @@ jobs:
3434
uses: actions/upload-artifact@v3
3535
with:
3636
name: gsKit-samples-${{ steps.slug.outputs.sha8 }}
37-
path: examples
37+
path: build/*.elf

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
*.o
22
*.a
33
*.elf
4+
build/

CMakeLists.txt

+359
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,359 @@
1+
# ____ ___ | / _____ _____
2+
# | __ | |___/ | |
3+
# |___| ___| | \ __|__ | gsKit Open Source Project.
4+
# ----------------------------------------------------------------------
5+
# Copyright 2004 - Chris "Neovanglist" Gilbert <[email protected]>
6+
# Licenced under Academic Free License version 2.0
7+
# Review gsKit README & LICENSE files for further details.
8+
9+
cmake_minimum_required(VERSION 3.0.0)
10+
11+
project(gsKit)
12+
13+
enable_language(ASM)
14+
15+
set(PS2DEV $ENV{PS2DEV})
16+
if(${PS2DEV} STREQUAL "")
17+
message(FATAL_ERROR "Please kindly set $PS2DEV environment variable")
18+
endif()
19+
20+
set(GSKIT $ENV{GSKIT})
21+
if(${GSKIT} STREQUAL "")
22+
set(GSKIT ${PS2DEV}/gsKit)
23+
endif()
24+
25+
set(INSTALL_LIB_DIR "${GSKIT}/lib" CACHE PATH "Installation directory for libraries")
26+
set(INSTALL_INC_DIR "${GSKIT}/include" CACHE PATH "Installation directory for headers")
27+
28+
set(GSKIT_EXTERNAL_LIBS "")
29+
30+
find_library(LIBJPEG_LIBRARY NAMES jpeg)
31+
find_path(LIBJPEG_INCLUDE_DIR NAMES jpeglib.h)
32+
33+
if(LIBJPEG_LIBRARY)
34+
list(APPEND GSKIT_EXTERNAL_LIBS ${LIBJPEG_LIBRARY})
35+
include_directories(${LIBJPEG_INCLUDE_DIR})
36+
add_definitions(-DHAVE_LIBJPEG)
37+
endif()
38+
39+
find_library(LIBTIFF_LIBRARY NAMES tiff)
40+
find_path(LIBTIFF_INCLUDE_DIR NAMES tiff.h)
41+
42+
if(LIBTIFF_LIBRARY)
43+
list(APPEND GSKIT_EXTERNAL_LIBS ${LIBTIFF_LIBRARY})
44+
include_directories(${LIBTIFF_INCLUDE_DIR})
45+
add_definitions(-DHAVE_LIBTIFF)
46+
endif()
47+
48+
find_library(LIBZ_LIBRARY NAMES z)
49+
find_path(LIBZ_INCLUDE_DIR NAMES zlib.h)
50+
51+
if(LIBZ_LIBRARY)
52+
list(APPEND GSKIT_EXTERNAL_LIBS ${LIBZ_LIBRARY})
53+
include_directories(${LIBZ_INCLUDE_DIR})
54+
add_definitions(-DHAVE_ZLIB)
55+
endif()
56+
57+
find_library(LIBPNG_LIBRARY NAMES png)
58+
find_path(LIBPNG_INCLUDE_DIR NAMES png.h)
59+
60+
if(LIBPNG_LIBRARY)
61+
list(APPEND GSKIT_EXTERNAL_LIBS ${LIBPNG_LIBRARY})
62+
include_directories(${LIBPNG_INCLUDE_DIR})
63+
add_definitions(-DHAVE_LIBPNG)
64+
endif()
65+
66+
macro (add_object_library_macros objlistvar sourcefile)
67+
set(objects_list "")
68+
foreach(arg IN ITEMS ${ARGN})
69+
add_library(${objlistvar}_${arg} OBJECT ${sourcefile})
70+
target_compile_definitions(${objlistvar}_${arg} PRIVATE F_${arg}=1)
71+
list(APPEND objects_list $<TARGET_OBJECTS:${objlistvar}_${arg}>)
72+
endforeach()
73+
set(${objlistvar} ${objects_list})
74+
endmacro (add_object_library_macros)
75+
76+
include_directories(ee/gs/include)
77+
78+
add_object_library_macros(GS_CORE_OBJS ee/gs/src/gsCore.c
79+
gsKit_vram_alloc
80+
gsKit_vram_clear
81+
gsKit_sync_flip
82+
gsKit_setactive
83+
gsKit_finish
84+
gsKit_lock_buffer
85+
gsKit_unlock_buffer
86+
gsKit_lock_status
87+
gsKit_display_buffer
88+
gsKit_switch_context
89+
gsKit_vsync_wait
90+
gsKit_vsync_nowait
91+
gsKit_get_field
92+
gsKit_hsync_wait
93+
gsKit_add_vsync_handler
94+
gsKit_remove_vsync_handler
95+
gsKit_add_hsync_handler
96+
gsKit_remove_hsync_handler
97+
gsKit_clear
98+
gsKit_set_scissor
99+
gsKit_set_test
100+
gsKit_set_clamp
101+
gsKit_set_primalpha
102+
gsKit_set_texfilter
103+
gsKit_set_dither_matrix
104+
gsKit_set_dither
105+
gsKit_set_drawfield
106+
gsKit_set_finish
107+
gsKit_queue_exec_real
108+
gsKit_queue_reset
109+
gsKit_queue_exec
110+
gsKit_alloc_ucab
111+
gsKit_free_ucab
112+
gsKit_queue_init
113+
gsKit_queue_free
114+
gsKit_queue_set
115+
gsKit_mode_switch
116+
)
117+
add_object_library_macros(GS_FONTM_OBJS ee/gs/src/gsFontM.c
118+
gsKit_init_fontm
119+
gsKit_free_fontm
120+
gsKit_fontm_upload
121+
gsKit_fontm_unpack
122+
gsKit_fontm_unpack_raw
123+
gsKit_fontm_unpack_raw_1
124+
gsKit_fontm_print_scaled
125+
)
126+
add_object_library_macros(GS_HIRES_OBJS ee/gs/src/gsHires.c
127+
gsHiresIinternals
128+
_gsKit_create_passes
129+
gsKit_hires_sync
130+
gsKit_hires_flip
131+
gsKit_hires_prepare_bg
132+
gsKit_hires_set_bg
133+
gsKit_hires_init_screen
134+
gsKit_hires_init_global
135+
gsKit_hires_deinit_global
136+
)
137+
add_object_library_macros(GS_INIT_OBJS ee/gs/src/gsInit.c
138+
_gsInit_internal
139+
gsKit_check_rom
140+
gsKit_set_display_offset
141+
gsKit_init_screen
142+
gsKit_init_global_custom
143+
gsKit_deinit_global
144+
)
145+
add_object_library_macros(GS_PRIMITIVE_OBJS ee/gs/src/gsPrimitive.c
146+
gsKit_prim_point
147+
gsKit_prim_list_points
148+
gsKit_prim_line_3d
149+
gsKit_prim_line_goraud_3d
150+
gsKit_prim_list_line_goraud_3d
151+
gsKit_prim_line_strip
152+
gsKit_prim_line_strip_3d
153+
gsKit_prim_sprite
154+
gsKit_prim_triangle_3d
155+
gsKit_prim_triangle_strip
156+
gsKit_prim_triangle_strip_3d
157+
gsKit_prim_triangle_fan
158+
gsKit_prim_triangle_fan_3d
159+
gsKit_prim_triangle_gouraud_3d
160+
gsKit_prim_list_triangle_gouraud_3d
161+
gsKit_prim_quad_3d
162+
gsKit_prim_quad_gouraud_3d
163+
)
164+
add_object_library_macros(GS_MISC_OBJS ee/gs/src/gsMisc.c
165+
gsKit_setup_tbw
166+
gsKit_vram_dump
167+
)
168+
add_object_library_macros(GS_TEXT_MANAGER_OBJS ee/gs/src/gsTexManager.c
169+
gsTextManagerInternals
170+
gsKit_TexManager_init
171+
gsKit_TexManager_setmode
172+
gsKit_TexManager_bind
173+
gsKit_TexManager_invalidate
174+
gsKit_TexManager_free
175+
gsKit_TexManager_nextFrame
176+
)
177+
add_object_library_macros(GS_TEXTURE_OBJS ee/gs/src/gsTexture.c
178+
gsKit_texture_size_ee
179+
gsKit_texture_size
180+
gsKit_texture_to_psm16
181+
gsKit_texture_send
182+
gsKit_texture_send_inline
183+
gsKit_texture_upload
184+
gsKit_prim_sprite_texture_3d
185+
gsKit_prim_sprite_striped_texture_3d
186+
gsKit_prim_triangle_texture_3d
187+
gskit_prim_list_sprite_texture_uv_3d
188+
gsKit_prim_triangle_goraud_texture_3d
189+
gsKit_prim_list_triangle_goraud_texture_uv_3d
190+
gsKit_prim_list_triangle_goraud_texture_stq_3d
191+
gsKit_prim_triangle_strip_texture
192+
gsKit_prim_triangle_strip_texture_3d
193+
gsKit_prim_triangle_fan_texture
194+
gsKit_prim_triangle_fan_texture_3d
195+
gsKit_prim_quad_texture_3d
196+
gsKit_prim_quad_goraud_texture_3d
197+
)
198+
199+
add_library(gskit STATIC
200+
${GS_CORE_OBJS}
201+
${GS_FONTM_OBJS}
202+
${GS_HIRES_OBJS}
203+
${GS_INIT_OBJS}
204+
${GS_PRIMITIVE_OBJS}
205+
${GS_MISC_OBJS}
206+
${GS_TEXT_MANAGER_OBJS}
207+
${GS_TEXTURE_OBJS}
208+
)
209+
210+
target_include_directories(gskit PUBLIC ee/gs/include)
211+
212+
include_directories(ee/dma/include)
213+
214+
add_object_library_macros(DMA_CORE_OBJS ee/dma/src/dmaCore.c
215+
dmaKit_wait
216+
dmaKit_wait_fast
217+
dmaKit_send
218+
dmaKit_send_ucab
219+
dmaKit_send_spr
220+
dmaKit_send_chain
221+
dmaKit_send_chain_ucab
222+
dmaKit_send_chain_spr
223+
dmaKit_get_spr
224+
)
225+
add_object_library_macros(DMA_INIT_OBJS ee/dma/src/dmaInit.c
226+
dmaKit_init
227+
dmaKit_chan_init
228+
)
229+
add_object_library_macros(DMA_SPR_OBJS ee/dma/src/dmaSpr.c
230+
dmaKit_spr_begin
231+
dmaKit_spr_end
232+
dmaKit_spr_alloc
233+
)
234+
235+
add_library(dmakit STATIC
236+
${DMA_CORE_OBJS}
237+
${DMA_INIT_OBJS}
238+
${DMA_SPR_OBJS}
239+
)
240+
241+
target_include_directories(dmakit PUBLIC ee/dma/include)
242+
243+
include_directories(ee/toolkit/include)
244+
245+
add_object_library_macros(GS_TOOLKIT_OBJS ee/toolkit/src/gsToolkit.c
246+
gsKit_texture_finish
247+
gsKit_texture_png
248+
gsKit_texture_bmp
249+
gsKit_texture_jpeg
250+
gsKit_texture_tiff
251+
gsKit_texture_raw
252+
gsKit_texture_tga
253+
gsKit_texture_fnt_raw
254+
gsKit_init_font
255+
gsKit_font_upload_raw
256+
gsKit_font_upload
257+
gsKit_font_print_scaled
258+
)
259+
260+
add_library(gskit_toolkit STATIC
261+
${GS_TOOLKIT_OBJS}
262+
)
263+
264+
target_include_directories(gskit_toolkit PUBLIC ee/toolkit/include)
265+
266+
267+
if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL)
268+
install(TARGETS gskit dmakit gskit_toolkit
269+
ARCHIVE DESTINATION "${INSTALL_LIB_DIR}"
270+
LIBRARY DESTINATION "${INSTALL_LIB_DIR}"
271+
)
272+
endif()
273+
if(NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL)
274+
install(DIRECTORY ee/gs/include/ ee/dma/include/ ee/toolkit/include/
275+
DESTINATION "${INSTALL_INC_DIR}"
276+
FILES_MATCHING PATTERN "*.h"
277+
)
278+
endif()
279+
280+
if(NOT SKIP_BUILD_EXAMPLES)
281+
set(CMAKE_EXECUTABLE_SUFFIX .elf)
282+
set(GSKIT_SAMPLE_LIBS "")
283+
list(APPEND GSKIT_SAMPLE_LIBS gskit dmakit gskit_toolkit ${GSKIT_EXTERNAL_LIBS})
284+
285+
macro (add_executable_example targetname)
286+
add_executable(${targetname}
287+
examples/${targetname}/${targetname}.c
288+
)
289+
target_link_libraries(${targetname}
290+
${GSKIT_SAMPLE_LIBS}
291+
)
292+
endmacro (add_executable_example)
293+
294+
set(GSKIT_SAMPLE_DIRS "")
295+
list(APPEND GSKIT_SAMPLE_DIRS
296+
alpha
297+
atlas
298+
basic
299+
bigtex
300+
coverflow
301+
clut
302+
cube
303+
fb
304+
fhdbg
305+
font
306+
fontm
307+
modetest
308+
modetesthires
309+
pixelperfect
310+
texstream
311+
textures
312+
vsync
313+
)
314+
315+
foreach(arg IN ITEMS ${GSKIT_SAMPLE_DIRS})
316+
add_executable_example(${arg})
317+
endforeach()
318+
319+
target_link_libraries(cube
320+
draw
321+
math3d
322+
)
323+
set_property(TARGET modetest APPEND PROPERTY SOURCES examples/modetest/pad.c)
324+
target_link_libraries(modetest
325+
pad
326+
)
327+
set_property(TARGET modetesthires APPEND PROPERTY SOURCES examples/modetesthires/pad.c)
328+
target_link_libraries(modetesthires
329+
pad
330+
)
331+
332+
add_executable(hires
333+
examples/hires/main.c
334+
)
335+
target_link_libraries(hires
336+
${GSKIT_SAMPLE_LIBS}
337+
draw
338+
graph
339+
math3d
340+
packet
341+
dma
342+
)
343+
344+
add_executable(linuz-texture
345+
examples/linuz-texture/sample.c
346+
examples/linuz-texture/testorig.s
347+
examples/linuz-texture/texture.c
348+
)
349+
target_link_libraries(linuz-texture
350+
${GSKIT_SAMPLE_LIBS}
351+
)
352+
353+
add_executable(png-texture
354+
examples/png-texture/textures.c
355+
)
356+
target_link_libraries(png-texture
357+
${GSKIT_SAMPLE_LIBS}
358+
)
359+
endif()

0 commit comments

Comments
 (0)