k_compiler_mingw
}
compiler;
+
+ int clean;
}
static vg_compiler;
vg_compiler.include[0] = '\0';
vg_compiler.library[0] = '\0';
vg_compiler.compiler = compiler;
-
strcpy( vg_compiler.name, name );
snprintf( vg_compiler.build_dir, 512,
name,
vg_compiler_str() );
+ if( vg_compiler.clean ){
+ vg_build_syscall( "rm -rf %s", vg_compiler.build_dir );
+ }
+
vg_build_syscall( "mkdir -p %s", vg_compiler.build_dir );
vg_build_include( "-I. -I./vg " );
vg_build_library_dir( "-L. " );
}
else
{
- vg_build_link( "-lmingw32 -lSDL2main -lSDL2 -lopengl32 -mwindows " );
+ vg_build_link( "-lmingw32 -lSDL2main -lSDL2 -lopengl32 -mwindows \\\n" );
+ vg_build_link( " -Wl,--dynamicbase -Wl,--nxcompat \\\n" );
+
+ /* + 26.05.23: Suddenly something is pulling in winpthread.
+ * cant work out whats doing it or why. */
+ vg_build_link( " -Wl,-Bstatic,--whole-archive \\\n" );
+ vg_build_link( " -lwinpthread \\\n" );
+ vg_build_link( " -Wl,--no-whole-archive " );
}
vg_build_object( "vg/dep/glad/glad.c " );
- vg_build_link( "-lm -pthread " );
+
+ vg_build_link( "-lm " );
+ if( vg_compiler.compiler == k_compiler_mingw ){
+ //vg_build_link( "-mthreads " );
+ //vg_build_link( "-static-libgcc " );
+ }
+ else{
+ vg_build_link( "-pthread " );
+ }
}
void vg_build_add_link_for_game(void)
vg_compiler.optimization_profile = k_optimization_profile_debug;
}
+void vg_build_clean(void){
+ vg_compiler.clean = 1;
+}
+
void vg_build(void)
{
char cmd[8192];
if( (vg_compiler.compiler == k_compiler_gcc) ||
(vg_compiler.compiler == k_compiler_clang ) )
{
- strcat( cmd, "-rdynamic -fsanitize=address " );
+ strcat( cmd, "-rdynamic -fsanitize=address "
+ "-fPIE -fstack-protector-strong " );
}
strcat( cmd, "\\\n" );
/* Warnings */
strcat( cmd,
" -Wall\\\n"
- " -Wno-unused-function -Wno-unused-variable\\\n"
- " -Wno-unused-command-line-argument -Wno-unused-but-set-variable\\\n"
- " -ferror-limit=5\\\n"
+ " -Wno-unused-function -Wno-unused-variable -Wno-format-truncation\\\n"
+ " -Wno-unused-command-line-argument -Wno-unused-but-set-variable\\\n"
);
+ if( vg_compiler.compiler == k_compiler_clang ){
+ strcat( cmd,
+ " -ferror-limit=5\\\n" );
+ }
+
/* Include */
strcat( cmd, " " );
strcat( cmd, vg_compiler.include );