MAKE
Jump to navigation
Jump to search
handles various build and configuration functions
<func> - Function to perform (ALL,CODE,HELP,JAR,BUNDLE). Multiple options can be combined with a pipe ("CODE|JAR") [DEF=""] <option> - Option tree to perform operation on or "ALL" for all option tree(s) in the path. [DEF="ALL"] Functions: BUN: The BUNDLE or BUN (alias) function creates OSGi bundles (jars) under $NMROOT/bundle directory. (Since NeXtMidas 3.3.0) Same as: nM> generate/verbose bundle <option> bundle CODE: The CODE function builds the Java and C code known to the NeXtMidas system. Same as: nM> build all all <option> DOCS: An alias for "HELP" (see below). HELP: The HELP function builds the Help system files and their browser compatible versions. This includes the building of the JavaDoc files (which document any Java files). The building of the database used to perform the search in HELP/GUI is only done when this function and the "ALL" option is specified. Same as: nM> help/build ,, <option> JAR: The JAR function creates Java Web Start compatible jars for web deployment under $NMROOT/jars directory. Same as: nM> generate/sign/verbose jars <option> jars Note: Under Windows, this function may fail if the destination jar file is open (e.g. in use by another process running in Web Start). ALL: The ALL function is identical "CODE|HELP|JAR". Combining "ALL" with any other functions has no affect (i.e. "ALL|JAR" is the same as "ALL"). Since NeXtMidas 2.5.1, if an unsupported function is specified, MAKE displays an error message with the list of supported functions. Note: When MAKE is run outside the NeXtMidas shell (i.e. via '$ nm make ...'), it uses tools.NmMake to provide the boot-strap build of NeXtMidas from scratch. In this mode, Native code is disabled. Option trees that require native code, such as XBC to preprocess Fortran files and all dependent option trees must run MAKE in the NeXtMidas shell and with native code enabled (on by default). View the User's Guide -> Installation and Customization -> Compilation for more information. In NeXtMidas 3.5.3, the JVM target (-source and -target javac flags) were removed from build.props. This means that the lowest desired JDK should be used to compile the baseline and option trees otherwise trying to run NeXtMidas on a lower JVM will error with following Exception: java.lang.UnsupportedClassVersionError: ... Unsupported major.minor version To downgrade to a lower JVM target (e.g. from Java 8 to Java 7), it is recommended to rebuild from a refresh tarball/zip of the NeXtMidas baseline. But if that is not available, then the following steps can take from OS shell: 1. nm make clean 2. nm make all 3. rebuild your option trees (e.g. path add option trees, make all) Extending Make: Prior to building an option tree MAKE will look for a BUILDOPT macro in the MCR area of the option tree being built. If a BUILDOPT macro is found MAKE will call it and let it handle the building of the option tree. If no BUILDOPT macro is found the default system one (see BUILDOPT;SYS) will be used. The BUIDLOPT macro should handle all of the tasks required to build the option tree. BUILDOPT may call BUILDOPT;SYS if applicable but may NOT call MAKE. Example of a typical BUILDOPT: startmacro u:option["MYOPT"] say "Using custom buildopt for ^{option} option tree." ! Get the standard /NC=, /NH=, and /NJ= switches that MAKE ! passed here and and passes them on to BUILDOPT;SYS later SWITCH NAME=NC VALUE=NC FUNC=GET DEF=false SDEF=true SWITCH NAME=NH VALUE=NH FUNC=GET DEF=false SDEF=true SWITCH NAME=NJ VALUE=NJ FUNC=GET DEF=false SDEF=true ! Do special build steps for this option tree if NC isFalse then bld mylibrary libxxx ^option bld all libxxx ^option endif ! Then perform the standard build with user specified switches BUILDOPT;SYS/NC=^{nc}/NH=^{nh}/NJ=^{nj} ^option endmacro Warning: When calling BUILDOPT;SYS, always include the ";SYS" since other option trees are likely to have their own buildopt variants. Examples: 1. Build all of the Java and C code for the SYS tree and package it in the JAR files: nM> make CODE|JAR sys or nM> make JAR|CODE sys Note that in all cases the make macro will perform each function in its logical order (e.g. "CODE" will be performed before "JAR"). 2. Build the help files for all known option trees. nM> make HELP all 3. Build everything for the "DSP" option tree. nM> make all dsp 4. Build everything for all known option trees: nM> make all all 5. Build code (except for native files) for MAP option tree: nM> make code map /donative=f 6. Build only native files (code) for all option trees on path (Since 3.3.1): nM> make code /bldtypes=native 7. Exclude all test directories ("*/test/*") when creating JAR files (since 3.3.4): nM> make jars /notest 8. Exclude all docs directories ("*/docs/*") when creating JAR files (since 3.3.4): nM> make jars /nodocs Switches: See BUILDOPT, BUILD, GENERATE, HELP explain files for switches that MUST be specified at the end of command line after all arguments to MAKE for it to propagate to those commands. Here are some common switches for BUILD and GENERATE: /BLDTYPES= - Types of files to build (Java,Native,Host). When specified takes precedence over /DOHOST and /DONATIVE. (Since 3.3.1) [DEF=ALL] /DEBUG - Turn on debugging. /DOHOST - Compiles the host (C++/Fortran) files [DEF=FALSE, TRUE if XBC on path). Note: /DOHOST should usually be included with /DONATIVE. /DONATIVE - Compiles the native (C/C++) files. [DEF=TRUE] /NODOCS - Do not include /docs directories in JAR files (since 3.3.4) /NOTEST - Do not include /test directories in JAR files (since 3.3.4) /SKIP= - For FUNC=JAR, skip specified step(s) options mask value: JARSTANDARD - Skip standard jar file creation JARNATIVE - Skip JAR of native library files for current OS COPYJARS - Skip copying and signing jar files from JAR area For FUNC=BUNDLE, skip options mask value: (Since 3.3.0) BUNSTANDARD - Skip standard OSGi bundle file creation BUNNATIVE - Skip native libraries OSGi bundle file creation BUNSOURCE - Skip source code OSGi bundle file creation See Also: BUILDOPT, BUILD, BLD, GENERATE, HELP