You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
2.0 KiB
Python
60 lines
2.0 KiB
Python
#!/usr/bin/python3
|
|
|
|
import os,sys,math
|
|
import subprocess
|
|
import shutil
|
|
from shutil import copytree
|
|
|
|
from amsbuildlib4 import *
|
|
|
|
libname = "amsmathutil25.mingw64" #static library name to generate
|
|
binname = "tests" #create this executable when compiling main.c or main.cpp
|
|
commondir = "../../winx64" #common directory to pul libraries and includes from
|
|
depdir = "./dependencies/winx64" #local pre-compiled dependency libraries and their includes
|
|
installdir = "../../winx64" #directory to install to when finished
|
|
builddir = "./build_mingw64"
|
|
|
|
doinstall = True #copies the build_output to the install dir when finished
|
|
cc = "x86_64-w64-mingw32-g++" #compiler
|
|
cflags = "-fPIC -O3"
|
|
libraries = "-l{}".format(libname)
|
|
libdirs = "-L{} -L{}/lib -L{}/lib".format(builddir,commondir,depdir)
|
|
linkerflags = "-static -static-libgcc -Wl,-rpath=."
|
|
srcexts = [".c",".cpp"]
|
|
binsrc = ["main.c","main.cpp"] #ignore these files when compiling the static library
|
|
|
|
|
|
#keyword list to control the compilers/linkers
|
|
kwargs = dict()
|
|
include = "-I./include -I{}/include -I{}/include".format(commondir, depdir)
|
|
kwargs["include"] = include
|
|
kwargs["flags"] = cflags
|
|
kwargs["libdir"] = libdirs
|
|
kwargs["libflags"] = libraries
|
|
kwargs["linkerflags"] = linkerflags
|
|
kwargs["recurse"] = True
|
|
kwargs["objstore"] = "{}/objstore".format(builddir)
|
|
kwargs["searchincdirs"] = "./include"
|
|
|
|
#Find all source files, except the main project files
|
|
srcfiles = flist('./src',exts = srcexts, recurse=True)
|
|
srcfiles = except_contains(srcfiles,binsrc)
|
|
|
|
#compile all the source files in the list
|
|
#gs_compile_list(cc,files,**kwargs)
|
|
gs_incremental_compile_list(cc,srcfiles,**kwargs)
|
|
|
|
#archive all the source files into a static library
|
|
objlist = flist(kwargs['objstore'],exts='.o',recurse=True)
|
|
ar_list(objlist,'{}/lib{}.a'.format(builddir,libname))
|
|
|
|
if(doinstall):
|
|
#Push any libraries to the common lib folder
|
|
shutil.copy(
|
|
'{}/lib{}.a'.format(builddir,libname),
|
|
"{}/lib".format(installdir)
|
|
)
|
|
|
|
#Copy include files to the common include folder
|
|
copytree('./include/',installdir+'/include/',dirs_exist_ok=True)
|