X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=build.c;h=3cb9299dbe0b4d4cd9d86a7c54137d4fce465751;hb=refs%2Fheads%2Fmenu2;hp=eb3de6285879b9f7f6c3196dd3b32349447da76f;hpb=fbe807d19b8a626c2d75002b286dd794f893473a;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/build.c b/build.c index eb3de62..8a82f49 100644 --- a/build.c +++ b/build.c @@ -7,6 +7,12 @@ #include "vg/vg_msg.h" #include "addon_types.h" +#define C0_STOPGAP +#include "vg/vg_m.h" +#include "model.h" +#include "model.c" +#include "c0_stopgap.c" + /* * Addon metadata utilities * -------------------------------------------------------------------------- */ @@ -49,38 +55,38 @@ void build_game_metadata(void) vg_info( "Building game metadata\n" ); write_generic_addon_inf( k_addon_type_board, "Longboard", "board.mdl", - "boards_src/skaterift_long/addon.inf"); + "content_skaterift/boards/skaterift_long/addon.inf"); write_generic_addon_inf( k_addon_type_board, "Fractal", "board.mdl", - "boards_src/skaterift_fract/addon.inf"); + "content_skaterift/boards/skaterift_fract/addon.inf"); write_generic_addon_inf( k_addon_type_board, "Striped", "board.mdl", - "boards_src/skaterift_striped/addon.inf"); + "content_skaterift/boards/skaterift_striped/addon.inf"); write_generic_addon_inf( k_addon_type_board, "Licco", "board.mdl", - "boards_src/skaterift_licco/addon.inf"); + "content_skaterift/boards/skaterift_licco/addon.inf"); write_generic_addon_inf( k_addon_type_board, "Hypno", "board.mdl", - "boards_src/skaterift_spiral/addon.inf"); + "content_skaterift/boards/skaterift_spiral/addon.inf"); write_generic_addon_inf( k_addon_type_board, "Shark", "board.mdl", - "boards_src/skaterift_shark/addon.inf"); + "content_skaterift/boards/skaterift_shark/addon.inf"); write_generic_addon_inf( k_addon_type_player, "De'folde", "ch_new.mdl", - "playermodels_src/skaterift_new/addon.inf" ); + "content_skaterift/playermodels/skaterift_new/addon.inf" ); write_generic_addon_inf( k_addon_type_player, "Jordan", "ch_jordan.mdl", - "playermodels_src/skaterift_jordan/addon.inf" ); + "content_skaterift/playermodels/skaterift_jordan/addon.inf" ); write_generic_addon_inf( k_addon_type_player, "Outlaw", "ch_outlaw.mdl", - "playermodels_src/skaterift_outlaw/addon.inf" ); + "content_skaterift/playermodels/skaterift_outlaw/addon.inf" ); write_generic_addon_inf( k_addon_type_player, "Chip", "ch_chip.mdl", - "playermodels_src/skaterift_chip/addon.inf" ); + "content_skaterift/playermodels/skaterift_chip/addon.inf" ); write_generic_addon_inf( k_addon_type_player, "Aaron", "ch_aaron.mdl", - "playermodels_src/skaterift_aaron/addon.inf" ); + "content_skaterift/playermodels/skaterift_aaron/addon.inf" ); } #define _S( NAME, VS, FS ) \ @@ -133,32 +139,42 @@ void build_shaders(void){ void build_game_content( struct vg_project *proj ) { - vg_project_new_target( proj, "Content files", k_obj_type_none ); - - vg_symlink( proj, "textures_src", "textures" ); - vg_symlink( proj, "models_src", "models" ); - vg_symlink( proj, "boards_src", "boards" ); - vg_symlink( proj, "maps_src", "maps" ); - vg_symlink( proj, "sound_src", "sound" ); - vg_symlink( proj, "playermodels_src", "playermodels" ); + vg_symlink( proj, "content_skaterift/textures", "textures" ); + vg_symlink( proj, "content_skaterift/models", "models" ); + vg_symlink( proj, "content_skaterift/boards", "boards" ); + vg_symlink( proj, "content_skaterift/maps", "maps" ); + vg_symlink( proj, "content_skaterift/sound", "sound" ); + vg_symlink( proj, "content_skaterift/playermodels", "playermodels" ); vg_syscall( "mkdir -p bin/%s/cfg", proj->uid.buffer ); vg_syscall( "mkdir -p bin/%s/savedata", proj->uid.buffer ); vg_syscall( "mkdir -p bin/%s/tools", proj->uid.buffer ); vg_syscall( "cp bin/skaterift_blender.zip bin/%s/tools/", proj->uid.buffer ); } -void build_game_bin( struct vg_project *proj ) +void build_game_bin( struct vg_project *proj, struct vg_compiler_env *env ) { static int meta = 0; - if( !meta ){ + if( !meta ) + { meta = 1; build_shaders(); build_game_metadata(); vg_low( "\n\n" ); } + +#include "control_overlay.h" + + struct vg_compiler_conf conf = {0}; + + if( env->platform == k_platform_windows ) + { + vg_strcat( &conf.link, "-lws2_32 " ); + } - vg_project_new_target( proj, "skaterift", k_obj_type_exe ); - vg_add_engine( proj, &(struct vg_engine_config ) + //vg_strcat( &conf.defines, "-DSKATERIFT " ); + vg_strcat( &conf.defines, "-DHGATE " ); + + vg_make_app( proj, &(struct vg_engine_config ) { .fixed_update_hz = 60, .legacy_support_vg_msg1 = 1, @@ -167,49 +183,55 @@ void build_game_bin( struct vg_project *proj ) .use_3d = 1, .custom_game_settings = 0, .custom_shaders = 1 - }); + }, + env, &conf, "client.c", "skaterift" ); - vg_add_source( proj, "skaterift.c " ); vg_add_controller_database( proj ); - vg_compile_project( proj ); } -void build_sqlite_for_env( struct vg_env *env, struct vg_project *out_proj ) +struct compile_result +build_sqlite_for_env( struct vg_compiler_env *env ) { - struct vg_env sqlite_env = *env; + struct vg_project sqlite_proj; + vg_project_init( &sqlite_proj, "bin", ".sqlite3", env, 0 ); + + struct vg_compiler_env sqlite_env = *env; sqlite_env.optimization = 3; /* force optimization always */ sqlite_env.debug_asan = 0; - vg_project_init( out_proj, env, "sqlite3" ); - vg_project_new_target( out_proj, "sqlite3", k_obj_type_obj ); + struct vg_compiler_conf conf = {0}; + vg_strcat( &conf.link, "-ldl " ); - vg_add_source( out_proj, "-c dep/sqlite3/sqlite3.c " ); - vg_link( out_proj, "-ldl " ); - vg_compile_project( out_proj ); + return vg_compiler_run( &sqlite_proj, &sqlite_env, &conf, + "dep/sqlite3/sqlite3.c ", "sqlite3", + k_obj_type_obj ); } -void compile_server( struct vg_project *proj ) +void compile_server( struct vg_project *proj, struct vg_compiler_env *env ) { - struct vg_project sqlite_project; - build_sqlite_for_env( proj->env, &sqlite_project ); - - vg_project_new_target( proj, "server", k_obj_type_exe ); - vg_add_source( proj, "gameserver.c vg/vg_tool.c vg/vg_steam.c \\\n " ); - vg_add_source( proj, sqlite_project.compiled_objects.buffer ); - vg_include_dir( proj, "-I./dep " ); - vg_library_dir( proj, "-L./vg/dep/steam " ); - vg_link( proj, "-ldl -lpthread -lm -lsdkencryptedappticket -lsteam_api " ); + struct compile_result sqlite = build_sqlite_for_env( env ); + + vg_str sources = {0}; + vg_strcat( &sources, "gameserver.c vg/vg_tool.c vg/vg_steam.c \\\n " ); + vg_strcat( &sources, sqlite.path.buffer ); + + struct vg_compiler_conf conf = {0}; + vg_strcat( &conf.include, "-I. -I./dep " ); + vg_strcat( &conf.library, "-L./vg/dep/steam " ); + vg_strcat( &conf.link, "-ldl -lpthread -lm -lsdkencryptedappticket -lsteam_api " ); + vg_add_blob( proj, "vg/dep/steam/libsteam_api.so", "" ); vg_add_blob( proj, "vg/dep/steam/libsdkencryptedappticket.so", "" ); - vg_compile_project( proj ); + vg_compiler_run( proj, env, &conf, sources.buffer, "server", k_obj_type_exe ); } -void compile_tools( struct vg_project *proj ) +struct compile_result +compile_tools( struct vg_project *proj, struct vg_compiler_env *env ) { - vg_project_new_target( proj, "skaterift", k_obj_type_shared ); - vg_add_source( proj, "skaterift_lib.c " ); - vg_compile_project( proj ); + struct vg_compiler_conf conf = {0}; + return vg_compiler_run( proj, env, &conf, "skaterift_lib.c", "skaterift", + k_obj_type_shared ); } /* @@ -219,19 +241,20 @@ void compile_tools( struct vg_project *proj ) void s_compile_tools(void) { vg_info( "running script: s_compile_tools(void)\n" ); - struct vg_env env = vg_release_env; - env.platform = k_platform_linux; - struct vg_project windows_proj, linux_proj; - vg_project_init( &linux_proj, &env, "skaterift-tools" ); - compile_tools( &linux_proj ); + struct vg_project proj; + vg_project_init( &proj, "bin", "skaterift-tools", NULL, 0 ); + + struct vg_compiler_env env = vg_release_env; + + env.platform = k_platform_linux; + struct compile_result r0 = compile_tools( &proj, &env ); env.platform = k_platform_windows; - vg_project_init( &windows_proj, &env, "skaterift-tools" ); - compile_tools( &windows_proj ); + struct compile_result r1 = compile_tools( &proj, &env ); - vg_syscall("cp %s skaterift_blender/", linux_proj.compiled_objects.buffer ); - vg_syscall("cp %s skaterift_blender/", windows_proj.compiled_objects.buffer); + vg_syscall("cp %s skaterift_blender/", r0.path ); + vg_syscall("cp %s skaterift_blender/", r1.path ); vg_syscall( "zip -r bin/skaterift_blender.zip skaterift_blender/ " "-x skaterift_blender/__pycache__/\\*"); } @@ -242,22 +265,22 @@ void s_release_all(void) struct vg_project content_proj, windows_proj, linux_proj; - struct vg_env env = vg_release_env; + struct vg_compiler_env env = vg_release_env; env.platform = k_platform_anyplatform; - vg_project_init( &content_proj, &env, "skaterift" ); + vg_project_init( &content_proj, "bin", "skaterift", &env, 1 ); build_game_content( &content_proj ); /* binaries for windows */ env = vg_release_env; env.platform = k_platform_windows; - vg_project_init( &windows_proj, &env, "skaterift" ); - build_game_bin( &windows_proj ); + vg_project_init( &windows_proj, "bin", "skaterift", &env, 1 ); + build_game_bin( &windows_proj, &env ); /* binaries for linux */ env = vg_release_env; env.platform = k_platform_linux; - vg_project_init( &linux_proj, &env, "skaterift" ); - build_game_bin( &linux_proj ); + vg_project_init( &linux_proj, "bin", "skaterift", &env, 1 ); + build_game_bin( &linux_proj, &env ); /* package them up for storage */ vg_tarball_project( &content_proj ); @@ -275,9 +298,9 @@ void s_testing_build(void) vg_info( "running script: s_testing_build(void)\n" ); struct vg_project test_proj; - vg_project_init( &test_proj, &vg_test_env, "skaterift-test" ); + vg_project_init( &test_proj, "bin", "skaterift-test", NULL, 0 ); - build_game_bin( &test_proj ); + build_game_bin( &test_proj, &vg_test_env ); build_game_content( &test_proj ); vg_add_blob( &test_proj, "steam_appid.txt", "" ); } @@ -287,8 +310,8 @@ void s_testing_server(void) vg_info( "running script: s_testing_server(void)\n" ); struct vg_project test_proj; - vg_project_init( &test_proj, &vg_test_env, "skaterift-test-server" ); - compile_server( &test_proj ); + vg_project_init( &test_proj, "bin", "skaterift-test-server", &vg_test_env, 0 ); + compile_server( &test_proj, &vg_test_env ); } int main( int argc, char *argv[] )