#include "str.h" #include "types.h" #include #include #include void cmake(char *dep, char *libpath, char *lib, char *cmake_dir, char *params); bool file_exists(char *dir); void sys(char *cmd); int main(int argc, char *argv[]) { printf("SkunkWorks build system v0.0\n"); fflush(stdout); chdir("build"); sys("if not exist deps md deps"); // system("cl ../src/*.c /I../include"); // system("copy ..\\subprojects\\zlib-1.2.13\\zconf.h.in zconf.h"); // putenv("CC=clang"); cmake("glfw-3.3.8", "src\\Release\\glfw3.lib", "glfw3.lib", "", ""); cmake("zlib-1.2.13", "Release\\zlibstatic.lib", "zlib.lib", "", ""); cmake( "lpng1639", "Release\\libpng16_static.lib", "png.lib", "", "-D ZLIB_INCLUDE_DIR=../../subprojects/zlib-1.2.13 " "-D ZLIB_LIBRARY=.. " "-D CMAKE_C_FLAGS=/I\"../zlib-1.2.13\"" ); cmake( "glew-2.1.0", "lib\\Release\\libglew32.lib", "glew.lib", "build/cmake", "" ); sys("cl /c /MD /O2 /Za " "../src/*.c " "/I../include " "/I../subprojects/glew-2.1.0/include " "/I../subprojects/glfw-3.3.8/include " "/I../subprojects/lpng1639 " "/I../subprojects/zlib-1.2.13 " "/Ilpng1639 "); sys("del skunkworks.lib "); sys("lib " "*.obj " "deps/*.lib " "/OUT:skunkworks.lib"); sys("cl /MD /O2 " "../tools/skip.c " "skunkworks.lib " "/I../include "); sys("cl /MD /O2 " "../examples/gsa_simple.c " "skunkworks.lib " "/I../include " "/I. "); sys("del *.obj"); /* system("clang " "-static " "-Wl,-nodefaultlib:msvcrt " "../src/*.c " "-D_CRT_SECURE_NO_WARNINGS " "-oskunkworks.lib " "-I../include " "-I../subprojects/glew-2.1.0/include " "-I../subprojects/glfw-3.3.8/include " "-I../subprojects/lpng1639 " "-I../subprojects/zlib-1.2.13 " "-Ilpng1639 " "-L. -lpng -lzlib -lglew -lglfw3 -lopengl32 -luser32 -lkernel32 " "-lgdi32 -lshell32 " "-llibcmt -llibvcruntime -llibucrt"); */ return 0; } void cmake(char *dep, char *libpath, char *lib, char *cmake_dir, char *params) { if(file_exists(sw_concat("deps\\", lib))) { printf("%s already exists, not compiling dependency\n", lib); return; } printf("compiling %s", lib); sys(sw_concat("md ", dep)); chdir(dep); sys(sw_concat4( "cmake ", params, // " //-DCMAKE_MSVC_RUNTIME_LIBRARY=\"MultiThreaded$<$:Debug>" // "\" " " ../../subprojects/", sw_concat3(dep, "/", cmake_dir) )); sys("cmake --build . --config Release"); chdir(".."); sys(sw_concat4(sw_concat3("copy ", dep, "\\"), libpath, " deps\\", lib)); } bool file_exists(char *dir) { DWORD attrib = GetFileAttributes(dir); return attrib != INVALID_FILE_ATTRIBUTES; } void sys(char *cmd) { if(system(cmd) != 0) { exit(-1); } }