even more clean up on the build system
This commit is contained in:
parent
a4137ca739
commit
0ab0cb9b97
|
@ -63,17 +63,23 @@ internal void fm_copy_folder(char *src_dir, char *dst_dir, char *src_folder);
|
||||||
// Zip
|
// Zip
|
||||||
internal void fm_zip(char *parent, char *folder, char *dest);
|
internal void fm_zip(char *parent, char *folder, char *dest);
|
||||||
|
|
||||||
// File Name Manipulation
|
// Slash Correction
|
||||||
internal void fm_slash_fix(char *path);
|
internal void fm_slash_fix(char *path);
|
||||||
|
|
||||||
|
// Memory concat helpers
|
||||||
internal char *fm_prepare_string_internal(char *s1, ...);
|
internal char *fm_prepare_string_internal(char *s1, ...);
|
||||||
#define fm_str(...) fm_prepare_string_internal(__VA_ARGS__, 0)
|
#define fm_str(...) fm_prepare_string_internal(__VA_ARGS__, 0)
|
||||||
|
|
||||||
|
internal char **fm_prepare_list_internal(char **l1, ...);
|
||||||
|
#define fm_list(...) fm_prepare_list_internal(__VA_ARGS__, 0)
|
||||||
|
|
||||||
|
internal char **fm_list_one_item(char *item);
|
||||||
|
|
||||||
|
// File System Navigation
|
||||||
typedef umem Temp_Memory;
|
typedef umem Temp_Memory;
|
||||||
internal Temp_Memory fm_begin_temp();
|
internal Temp_Memory fm_begin_temp();
|
||||||
internal void fm_end_temp(Temp_Memory temp);
|
internal void fm_end_temp(Temp_Memory temp);
|
||||||
|
|
||||||
// File System Navigation
|
|
||||||
internal i32 fm_get_current_directory(char *buffer, i32 max);
|
internal i32 fm_get_current_directory(char *buffer, i32 max);
|
||||||
|
|
||||||
typedef struct Temp_Dir{
|
typedef struct Temp_Dir{
|
||||||
|
@ -84,7 +90,6 @@ internal Temp_Dir fm_pushdir(char *dir);
|
||||||
internal void fm_popdir(Temp_Dir temp);
|
internal void fm_popdir(Temp_Dir temp);
|
||||||
|
|
||||||
// Build Line
|
// Build Line
|
||||||
|
|
||||||
#define BUILD_LINE_MAX 4096
|
#define BUILD_LINE_MAX 4096
|
||||||
typedef struct Build_Line{
|
typedef struct Build_Line{
|
||||||
char build_optionsA[BUILD_LINE_MAX];
|
char build_optionsA[BUILD_LINE_MAX];
|
||||||
|
@ -229,13 +234,9 @@ typedef union _LARGE_INTEGER {
|
||||||
extern "C"{
|
extern "C"{
|
||||||
DWORD WINAPI GetCurrentDirectoryA(_In_ DWORD nBufferLength, _Out_ LPTSTR lpBuffer);
|
DWORD WINAPI GetCurrentDirectoryA(_In_ DWORD nBufferLength, _Out_ LPTSTR lpBuffer);
|
||||||
BOOL WINAPI SetCurrentDirectoryA(_In_ LPCTSTR lpPathName);
|
BOOL WINAPI SetCurrentDirectoryA(_In_ LPCTSTR lpPathName);
|
||||||
|
|
||||||
BOOL WINAPI QueryPerformanceCounter(_Out_ LARGE_INTEGER *lpPerformanceCount);
|
BOOL WINAPI QueryPerformanceCounter(_Out_ LARGE_INTEGER *lpPerformanceCount);
|
||||||
|
|
||||||
BOOL WINAPI QueryPerformanceFrequency(_Out_ LARGE_INTEGER *lpFrequency);
|
BOOL WINAPI QueryPerformanceFrequency(_Out_ LARGE_INTEGER *lpFrequency);
|
||||||
|
|
||||||
BOOL WINAPI CreateDirectoryA(_In_ LPCTSTR lpPathName, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes);
|
BOOL WINAPI CreateDirectoryA(_In_ LPCTSTR lpPathName, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes);
|
||||||
|
|
||||||
BOOL WINAPI CopyFileA(_In_ LPCTSTR lpExistingFileName, _In_ LPCTSTR lpNewFileName, _In_ BOOL bFailIfExists);
|
BOOL WINAPI CopyFileA(_In_ LPCTSTR lpExistingFileName, _In_ LPCTSTR lpNewFileName, _In_ BOOL bFailIfExists);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -487,34 +488,65 @@ fm_copy_folder(char *src_dir, char *dst_dir, char *src_folder){
|
||||||
fm_popdir(temp);
|
fm_popdir(temp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// List Helpers
|
||||||
|
internal umem
|
||||||
|
listsize(void *p, umem item_size){
|
||||||
|
u64 zero = 0;
|
||||||
|
u8 *ptr = (u8*)p;
|
||||||
|
for (;memcmp(ptr, &zero, item_size) != 0; ptr += item_size);
|
||||||
|
umem size = (ptr - (u8*)p);
|
||||||
|
return(size);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void*
|
||||||
|
fm__prepare(umem item_size, void *i1, va_list list){
|
||||||
|
umem size = listsize(i1, item_size);
|
||||||
|
void *result = (void*)fm__push(size);
|
||||||
|
memcpy(result, i1, size);
|
||||||
|
|
||||||
|
void *ln = va_arg(list, void*);
|
||||||
|
for (;ln != 0;){
|
||||||
|
size = listsize(ln, item_size);
|
||||||
|
void *new_str = (void*)fm__push(size);
|
||||||
|
memcpy(new_str, ln, size);
|
||||||
|
ln = va_arg(list, void*);
|
||||||
|
}
|
||||||
|
|
||||||
|
void *terminator = (void*)fm__push(item_size);
|
||||||
|
memset(terminator, 0, item_size);
|
||||||
|
return(result);
|
||||||
|
}
|
||||||
|
|
||||||
internal char*
|
internal char*
|
||||||
fm_prepare_string_internal(char *s1, ...){
|
fm_prepare_string_internal(char *s1, ...){
|
||||||
umem len = strlen(s1);
|
umem item_size = sizeof(*s1);
|
||||||
char *result = (char*)fm__push(len);
|
|
||||||
memcpy(result, s1, len);
|
|
||||||
|
|
||||||
va_list list;
|
va_list list;
|
||||||
va_start(list, s1);
|
va_start(list, s1);
|
||||||
for (;;){
|
char *result = (char*)fm__prepare(item_size, s1, list);
|
||||||
char *sn = va_arg(list, char*);
|
|
||||||
if (sn == 0){
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
len = strlen(sn);
|
|
||||||
char *new_str = (char*)fm__push(len);
|
|
||||||
memcpy(new_str, sn, len);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
va_end(list);
|
va_end(list);
|
||||||
|
|
||||||
char *terminator = (char*)fm__push(1);
|
|
||||||
*terminator = 0;
|
|
||||||
|
|
||||||
fm_slash_fix(result);
|
fm_slash_fix(result);
|
||||||
return(result);
|
return(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal char**
|
||||||
|
fm_prepare_list_internal(char **p1, ...){
|
||||||
|
umem item_size = sizeof(*p1);
|
||||||
|
va_list list;
|
||||||
|
va_start(list, p1);
|
||||||
|
char **result = (char**)fm__prepare(item_size, p1, list);
|
||||||
|
va_end(list);
|
||||||
|
return(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal char**
|
||||||
|
fm_list_one_item(char *item){
|
||||||
|
char **result = (char**)fm__push(sizeof(char*)*2);
|
||||||
|
result[0] = item;
|
||||||
|
result[1] = 0;
|
||||||
|
return(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Build Line
|
||||||
internal void
|
internal void
|
||||||
fm_init_build_line(Build_Line *line){
|
fm_init_build_line(Build_Line *line){
|
||||||
line->build_options = line->build_optionsA;
|
line->build_options = line->build_optionsA;
|
||||||
|
|
169
meta/build.cpp
169
meta/build.cpp
|
@ -71,11 +71,13 @@ char *compiler_names[] = {
|
||||||
#define PACK_DIR "../distributions"
|
#define PACK_DIR "../distributions"
|
||||||
#define SITE_DIR "../site"
|
#define SITE_DIR "../site"
|
||||||
|
|
||||||
|
char *includes[] = { "../foreign", "../foreign/freetype2", 0, };
|
||||||
|
|
||||||
//
|
//
|
||||||
// Platform layer file tables
|
// Platform layer file tables
|
||||||
//
|
//
|
||||||
|
|
||||||
char *windows_platform_layer[] = { "platform_win32\\win32_4ed.cpp", 0 };
|
char *windows_platform_layer[] = { "platform_win32/win32_4ed.cpp", 0 };
|
||||||
char *linux_platform_layer[] = { "platform_linux/linux_4ed.cpp", 0 };
|
char *linux_platform_layer[] = { "platform_linux/linux_4ed.cpp", 0 };
|
||||||
char *mac_platform_layer[] = { "platform_mac/mac_4ed.m", "platform_mac/mac_4ed.cpp", 0 };
|
char *mac_platform_layer[] = { "platform_mac/mac_4ed.m", "platform_mac/mac_4ed.cpp", 0 };
|
||||||
|
|
||||||
|
@ -85,7 +87,7 @@ char **platform_layers[Platform_COUNT] = {
|
||||||
mac_platform_layer ,
|
mac_platform_layer ,
|
||||||
};
|
};
|
||||||
|
|
||||||
char *windows_cl_platform_inc[] = { ".", "platform_all", 0 };
|
char *windows_cl_platform_inc[] = { "platform_all", 0 };
|
||||||
char *linux_gcc_platform_inc[] = { "platform_all", "platform_unix", 0 };
|
char *linux_gcc_platform_inc[] = { "platform_all", "platform_unix", 0 };
|
||||||
char *mac_gcc_platform_inc[] = { "platform_all", "platform_unix", 0 };
|
char *mac_gcc_platform_inc[] = { "platform_all", "platform_unix", 0 };
|
||||||
|
|
||||||
|
@ -138,19 +140,36 @@ char *arch_names[] = {
|
||||||
|
|
||||||
enum{
|
enum{
|
||||||
OPTS = 0x1,
|
OPTS = 0x1,
|
||||||
INCLUDES = 0x2,
|
LIBS = 0x2,
|
||||||
LIBS = 0x4,
|
ICON = 0x4,
|
||||||
ICON = 0x8,
|
SHARED_CODE = 0x8,
|
||||||
SHARED_CODE = 0x10,
|
DEBUG_INFO = 0x10,
|
||||||
DEBUG_INFO = 0x20,
|
OPTIMIZATION = 0x20,
|
||||||
SUPER = 0x40,
|
SUPER = 0x40,
|
||||||
INTERNAL = 0x80,
|
INTERNAL = 0x80,
|
||||||
OPTIMIZATION = 0x100,
|
KEEP_ASSERT = 0x100,
|
||||||
KEEP_ASSERT = 0x200,
|
LOG = 0x200,
|
||||||
SITE_INCLUDES = 0x400,
|
|
||||||
LOG = 0x800,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
internal char**
|
||||||
|
get_defines_from_flags(u32 flags){
|
||||||
|
char **result = 0;
|
||||||
|
if (flags & KEEP_ASSERT){
|
||||||
|
result = fm_list(fm_list_one_item("FRED_KEEP_ASSERT"), result);
|
||||||
|
}
|
||||||
|
if (flags & INTERNAL){
|
||||||
|
result = fm_list(fm_list_one_item("FRED_INTERNAL"), result);
|
||||||
|
}
|
||||||
|
if (flags & SUPER){
|
||||||
|
result = fm_list(fm_list_one_item("FRED_SUPER"), result);
|
||||||
|
}
|
||||||
|
if (flags & LOG){
|
||||||
|
char *log_defines[] = { "USE_LOG", "USE_LOGF", 0};
|
||||||
|
result = fm_list(log_defines, result);
|
||||||
|
}
|
||||||
|
return(result);
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// build implementation: cl
|
// build implementation: cl
|
||||||
//
|
//
|
||||||
|
@ -162,10 +181,6 @@ enum{
|
||||||
"-wd4127 -wd4510 -wd4512 -wd4610 -wd4390 " \
|
"-wd4127 -wd4510 -wd4512 -wd4610 -wd4390 " \
|
||||||
"-wd4611 -WX -GR- -EHa- -nologo -FC"
|
"-wd4611 -WX -GR- -EHa- -nologo -FC"
|
||||||
|
|
||||||
#define CL_INCLUDES "/I..\\foreign /I..\\foreign\\freetype2"
|
|
||||||
|
|
||||||
#define CL_SITE_INCLUDES "/I..\\..\\foreign /I..\\..\\code"
|
|
||||||
|
|
||||||
#define CL_LIBS_X64 \
|
#define CL_LIBS_X64 \
|
||||||
"user32.lib winmm.lib gdi32.lib opengl32.lib " \
|
"user32.lib winmm.lib gdi32.lib opengl32.lib " \
|
||||||
"..\\foreign_x64\\freetype.lib"
|
"..\\foreign_x64\\freetype.lib"
|
||||||
|
@ -174,13 +189,11 @@ enum{
|
||||||
"user32.lib winmm.lib gdi32.lib opengl32.lib " \
|
"user32.lib winmm.lib gdi32.lib opengl32.lib " \
|
||||||
"..\\foreign_x86\\freetype.lib"
|
"..\\foreign_x86\\freetype.lib"
|
||||||
|
|
||||||
|
|
||||||
#define CL_ICON "..\\res\\icon.res"
|
#define CL_ICON "..\\res\\icon.res"
|
||||||
|
|
||||||
#define CL_X64 "-MACHINE:X64"
|
|
||||||
#define CL_X86 "-MACHINE:X86"
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
build(u32 flags, u32 arch, char *code_path, char **code_files, char *out_path, char *out_file, char *exports, char **inc_folders){
|
build(u32 flags, u32 arch, char *code_path, char **code_files, char *out_path, char *out_file, char **defines, char **exports, char **inc_folders){
|
||||||
Build_Line line;
|
Build_Line line;
|
||||||
Build_Line link_line;
|
Build_Line link_line;
|
||||||
Build_Line line_prefix;
|
Build_Line line_prefix;
|
||||||
|
@ -207,21 +220,11 @@ build(u32 flags, u32 arch, char *code_path, char **code_files, char *out_path, c
|
||||||
default: InvalidCodePath;
|
default: InvalidCodePath;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flags & LOG){
|
fm_add_to_line(line, "-I%s", code_path);
|
||||||
fm_add_to_line(line, "/DUSE_LOG /DUSE_LOGF");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (flags & INCLUDES){
|
|
||||||
fm_add_to_line(line, CL_INCLUDES);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (flags & SITE_INCLUDES){
|
|
||||||
fm_add_to_line(line, CL_SITE_INCLUDES);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (inc_folders != 0){
|
if (inc_folders != 0){
|
||||||
for (u32 i = 0; inc_folders[i] != 0; ++i){
|
for (u32 i = 0; inc_folders[i] != 0; ++i){
|
||||||
fm_add_to_line(line, "/I%s\\%s", code_path, inc_folders[i]);
|
char *str = fm_str(code_path, "/", inc_folders[i]);
|
||||||
|
fm_add_to_line(line, "/I%s", str);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -253,25 +256,16 @@ build(u32 flags, u32 arch, char *code_path, char **code_files, char *out_path, c
|
||||||
fm_add_to_line(line, "/LD");
|
fm_add_to_line(line, "/LD");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flags & SUPER){
|
if (defines != 0){
|
||||||
fm_add_to_line(line, "/DFRED_SUPER");
|
for (u32 i = 0; defines[i] != 0; ++i){
|
||||||
|
char *define_flag = fm_str("/D", defines[i]);
|
||||||
|
fm_add_to_line(line, define_flag);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flags & INTERNAL){
|
|
||||||
fm_add_to_line(line, "/DFRED_INTERNAL");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (flags & KEEP_ASSERT){
|
|
||||||
fm_add_to_line(line, "/DFRED_KEEP_ASSERT");
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (arch){
|
switch (arch){
|
||||||
case Arch_X64:
|
case Arch_X64: fm_add_to_line(link_line, "/MACHINE:X64"); break;
|
||||||
fm_add_to_line(link_line, CL_X64); break;
|
case Arch_X86: fm_add_to_line(link_line, "/MACHINE:X86"); break;
|
||||||
|
|
||||||
case Arch_X86:
|
|
||||||
fm_add_to_line(link_line, CL_X86); break;
|
|
||||||
|
|
||||||
default: InvalidCodePath;
|
default: InvalidCodePath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -279,15 +273,17 @@ build(u32 flags, u32 arch, char *code_path, char **code_files, char *out_path, c
|
||||||
fm_add_to_line(link_line, "/DEBUG");
|
fm_add_to_line(link_line, "/DEBUG");
|
||||||
}
|
}
|
||||||
|
|
||||||
char link_type_string[1024];
|
|
||||||
if (flags & SHARED_CODE){
|
if (flags & SHARED_CODE){
|
||||||
Assert(exports);
|
Assert(exports != 0);
|
||||||
snprintf(link_type_string, sizeof(link_type_string), "/OPT:REF %s", exports);
|
fm_add_to_line(link_line, "/OPT:REF");
|
||||||
|
for (u32 i = 0; exports[i] != 0; ++i){
|
||||||
|
char *str = fm_str("/EXPORT:", exports[i]);
|
||||||
|
fm_add_to_line(link_line, "%s", str);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
snprintf(link_type_string, sizeof(link_type_string), "/NODEFAULTLIB:library");
|
fm_add_to_line(link_line, "/NODEFAULTLIB:library");
|
||||||
}
|
}
|
||||||
fm_add_to_line(link_line, "%s", link_type_string);
|
|
||||||
|
|
||||||
for (u32 i = 0; code_files[i]; ++i){
|
for (u32 i = 0; code_files[i]; ++i){
|
||||||
fm_add_to_line(line, "\"%s\\%s\"", code_path, code_files[i]);
|
fm_add_to_line(line, "\"%s\\%s\"", code_path, code_files[i]);
|
||||||
|
@ -333,26 +329,18 @@ build(u32 flags, u32 arch, char *code_path, char **code_files, char *out_path, c
|
||||||
# error gcc options not set for this platform
|
# error gcc options not set for this platform
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define GCC_X86 "-m32"
|
|
||||||
|
|
||||||
#define GCC_X64 "-m64"
|
|
||||||
|
|
||||||
#define GCC_INCLUDES "-I../foreign -I../code"
|
|
||||||
|
|
||||||
#define GCC_SITE_INCLUDES "-I../../foreign -I../../code"
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
build(u32 flags, u32 arch, char *code_path, char **code_files, char *out_path, char *out_file, char *exports, char **inc_folders){
|
build(u32 flags, u32 arch, char *code_path, char **code_files, char *out_path, char *out_file, char **defines, char **exports, char **inc_folders){
|
||||||
Build_Line line;
|
Build_Line line;
|
||||||
fm_init_build_line(&line);
|
fm_init_build_line(&line);
|
||||||
|
|
||||||
switch (arch){
|
switch (arch){
|
||||||
case Arch_X64:
|
case Arch_X64:
|
||||||
fm_add_to_line(line, GCC_X64);
|
fm_add_to_line(line, "-m64");
|
||||||
fm_add_to_line(line, "-DFTECH_64_BIT"); break;
|
fm_add_to_line(line, "-DFTECH_64_BIT"); break;
|
||||||
|
|
||||||
case Arch_X86:
|
case Arch_X86:
|
||||||
fm_add_to_line(line, GCC_X86);
|
fm_add_to_line(line, "-m32");
|
||||||
fm_add_to_line(line, "-DFTECH_32_BIT"); break;
|
fm_add_to_line(line, "-DFTECH_32_BIT"); break;
|
||||||
|
|
||||||
default: InvalidCodePath;
|
default: InvalidCodePath;
|
||||||
|
@ -362,6 +350,7 @@ build(u32 flags, u32 arch, char *code_path, char **code_files, char *out_path, c
|
||||||
fm_add_to_line(line, GCC_OPTS);
|
fm_add_to_line(line, GCC_OPTS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
if (flags & INCLUDES){
|
if (flags & INCLUDES){
|
||||||
#if defined(IS_LINUX)
|
#if defined(IS_LINUX)
|
||||||
i32 size = 0;
|
i32 size = 0;
|
||||||
|
@ -379,14 +368,13 @@ build(u32 flags, u32 arch, char *code_path, char **code_files, char *out_path, c
|
||||||
fm_add_to_line(line, GCC_INCLUDES);
|
fm_add_to_line(line, GCC_INCLUDES);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (flags & SITE_INCLUDES){
|
fm_add_to_line(line, "-I%s", code_path);
|
||||||
fm_add_to_line(line, GCC_SITE_INCLUDES);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (inc_folders != 0){
|
if (inc_folders != 0){
|
||||||
for (u32 i = 0; inc_folders[i] != 0; ++i){
|
for (u32 i = 0; inc_folders[i] != 0; ++i){
|
||||||
fm_add_to_line(line, "-I%s/%s", code_path, inc_folders[i]);
|
char *str = fm_str(code_path, "/", inc_folders[i]);
|
||||||
|
fm_add_to_line(line, "-I%s", str);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -402,22 +390,14 @@ build(u32 flags, u32 arch, char *code_path, char **code_files, char *out_path, c
|
||||||
fm_add_to_line(line, "-shared");
|
fm_add_to_line(line, "-shared");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flags & LOG){
|
if (defines != 0){
|
||||||
fm_add_to_line(line, "-DUSE_LOG -DUSE_LOGF");
|
for (u32 i = 0; defines[i]; ++i){
|
||||||
|
char *define_flag = fm_str("-D", defines[i]);
|
||||||
|
fm_add_to_line(line, "%s",
|
||||||
|
define_flag);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flags & SUPER){
|
|
||||||
fm_add_to_line(line, "-DFRED_SUPER");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (flags & INTERNAL){
|
|
||||||
fm_add_to_line(line, "-DFRED_INTERNAL");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (flags & KEEP_ASSERT){
|
|
||||||
fm_add_to_line(line, "-DFRED_KEEP_ASSERT");
|
|
||||||
}
|
|
||||||
|
|
||||||
fm_add_to_line(line, "-I\"%s\"", code_path);
|
fm_add_to_line(line, "-I\"%s\"", code_path);
|
||||||
for (u32 i = 0; code_files[i] != 0; ++i){
|
for (u32 i = 0; code_files[i] != 0; ++i){
|
||||||
fm_add_to_line(line, "\"%s/%s\"", code_path, code_files[i]);
|
fm_add_to_line(line, "\"%s/%s\"", code_path, code_files[i]);
|
||||||
|
@ -439,12 +419,12 @@ build(u32 flags, u32 arch, char *code_path, char **code_files, char *out_path, c
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void
|
static void
|
||||||
build(u32 flags, u32 arch, char *code_path, char *code_file, char *out_path, char *out_file, char *exports, char **inc_folders){
|
build(u32 flags, u32 arch, char *code_path, char *code_file, char *out_path, char *out_file, char **defines, char **exports, char **inc_folders){
|
||||||
char *code_files[2];
|
char *code_files[2];
|
||||||
code_files[0] = code_file;
|
code_files[0] = code_file;
|
||||||
code_files[1] = 0;
|
code_files[1] = 0;
|
||||||
|
|
||||||
build(flags, arch, code_path, code_files, out_path, out_file, exports, inc_folders);
|
build(flags, arch, code_path, code_files, out_path, out_file, defines, exports, inc_folders);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -453,7 +433,7 @@ site_build(char *cdir, u32 flags){
|
||||||
char *file = fm_str("site/sitegen.cpp");
|
char *file = fm_str("site/sitegen.cpp");
|
||||||
char *dir = fm_str(BUILD_DIR);
|
char *dir = fm_str(BUILD_DIR);
|
||||||
BEGIN_TIME_SECTION();
|
BEGIN_TIME_SECTION();
|
||||||
build(OPTS | SITE_INCLUDES | flags, Arch_X64, cdir, file, dir, "sitegen", 0, 0);
|
build(OPTS | flags, Arch_X64, cdir, file, dir, "sitegen", get_defines_from_flags(flags), 0, includes);
|
||||||
END_TIME_SECTION("build sitegen");
|
END_TIME_SECTION("build sitegen");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -473,7 +453,7 @@ build_and_run(char *cdir, char *filename, char *name, u32 flags){
|
||||||
{
|
{
|
||||||
char *file = fm_str(filename);
|
char *file = fm_str(filename);
|
||||||
BEGIN_TIME_SECTION();
|
BEGIN_TIME_SECTION();
|
||||||
build(flags, Arch_X64, cdir, file, dir, name, 0, 0);
|
build(flags, Arch_X64, cdir, file, dir, name, get_defines_from_flags(flags), 0, includes);
|
||||||
END_TIME_SECTION(fm_str("build ", name));
|
END_TIME_SECTION(fm_str("build ", name));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -492,7 +472,7 @@ fsm_generator(char *cdir){
|
||||||
|
|
||||||
static void
|
static void
|
||||||
metagen(char *cdir){
|
metagen(char *cdir){
|
||||||
build_and_run(cdir, "meta/4ed_metagen.cpp", "metagen", OPTS | DEBUG_INFO | INCLUDES);
|
build_and_run(cdir, "meta/4ed_metagen.cpp", "metagen", OPTS | DEBUG_INFO);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -518,14 +498,16 @@ build_main(char *cdir, b32 update_local_theme, u32 flags, u32 arch){
|
||||||
|
|
||||||
{
|
{
|
||||||
char *file = fm_str("4ed_app_target.cpp");
|
char *file = fm_str("4ed_app_target.cpp");
|
||||||
|
char **exports = fm_list_one_item("app_get_functions");
|
||||||
BEGIN_TIME_SECTION();
|
BEGIN_TIME_SECTION();
|
||||||
build(OPTS | INCLUDES | SHARED_CODE | flags, arch, cdir, file, dir, "4ed_app" DLL, "/EXPORT:app_get_functions", 0);
|
build(OPTS | SHARED_CODE | flags, arch, cdir, file, dir, "4ed_app" DLL, get_defines_from_flags(flags), exports, includes);
|
||||||
END_TIME_SECTION("build 4ed_app");
|
END_TIME_SECTION("build 4ed_app");
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
BEGIN_TIME_SECTION();
|
BEGIN_TIME_SECTION();
|
||||||
build(OPTS | INCLUDES | LIBS | ICON | flags, arch, cdir, platform_layers[This_OS], dir, "4ed", 0, platform_includes[This_OS][This_Compiler]);
|
char **inc = (char**)fm_list(includes, platform_includes[This_OS][This_Compiler]);
|
||||||
|
build(OPTS | LIBS | ICON | flags, arch, cdir, platform_layers[This_OS], dir, "4ed", get_defines_from_flags(flags), 0, inc);
|
||||||
END_TIME_SECTION("build 4ed");
|
END_TIME_SECTION("build 4ed");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -696,8 +678,5 @@ int main(int argc, char **argv){
|
||||||
return(error_state);
|
return(error_state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//#include "4ed_file_moving.h"
|
|
||||||
|
|
||||||
// BOTTOM
|
// BOTTOM
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue