switched to build.cpp
This commit is contained in:
parent
1068a1de24
commit
92acc0bc08
|
@ -3503,7 +3503,7 @@ process_config_file(Application_Links *app){
|
|||
int32_t size = ftell(file);
|
||||
char *mem = (char*)push_block(&global_part, size+1);
|
||||
fseek(file, 0, SEEK_SET);
|
||||
int32_t check_size = fread(mem, 1, size, file);
|
||||
int32_t check_size = (int32_t)fread(mem, 1, size, file);
|
||||
if (check_size == size){
|
||||
mem[size] = 0;
|
||||
fclose(file);
|
||||
|
|
|
@ -11,7 +11,7 @@ SET BUILD_MODE=%1
|
|||
if "%BUILD_MODE%" == "" (SET BUILD_MODE="/DDEV_BUILD")
|
||||
|
||||
pushd ..\build
|
||||
cl %OPTS% ..\code\build.c /Zi /Febuild %BUILD_MODE%
|
||||
cl %OPTS% ..\code\build.cpp /Zi /Febuild %BUILD_MODE%
|
||||
if %ERRORLEVEL% neq 0 (set FirstError=1)
|
||||
popd
|
||||
|
||||
|
|
|
@ -77,10 +77,10 @@ static uint64_t get_time();
|
|||
static int32_t get_current_directory(char *buffer, int32_t max);
|
||||
static void execute(char *dir, char *str);
|
||||
|
||||
static void make_folder_if_missing(char *folder);
|
||||
static void make_folder_if_missing(char *dir, char *folder);
|
||||
static void clear_folder(char *folder);
|
||||
static void copy_file(char *path, char *file, char *folder, char *newname);
|
||||
static void copy_all(char *source, char *folder);
|
||||
static void copy_file(char *path, char *file, char *folder1, char *folder2, char *newname);
|
||||
static void copy_all(char *source, char *tag, char *folder);
|
||||
static void zip(char *parent, char *folder, char *dest);
|
||||
|
||||
#if defined(IS_WINDOWS)
|
||||
|
@ -108,11 +108,11 @@ typedef union _LARGE_INTEGER {
|
|||
# define WINAPI
|
||||
#endif
|
||||
|
||||
DWORD WINAPI GetCurrentDirectoryA(_In_ DWORD nBufferLength, _Out_ LPTSTR lpBuffer);
|
||||
BOOL WINAPI QueryPerformanceCounter(_Out_ LARGE_INTEGER *lpPerformanceCount);
|
||||
BOOL WINAPI QueryPerformanceFrequency(_Out_ LARGE_INTEGER *lpFrequency);
|
||||
BOOL WINAPI CreateDirectoryA(_In_ LPCTSTR lpPathName, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes);
|
||||
BOOL WINAPI CopyFileA(_In_ LPCTSTR lpExistingFileName, _In_ LPCTSTR lpNewFileName, _In_ BOOL bFailIfExists);
|
||||
extern "C" DWORD WINAPI GetCurrentDirectoryA(_In_ DWORD nBufferLength, _Out_ LPTSTR lpBuffer);
|
||||
extern "C" BOOL WINAPI QueryPerformanceCounter(_Out_ LARGE_INTEGER *lpPerformanceCount);
|
||||
extern "C" BOOL WINAPI QueryPerformanceFrequency(_Out_ LARGE_INTEGER *lpFrequency);
|
||||
extern "C" BOOL WINAPI CreateDirectoryA(_In_ LPCTSTR lpPathName, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes);
|
||||
extern "C" BOOL WINAPI CopyFileA(_In_ LPCTSTR lpExistingFileName, _In_ LPCTSTR lpNewFileName, _In_ BOOL bFailIfExists);
|
||||
|
||||
static uint64_t perf_frequency;
|
||||
|
||||
|
@ -159,10 +159,19 @@ slash_fix(char *path){
|
|||
}
|
||||
|
||||
static void
|
||||
make_folder_if_missing(char *folder){
|
||||
char *p = folder;
|
||||
slash_fix(folder);
|
||||
make_folder_if_missing(char *dir, char *folder){
|
||||
slash_fix(dir);
|
||||
|
||||
char space[1024];
|
||||
String path = make_fixed_width_string(space);
|
||||
append_sc(&path, dir);
|
||||
if (folder){
|
||||
append_sc(&path, "\\");
|
||||
append_sc(&path, folder);
|
||||
}
|
||||
terminate_with_null(&path);
|
||||
|
||||
char *p = path.str;
|
||||
for (; *p; ++p){
|
||||
if (*p == '\\'){
|
||||
*p = 0;
|
||||
|
@ -181,7 +190,7 @@ clear_folder(char *folder){
|
|||
}
|
||||
|
||||
static void
|
||||
copy_file(char *path, char *file, char *folder, char *newname){
|
||||
copy_file(char *path, char *file, char *folder1, char *folder2, char *newname){
|
||||
char src[256], dst[256];
|
||||
String b = make_fixed_width_string(src);
|
||||
if (path){
|
||||
|
@ -192,8 +201,12 @@ copy_file(char *path, char *file, char *folder, char *newname){
|
|||
terminate_with_null(&b);
|
||||
|
||||
b = make_fixed_width_string(dst);
|
||||
append_sc(&b, folder);
|
||||
append_sc(&b, folder1);
|
||||
append_sc(&b, "\\");
|
||||
if (folder2){
|
||||
append_sc(&b, folder2);
|
||||
append_sc(&b, "\\");
|
||||
}
|
||||
if (newname){
|
||||
append_sc(&b, newname);
|
||||
}
|
||||
|
@ -209,10 +222,15 @@ copy_file(char *path, char *file, char *folder, char *newname){
|
|||
}
|
||||
|
||||
static void
|
||||
copy_all(char *source, char *folder){
|
||||
copy_all(char *source, char *tag, char *folder){
|
||||
slash_fix(source);
|
||||
slash_fix(folder);
|
||||
systemf("copy %s %s\\*", source, folder);
|
||||
if (source){
|
||||
systemf("copy %s\\%s %s\\*", source, tag, folder);
|
||||
}
|
||||
else{
|
||||
systemf("copy %s %s\\*", tag, folder);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -294,8 +312,13 @@ static void
|
|||
slash_fix(char *path){}
|
||||
|
||||
static void
|
||||
make_folder_if_missing(char *folder){
|
||||
systemf("mkdir -p %s", folder);
|
||||
make_folder_if_missing(char *dir, char *folder){
|
||||
if (folder){
|
||||
systemf("mkdir -p %s/%s", dir, folder);
|
||||
}
|
||||
else{
|
||||
systemf("mkdir -p %s", dir);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -304,22 +327,37 @@ clear_folder(char *folder){
|
|||
}
|
||||
|
||||
static void
|
||||
copy_file(char *path, char *file, char *folder, char *newname){
|
||||
copy_file(char *path, char *file, char *folder1, char *folder2, char *newname){
|
||||
if (!newname){
|
||||
newname = file;
|
||||
}
|
||||
|
||||
if (path){
|
||||
systemf("cp %s/%s %s/%s", path, file, folder, newname);
|
||||
if (folder2){
|
||||
systemf("cp %s/%s %s/%s/%s", path, file, folder1, folder2, newname);
|
||||
}
|
||||
else{
|
||||
systemf("cp %s %s/%s", file, folder, newname);
|
||||
systemf("cp %s/%s %s/%s", path, file, folder1, newname);
|
||||
}
|
||||
}
|
||||
else{
|
||||
if (folder2){
|
||||
systemf("cp %s %s/%s/%s", file, folder1, folder2, newname);
|
||||
}
|
||||
else{
|
||||
systemf("cp %s %s/%s", file, folder1, newname);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
copy_all(char *source, char *folder){
|
||||
systemf("cp -rf %s %s", source, folder);
|
||||
copy_all(char *source, char *tag, char *folder){
|
||||
if (source){
|
||||
systemf("cp -rf %s/%s %s", source, tag, folder);
|
||||
}
|
||||
else{
|
||||
systemf("cp -rf %s %s", tag, folder);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -636,8 +674,101 @@ buildsuper(char *code_path, char *out_path, char *filename){
|
|||
#endif
|
||||
}
|
||||
|
||||
#define META_DIR "../meta"
|
||||
#define BUILD_DIR "../build"
|
||||
#define D_META_DIR "../meta"
|
||||
#define D_META_FSM_DIR "../meta/fsmgen"
|
||||
#define D_META_GEN_DIR "../meta/metagen"
|
||||
#define D_BUILD_DIR "../build"
|
||||
|
||||
#define D_PACK_DIR "../distributions"
|
||||
#define D_PACK_DATA_DIR "../data/dist_files"
|
||||
#define D_DATA_DIR "../data/test"
|
||||
|
||||
#define D_PACK_ALPHA_PAR_DIR "../current_dist"
|
||||
#define D_PACK_SUPER_PAR_DIR "../current_dist_super"
|
||||
#define D_PACK_POWER_PAR_DIR "../current_dist_power"
|
||||
|
||||
#define D_PACK_ALPHA_DIR D_PACK_ALPHA_PAR_DIR"/4coder"
|
||||
#define D_PACK_SUPER_DIR D_PACK_SUPER_PAR_DIR"/4coder"
|
||||
#define D_PACK_POWER_DIR D_PACK_POWER_PAR_DIR"/power"
|
||||
|
||||
static char *META_DIR = 0;
|
||||
static char *META_FSM_DIR = 0;
|
||||
static char *META_GEN_DIR = 0;
|
||||
static char *BUILD_DIR = 0;
|
||||
static char *PACK_DIR = 0;
|
||||
static char *PACK_DATA_DIR = 0;
|
||||
static char *DATA_DIR = 0;
|
||||
static char *PACK_ALPHA_PAR_DIR = 0;
|
||||
static char *PACK_SUPER_PAR_DIR = 0;
|
||||
static char *PACK_POWER_PAR_DIR = 0;
|
||||
static char *PACK_ALPHA_DIR = 0;
|
||||
static char *PACK_SUPER_DIR = 0;
|
||||
static char *PACK_POWER_DIR = 0;
|
||||
|
||||
static char*
|
||||
get_head(String builder){
|
||||
return(builder.str + builder.size);
|
||||
}
|
||||
|
||||
static void
|
||||
init_global_strings(){
|
||||
int32_t size = 1024;
|
||||
char *base = (char*)malloc(size);
|
||||
String builder = make_string_cap(base, 0, size);
|
||||
String term = make_string("\0", 1);
|
||||
|
||||
META_DIR = get_head(builder);
|
||||
append_sc(&builder, D_META_DIR);
|
||||
append_ss(&builder, term);
|
||||
|
||||
META_FSM_DIR = get_head(builder);
|
||||
append_sc(&builder, D_META_FSM_DIR);
|
||||
append_ss(&builder, term);
|
||||
|
||||
META_GEN_DIR = get_head(builder);
|
||||
append_sc(&builder, D_META_GEN_DIR);
|
||||
append_ss(&builder, term);
|
||||
|
||||
BUILD_DIR = get_head(builder);
|
||||
append_sc(&builder, D_BUILD_DIR);
|
||||
append_ss(&builder, term);
|
||||
|
||||
PACK_DIR = get_head(builder);
|
||||
append_sc(&builder, D_PACK_DIR);
|
||||
append_ss(&builder, term);
|
||||
|
||||
PACK_DATA_DIR = get_head(builder);
|
||||
append_sc(&builder, D_PACK_DATA_DIR);
|
||||
append_ss(&builder, term);
|
||||
|
||||
DATA_DIR = get_head(builder);
|
||||
append_sc(&builder, D_DATA_DIR);
|
||||
append_ss(&builder, term);
|
||||
|
||||
PACK_ALPHA_PAR_DIR = get_head(builder);
|
||||
append_sc(&builder, D_PACK_ALPHA_PAR_DIR);
|
||||
append_ss(&builder, term);
|
||||
|
||||
PACK_SUPER_PAR_DIR = get_head(builder);
|
||||
append_sc(&builder, D_PACK_SUPER_PAR_DIR);
|
||||
append_ss(&builder, term);
|
||||
|
||||
PACK_POWER_PAR_DIR = get_head(builder);
|
||||
append_sc(&builder, D_PACK_POWER_PAR_DIR);
|
||||
append_ss(&builder, term);
|
||||
|
||||
PACK_ALPHA_DIR = get_head(builder);
|
||||
append_sc(&builder, D_PACK_ALPHA_DIR);
|
||||
append_ss(&builder, term);
|
||||
|
||||
PACK_SUPER_DIR = get_head(builder);
|
||||
append_sc(&builder, D_PACK_SUPER_DIR);
|
||||
append_ss(&builder, term);
|
||||
|
||||
PACK_POWER_DIR = get_head(builder);
|
||||
append_sc(&builder, D_PACK_POWER_DIR);
|
||||
append_ss(&builder, term);
|
||||
}
|
||||
|
||||
#if defined(IS_WINDOWS)
|
||||
#define PLAT_LAYER "win32_4ed.cpp"
|
||||
|
@ -658,7 +789,7 @@ fsm_generator(char *cdir){
|
|||
|
||||
if (prev_error == 0){
|
||||
BEGIN_TIME_SECTION();
|
||||
execute(cdir, META_DIR"/fsmgen");
|
||||
execute(cdir, META_FSM_DIR);
|
||||
END_TIME_SECTION("run fsm generator");
|
||||
}
|
||||
}
|
||||
|
@ -674,22 +805,35 @@ metagen(char *cdir){
|
|||
|
||||
if (prev_error == 0){
|
||||
BEGIN_TIME_SECTION();
|
||||
execute(cdir, META_DIR"/metagen");
|
||||
execute(cdir, META_GEN_DIR);
|
||||
END_TIME_SECTION("run metagen");
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
do_buildsuper(char *cdir){
|
||||
char space[1024];
|
||||
String str = make_fixed_width_string(space);
|
||||
|
||||
BEGIN_TIME_SECTION();
|
||||
//buildsuper(cdir, BUILD_DIR, "../code/4coder_default_bindings.cpp");
|
||||
//copy_sc(&str, "../code/4coder_default_bindings.cpp");
|
||||
//terminate_with_null(&str);
|
||||
//buildsuper(cdir, BUILD_DIR, str.str);
|
||||
#if defined(IS_WINDOWS)
|
||||
buildsuper(cdir, BUILD_DIR, "../code/internal_4coder_tests.cpp");
|
||||
copy_sc(&str, "../code/internal_4coder_tests.cpp");
|
||||
terminate_with_null(&str);
|
||||
buildsuper(cdir, BUILD_DIR, str.str);
|
||||
#else
|
||||
buildsuper(cdir, BUILD_DIR, "../code/power/4coder_experiments.cpp");
|
||||
copy_sc(&str, "../code/power/4coder_experiments.cpp");
|
||||
terminate_with_null(&str);
|
||||
buildsuper(cdir, BUILD_DIR, str.str);
|
||||
#endif
|
||||
//buildsuper(cdir, BUILD_DIR, "../code/power/4coder_casey.cpp");
|
||||
//buildsuper(cdir, BUILD_DIR, "../4vim/4coder_chronal.cpp");
|
||||
//copy_sc(&str, "../code/power/4coder_casey.cpp");
|
||||
//terminate_with_null(&str);
|
||||
//buildsuper(cdir, BUILD_DIR, str.str);
|
||||
//copy_sc(&str, "../4vim/4coder_chronal.cpp");
|
||||
//terminate_with_null(&str);
|
||||
//buildsuper(cdir, BUILD_DIR, str.str);
|
||||
END_TIME_SECTION("build custom");
|
||||
}
|
||||
|
||||
|
@ -718,23 +862,12 @@ standard_build(char *cdir, uint32_t flags){
|
|||
build_main(cdir, flags);
|
||||
}
|
||||
|
||||
#define PACK_DIR "../distributions"
|
||||
#define PACK_DATA_DIR "../data/dist_files"
|
||||
#define DATA_DIR "../data/test"
|
||||
|
||||
#define PACK_ALPHA_PAR_DIR "../current_dist"
|
||||
#define PACK_SUPER_PAR_DIR "../current_dist_super"
|
||||
#define PACK_POWER_PAR_DIR "../current_dist_power"
|
||||
|
||||
#define PACK_ALPHA_DIR PACK_ALPHA_PAR_DIR"/4coder"
|
||||
#define PACK_SUPER_DIR PACK_SUPER_PAR_DIR"/4coder"
|
||||
#define PACK_POWER_DIR PACK_POWER_PAR_DIR"/power"
|
||||
|
||||
static void
|
||||
get_4coder_dist_name(String *zip_file, int32_t OS_specific, char *tier, char *ext){
|
||||
zip_file->size = 0;
|
||||
|
||||
append_sc(zip_file, PACK_DIR"/");
|
||||
append_sc(zip_file, PACK_DIR);
|
||||
append_sc(zip_file, "/");
|
||||
append_sc(zip_file, tier);
|
||||
append_sc(zip_file, "/4coder-");
|
||||
|
||||
|
@ -777,16 +910,16 @@ package(char *cdir){
|
|||
build_main(cdir, OPTIMIZATION | KEEP_ASSERT | DEBUG_INFO);
|
||||
|
||||
clear_folder(PACK_ALPHA_PAR_DIR);
|
||||
make_folder_if_missing(PACK_ALPHA_DIR"/3rdparty");
|
||||
make_folder_if_missing(PACK_DIR"/alpha");
|
||||
copy_file(BUILD_DIR, "4ed"EXE, PACK_ALPHA_DIR, 0);
|
||||
ONLY_WINDOWS(copy_file(BUILD_DIR, "4ed"PDB, PACK_ALPHA_DIR, 0));
|
||||
copy_file(BUILD_DIR, "4ed_app"DLL, PACK_ALPHA_DIR, 0);
|
||||
ONLY_WINDOWS(copy_file(BUILD_DIR, "4ed_app"PDB, PACK_ALPHA_DIR, 0));
|
||||
copy_all (PACK_DATA_DIR"/*", PACK_ALPHA_DIR);
|
||||
copy_file(0, "README.txt", PACK_ALPHA_DIR, 0);
|
||||
copy_file(0, "TODO.txt", PACK_ALPHA_DIR, 0);
|
||||
copy_file(DATA_DIR, "config.4coder", PACK_ALPHA_DIR, 0);
|
||||
make_folder_if_missing(PACK_ALPHA_DIR, "3rdparty");
|
||||
make_folder_if_missing(PACK_DIR, "alpha");
|
||||
copy_file(BUILD_DIR, "4ed"EXE, PACK_ALPHA_DIR, 0, 0);
|
||||
ONLY_WINDOWS(copy_file(BUILD_DIR, "4ed"PDB, PACK_ALPHA_DIR, 0, 0));
|
||||
copy_file(BUILD_DIR, "4ed_app"DLL, PACK_ALPHA_DIR, 0, 0);
|
||||
ONLY_WINDOWS(copy_file(BUILD_DIR, "4ed_app"PDB, PACK_ALPHA_DIR, 0, 0));
|
||||
copy_all (PACK_DATA_DIR, "*", PACK_ALPHA_DIR);
|
||||
copy_file(0, "README.txt", PACK_ALPHA_DIR, 0, 0);
|
||||
copy_file(0, "TODO.txt", PACK_ALPHA_DIR, 0, 0);
|
||||
copy_file(DATA_DIR, "config.4coder", PACK_ALPHA_DIR, 0, 0);
|
||||
|
||||
get_4coder_dist_name(&str, 1, "alpha", "zip");
|
||||
zip(PACK_ALPHA_PAR_DIR, "4coder", str.str);
|
||||
|
@ -795,36 +928,36 @@ package(char *cdir){
|
|||
build_main(cdir, OPTIMIZATION | KEEP_ASSERT | DEBUG_INFO | SUPER);
|
||||
|
||||
clear_folder(PACK_SUPER_PAR_DIR);
|
||||
make_folder_if_missing(PACK_SUPER_DIR"/3rdparty");
|
||||
make_folder_if_missing(PACK_DIR"/super");
|
||||
make_folder_if_missing(PACK_DIR"/super-docs");
|
||||
copy_file(BUILD_DIR, "4ed"EXE, PACK_SUPER_DIR, 0);
|
||||
ONLY_WINDOWS(copy_file(BUILD_DIR, "4ed"PDB, PACK_SUPER_DIR, 0));
|
||||
copy_file(BUILD_DIR, "4ed_app"DLL, PACK_SUPER_DIR, 0);
|
||||
ONLY_WINDOWS(copy_file(BUILD_DIR, "4ed_app"PDB, PACK_SUPER_DIR, 0));
|
||||
copy_all (PACK_DATA_DIR"/*", PACK_SUPER_DIR);
|
||||
copy_file(0, "README.txt", PACK_SUPER_DIR, 0);
|
||||
copy_file(0, "TODO.txt", PACK_SUPER_DIR, 0);
|
||||
copy_file(DATA_DIR, "config.4coder", PACK_SUPER_DIR, 0);
|
||||
make_folder_if_missing(PACK_SUPER_DIR, "3rdparty");
|
||||
make_folder_if_missing(PACK_DIR, "super");
|
||||
make_folder_if_missing(PACK_DIR, "super-docs");
|
||||
copy_file(BUILD_DIR, "4ed"EXE, PACK_SUPER_DIR, 0, 0);
|
||||
ONLY_WINDOWS(copy_file(BUILD_DIR, "4ed"PDB, PACK_SUPER_DIR, 0, 0));
|
||||
copy_file(BUILD_DIR, "4ed_app"DLL, PACK_SUPER_DIR, 0, 0);
|
||||
ONLY_WINDOWS(copy_file(BUILD_DIR, "4ed_app"PDB, PACK_SUPER_DIR, 0, 0));
|
||||
copy_all (PACK_DATA_DIR, "/*", PACK_SUPER_DIR);
|
||||
copy_file(0, "README.txt", PACK_SUPER_DIR, 0, 0);
|
||||
copy_file(0, "TODO.txt", PACK_SUPER_DIR, 0, 0);
|
||||
copy_file(DATA_DIR, "config.4coder", PACK_SUPER_DIR, 0, 0);
|
||||
|
||||
copy_all ("4coder_*.h", PACK_SUPER_DIR);
|
||||
copy_all ("4coder_*.cpp", PACK_SUPER_DIR);
|
||||
copy_all ("4cpp_*.h", PACK_SUPER_DIR);
|
||||
copy_all ("4cpp_*.c", PACK_SUPER_DIR);
|
||||
copy_file(0, "buildsuper"BAT, PACK_SUPER_DIR, 0);
|
||||
copy_all (0, "4coder_*.h", PACK_SUPER_DIR);
|
||||
copy_all (0, "4coder_*.cpp", PACK_SUPER_DIR);
|
||||
copy_all (0, "4cpp_*.h", PACK_SUPER_DIR);
|
||||
copy_all (0, "4cpp_*.c", PACK_SUPER_DIR);
|
||||
copy_file(0, "buildsuper"BAT, PACK_SUPER_DIR, 0, 0);
|
||||
|
||||
get_4coder_dist_name(&str, 0, "API", "html");
|
||||
str2 = front_of_directory(str);
|
||||
copy_file(0, "4coder_API.html", PACK_DIR"/super-docs", str2.str);
|
||||
copy_file(0, "4coder_API.html", PACK_DIR, "super-docs", str2.str);
|
||||
|
||||
get_4coder_dist_name(&str, 1, "super", "zip");
|
||||
zip(PACK_SUPER_PAR_DIR, "4coder", str.str);
|
||||
|
||||
// NOTE(allen): power
|
||||
clear_folder(PACK_POWER_PAR_DIR);
|
||||
make_folder_if_missing(PACK_POWER_DIR);
|
||||
make_folder_if_missing(PACK_DIR"/power");
|
||||
copy_all("power/*", PACK_POWER_DIR);
|
||||
make_folder_if_missing(PACK_POWER_DIR, 0);
|
||||
make_folder_if_missing(PACK_DIR, "power");
|
||||
copy_all(0, "power/*", PACK_POWER_DIR);
|
||||
|
||||
get_4coder_dist_name(&str, 0, "power", "zip");
|
||||
zip(PACK_POWER_PAR_DIR, "power", str.str);
|
||||
|
@ -835,6 +968,7 @@ package(char *cdir){
|
|||
|
||||
int main(int argc, char **argv){
|
||||
init_time_system();
|
||||
init_global_strings();
|
||||
|
||||
char cdir[256];
|
||||
|
||||
|
@ -852,6 +986,7 @@ int main(int argc, char **argv){
|
|||
|
||||
int main(int argc, char **argv){
|
||||
init_time_system();
|
||||
init_global_strings();
|
||||
|
||||
char cdir[256];
|
||||
|
Loading…
Reference in New Issue