Start fixing up DC building

This commit is contained in:
Luke Benstead 2021-04-07 21:54:21 +01:00
parent 9ba82d4bfc
commit 2f1bb5523b
5 changed files with 87 additions and 10 deletions

View File

@ -5,8 +5,10 @@ set(CMAKE_C_STANDARD 99)
include_directories(include) include_directories(include)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32") if(NOT PLATFORM_DREAMCAST)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32")
endif()
set( set(
SOURCES SOURCES
@ -31,15 +33,21 @@ set(
) )
if(PLATFORM_DREAMCAST) if(PLATFORM_DREAMCAST)
set(SOURCES ${SOURCES} GL/platforms/sh4.c) set(SOURCES ${SOURCES} GL/platforms/sh4.c)
else() else()
find_package(SDL2 REQUIRED) find_package(SDL2 REQUIRED)
include_directories(${SDL2_INCLUDE_DIRS}) include_directories(${SDL2_INCLUDE_DIRS})
link_libraries(${SDL2_LIBRARIES}) link_libraries(${SDL2_LIBRARIES})
set(SOURCES ${SOURCES} GL/platforms/software.c GL/platforms/software/edge_equation.c GL/platforms/software/parameter_equation.c) set(
SOURCES
${SOURCES}
GL/platforms/software.c
GL/platforms/software/edge_equation.c
GL/platforms/software/parameter_equation.c
)
endif() endif()
add_library(GLdc ${SOURCES}) add_library(GLdc STATIC ${SOURCES})
link_libraries(m) link_libraries(m)
include_directories(include) include_directories(include)

View File

@ -63,3 +63,10 @@ void SceneListFinish() {
void SceneFinish() { void SceneFinish() {
pvr_scene_finish(); pvr_scene_finish();
} }
const VideoMode* GetVideoMode() {
static VideoMode mode;
mode.width = vid_mode->width;
mode.height = vid_mode->height;
return &mode;
}

View File

@ -10,6 +10,7 @@
#include <kos.h> #include <kos.h>
#include <GL/gl.h> #include <GL/gl.h>
#include <GL/glkos.h>
#include <stdlib.h> #include <stdlib.h>
#include <time.h> #include <time.h>

View File

@ -8,9 +8,11 @@
#include "GL/glext.h" #include "GL/glext.h"
#include "GL/glkos.h" #include "GL/glkos.h"
extern uint8_t romdisk[]; #ifdef __DREAMCAST__
#include <kos.h>
extern uint8 romdisk[];
KOS_INIT_ROMDISK(romdisk); KOS_INIT_ROMDISK(romdisk);
#endif
/* Image type - contains height, width, and data */ /* Image type - contains height, width, and data */
typedef struct // Create A Structure typedef struct // Create A Structure

View File

@ -0,0 +1,59 @@
SET(CMAKE_SYSTEM_NAME Generic)
SET(PLATFORM_DREAMCAST TRUE)
SET(CMAKE_SYSTEM_VERSION 1)
set(CMAKE_CROSSCOMPILING TRUE)
set(CMAKE_C_COMPILER $ENV{KOS_CC_BASE}/bin/sh-elf-gcc)
set(CMAKE_CXX_COMPILER $ENV{KOS_CC_BASE}/bin/sh-elf-g++)
add_compile_options(-ml -m4-single-only -ffunction-sections -fdata-sections)
set(CMAKE_EXE_LINKER_FLAGS " -ml -m4-single-only -Wl,-Ttext=0x8c010000 -Wl,--gc-sections -T$ENV{KOS_BASE}/utils/ldscripts/shlelf.xc -nodefaultlibs" CACHE INTERNAL "" FORCE)
set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_SYSTEM_INCLUDE_PATH "${CMAKE_SYSTEM_INCLUDE_PATH} $ENV{KOS_BASE}/include $ENV{KOS_BASE}/kernel/arch/dreamcast/include $ENV{KOS_BASE}/addons/include $ENV{KOS_BASE}/../kos-ports/include")
INCLUDE_DIRECTORIES(
$ENV{KOS_BASE}/include
$ENV{KOS_BASE}/kernel/arch/dreamcast/include
$ENV{KOS_BASE}/addons/include
$ENV{KOS_BASE}/../kos-ports/include
)
LINK_DIRECTORIES(
$ENV{KOS_BASE}/addons/lib/dreamcast
$ENV{KOS_PORTS}/lib
)
IF(${CMAKE_BUILD_TYPE} MATCHES Debug)
LINK_DIRECTORIES($ENV{KOS_BASE}/lib/dreamcast/debug)
ELSE()
LINK_DIRECTORIES($ENV{KOS_BASE}/lib/dreamcast)
ENDIF()
add_link_options(-L$ENV{KOS_BASE}/lib/dreamcast LINKER:--start-group -lstdc++ -lkallisti -lc -lgcc -Wl,--end-group)
link_libraries(stdc++ kallisti c gcc m)
SET(CMAKE_EXECUTABLE_SUFFIX ".elf")
SET(CMAKE_EXECUTABLE_SUFFIX_CXX ".elf")
ADD_DEFINITIONS(
-D__DREAMCAST__
-DDREAMCAST
-D_arch_dreamcast
-D__arch_dreamcast
-D_arch_sub_pristine
)
if (NOT CMAKE_BUILD_TYPE MATCHES Debug)
ADD_DEFINITIONS(-DNDEBUG)
endif()
SET(CMAKE_ASM_FLAGS "")
SET(CMAKE_ASM_FLAGS_RELEASE "")