Difference between revisions of "Compiling HWMan WPS Class on ArcaOS 5.x"

From EDM2
Jump to: navigation, search
(Make Procedure)
(Checking the "make" file)
Line 33: Line 33:
  
 
===Checking the "make" file===
 
===Checking the "make" file===
 +
The makefile is a text file that contains the instruction and procedure to compile the applications. Since there are several kind of make programs, sometimes it can change a lot from one to another. On this case, this makefile was created to be used with "nmake.exe".
 +
 +
Checking the makefile can understand a little bit about the procedure:
 +
 +
.idl.cpp:
 +
        @echo " Compile::SOM Compiler "
 +
        sc.exe -C200000 -S200000 -sxc;xh;xih $<
 +
 +
.asm.obj:
 +
        @echo " Assemble::Assembler "
 +
        alp.exe -Mb +Fl -Li -Lr +Ls +Lm $(AFLAGS) $<
 +
 +
.cpp.obj:
 +
        @echo " Compile::C++ Compiler "
 +
        icc.exe -Q -Sp2 -D__IBMC__ -W2 $(CFLAGS) -Gm -Gd -Ge- -G5 -C $<
 +
 +
.rc.res:
 +
        @echo " Compile::Resource Compiler "
 +
        rc.exe -n -r $<
 +
 +
Here you can see the compiler calls to create the object and res files.
 +
 +
Later you can see the procedure to link the libraries, object files and create the DLL file.
 +
 +
hwman.dll: $(OBJS) $(RES) $(DEF)
 +
        @echo " Link::Linker "
 +
        -7 ilink.exe -nol -nobas $(LFLAGS) -dll -packc -packd -e:2 -m -o:$@ $(OBJS) $(LIBS) $(DEF)
 +
        rc.exe -n -x2 $(RES) $@
 +
        dllrname.exe $@ CPPOM30=OS2OM30 /n /q
 +
        emxupd.exe $@ $(OS2_SHELL:CMD.EXE=DLL)
 +
 +
There are more details on the makefile that it may be good for you to check also.
  
 
===Make Procedure===
 
===Make Procedure===

Revision as of 20:49, 11 December 2018

By Martin Iturbide

This article is the result of my exercise of trying to compile a WPS class on 2018. On this case I had choosen to compile HWMan WPS Class to learn about the built procedure.

Software Required

Tool Link Components
IBM C and C++ Compilers, Version 3.6.5‎ with fixpack 2 It contains icc.exe, alp.exe ...
IBM Device Driver Kit This program makes a reference to "RMCALLS.H" that is included on the DDK, that is why it is required.
IBM OS/2 Toolkit 4.5 It contains nmake.exe and required libraries to compile.
emxupd.exe [1]
HWMan Source Code

Preparing the Environment

Installing IBM C and C++ Compilers, Version 3.6.5

Installing "IBM C and C++ Compilers Version 3.6.5" can be tricky since you need Netscape navigator to work as the installer tool. The good thing is that the installer includes Netscape on the list. So you can install Netscape on ArcaOS (if you didn't install it when you install the OS) from it.

The install procedure is just straightforward. You can only install the "basic" components of this tool and it will work for this exercise.

CONFIG.SYS

Here it is a final view of some key elements of the config.sys paths and libpaths.

Compile Procedure

Checking the "make" file

The makefile is a text file that contains the instruction and procedure to compile the applications. Since there are several kind of make programs, sometimes it can change a lot from one to another. On this case, this makefile was created to be used with "nmake.exe".

Checking the makefile can understand a little bit about the procedure:

.idl.cpp:
       @echo " Compile::SOM Compiler "
       sc.exe -C200000 -S200000 -sxc;xh;xih $<

.asm.obj:
       @echo " Assemble::Assembler "
       alp.exe -Mb +Fl -Li -Lr +Ls +Lm $(AFLAGS) $<
.cpp.obj:
       @echo " Compile::C++ Compiler "
       icc.exe -Q -Sp2 -D__IBMC__ -W2 $(CFLAGS) -Gm -Gd -Ge- -G5 -C $<
.rc.res:
       @echo " Compile::Resource Compiler "
       rc.exe -n -r $<

Here you can see the compiler calls to create the object and res files.

Later you can see the procedure to link the libraries, object files and create the DLL file.

hwman.dll: $(OBJS) $(RES) $(DEF)
       @echo " Link::Linker "
       -7 ilink.exe -nol -nobas $(LFLAGS) -dll -packc -packd -e:2 -m -o:$@ $(OBJS) $(LIBS) $(DEF)
       rc.exe -n -x2 $(RES) $@
       dllrname.exe $@ CPPOM30=OS2OM30 /n /q
       emxupd.exe $@ $(OS2_SHELL:CMD.EXE=DLL)

There are more details on the makefile that it may be good for you to check also.

Make Procedure

The way to start the compile process is to run the "Command line" of the development environment, change to the directory where you copied the source code and run "nmake".

ComWPS-010.png

The procedure will stop without errors

ComWPS-011.png

Remember that you can also log the output of the command in case you want to read the full text. You can do that by running:

nmake >out.txt

Take a moment to see the files that had been generated.

ComWPS-012.png

You can see that some .obj .res and .map files were generated and the most important file is hwman.dll which is the DLL that contains the compiled and linked WPS class application.

Lar's has also shared with me some other tips to run "nmake" on different ways:

  • "nmake" to do a normal build
  • "nmake "DEBUG=1"" to build with debug info
  • "nmake -a" to rebuild all
  • "nmake -a "DEBUG=1"" to rebuild all with debug info

Tools and Compiler Versions

This are the versions of each tool and compiler I used:

Tool Date File Size Version Source
icc.exe 2000-11-24 12:44a 57,078 bytes 3.6 FP2 From IBM C and C++ Compilers, Version 3.6.5 with FP2
sc.exe 1999-06-30 11:12p 50,296 bytes OS2TK45
alp.exe 2001-05-25 466,944 bytes 4.00.008 OS2TK45
rc.exe 2003-01-30 / 5.00.007 399,538 bytes IBM RC (Resource Compiler) Version 5.00.007 Jan 30 2003 Included on ArcaOS 5.x
ilink.exe 2000-11-24 1:27a / 03.06.PPK1001120 110,247 bytes IBM Version. Version 3.6 with Fixpack 2. From IBM C and C++ Compilers, Version 3.6.5 with FP2
dllrname.exe 2000-11-24 1:26a 35,679 bytes IBM C/C++ Tools Version 2.0 - DLL Rename Utility From IBM C and C++ Compilers, Version 3.6.5 with FP2
emxupd.exe 1998-12-19 9:27p 34,304 bytes From hobbes
nmake.exe bytes