diff --git a/CMakeLists.txt b/CMakeLists.txt index 8ecdf0f5..624d258c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -51,9 +51,11 @@ add_executable(${PROJECT_NAME} ${SOURCES}) add_subdirectory(include) add_subdirectory(textures) add_subdirectory(src/audio) +add_subdirectory(src/engine) add_subdirectory(src/goddard) add_subdirectory(src/pc) add_subdirectory(src/menu) add_subdirectory(src/game) +add_subdirectory(lib) -target_link_libraries(${PROJECT_NAME} game audio goddard pc menu ${LINK_LIBRARIES}) +target_link_libraries(${PROJECT_NAME} libultra game audio goddard pc menu ${LINK_LIBRARIES}) diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt new file mode 100644 index 00000000..b055536e --- /dev/null +++ b/lib/CMakeLists.txt @@ -0,0 +1,71 @@ +cmake_minimum_required(VERSION 3.12) + +project(libultra) + +file(GLOB_RECURSE SOURCES "*.c") + +file(GLOB_RECURSE HEADERS "*.h") + +list(REMOVE_ITEM SOURCES + ${PROJECT_SOURCE_DIR}/src/sqrtf.c + ${PROJECT_SOURCE_DIR}/src/string.c + ${PROJECT_SOURCE_DIR}/src/sprintf.c + ${PROJECT_SOURCE_DIR}/src/_Printf.c + ${PROJECT_SOURCE_DIR}/src/kdebugserver.c + ${PROJECT_SOURCE_DIR}/src/osInitialize.c + ${PROJECT_SOURCE_DIR}/src/func_802F7140.c + ${PROJECT_SOURCE_DIR}/src/func_802F71F0.c + ${PROJECT_SOURCE_DIR}/src/func_802F4A20.c + ${PROJECT_SOURCE_DIR}/src/EU_D_802f4330.c + ${PROJECT_SOURCE_DIR}/src/D_802F4380.c + ${PROJECT_SOURCE_DIR}/src/osLeoDiskInit.c + ${PROJECT_SOURCE_DIR}/src/osCreateThread.c + ${PROJECT_SOURCE_DIR}/src/osDestroyThread.c + ${PROJECT_SOURCE_DIR}/src/osStartThread.c + ${PROJECT_SOURCE_DIR}/src/osSetThreadPri.c + ${PROJECT_SOURCE_DIR}/src/osPiStartDma.c + ${PROJECT_SOURCE_DIR}/src/osPiRawStartDma.c + ${PROJECT_SOURCE_DIR}/src/osPiRawReadIo.c + ${PROJECT_SOURCE_DIR}/src/osPiGetCmdQueue.c + ${PROJECT_SOURCE_DIR}/src/osJamMesg.c + ${PROJECT_SOURCE_DIR}/src/osSendMesg.c + ${PROJECT_SOURCE_DIR}/src/osRecvMesg.c + ${PROJECT_SOURCE_DIR}/src/osSetEventMesg.c + ${PROJECT_SOURCE_DIR}/src/osTimer.c + ${PROJECT_SOURCE_DIR}/src/osSetTimer.c + ${PROJECT_SOURCE_DIR}/src/osSetTime.c + ${PROJECT_SOURCE_DIR}/src/osCreateViManager.c + ${PROJECT_SOURCE_DIR}/src/osViSetSpecialFeatures.c + ${PROJECT_SOURCE_DIR}/src/osVirtualToPhysical.c + ${PROJECT_SOURCE_DIR}/src/osViBlack.c + ${PROJECT_SOURCE_DIR}/src/osViSetEvent.c + ${PROJECT_SOURCE_DIR}/src/osViSetMode.c + ${PROJECT_SOURCE_DIR}/src/osViSwapBuffer.c + ${PROJECT_SOURCE_DIR}/src/osSpTaskLoadGo.c + ${PROJECT_SOURCE_DIR}/src/osCreatePiManager.c + ${PROJECT_SOURCE_DIR}/src/osGetTime.c + ${PROJECT_SOURCE_DIR}/src/osEepromProbe.c + ${PROJECT_SOURCE_DIR}/src/osEepromWrite.c + ${PROJECT_SOURCE_DIR}/src/osEepromLongWrite.c + ${PROJECT_SOURCE_DIR}/src/osEepromRead.c + ${PROJECT_SOURCE_DIR}/src/osEepromLongRead.c + ${PROJECT_SOURCE_DIR}/src/osContInit.c + ${PROJECT_SOURCE_DIR}/src/osContStartReadData.c + ${PROJECT_SOURCE_DIR}/src/osAiGetLength.c + ${PROJECT_SOURCE_DIR}/src/osAiSetFrequency.c + ${PROJECT_SOURCE_DIR}/src/osAiSetNextBuffer.c + ${PROJECT_SOURCE_DIR}/src/__osViInit.c + ${PROJECT_SOURCE_DIR}/src/__osSyncPutChars.c + ${PROJECT_SOURCE_DIR}/src/__osAtomicDec.c + ${PROJECT_SOURCE_DIR}/src/__osSiRawStartDma.c + ${PROJECT_SOURCE_DIR}/src/__osViSwapContext.c + ${PROJECT_SOURCE_DIR}/src/__osViGetCurrentContext.c + ${PROJECT_SOURCE_DIR}/src/__osDevMgrMain.c + ) + +list(APPEND SOURCES + ${CMAKE_SOURCE_DIR}/src/pc/ultra_reimplementation.c + ${CMAKE_SOURCE_DIR}/src/pc/mixer.c + ) + +add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) diff --git a/src/engine/CMakeLists.txt b/src/engine/CMakeLists.txt new file mode 100644 index 00000000..140b3a53 --- /dev/null +++ b/src/engine/CMakeLists.txt @@ -0,0 +1,11 @@ +cmake_minimum_required(VERSION 3.12) + +project(engine) + +file(GLOB SOURCES "*.c") + +file(GLOB HEADERS "*.h") + +add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) + +target_link_libraries(${PROJECT_NAME} menu game) diff --git a/src/game/CMakeLists.txt b/src/game/CMakeLists.txt index 6f4f85a4..d2f6a06a 100644 --- a/src/game/CMakeLists.txt +++ b/src/game/CMakeLists.txt @@ -2,10 +2,15 @@ cmake_minimum_required(VERSION 3.12) project(game) +file(GLOB SOURCES "*.c") -file(GLOB_RECURSE SOURCES "*.c") +file(GLOB HEADERS "*.h") -file(GLOB_RECURSE HEADERS "*.h") +list(REMOVE_ITEM SOURCES ${PROJECT_SOURCE_DIR}/main.c) + +list(APPEND SOURCES ${CMAKE_SOURCE_DIR}/data/behavior_data.c) add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) +target_link_libraries(${PROJECT_NAME} engine) + diff --git a/src/goddard/CMakeLists.txt b/src/goddard/CMakeLists.txt index ccec16fb..61f9ea7c 100644 --- a/src/goddard/CMakeLists.txt +++ b/src/goddard/CMakeLists.txt @@ -2,46 +2,12 @@ cmake_minimum_required(VERSION 3.12) project(goddard) -set(SOURCES - debug_utils.c - draw_objects.c - dynlist_proc.c - gd_main.c - gd_math.c - gd_memory.c - joints.c - objects.c - old_menu.c - particles.c - renderer.c - sfx.c - shape_helper.c - skin.c - skin_movement.c - ) +file(GLOB_RECURSE SOURCES "*.c") -set(HEADERS - bad_declarations.h - debug_utils.h - draw_objects.h - dynlist_proc.h - gd_macros.h - gd_main.h - gd_math.h - gd_memory.h - gd_tex_dl.h - gd_types.h - joints.h - objects.h - old_menu.h - particles.h - renderer.h - sfx.h - shape_helper.h - skin.h - skin_movement.h - ) +file(GLOB_RECURSE HEADERS "*.h") add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) -add_dependencies(${PROJECT_NAME} textures) \ No newline at end of file +add_dependencies(${PROJECT_NAME} libultra textures) + +target_link_libraries(${PROJECT_NAME} libultra) \ No newline at end of file diff --git a/src/pc/CMakeLists.txt b/src/pc/CMakeLists.txt index da7c0e60..3415d269 100644 --- a/src/pc/CMakeLists.txt +++ b/src/pc/CMakeLists.txt @@ -4,41 +4,10 @@ project(pc) include_directories(audio controller gfx) -set(SOURCES - pc_main.c - configfile.c - mixer.c - ultra_reimplementation.c - audio/audio_sdl.c - audio/audio_null.c - gfx/gfx_pc.c - gfx/gfx_opengl.c - gfx/gfx_sdl2.c - controller/controller_emscripten_keyboard.c - controller/controller_entry_point.c - controller/controller_keyboard.c - controller/controller_recorded_tas.c - controller/controller_sdl.c - ) +file(GLOB_RECURSE SOURCES "*.c") -set(HEADERS - configfile.h - mixer.h - audio/audio_api.h - audio/audio_sdl.h - audio/audio_null.h - gfx/gfx_pc.h - gfx/gfx_cc.h - gfx/gfx_opengl.h - gfx/gfx_screen_config.h - gfx/gfx_rendering_api.h - gfx/gfx_sdl.h - gfx/gfx_window_manager_api.h - controller/controller_api.h - controller/controller_emscripten_keyboard.h - controller/controller_keyboard.h - controller/controller_recorded_tas.h - controller/controller_sdl.h - ) +file(GLOB_RECURSE HEADERS "*.h") -add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) \ No newline at end of file +list(REMOVE_ITEM SOURCES ${PROJECT_SOURCE_DIR}/pc_main.c) + +add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS})