awtk/awtk_config.py

240 lines
9.0 KiB
Python
Raw Normal View History

2019-02-25 17:45:05 +08:00
import os
import os.path
import platform
2019-08-15 08:14:32 +08:00
from shutil import copyfile
2019-02-25 17:45:05 +08:00
2019-08-20 17:27:48 +08:00
TOOLS_PREFIX=''
2019-08-22 10:54:28 +08:00
OS_NAME = platform.system();
MACH = platform.machine();
2019-05-11 21:20:19 +08:00
ARCH = platform.architecture();
is32bit = (ARCH[0] == '32bit');
2019-02-25 17:45:05 +08:00
2019-05-11 21:20:19 +08:00
if is32bit:
2019-08-22 10:54:28 +08:00
if MACH == 'i686' or MACH == 'i386':
TARGET_ARCH='x86'
else:
TARGET_ARCH='arm'
2019-05-11 17:37:07 +08:00
else:
TARGET_ARCH=''
2019-08-22 13:50:47 +08:00
print('MACH=' + MACH + ' ARCH=' + str(ARCH) + ' TARGET_ARCH=' + TARGET_ARCH)
2019-02-25 17:45:05 +08:00
def joinPath(root, subdir):
return os.path.normpath(os.path.join(root, subdir))
TK_ROOT=os.path.dirname(os.path.normpath(os.path.abspath(__file__)))
print('TK_ROOT: ' + TK_ROOT);
TK_SRC = joinPath(TK_ROOT, 'src')
TK_BIN_DIR = joinPath(TK_ROOT, 'bin')
TK_LIB_DIR = joinPath(TK_ROOT, 'lib')
TK_3RD_ROOT = joinPath(TK_ROOT, '3rd')
TK_TOOLS_ROOT = joinPath(TK_ROOT, 'tools')
TK_DEMO_ROOT = joinPath(TK_ROOT, 'demos')
GTEST_ROOT = joinPath(TK_ROOT, '3rd/gtest/googletest')
#INPUT_ENGINE='null'
INPUT_ENGINE='pinyin'
2019-05-29 09:49:34 +08:00
VGCANVAS='NANOVG'
2019-05-31 12:09:41 +08:00
if OS_NAME == 'Windows':
TK_ROOT=TK_ROOT.replace('\\', '\\\\');
NANOVG_BACKEND='GLES2'
2019-05-31 12:09:41 +08:00
else:
NANOVG_BACKEND='GL3'
2019-08-15 06:43:06 +08:00
#VGCANVAS='CAIRO'
2019-06-03 11:46:02 +08:00
#NANOVG_BACKEND='GLES2'
#NANOVG_BACKEND='GLES3'
2019-10-31 11:28:42 +08:00
#NANOVG_BACKEND='AGG'
2019-10-18 18:23:04 +08:00
#NANOVG_BACKEND='AGGE'
2019-06-03 11:46:02 +08:00
#NANOVG_BACKEND='BGFX'
2019-02-25 17:45:05 +08:00
FRAME_BUFFER_FORMAT=''
2019-05-15 16:09:57 +08:00
if VGCANVAS == 'CAIRO':
2019-02-25 17:45:05 +08:00
LCD='SDL_FB'
FRAME_BUFFER_FORMAT='bgr565'
#FRAME_BUFFER_FORMAT='bgra8888'
2019-05-15 16:09:57 +08:00
else:
if NANOVG_BACKEND == 'AGGE' or NANOVG_BACKEND == 'AGG':
LCD='SDL_FB'
FRAME_BUFFER_FORMAT='bgr565'
#FRAME_BUFFER_FORMAT='bgra8888'
else:
LCD='SDL_GPU'
2019-08-13 10:37:40 +08:00
#LCD='SDL_FB_MONO'
2019-02-25 17:45:05 +08:00
NANOVG_BACKEND_LIBS=[];
NANOVG_BACKEND_PROJS=[];
2019-08-01 11:10:17 +08:00
NATIVE_WINDOW='sdl'
2019-08-15 12:16:49 +08:00
TOOLS_NAME = ''
2019-08-15 12:50:31 +08:00
# TOOLS_NAME = 'mingw'
2019-08-01 11:10:17 +08:00
2019-02-25 17:45:05 +08:00
COMMON_CCFLAGS=' -DTK_ROOT=\\\"'+TK_ROOT+'\\\" '
#COMMON_CCFLAGS=COMMON_CCFLAGS+' -DENABLE_PERFORMANCE_PROFILE=1 '
2019-10-03 18:26:30 +08:00
COMMON_CCFLAGS=COMMON_CCFLAGS+' -DSTBTT_STATIC -DSTB_IMAGE_STATIC -DWITH_STB_IMAGE -DWITH_SOCKET '
2019-02-25 17:45:05 +08:00
COMMON_CCFLAGS=COMMON_CCFLAGS+' -DWITH_VGCANVAS -DWITH_UNICODE_BREAK -DWITH_DESKTOP_STYLE '
2019-08-03 12:22:58 +08:00
COMMON_CCFLAGS=COMMON_CCFLAGS+' -DSDL2 -DHAS_STD_MALLOC -DWITH_SDL -DWITH_FS_RES -DHAS_STDIO -DHAVE_STDIO_H '
2019-02-25 17:45:05 +08:00
2019-10-31 22:07:56 +08:00
GRAPHIC_BUFFER='default'
2019-06-22 08:52:48 +08:00
#only for c compiler flags
COMMON_CFLAGS=''
2019-02-25 17:45:05 +08:00
if LCD == 'SDL_GPU':
COMMON_CCFLAGS = COMMON_CCFLAGS + ' -DWITH_NANOVG_GPU -DWITH_VGCANVAS_LCD'
2019-09-04 15:22:50 +08:00
COMMON_CCFLAGS=COMMON_CCFLAGS+' -DWITH_STB_FONT '
2019-08-13 10:37:40 +08:00
elif LCD == 'SDL_FB_MONO':
2019-08-15 09:06:35 +08:00
NANOVG_BACKEND='AGGE'
2019-08-13 11:06:44 +08:00
COMMON_CCFLAGS = COMMON_CCFLAGS + ' -DWITH_LCD_MONO -DWITH_NANOVG_SOFT '
2019-09-04 15:22:50 +08:00
COMMON_CCFLAGS=COMMON_CCFLAGS+' -DWITH_FT_FONT '
2019-02-25 17:45:05 +08:00
else:
2019-09-04 15:22:50 +08:00
COMMON_CCFLAGS=COMMON_CCFLAGS+' -DWITH_STB_FONT '
2019-02-25 17:45:05 +08:00
COMMON_CCFLAGS = COMMON_CCFLAGS + ' -DWITH_BITMAP_BGRA -DWITH_NANOVG_SOFT '
if FRAME_BUFFER_FORMAT=='bgra8888':
COMMON_CCFLAGS=COMMON_CCFLAGS+' -DWITH_FB_BGRA8888=1 ';
else:
COMMON_CCFLAGS=COMMON_CCFLAGS+' -DWITH_FB_BGR565=1';
2019-05-15 16:09:57 +08:00
if VGCANVAS == 'CAIRO':
NANOVG_BACKEND_LIBS=['cairo', 'pixman'];
NANOVG_BACKEND_PROJS=['3rd/cairo/SConscript', '3rd/pixman/SConscript'];
COMMON_CCFLAGS = COMMON_CCFLAGS + ' -DWITH_VGCANVAS_CAIRO -DHAVE_CONFIG_H -DCAIRO_WIN32_STATIC_BUILD '
2019-02-25 17:45:05 +08:00
else:
2019-05-15 16:09:57 +08:00
if NANOVG_BACKEND == 'AGG':
NANOVG_BACKEND_LIBS=['nanovg-agg', 'nanovg', 'agg'];
NANOVG_BACKEND_PROJS=['3rd/agg/SConscript'];
COMMON_CCFLAGS = COMMON_CCFLAGS + ' -DWITH_NANOVG_AGG '
elif NANOVG_BACKEND == 'AGGE':
NANOVG_BACKEND_LIBS=['nanovg-agge', 'nanovg', 'agge'];
NANOVG_BACKEND_PROJS=['3rd/agge/SConscript'];
COMMON_CCFLAGS = COMMON_CCFLAGS + ' -DWITH_NANOVG_AGGE '
elif NANOVG_BACKEND == 'BGFX':
NANOVG_BACKEND_LIBS=['nanovg-bgfx','nanovg', 'bgfx'];
NANOVG_BACKEND_PROJS=['3rd/bgfx/SConscript'];
COMMON_CCFLAGS = COMMON_CCFLAGS + ' -DWITH_NANOVG_BGFX '
elif NANOVG_BACKEND == 'GLES2':
NANOVG_BACKEND_LIBS=['nanovg'];
COMMON_CCFLAGS = COMMON_CCFLAGS + ' -DWITH_NANOVG_GLES2 -DWITH_NANOVG_GL '
elif NANOVG_BACKEND == 'GLES3':
NANOVG_BACKEND_LIBS=['nanovg'];
COMMON_CCFLAGS = COMMON_CCFLAGS + ' -DWITH_NANOVG_GLES3 -DWITH_NANOVG_GL '
else:
NANOVG_BACKEND_LIBS=['nanovg'];
COMMON_CCFLAGS = COMMON_CCFLAGS + ' -DWITH_NANOVG_GL3 -DWITH_NANOVG_GL '
2019-02-25 17:45:05 +08:00
OS_FLAGS=''
OS_LIBS=[]
OS_LIBPATH=[]
OS_CPPPATH=[]
OS_LINKFLAGS=''
OS_SUBSYSTEM_CONSOLE=''
OS_SUBSYSTEM_WINDOWS=''
OS_PROJECTS=[]
if OS_NAME == 'Darwin':
2019-08-15 12:16:49 +08:00
TOOLS_NAME = ''
2019-02-25 17:45:05 +08:00
OS_FLAGS='-g -Wall'
OS_LIBS = ['stdc++', 'pthread', 'm', 'dl']
OS_LINKFLAGS='-framework Cocoa -framework QuartzCore -framework OpenGL -weak_framework Metal -weak_framework MetalKit'
COMMON_CCFLAGS = COMMON_CCFLAGS + ' -DWITH_WIDGET_POOL=1000 '
COMMON_CCFLAGS = COMMON_CCFLAGS + ' -D__APPLE__ -DHAS_PTHREAD -DMACOS -DENABLE_MEM_LEAK_CHECK1 '
COMMON_CCFLAGS = COMMON_CCFLAGS + ' -D__STDC_LIMIT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_CONSTANT_MACROS -DBGFX_CONFIG_RENDERER_METAL=1 '
elif OS_NAME == 'Linux':
2019-08-15 12:16:49 +08:00
TOOLS_NAME = ''
2019-02-25 17:45:05 +08:00
OS_FLAGS='-g -Wall'
OS_LIBS = ['GL', 'gtk-3','gdk-3','Xext', 'X11', 'sndio','stdc++', 'pthread', 'm', 'dl']
2019-07-02 14:10:03 +08:00
COMMON_CFLAGS=COMMON_CFLAGS+' -std=gnu99 '
2019-02-25 17:45:05 +08:00
COMMON_CCFLAGS = COMMON_CCFLAGS + ' -DLINUX -DHAS_PTHREAD'
COMMON_CCFLAGS = COMMON_CCFLAGS + ' -DSDL_REAL_API -DSDL_TIMER_UNIX -DSDL_VIDEO_DRIVER_X11 -DSDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS '
COMMON_CCFLAGS = COMMON_CCFLAGS + ' -DSDL_AUDIO_DRIVER_SNDIO -DSDL_VIDEO_OPENGL_GLX -DSDL_VIDEO_RENDER_OGL '
COMMON_CCFLAGS = COMMON_CCFLAGS + ' -DSDL_LOADSO_DLOPEN -DSDL_VIDEO_OPENGL_EGL -DSDL_VIDEO_OPENGL_ES2 '
COMMON_CCFLAGS = COMMON_CCFLAGS + ' -DSDL_REAL_API -DSDL_HAPTIC_DISABLED -DSDL_SENSOR_DISABLED -DSDL_JOYSTICK_DISABLED '
OS_PROJECTS=['3rd/SDL/SConscript']
2019-05-11 17:37:07 +08:00
if TARGET_ARCH == 'x86':
OS_FLAGS = OS_FLAGS + ' -DWITH_DOUBLE_FLOAT '
2019-05-15 16:09:57 +08:00
else:
OS_FLAGS = OS_FLAGS + ' -DWITH_64BIT_CPU '
2019-02-25 17:45:05 +08:00
elif OS_NAME == 'Windows':
2019-08-15 12:16:49 +08:00
if not os.path.exists(os.path.abspath(TK_BIN_DIR)) :
os.makedirs(os.path.abspath(TK_BIN_DIR))
if not os.path.exists(os.path.abspath(TK_LIB_DIR)) :
os.makedirs(os.path.abspath(TK_LIB_DIR))
if TOOLS_NAME == '' :
OS_LIBS=['gdi32', 'user32','winmm.lib','imm32.lib','version.lib','shell32.lib','ole32.lib','Oleaut32.lib','Advapi32.lib','DelayImp.lib','psapi.lib']
2019-08-15 12:16:49 +08:00
OS_FLAGS='-DWIN32 -D_WIN32 -DWINDOWS /EHsc -D_CONSOLE /DEBUG /Od /FS /Z7 '
if TARGET_ARCH == 'x86':
OS_FLAGS += OS_FLAGS + ' /MD '
OS_LINKFLAGS='/MACHINE:X86 /DEBUG'
OS_SUBSYSTEM_CONSOLE='/SUBSYSTEM:CONSOLE,5.01 '
OS_SUBSYSTEM_WINDOWS='/SUBSYSTEM:WINDOWS,5.01 '
COMMON_CCFLAGS = COMMON_CCFLAGS + ' -D_WIN32 '
else:
OS_FLAGS = OS_FLAGS + ' -DWITH_64BIT_CPU '
OS_LINKFLAGS='/MACHINE:X64 /DEBUG'
OS_SUBSYSTEM_CONSOLE='/SUBSYSTEM:CONSOLE '
OS_SUBSYSTEM_WINDOWS='/SUBSYSTEM:WINDOWS '
COMMON_CCFLAGS = COMMON_CCFLAGS + ' -D_WIN64 '
elif TOOLS_NAME == 'mingw' :
OS_LIBS=['kernel32', 'gdi32', 'user32', 'winmm','imm32','version','shell32','ole32','Oleaut32','Advapi32','oleaut32','uuid','stdc++']
2019-08-15 12:16:49 +08:00
OS_FLAGS='-DWINDOWS -D_CONSOLE -g -Wall'
COMMON_CFLAGS=COMMON_CFLAGS+' -std=gnu99 '
2019-08-15 12:50:31 +08:00
COMMON_CCFLAGS=COMMON_CCFLAGS+' -DWITH_DOUBLE_FLOAT -DUNICODE '
2019-08-15 12:16:49 +08:00
2019-02-25 17:45:05 +08:00
#OS_FLAGS='-DWIN32 -D_WIN32 -DWINDOWS /EHsc -D_CONSOLE /DEBUG /Od /FS /Z7 -D_DEBUG /MDd '
COMMON_CCFLAGS = COMMON_CCFLAGS + ' -DSDL_REAL_API -DSDL_HAPTIC_DISABLED -DSDL_SENSOR_DISABLED -DSDL_JOYSTICK_DISABLED '
COMMON_CCFLAGS = COMMON_CCFLAGS + '-D__STDC_LIMIT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_CONSTANT_MACROS -D_HAS_EXCEPTIONS=0 -D_HAS_ITERATOR_DEBUGGING=0 -D_ITERATOR_DEBUG_LEVEL=0 -D_SCL_SECURE=0'
COMMON_CCFLAGS = COMMON_CCFLAGS + '-D_SECURE_SCL=0 -D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_DEPRECATE '
2019-02-25 17:45:05 +08:00
OS_PROJECTS=['3rd/SDL/SConscript']
2019-08-15 08:14:32 +08:00
2019-08-15 12:16:49 +08:00
2019-06-22 08:52:48 +08:00
CFLAGS=COMMON_CFLAGS
2019-02-25 17:45:05 +08:00
LINKFLAGS=OS_LINKFLAGS;
LIBPATH=[TK_LIB_DIR] + OS_LIBPATH
CCFLAGS=OS_FLAGS + COMMON_CCFLAGS
2019-08-20 10:53:05 +08:00
LIBS=['awtk', 'extwidgets', 'widgets', 'base', 'gpinyin', 'tkc', 'linebreak'] + NANOVG_BACKEND_LIBS + ['SDL2', 'glad'] + OS_LIBS
2019-02-25 17:45:05 +08:00
CPPPATH=[TK_ROOT,
TK_SRC,
TK_3RD_ROOT,
joinPath(TK_SRC, 'ext_widgets'),
2019-04-02 09:32:22 +08:00
joinPath(TK_3RD_ROOT, 'pixman'),
joinPath(TK_3RD_ROOT, 'cairo'),
2019-02-25 17:45:05 +08:00
joinPath(TK_3RD_ROOT, 'bgfx/bgfx/include'),
joinPath(TK_3RD_ROOT, 'bgfx/bx/include'),
joinPath(TK_3RD_ROOT, 'bgfx/bimg/include'),
joinPath(TK_3RD_ROOT, 'agge'),
joinPath(TK_3RD_ROOT, 'agg/include'),
joinPath(TK_3RD_ROOT, 'nanovg'),
joinPath(TK_3RD_ROOT, 'nanovg/gl'),
joinPath(TK_3RD_ROOT, 'nanovg/base'),
joinPath(TK_3RD_ROOT, 'nanovg/agge'),
joinPath(TK_3RD_ROOT, 'nanovg/bgfx'),
joinPath(TK_3RD_ROOT, 'SDL/src'),
joinPath(TK_3RD_ROOT, 'SDL/include'),
joinPath(TK_3RD_ROOT, 'agge/src'),
joinPath(TK_3RD_ROOT, 'agge/include'),
joinPath(TK_3RD_ROOT, 'gpinyin/include'),
joinPath(TK_3RD_ROOT, 'libunibreak'),
2019-08-22 09:05:37 +08:00
joinPath(TK_3RD_ROOT, 'gtest/googletest'),
joinPath(TK_3RD_ROOT, 'gtest/googletest/include'),
2019-02-25 17:45:05 +08:00
TK_TOOLS_ROOT] + OS_CPPPATH
os.environ['LCD'] = LCD
2019-02-25 17:59:58 +08:00
os.environ['TK_ROOT'] = TK_ROOT
2019-02-25 17:45:05 +08:00
os.environ['CCFLAGS'] = CCFLAGS;
os.environ['VGCANVAS'] = VGCANVAS
2019-08-15 12:16:49 +08:00
os.environ['TOOLS_NAME'] = TOOLS_NAME;
2019-02-25 17:45:05 +08:00
os.environ['GTEST_ROOT'] = GTEST_ROOT;
os.environ['TK_3RD_ROOT'] = TK_3RD_ROOT;
os.environ['INPUT_ENGINE'] = INPUT_ENGINE;
os.environ['NANOVG_BACKEND'] = NANOVG_BACKEND;
2019-08-01 11:10:17 +08:00
os.environ['NATIVE_WINDOW'] = NATIVE_WINDOW;
2019-10-31 22:07:56 +08:00
os.environ['GRAPHIC_BUFFER'] = GRAPHIC_BUFFER;
2019-02-25 17:45:05 +08:00
os.environ['FRAME_BUFFER_FORMAT'] = FRAME_BUFFER_FORMAT;