optimize build
This commit is contained in:
@@ -16,14 +16,15 @@ class checksums:
|
||||
server : Optional[Union[bytes, bool]] = None
|
||||
sources : Union[Dict[str, bytes], bool] = None
|
||||
env : str = ''
|
||||
def calc(self, libaquery_a = 'libaquery.a' ,
|
||||
def calc(self, compiler_name, libaquery_a = 'libaquery.a' ,
|
||||
pch_hpp_gch = 'server/pch.hpp.gch',
|
||||
server = 'server.so'
|
||||
):
|
||||
from platform import machine
|
||||
self.env = (aquery_config.os_platform +
|
||||
machine() +
|
||||
aquery_config.build_driver
|
||||
aquery_config.build_driver +
|
||||
compiler_name
|
||||
)
|
||||
for key in self.__dict__.keys():
|
||||
try:
|
||||
@@ -106,6 +107,8 @@ class build_manager:
|
||||
os.environ['PCH'] = f'{mgr.PCH}'
|
||||
if 'CXX' not in os.environ:
|
||||
os.environ['CXX'] = mgr.cxx if mgr.cxx else 'c++'
|
||||
else:
|
||||
mgr.cxx = os.environ['CXX']
|
||||
|
||||
def libaquery_a(self):
|
||||
self.build_cmd = [['rm', 'libaquery.a'],['make', 'libaquery.a']]
|
||||
@@ -130,6 +133,10 @@ class build_manager:
|
||||
class MSBuildDriver(DriverBase):
|
||||
platform_map = {'amd64':'x64', 'arm64':'arm64', 'x86':'win32'}
|
||||
opt_map = {'0':'Debug', '1':'RelWithDebugInfo', '2':'Release', '3':'Release', '4':'Release'}
|
||||
def __init__(self, mgr : 'build_manager') -> None:
|
||||
super().__init__(mgr)
|
||||
mgr.cxx = aquery_config.msbuildroot
|
||||
|
||||
def get_flags(self):
|
||||
self.platform = self.platform_map[self.mgr.Platform]
|
||||
self.platform = f'/p:platform={self.platform}'
|
||||
@@ -143,7 +150,7 @@ class build_manager:
|
||||
return self.build()
|
||||
|
||||
def pch(self):
|
||||
pass
|
||||
return True
|
||||
|
||||
def server(self):
|
||||
loc = os.path.abspath('./msc-plugin/server.vcxproj')
|
||||
@@ -185,7 +192,7 @@ class build_manager:
|
||||
libaquery_a = 'libaquery.a'
|
||||
if aquery_config.os_platform == 'win':
|
||||
libaquery_a = 'libaquery.lib'
|
||||
current.calc(libaquery_a)
|
||||
current.calc(self.cxx, libaquery_a)
|
||||
try:
|
||||
with open('.cached', 'rb') as cache_sig:
|
||||
cached = pickle.loads(cache_sig.read())
|
||||
@@ -194,7 +201,10 @@ class build_manager:
|
||||
self.cache_status = current != cached
|
||||
|
||||
success = True
|
||||
if force or self.cache_status.sources:
|
||||
if (force or
|
||||
self.cache_status.sources or
|
||||
self.cache_status.env
|
||||
):
|
||||
self.driver.pch()
|
||||
self.driver.libaquery_a()
|
||||
self.driver.server()
|
||||
@@ -206,7 +216,7 @@ class build_manager:
|
||||
if self.cache_status.server:
|
||||
success = self.driver.server() and success
|
||||
if success:
|
||||
current.calc(libaquery_a)
|
||||
current.calc(self.cxx, libaquery_a)
|
||||
with open('.cached', 'wb') as cache_sig:
|
||||
cache_sig.write(pickle.dumps(current))
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user