more subprojects build

Level generation still missing
This commit is contained in:
HengiFettlich 2020-05-08 10:40:35 +02:00
parent 88c128fbd2
commit 278e755917
9 changed files with 120 additions and 22 deletions

1
.gitignore vendored
View File

@ -41,6 +41,7 @@
# Text editor remnants
*.swp
.vscode/*
.idea/*
# General project-specific ignores
doxygen/doxygen/*

View File

@ -1,24 +1,36 @@
cmake_minimum_required(VERSION 3.12)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNON_MATCHING -DAVOID_UB")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DNON_MATCHING -DAVOID_UB")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNON_MATCHING -DAVOID_UB")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DNON_MATCHING -DAVOID_UB")
project(sm64pc)
set(ROM_VERSION us)
add_compile_definitions(VERSION_US)
set(HEXDUMP_PATH "C:/git-sdk-64/usr/bin/hexdump.exe")
set(N64GRAPHICS_DIR ${CMAKE_SOURCE_DIR}/tools/n64graphics)
set(SKYCONV_DIR ${CMAKE_SOURCE_DIR}/tools/skyconv)
set(MIO0_DIR ${CMAKE_SOURCE_DIR}/tools/mio0)
set(AIFC_DECODE_DIR ${CMAKE_SOURCE_DIR}/tools/aifc_decode)
set(TEXTCONV_DIR ${CMAKE_SOURCE_DIR}/tools/textconv)
IF(WIN32)
IF (WIN32)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -mwindows")
set(N64GRAPHICS_DIR ${N64GRAPHICS_DIR}.exe)
set(SKYCONV_DIR ${SKYCONV_DIR}.exe)
set(MIO0_DIR ${MIO0_DIR}.exe)
set(AIFC_DECODE_DIR ${AIFC_DECODE_DIR}.exe)
ENDIF()
set(AIFC_DECODE_DIR ${TEXTCONV_DIR}.exe)
set(LINK_LIBRARIES SDL2main SDL2 glew32 opengl32 m glu32 setupapi dinput8 user32 gdi32 imm32 ole32 oleaut32 shell32 winmm version uuid)
set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
set(BUILD_SHARED_LIBS OFF)
set(CMAKE_EXE_LINKER_FLAGS "-static")
ELSE ()
set(LINK_LIBRARIES SDL2main SDL2 GL m)
ENDIF ()
set(N64_TOOLS ${N64GRAPHICS_DIR} ${SKYCONV_DIR} ${MIO0_DIR} ${AIFC_DECODE_DIR})
@ -32,16 +44,16 @@ include_directories(
${CMAKE_BINARY_DIR}/include
)
SET(HEADER_FILES src/game/memory.h)
set(SOURCES src/pc/pc_main.c)
SET(SOURCES src/pc/gfx/gfx_pc.c
src/pc/pc_main.c
)
add_executable(${PROJECT_NAME} ${SOURCES} ${HEADER_FILES})
add_executable(${PROJECT_NAME} ${SOURCES})
add_subdirectory(include)
add_subdirectory(textures)
add_subdirectory(src/audio)
add_subdirectory(src/goddard)
add_subdirectory(src/pc)
add_subdirectory(src/menu)
add_subdirectory(src/game)
target_link_libraries(${PROJECT_NAME} goddard pc)
target_link_libraries(${PROJECT_NAME} game audio goddard pc menu ${LINK_LIBRARIES})

View File

@ -47,6 +47,7 @@ def remove_file(fname):
def clean_assets(local_asset_file):
assets = set(read_asset_map().keys())
assets.update(read_local_asset_list(local_asset_file))
local_asset_file.close()
for fname in list(assets) + [".assets-local.txt"]:
if fname.startswith("@"):
continue
@ -153,9 +154,9 @@ def main():
sys.exit(1)
# Make sure tools exist
subprocess.check_call(
["make", "-s", "-C", "tools/", "n64graphics", "skyconv", "mio0", "aifc_decode"]
)
#subprocess.check_call(
# ["make", "-s", "-C", "tools/", "n64graphics", "skyconv", "mio0", "aifc_decode"]
#)
# Go through the assets in roughly alphabetical order (but assets in the same
# mio0 file still go together).

27
include/CMakeLists.txt Normal file
View File

@ -0,0 +1,27 @@
cmake_minimum_required(VERSION 3.12)
project(include)
set(GENERATED_HEADERS
${PROJECT_BINARY_DIR}/text_strings.h
${PROJECT_BINARY_DIR}/text_menu_strings.h
)
add_custom_target(
${PROJECT_NAME}
DEPENDS ${GENERATED_HEADERS}
)
add_custom_command(
OUTPUT ${PROJECT_BINARY_DIR}/text_strings.h
COMMAND ${TEXTCONV_DIR} charmap.txt ${PROJECT_SOURCE_DIR}/text_strings.h.in ${PROJECT_BINARY_DIR}/text_strings.h
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
COMMENT "Generating text_strings.."
)
add_custom_command(
OUTPUT ${PROJECT_BINARY_DIR}/text_menu_strings.h
COMMAND ${TEXTCONV_DIR} charmap_menu.txt ${PROJECT_SOURCE_DIR}/text_menu_strings.h.in ${PROJECT_BINARY_DIR}/text_menu_strings.h
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
COMMENT "Generating text_menu_strings.."
)

11
src/audio/CMakeLists.txt Normal file
View File

@ -0,0 +1,11 @@
cmake_minimum_required(VERSION 3.12)
project(audio)
file(GLOB SOURCES "*.c")
file(GLOB HEADERS "*.h")
add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS})

11
src/game/CMakeLists.txt Normal file
View File

@ -0,0 +1,11 @@
cmake_minimum_required(VERSION 3.12)
project(game)
file(GLOB_RECURSE SOURCES "*.c")
file(GLOB_RECURSE HEADERS "*.h")
add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS})

View File

@ -42,4 +42,6 @@ set(HEADERS
skin_movement.h
)
add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS})
add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS})
add_dependencies(${PROJECT_NAME} textures)

16
src/menu/CMakeLists.txt Normal file
View File

@ -0,0 +1,16 @@
cmake_minimum_required(VERSION 3.12)
project(menu)
file(GLOB SOURCES "*.c")
file(GLOB HEADERS "*.h")
add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS})
target_include_directories(
${PROJECT_NAME} PRIVATE
${CMAKE_BINARY_DIR}/include
)
add_dependencies(${PROJECT_NAME} include)

View File

@ -14,8 +14,22 @@ add_custom_command(
COMMENT "Extracting assets from: baserom.${ROM_VERSION}.z64"
)
add_custom_target(
clean_textures
)
add_custom_command(
TARGET clean_textures
COMMAND python ${CMAKE_SOURCE_DIR}/extract_assets.py --clean
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
DEPENDS ${N64_TOOLS}
COMMENT "Cleaning textures.."
)
file(GLOB_RECURSE TEXTURE_PNGS "${PROJECT_SOURCE_DIR}/*.*.png")
set(OUTPUT_DUMPED)
set(OUTPUT_HEX)
foreach(TEXTURE_PNG ${TEXTURE_PNGS})
file(RELATIVE_PATH TEXTURE_REL_PATH ${PROJECT_SOURCE_DIR} ${TEXTURE_PNG})
@ -31,14 +45,17 @@ foreach(TEXTURE_PNG ${TEXTURE_PNGS})
DEPENDS ${PROJECT_SOURCE_DIR}/${TEXTURE_REL_PATH}
)
list(APPEND OUTPUT_DUMPED ${PROJECT_BINARY_DIR}/${REL_PATH}/${TEXTURE_DUMPED})
set(TEXTURE_HEX ${TEXTURE_DUMPED}.inc.c)
add_custom_command(
OUTPUT ${PROJECT_BINARY_DIR}/${REL_PATH}/${TEXTURE_HEX}
COMMAND ${HEXDUMP_PATH} -v -e '1/1 \"0x%%X,\"' ${PROJECT_BINARY_DIR}/${REL_PATH}/${TEXTURE_DUMPED} > ${PROJECT_BINARY_DIR}/${REL_PATH}/${TEXTURE_HEX}
COMMENT "dumping ${PROJECT_BINARY_DIR}/${REL_PATH}/${TEXTURE_DUMPED} to ${PROJECT_BINARY_DIR}/${REL_PATH}/${TEXTURE_HEX}"
DEPENDS ${PROJECT_BINARY_DIR}/${REL_PATH}/${TEXTURE_DUMPED}
)
list(APPEND OUTPUT_HEX ${PROJECT_BINARY_DIR}/${REL_PATH}/${TEXTURE_HEX})
endforeach()
add_custom_target(
dump_assets
DEPENDS extract_assets ${OUTPUT_DUMPED}
)
add_custom_target(
${PROJECT_NAME}
DEPENDS extract_assets dump_assets
)
DEPENDS extract_assets ${OUTPUT_DUMPED} ${OUTPUT_HEX}
)