Using iMake developers can easily create and maintain libraries, executables and object files from source files. iMake lets developers automate site and program maintenance using make files which describe how the files depend on each other and how to update a file when the files it depends on change.
iMake is particularly useful for projects that have many files, since only those files that have changed are regenerated. iMake does this by looking at the date and time that each dependant file before performing a operations.
Table of Contents
Features
Feature |
Details |
Platform Independence |
iMake is built using Java and will run on any platform which supports the Java Runtime Environment (JRE) version 1.1.x or later. |
Make Facility |
iMake make processor is used to generate only those Web pages, object files, libraries and executables which have been changed. |
Macro Processor |
iMake supports predefined and user defined identifiers and macros which can be used by the preprocessor and in inference and target definitions. |
User Definitions |
iMake supports user defined inference and target definitions. |
Multiple Targets |
iMake supports multiple target definitions. |
Conditional Compilation |
iMake supports [ ifdef | ifndef | if | elif | elseif | else | endif ] directives. |
Recursive Expressions Evaluator |
iMake supports complex recursive string and arithmetic expressions in definitions and in [ if | elif | elseif ] directives. |
Command Line Definitions |
iMake supports command line definitions using -d and -u command line parameters. |
Extensible Search Path |
iMake supports a user extensible search path using INCLUDE environment variable and -i command line parameter. |
Touch Utility |
Platform independent program for setting a file`s timestamp. |
Other |
iMake supports other functionality found in professional make processors. |
FAQs
What is iMake?
iMake is a platform independent make processor written entirely in Java.
iMake is the easiest way to generate and maintain both static Web pages, object files, libraries and executables as needed.
How does iMake compare to other make processors?
iMake delivers the same functionality found in professional make processors.
Who should use iMake?
Web site developers and software developers who work on multiple platforms or who need to generate Web pages, object files, libraries and executables on multiple platforms.
What can iMake be used for?
iMake can be used by developers to easily create and maintain libraries, executables and object files from source files. iMake lets developers automate site and program maintenance using make files which describe how the files depend on each other and how to update a file when the files it depends on change.
iMake is particularly useful for projects that have many files, since only those files that have changed are regenerated. iMake does this by looking at the date and time that each dependent file before performing a operations.
Where can iMake be used?
iMake can be used on any platform that supports the Java Runtime Environment version 1.1.x or later.
What is the future of iMake?
Servertec plans to develop iMake as a full featured make processors. Check out our Future Plans.
What is the difference between Servertec`s Open Source, End-User, Corporate, ISV and OEM products?
Open Source ...
End-User products are for individuals or entities who wish to license Servertec products on a per server or per user basis. Personal products include 30-day limited support.
Corporate Subscriptions are site licenses for individuals, institutions or entities who need a license to Servertec products that allows them to internally use Servertec products on an unlimited number of servers or an unlimited number of users without having to pay on a per seat or per server basis. All Corporate Subscriptions include 12 months of updates and support.
ISV Subscriptions are licenses for individuals, institutions or entities who need a license to Servertec products that allows them embed and distribute Servertec Software Royalty Free as an integral part of their end-user focused applets, servlets or standalone applications. All ISV Subscriptions include 12 months of updates and support.
OEM Subscriptions are licenses for individuals, institutions or entities who need a license to Servertec products that allows them embed and distribute Servertec Software Royalty Free as an integral part of their developer focused applets, servlets or standalone applications. All OEM Subscriptions include 12 months of updates and support.
How can Servertec sell it`s products so inexpensively?
Servertec is a company built-around the Internet who does not have many of the costs associated with traditional brick and mortar businesses. Most of Servertec`s customers are large corporations who purchase Corporate / ISV Subscriptions. Finally, Servertec has been able to cut prices by half by focusing on direct sales and by not wasting money on advertising.
Download
http://www.servertec.com/products/imake/license.html
Requirements
Requirement |
Details |
Storage |
150 KB for classes and executables 2 MB for classes, executables, examples and documentation |
Java |
Java version 1.1.x or later Download Java from JavaSoft |
Installation
Use the following instructions to install iMake on Windows 9x/Me/NT/2000/2003/XP.
- Install Java version 1.1.x or later.
- Extract setup_imake.jar file.
c:
cd \
jar -xvf path\setup_imake.jar
path the directory containing setup_imake.jar.
- Define environment variables in c:\autoexec.bat file.
Using c:\imake\install\win32\vars.bat as a template:
- Modify JAVA_EXE, as needed
set JAVA_EXE=path\bin\java.exe
path the base directory where Java was installed.
- Define CLASSPATH
set CLASSPATH=path\classes;%CLASSPATH%
path the base directory where iMake was installed, normally c:\imake.
- Define PATH
set PATH=path\bin\win32;%PATH%
path the base directory where iMake was installed, normally c:\imake.
- Restart the computer.
Use the following instructions to install iMake on Linux/Solaris/AIX/HP-UX/Unix.
- Install Java version 1.1.x or later.
- Login on account where iMake will be installed.
- Extract setup_imake.jar file.
cd /
jar -xvf path/setup_imake.jar
path the directory containing setup_imake.jar.
- If not in root directory, move imake to root directory.
mv imake /
- Make executables, as needed
cd /imake/bin/linux
chmod u+x,g+x makemk
./makemk
- Define environment variables in user`s login script.
Using /imake/install/linux/mk.sh as a template:
- Define JAVA_EXE, as needed
set JAVA_EXE=path/bin/java
path the base directory where Java was installed.
- Define CLASSPATH
export CLASSPATH="path/classes:${CLASSPATH}"
path the base directory where iMake was installed, normally /imake.
- Update PATH
export PATH="path/bin/linux:${PATH}"
path the base directory where iMake was installed, normally /imake.
- Logout and log back in.
Change Log
iMake 1.5.3 09/04/2005
- initial open source release
iMake 1.5.2 01/04/2001
- reduced size of class files
iMake 1.5.1 10/05/2000
iMake 1.5.0 08/13/2000
- added method isDefined() to return whether the specified identifier is currently defined
- added method isMacro() to return whether the specified identifier is currently defined as a macro
- added method getDefinition() to return the current definition of the specified identifier
- added method getLine() to return the current line being preprocessed
- added method getIdentifiers() to return an enumeration of defined identifiers
- Strings, Integers, Doubles and Booleans are now automatically converted as needed during expression processing
- Boolean values now return "true" or "false" when converted to a String
- added command line option, -e, to support embedded quotes within quoted strings using \ to preface quote
- fixed bug in define() that resulted in exception being thrown when a macro was being defined
- expanded documented API
- fixed bug that resulted in iMake hanging when javac compiled Java class files with errors
iMake 1.4.1 11/07/1999
- improved performance by where possible replacing use of Strings with StringBuffers
iMake 1.4.0 02/14/1999
- added touch utility
- updated error handler to catch additional exceptions and to generate friendlier messages
- removed use of System.exit()
- eliminated need for specifying dependencies in target definitions
iMake 1.0.0 02/14/1999
- added support for specifying commands in target definitions
iMake 1.0.0 01/24/1999
- alphabetized command line options
- command line option, -d, now undefines predefined environment variables
- added -d option, build if the time stamps are equal
- changed when targets are built, now targets are built only if target time stamp is older, prior to this release targets where built when the target time stamp was the same or older than the dependencies
- added support for recursive macro definitions by partially evaluating macros as they are being defined
- white spaces are now parsed as spaces
- colon : in target identifiers enclosed in quotes are now parsed properly
- updated documentation
- fixed bug where base target name was not being properly set and resulted in java.lang.StringIndexOutOfBoundsException: String index out of range exception being thrown
- quotes are now removed from target definitions
- fixed bug in how embedded spaces in a target definition enclosed by quotes are being parsed
- identifier definitions ending with \ can now be enclosed in quotes, example DIR_SEP = "\"
- fixed bug where evaluating include directive within if/ifdef/ifndef directive resulted in unexpected end of file while in if/ifdef/ifndef
- fixed bug where results from ## were not being evaluated recursively
- removed use of System.exit()
iMake 1.0.0 09/06/1998
- updated documentation, macros can not be defined from the command line using -d
- fixed bug with macro and identifier identification
- changed how macros are defined
- fixed bugs with operations on doubles
iMake 1.0.0 08/22/1998
- fixed bug with evaluating embedded macros
iMake 1.0.0 08/17/1998
- verbose mode expanded to display defined identifiers, inferences and targets
- added java and c makefile examples
- embedded macros now supported in inference and target definitions
- eliminated need for root access
iMake 1.0.0 07/19/1998
- integrated preprocessor
- cleanup html/format/spelling documentation
iMake 1.0.0 07/05/1998
- fixed bug in macro processor, macros are now resolved properly
- improved performance, recompile without debug code
- improved iMake documentation
iMake 1.0.0 06/12/1998
- created release
- integrated iMake into Servertec`s Web site
- cleanup iMake documentation
Future Plans
Servertec`s goal is to deliver to Web site developers and software developers a full featured make processor.
You can help shape the development of iMake, send your comments, suggestions and problems to support@servertec.com.
Disclaimer
- The following information is subject to change without notice.
- No definitive time frame for support of specific features or functionality is inferred, implied or given.
- Support for specific feature or functionality maybe postponed, moved up, dropped or added.
- Support for specific feature or functionality is not guaranteed.
- add support for complex target definitions, ::
- add support for search path in inference/target definitions, {}
- add support for command errors code
- add support for -c command line option, suppress all output
- add support for -i command line option, ignore error code
- add support for -t command line option, update target time stamp without processing commands
- add support for @[file] command line parameter, sets command line options using a specified file
- add support for command modifiers, (-, -[number], @, !, *, <[file])
- add support for !cmdswitches {+/-} {[option]} directive for specifying command line switches from within a make file
- add support for response files, using echo command and output redirection using > and >>
- add support for inline files, <<[file]
- add support for literals, ^
- add make/makedir/makeflags built-in macros
iMake Knowledge Base
Date |
Description |
Status |
07/13/2000 |
iMake did not properly handle macro definitions defined using define().
Macro definitions defined using define() resulted in "Unexpected end of line encountered while searching for identifier" being thrown.
The problem has been resolved in iMake 1.5.0 08/13/2000 Preview Release. |
Fixed |
07/10/2000 |
iMake hung when makefile used javac to compile Java class files with errors.
The problem has been resolved in iMake 1.5.0 08/13/2000 Preview Release. |
Fixed |
08/13/1999 |
Touch utility when used with JDK/JRE version 1.1.x aborts displaying the following message:
java.lang.NoSuchMethodError: java.io.File: method setLastModified(J)Z not found
Touch requires JDK/JRE version 1.2.x or later. |
Other |
11/18/1998 |
iMake 09/06/1998 Preview Release does not properly handle includes within if/ifdef/ifndef directive.
The following will result in unexpected end of file while in if/ifdef/ifndef.
The problem has been resolved in iMake 01/24/1999 Preview Release. |
Fixed |
10/16/1998 |
iMake 09/06/1998 Preview Release does not properly evaluate statements containing ## operator.
The following will not be properly evaluated.
#define PRE_MACRO(i) (i = i + 1) #define PASTE(name, i) (PRE_##name(i))
PASTE(MACRO,n);
The problem has been resolved in iMake 01/24/1999 Preview Release. |
Fixed |
09/03/1998 |
iMake 08/22/1998 Preview Release does not properly evaluate statements containing text matching defined macros.
The problem has been resolved in iMake 09/06/1998 Preview Release. |
Fixed |
09/03/1998 |
iMake 08/22/1998 Preview Release does not properly evaluate macros whose parameters are not found in the macro`s definition.
The following will generate an invalid value.
The problem has been resolved in iMake 09/06/1998 Preview Release. |
Fixed |
08/26/1998 |
Operations on doubles result in invalid integer values in iMake 08/22/1998 Preview Release.
The following will generate an invalid value.
!if 1 == 1 + .1 !message error !else !message ok !endif
The problem has been resolved in iMake 09/06/1998 Preview Release. |
Fixed |
08/21/1998 |
iMake 08/17/1998 Preview Release generates invalid results when evaluating embedded macros.
The following will generate an invalid value.
!define m1(a) a !define m2(b) b
m1(m2(x))
The problem has been resolved in iMake 08/22/1998 Preview Release. |
Fixed |
07/02/1998 |
iMake 1.0.0 06/12/1998 Preview Release does not properly resolve macros.
The following will result in iMake incorrectly reporting an error.
cc = cl /c
.c.obj: $(cc) $*.c $*.obj
This problem has been resolved in iMake 07/05/1998 Preview Release. |
Fixed |
04/23/1998 |
Recursive makefile definitions are not presently being caught.
The following will result in iMake aborting.
|
Open |
Источник: http://www.servertec.com/products/imake/imake.html