6 Triple-use minimum working example for PyXMake. This script can be 7 executed in three different ways in varying levels of accessibility 9 @note: Compile the BoxBeam & MCODAC for Java applications 10 using Intel Fortran and Java Native Access (JNA) 14 ---------------------------------------------------------------------------------------------- 21 @author: garb_ma [DLR-FA,STM Braunschweig] 22 ---------------------------------------------------------------------------------------------- 31 sys.path.insert(0,os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
35 from PyXMake
import VTL
38 __arch = Utility.GetArchitecture()
42 from PyCODAC.Tools.Utility
import GetPyCODACPath
44 __mcd_core_path = os.path.join(GetPyCODACPath(),
"Core")
51 ErrorHandling.InputError(20)
56 files=VTL.GetSourceCode(0),
57 command = VTL.GetBuildCommand(1),
58 libs = VTL.GetLinkDependency(0, 1, __arch),
60 source=os.path.join(__mcd_core_path,
"src"),
61 include=[os.path.join(__mcd_core_path,
"include",Utility.GetPlatform(),__arch, x)
for x
in VTL.GetIncludeDirectory(__mcd_core_path, 0, 4, __arch)],
62 dependency=os.path.join(__mcd_core_path,
"lib",Utility.GetPlatform(),__arch),
63 output=os.path.join(__mcd_core_path,
"bin",Utility.GetPlatform(),__arch),
65 architecture=__arch,scratch=VTL.Scratch, verbosity=2):
67 Main function to execute the script. 70 FBuild = pyx.Fortran(BuildID, files, scratch=scratch, msvsc=
'vs2015', arch=architecture, verbose=verbosity, lib=
'shared')
71 FBuild.SourcePath(source)
72 FBuild.OutputPath(libpath=output)
73 FBuild.AddIncludePath(include)
74 FBuild.AddDependencyPath(dependency)
75 FBuild.UseLibraries(libs)
76 FBuild.Preprocessing(inend=
'.for', outend=
'.f90')
80 if __name__ ==
"__main__":
84 parser = argparse.ArgumentParser(description=
"Build a static Fortran library remotely on the institute cluster")
85 parser.add_argument(
"user", metavar=
"user", nargs=1, help=
"Current user for SSH connection")
86 parser.add_argument(
"key", metavar=
"key", nargs=1, help=
"Path to private SSH key")
87 parser.add_argument(
"source_path", metavar=
"source", nargs=1, help=
"Directory containing all source files")
88 parser.add_argument(
"feature_path", metavar=
"feature", nargs=1, help=
"Directory containing the feature source file \ 89 (in dependence of requested feature: ABAQUS, ANSYS, NASTRAN.")
93 args, _ = parser.parse_known_args()
95 make_opt = args.make[0]
103 BuildID =
'bbeam_java';
104 main(BuildID, files=VTL.GetSourceCode(1), source=os.path.join(__mcd_core_path,
"external",
"boxbeam"),
105 include=[], dependency=[], libs=[])
108 BuildID =
'mcd_java';
main(BuildID)
111 raise NotImplementedError
114 print(
"==================================")
115 print(
"Finished build for Java")
116 print(
"==================================")
def main(BuildID, files=VTL.GetSourceCode(0), command=VTL.GetBuildCommand(1), libs=VTL.GetLinkDependency(0, 1, __arch), source=os.path.join(__mcd_core_path,"src"), include=[os.path.join(__mcd_core_path,"include", Utility.GetPlatform(), __arch, x) for x in VTL.GetIncludeDirectory(__mcd_core_path, 0, 4, __arch)], dependency=os.path.join(__mcd_core_path,"lib", Utility.GetPlatform(), __arch), output=os.path.join(__mcd_core_path,"bin", Utility.GetPlatform(), __arch), architecture=__arch, scratch=VTL.Scratch, verbosity=2)
Module containing all relevant modules and scripts associated with the building process.