support zig cc
authorhgn <hgodden00@gmail.com>
Wed, 20 Dec 2023 06:52:54 +0000 (06:52 +0000)
committerhgn <hgodden00@gmail.com>
Wed, 20 Dec 2023 06:52:54 +0000 (06:52 +0000)
vg_build.h

index f7a641ec2d13a5f573a5735b5e77ed31058c2bf0..f1b14350b9a5f2969fa64e8bf08ebd231a3767aa 100644 (file)
@@ -33,6 +33,7 @@ struct compiler_info
       k_compiler_clang,
       k_compiler_gcc,
       k_compiler_mingw,
+      k_compiler_zigcc,
       k_compiler_none
    }
    compiler;
@@ -80,8 +81,9 @@ void vg_build_include( const char *inc )
 
 const char *vg_compiler_str(void)
 {
-   return (const char *[]){ "clang", "gcc", "i686-w64-mingw32-gcc", "none" }
-                          [vg_compiler.compiler];
+   return (const char *[])
+   { "clang", "gcc", "i686-w64-mingw32-gcc", "zig", "none" }
+   [vg_compiler.compiler];
 }
 
 void vg_build_start( const char *name, enum compiler compiler )
@@ -105,12 +107,16 @@ void vg_build_start( const char *name, enum compiler compiler )
    vg_build_syscall( "mkdir -p %s", vg_compiler.build_dir );
    vg_build_include( "-I. -I./vg " );
    vg_build_library_dir( "-L. " );
+
+   if( vg_compiler.compiler == k_compiler_zigcc )
+      vg_build_library_dir( "-L/usr/lib " );
 }
 
 void vg_build_add_link_for_graphics(void)
 {
    if( (vg_compiler.compiler == k_compiler_gcc) || 
-       (vg_compiler.compiler == k_compiler_clang ) )
+       (vg_compiler.compiler == k_compiler_clang ) ||
+       (vg_compiler.compiler == k_compiler_zigcc) )
    {
       vg_build_link( "-lSDL2 -lGL -lX11 -lXxf86vm -lXrandr -lXi -ldl " );
    }
@@ -141,7 +147,8 @@ void vg_build_add_link_for_graphics(void)
 void vg_build_add_link_for_game(void)
 {
    if( (vg_compiler.compiler == k_compiler_gcc) ||
-       (vg_compiler.compiler == k_compiler_clang ) )
+       (vg_compiler.compiler == k_compiler_clang ) ||
+       (vg_compiler.compiler == k_compiler_zigcc) )
    {
       vg_build_link( "-lsteam_api " );
    }
@@ -185,7 +192,8 @@ void vg_build_copy_game_dependencies(void)
          "vg/submodules/SDL_GameControllerDB/gamecontrollerdb.txt" );
 
    if( (vg_compiler.compiler == k_compiler_gcc) || 
-       (vg_compiler.compiler == k_compiler_clang) )
+       (vg_compiler.compiler == k_compiler_clang) ||
+       (vg_compiler.compiler == k_compiler_zigcc) )
    {
       vg_build_bin_dependency_file( "vg/dep/steam/libsteam_api.so" );
    }
@@ -217,6 +225,7 @@ void vg_build(void)
    /* Compiler */
    strcat( cmd, "ccache " );
    strcat( cmd, vg_compiler_str() );
+   strcat( cmd, " cc" );
    strcat( cmd, " -std=gnu99 -D_REENTRANT \\\n" );
 
    /* Debugging information */
@@ -225,7 +234,8 @@ void vg_build(void)
       strcat( cmd, "   -O0 -ggdb3 -fno-omit-frame-pointer " );
 
       if( (vg_compiler.compiler == k_compiler_gcc) ||
-          (vg_compiler.compiler == k_compiler_clang ) )
+          (vg_compiler.compiler == k_compiler_clang ) ||
+          (vg_compiler.compiler == k_compiler_zigcc) )
       {
          strcat( cmd, "-rdynamic -fsanitize=address "
                       "-fPIE -fstack-protector-strong " );
@@ -285,5 +295,9 @@ void vg_build(void)
 
    strcat( cmd, "   -Wl,-rpath=./" );
 
+   if( vg_compiler.compiler == k_compiler_zigcc ){
+      strcat( cmd, " -target native-native-gnu.2.23" );
+   }
+
    vg_build_syscall( cmd );
 }