home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 18 REXX / 18-REXX.zip / rexxtk12.zip / makefile.win32.vc < prev    next >
Makefile  |  2001-07-13  |  9KB  |  261 lines

  1. #
  2. # NMAKE-compatible MAKE file for building Rexx/Tk with VC++
  3. #
  4. # will generate:
  5. #
  6. #      rexxtk.dll
  7. #      rexxtk.exe
  8. #      rexxtktree.dll
  9. #      rexxtkcombobox.dll
  10. #      rexxtkmclistbox.dll
  11. #      rexxtknotebook.dll
  12. # Usage: nmake [DEBUG=1] 
  13. #              [INT=REGINA|OREXX|WINREXX|QUERCUS|UNIREXX|REXXTRANS]
  14. #              [rexxtk.dll|rexxtk.exe|rexxtktree.dll|rexxtkcombobox.dll|rexxtkmclistbox.dll|rexxtknotebook.dll]
  15. #
  16.  
  17. PROJ = rexxtk
  18. ABBREV = rxtk
  19. SRC = rexxtk
  20. VER = 12
  21. VERDOT = 1.2
  22.  
  23. SRCDIR = $(REXXTK_SRCDIR)
  24. EXTDIR = $(REXXTK_SRCDIR)\extensions
  25.  
  26. REGINA_REXXLIBS = $(REGINA_BINDIR)\vc\regina.lib
  27. REGINA_REXXINC = -I$(REGINA_SRCDIR) -DUSE_REGINA
  28. OREXX_REXXLIBS = f:\objrexx\api\rexx.lib e:\mhes\objrexx\api\rexxapi.lib
  29. OREXX_REXXINC = -If:\objrexx\api -DUSE_OREXX
  30. WINREXX_REXXLIBS = f:\winrexx\api\rxrexx.lib
  31. WINREXX_REXXINC = -If:\winrexx\api -DUSE_WINREXX
  32. QUERCUS_REXXLIBS = f:\quercus\api\wrexx32.lib
  33. QUERCUS_REXXINC = -If:\quercus\api -DUSE_QUERCUS
  34. UNIREXX_REXXLIBS = f:\unirexx\api\rx.lib
  35. UNIREXX_REXXINC = -If:\unirexx\api -DUSE_UNIREXX
  36. REXXTRANS_REXXLIBS = $(REXXTRANS_BINDIR)\rexxtrans.lib
  37. REXXTRANS_REXXINC = -I$(REXXTRANS_SRCDIR) -DUSE_REXXTRANS
  38.  
  39. TKINCDIR = $(TKINCDIR)
  40.  
  41. #---------------------------------------------------------------------
  42. # You should not have to change anything below here...
  43. #---------------------------------------------------------------------
  44.  
  45. #
  46. # Tcl/Tk version defines
  47. #
  48. #!if "$(TCLVER)X" == "X"
  49. #!message Tcl/Tk version not specified with TCLVER= on make command line
  50. #!error Make aborted!
  51. #!endif
  52.  
  53. #
  54. # Interpreter specific defines
  55. #
  56. !if "$(INT)" == "REGINA"
  57. REXXLIBS = $(REGINA_REXXLIBS)
  58. REXXINC =  $(REGINA_REXXINC)
  59. !elseif "$(INT)" == "OREXX"
  60. REXXLIBS = $(OREXX_REXXLIBS)
  61. REXXINC =  $(OREXX_REXXINC)
  62. !elseif "$(INT)" == "WINREXX"
  63. REXXLIBS = $(WINREXX_REXXLIBS)
  64. REXXINC =  $(WINREXX_REXXINC)
  65. !elseif "$(INT)" == "QUERCUS"
  66. REXXLIBS = $(QUERCUS_REXXLIBS)
  67. REXXINC =  $(QUERCUS_REXXINC)
  68. !elseif "$(INT)" == "UNIREXX"
  69. REXXLIBS = $(UNIREXX_REXXLIBS)
  70. REXXINC =  $(UNIREXX_REXXINC)
  71. !elseif "$(INT)" == "REXXTRANS"
  72. REXXLIBS = $(REXXTRANS_REXXLIBS)
  73. REXXINC =  $(REXXTRANS_REXXINC)
  74. !else
  75. !message Rexx Interpreter NOT specified via INT macro
  76. !message Valid values are: REGINA OREXX WINREXX QUERCUS UNIREXX REXXTRANS
  77. !error Make aborted!
  78. !endif
  79.  
  80. EXTRALINK =
  81. CCLIBS = user32.lib
  82. DISTDIR=tmpdir
  83.  
  84. comcopts = -nologo -W3 -c -DWIN32 -DHAVE_PROTO -I$(TKINCDIR) $(REXXINC) -I$(SRCDIR)
  85. comlopts = -nologo -machine:I386 $(EXTRALINK)
  86.  
  87. !ifdef DEBUG
  88. copts  = $(comcopts) -Od -Z7 -FR
  89. lopts  = $(comlopts) -debug
  90. !else
  91. copts  = $(comcopts) -Ox
  92. lopts  = $(comlopts) -release
  93. !endif
  94.  
  95. cflagsdll = $(copts) /DDYNAMIC
  96. cflagsexe = $(copts)
  97. lflagsdll = $(lopts) -dll -implib:$(*B).lib
  98. lflagsexe = $(lopts) 
  99.  
  100. objsdll = $(ABBREV)dll.obj $(ABBREV)basedll.obj packdll.obj dll_res.obj
  101. objsexe = loader.obj getopt.obj $(ABBREV)exe.obj $(ABBREV)baseexe.obj packexe.obj exe_res.obj
  102.  
  103. objstreedll = $(ABBREV)treedll.obj $(ABBREV)dll.obj packdll.obj treedll_res.obj
  104. objscomboboxdll = $(ABBREV)comboboxdll.obj $(ABBREV)dll.obj packdll.obj comboboxdll_res.obj
  105. objsmclistboxdll = $(ABBREV)mclistboxdll.obj $(ABBREV)dll.obj packdll.obj mclistboxdll_res.obj
  106. objsnotebookdll = $(ABBREV)notebookdll.obj $(ABBREV)dll.obj packdll.obj notebookdll_res.obj
  107.  
  108. ccdll = cl $(cflagsdll) $(listopt)
  109. ccexe = cl $(cflagsexe) $(listopt)
  110.  
  111. H1=$(SRCDIR)\defines.h
  112. #H2=$(TKINCDIR)\tk.h
  113. H3=$(SRCDIR)\rxpack.h $(SRCDIR)\rxdef.h $(SRCDIR)\$(PROJ).h
  114.  
  115. all: $(PROJ).exe $(PROJ).dll $(PROJ)tree.dll $(PROJ)combobox.dll $(PROJ)mclistbox.dll $(PROJ)notebook.dll dist
  116.  
  117. #
  118. # These function only required for EXE
  119. #
  120. getopt.obj: $(SRCDIR)\getopt.c
  121.     $(ccexe) /Fogetopt.obj $(SRCDIR)\getopt.c
  122.  
  123. loader.obj: $(SRCDIR)\loader.c $(H1) $(H3)
  124.     $(ccexe) /Foloader.obj $(SRCDIR)\loader.c
  125.  
  126. #
  127. # These modules are the package-specific modules; both for DLL and EXE
  128. #
  129.  
  130. $(ABBREV)dll.obj: $(SRCDIR)\$(PROJ).c $(H1) $(H2) $(H3)
  131.     $(ccdll) /Fo$(ABBREV)dll.obj $(SRCDIR)\$(PROJ).c
  132.  
  133. $(ABBREV)exe.obj: $(SRCDIR)\$(PROJ).c $(H1) $(H2) $(H3)
  134.     $(ccexe) /Fo$(ABBREV)exe.obj $(SRCDIR)\$(PROJ).c
  135.  
  136. $(ABBREV)basedll.obj: $(SRCDIR)\$(PROJ)base.c $(H1) $(H2) $(H3)
  137.     $(ccdll) /Fo$(ABBREV)basedll.obj $(SRCDIR)\$(PROJ)base.c
  138.  
  139. $(ABBREV)baseexe.obj: $(SRCDIR)\$(PROJ)base.c $(H1) $(H2) $(H3)
  140.     $(ccexe) /Fo$(ABBREV)baseexe.obj $(SRCDIR)\$(PROJ)base.c
  141.  
  142. $(ABBREV)treedll.obj: $(EXTDIR)\$(PROJ)tree.c $(H1) $(H2) $(H3)
  143.     $(ccdll) /Fo$(ABBREV)treedll.obj $(EXTDIR)\$(PROJ)tree.c
  144.  
  145. $(ABBREV)mclistboxdll.obj: $(EXTDIR)\$(PROJ)mclistbox.c $(H1) $(H2) $(H3)
  146.     $(ccdll) -Zm200 /Fo$(ABBREV)mclistboxdll.obj $(EXTDIR)\$(PROJ)mclistbox.c
  147.  
  148. $(ABBREV)comboboxdll.obj: $(EXTDIR)\$(PROJ)combobox.c $(H1) $(H2) $(H3)
  149.     $(ccdll) /Fo$(ABBREV)comboboxdll.obj $(EXTDIR)\$(PROJ)combobox.c
  150.  
  151. $(ABBREV)notebookdll.obj: $(EXTDIR)\$(PROJ)notebook.c $(H1) $(H2) $(H3)
  152.     $(ccdll) /Fo$(ABBREV)notebookdll.obj $(EXTDIR)\$(PROJ)notebook.c
  153.  
  154. $(ABBREV)treeexe.obj: $(EXTDIR)\$(PROJ)tree.c $(H1) $(H2) $(H3)
  155.     $(ccexe) /Fo$(ABBREV)treeexe.obj $(EXTDIR)\$(PROJ)tree.c
  156.  
  157. $(ABBREV)mclistboxexe.obj: $(EXTDIR)\$(PROJ)mclistbox.c $(H1) $(H2) $(H3)
  158.     $(ccexe) /Fo$(ABBREV)mclistboxexe.obj $(EXTDIR)\$(PROJ)mclistbox.c
  159.  
  160. $(ABBREV)comboboxexe.obj: $(EXTDIR)\$(PROJ)combobox.c $(H1) $(H2) $(H3)
  161.     $(ccexe) /Fo$(ABBREV)comboboxexe.obj $(EXTDIR)\$(PROJ)combobox.c
  162.  
  163. $(ABBREV)notebookexe.obj: $(EXTDIR)\$(PROJ)notebook.c $(H1) $(H2) $(H3)
  164.     $(ccexe) /Fo$(ABBREV)notebookexe.obj $(EXTDIR)\$(PROJ)notebook.c
  165.  
  166. #
  167. # These modules are common modules; both for DLL and EXE
  168. #
  169.  
  170. packdll.obj: $(SRCDIR)\rxpack.c $(H1) $(H3)
  171.     $(ccdll) /Fopackdll.obj $(SRCDIR)\rxpack.c
  172.  
  173. packexe.obj: $(SRCDIR)\rxpack.c $(H1) $(H3)
  174.     $(ccexe) /Fopackexe.obj $(SRCDIR)\rxpack.c
  175.  
  176. #
  177. # Rules for resources
  178. #
  179. exe_res.obj exe_res.res: $(SRCDIR)\$(PROJ)w32.rc
  180.     copy $(SRCDIR)\$(PROJ)w32.ico .
  181.     rc /r /foexe_res.res /D$(INT) /I$(SRCDIR) $(SRCDIR)\$(PROJ)w32.rc
  182.     cvtres /MACHINE:IX86 /NOLOGO /OUT:exe_res.obj exe_res.res
  183.  
  184. dll_res.obj dll_res.res: $(SRCDIR)\$(PROJ)w32.rc
  185.     copy $(SRCDIR)\$(PROJ)w32.ico .
  186.     rc /r /fodll_res.res /DDYNAMIC /D$(INT) /I$(SRCDIR) $(SRCDIR)\$(PROJ)w32.rc
  187.     cvtres /MACHINE:IX86 /NOLOGO /OUT:dll_res.obj dll_res.res
  188.  
  189. treedll_res.obj treedll_res.res: $(EXTDIR)\$(PROJ)treew32.rc
  190.     copy $(SRCDIR)\$(PROJ)w32.ico .
  191.     rc /r /fotreedll_res.res /DDYNAMIC /D$(INT) /I$(SRCDIR) $(EXTDIR)\$(PROJ)treew32.rc
  192.     cvtres /MACHINE:IX86 /NOLOGO /OUT:treedll_res.obj treedll_res.res
  193.  
  194. mclistboxdll_res.obj mclistboxdll_res.res: $(EXTDIR)\$(PROJ)mclistboxw32.rc
  195.     copy $(SRCDIR)\$(PROJ)w32.ico .
  196.     rc /r /fomclistboxdll_res.res /DDYNAMIC /D$(INT) /I$(SRCDIR) $(EXTDIR)\$(PROJ)mclistboxw32.rc
  197.     cvtres /MACHINE:IX86 /NOLOGO /OUT:mclistboxdll_res.obj mclistboxdll_res.res
  198.  
  199. comboboxdll_res.obj comboboxdll_res.res: $(EXTDIR)\$(PROJ)comboboxw32.rc
  200.     copy $(SRCDIR)\$(PROJ)w32.ico .
  201.     rc /r /focomboboxdll_res.res /DDYNAMIC /D$(INT) /I$(SRCDIR) $(EXTDIR)\$(PROJ)comboboxw32.rc
  202.     cvtres /MACHINE:IX86 /NOLOGO /OUT:comboboxdll_res.obj comboboxdll_res.res
  203.  
  204. notebookdll_res.obj notebookdll_res.res: $(EXTDIR)\$(PROJ)notebookw32.rc
  205.     copy $(SRCDIR)\$(PROJ)w32.ico .
  206.     rc /r /fonotebookdll_res.res /DDYNAMIC /D$(INT) /I$(SRCDIR) $(EXTDIR)\$(PROJ)notebookw32.rc
  207.     cvtres /MACHINE:IX86 /NOLOGO /OUT:notebookdll_res.obj notebookdll_res.res
  208.  
  209. #
  210. # Rules for executables and DLLs
  211. #
  212. $(PROJ).dll: $(objsdll)
  213.     link $(lflagsdll) $(objsdll) -out:$(PROJ).dll $(TKLIB) $(CCLIBS) $(REXXLIBS) -def:$(SRCDIR)\$(PROJ)w32.def
  214.  
  215. $(PROJ).exe: $(objsexe)
  216.     link $(lflagsexe) $(objsexe) -out:$(PROJ).exe $(TKLIB) $(CCLIBS) $(REXXLIBS)
  217.  
  218. $(PROJ)tree.dll: $(objstreedll)
  219.     link $(lflagsdll) $(objstreedll) -out:$(PROJ)tree.dll $(TKLIB) $(CCLIBS) $(REXXLIBS) -def:$(EXTDIR)\$(PROJ)treew32.def
  220.  
  221. $(PROJ)mclistbox.dll: $(objsmclistboxdll)
  222.     link $(lflagsdll) $(objsmclistboxdll) -out:$(PROJ)mclistbox.dll $(TKLIB) $(CCLIBS) $(REXXLIBS) -def:$(EXTDIR)\$(PROJ)mclistboxw32.def
  223.  
  224. $(PROJ)combobox.dll: $(objscomboboxdll)
  225.     link $(lflagsdll) $(objscomboboxdll) -out:$(PROJ)combobox.dll $(TKLIB) $(CCLIBS) $(REXXLIBS) -def:$(EXTDIR)\$(PROJ)comboboxw32.def
  226.  
  227. $(PROJ)notebook.dll: $(objsnotebookdll)
  228.     link $(lflagsdll) $(objsnotebookdll) -out:$(PROJ)notebook.dll $(TKLIB) $(CCLIBS) $(REXXLIBS) -def:$(EXTDIR)\$(PROJ)notebookw32.def
  229.  
  230. #
  231. # Rules for distribution
  232. #
  233. dist: $(DISTDIR)
  234.     copy rexxtk.exe $(DISTDIR)
  235.     copy rexxtk.dll $(DISTDIR)
  236.     copy rexxtktree.dll $(DISTDIR)
  237.     copy rexxtkmclistbox.dll $(DISTDIR)
  238.     copy rexxtkcombobox.dll $(DISTDIR)
  239.     copy rexxtknotebook.dll $(DISTDIR)
  240.     copy $(SRCDIR)\demo\testtk.rexx $(DISTDIR)
  241.     copy $(SRCDIR)\file_id.diz.w32 $(DISTDIR)\file_id.diz
  242.     copy $(SRCDIR)\COPYING-LIB $(DISTDIR)
  243.     copy $(SRCDIR)\HISTORY $(DISTDIR)
  244.     copy $(SRCDIR)\README $(DISTDIR)
  245.     copy $(SRCDIR)\TODO $(DISTDIR)
  246.     cd $(DISTDIR)
  247.     -del *.zip
  248.     zip rexxtk$(VER)_w32 *
  249.  
  250. $(DISTDIR):
  251.     -mkdir $(DISTDIR)
  252.  
  253. zip:
  254.     zip rxcurs$(VER) $(SRCDIR)\rxpack.c $(SRCDIR)\rxpack.h $(SRCDIR)\loader.c $(SRCDIR)\curses.c
  255.     zip rxcurs$(VER) $(SRCDIR)\getopt.c $(SRCDIR)\defines.h $(SRCDIR)\rxdef.h
  256.     zip rxcurs$(VER) $(SRCDIR)\*.def $(SRCDIR)\makefile.* $(SRCDIR)\*.ico $(SRCDIR)\*.rc $(SRCDIR)\file_id.diz.*
  257.     zip rxcurs$(VER) $(SRCDIR)\demo\hanoi.rexx $(SRCDIR)\def2exp.rexx
  258.     zip rxcurs$(VER) $(SRCDIR)\Makefile.in $(SRCDIR)\install-sh $(SRCDIR)\config.h.in $(SRCDIR)\configure.in 
  259.     zip rxcurs$(VER) $(SRCDIR)\configure $(SRCDIR)\aclocal.m4
  260.