Add MPC_LIB_MODIFIER
[MPC.git] / templates / makedll.mpt
blobb88695d0466ec6a436da3ba3cf5c31cca2d3aba8
1 // -*- MPC -*-
2 // ***********************************************************************
3 // The default compiler for the 'make' project type is gcc (provided by
4 // the fill_value() method in MakeProjectCreator.pm).  This can be
5 // controlled by setting the compilers template variable.  It may be
6 // changed on the MPC command line via the -value_template option.
7 // Additionally, each compiler has a default platform.  The default
8 // platform for gcc is linux.  This too can be changed via the
9 // -value_template option.  Below are some examples.
11 // Use SunCC on the default platform (solaris):
12 //   mwc.pl -type make -value_template compilers=SunCC
13 // Use the default compiler (gcc) on LynxOS:
14 //   mwc.pl -type make -value_template platforms=lynxos
15 // Use HP-UX aCC on the default platform (HP-UX):
16 //   mwc.pl -type make -value_template compilers=aCC
17 // ***********************************************************************
19 conditional_include "common"
20 conditional_include "unixcommon"
22 configurations   = Release
23 obj_ext          = .o
24 res_ext          = .res
25 compile_flags    =
26 arflags          =
27 pchsupport       = 1
28 targetoutdir     =
29 libopt           = -l
30 build64bit       = 1
31 pchext           = .gch
32 versupport       = 1
33 supports_include = 1
34 visibility       =
35 depgen_flags     =
36 cc               = cc
37 notparallel      = 1
39 // ***********************************************************************
40 // Configuration Section
41 // ***********************************************************************
43 Debug {
44   lib_modifier = d
45   genflags     = -g
48 Release {
49   optimize = 1
50   genflags = -O
53 // ***********************************************************************
54 // Compiler Section
55 // ***********************************************************************
57 java {
58   cc             = javac
59   cxx            = javac
60   ld             = :
61   obj_ext        = .class
62   output_option  =
63   compile_option =
64   ar             = jar
65   arflags        = cvf
66   platforms      = jvm
69 gcj {
70   cc            = gcj
71   cxx           = gcj
72   pic           = -fPIC
73   shflags       = -shared
74   platforms     = linux
75   exe_linkflags = --main=<%main%>
78 cxx_tru64 {
79   cxx        = cxx
80   clean      = cxx_repository so_locations
81   tempincopt = "-ptr "
82   tempinc    = cxx_repository
83   platforms  = tru64
84   pchcreate  = "-nopch_messages -create_pch "
85   pchuse     = "-nopch_messages -use_pch "
88 cxx_vms {
89   cxx             = cxx
90   arflags         = r
91   compilerflags   = -ieee -names_as_is_short
92   linkflags       = -threads
93   shflags         = -shared -auto_symvec
94   clean           = cxx_repository
95   tempinc         = cxx_repository
96   platforms       = openvms
99 dmc {
100   cc           = dmc
101   cxx          = dmc
102   dmclink      = 1
103   ar           = lib
104   arflags      = -c
105   obj_ext      = .obj
106   platforms    = dmc_win
109 gcc {
110   cc        = gcc
111   cxx       = g++
112   pic       = -fPIC
113   shflags   = -shared
114   platforms = linux
115   pchcreate = "-o "
116   pchnobj   = 1
117   checkopt  = -Wall -Wextra -pedantic -fsyntax-only
118   visopt    = -fvisibility=hidden -fvisibility-inlines-hidden
119   profopt   = -pg -DCOMPILER_PROFILING
120   covopt    = -fprofile-arcs -ftest-coverage -DCOMPILER_COVERAGE
123 arm_elf_gcc {
124   cc            = arm-elf-gcc
125   cxx           = arm-elf-g++
126   ar            = arm-elf-ar
127   arflags       = rcs
128   compilerflags = -isystem "$(SYSTEMDIR)/arm-elf/include"
129   shflags       = -shared
130   platforms     = nucleus
131   pchcreate     = "-o "
132   pchnobj       = 1
133   checkopt      = -Wall -Wextra -pedantic -fsyntax-only
134   visopt        = -fvisibility=hidden -fvisibility-inlines-hidden
135   profopt       = -pg -DCOMPILER_PROFILING
136   covopt        = -fprofile-arcs -ftest-coverage -DCOMPILER_COVERAGE
139 arm_keil {
140   cc            = armcc
141   cxx           = armcc
142   ar            = armar
143   ld            = armlink
144   libpathopt    = "--userlibpath "
145   link_lib_name = 1
146   arflags       = -rcs
147   compilerflags = --gnu -DKEIL
148   platforms     = cmsis_cortex_m4
151 Intel {
152   cxx       = icpc
153   pic       = -fPIC
154   shflags   = -shared
155   platforms = linux
156   visopt    = -fvisibility=hidden
159 SunCC {
160   cxx             = CC
161   pic             = -KPIC
162   shflags         = -G
163   compilerflags64 = -xarch=v9
164   linkflags       = -library=Cstd -library=Crun
165   clean           = SunWS_cache ir.out
166   platforms       = solaris
167   pchcreate       = -xpch=collect:
168   pchuse          = -xpch=use:
169   pchstop         = -xpchstop=
170   pchext          = .Cpch
171   visopt          = -xldscope=hidden
174 aCC {
175   cxx             = aCC
176   pic             = +Z
177   shflags         = -b
178   platforms       = hpux
179   compilerflags   = -AA -D_RWSTD_MULTI_THREAD +W336
180   compilerflags64 = +DA2.0W +DS2.0W
181   linkflags       = -Wl,+s
182   linkflags64     = -Wl,-x -Wl,+h$(@F) -ldl
183   pchcreate       = "+hdr_create "
184   pchuse          = "+hdr_use "
187 xlC_r {
188   cc              = xlc_r
189   cxx             = xlC_r
190   arflags64      += -X64 -rv
191   compilerflags64 = -q64
192   platforms       = aix
193   pchcreate       = -qgenpcomp=
194   pchuse          = -qusepcomp=
197 SGICC {
198   cxx             = CC
199   pic             = -KPIC
200   shflags         = -shared
201   compilerflags64 = -64
202   linkflags       = -Wl,-woff,84
203   clean           = ii_files
204   platforms       = irix
205   pchcreate       = -LANG:create_pch=
206   pchuse          = -diag_suppress 3056 -LANG:use_pch=
209 wrsppc {
210   cc            = gcc$(CPUTYPE)
211   cxx           = g++$(CPUTYPE)
212   cputype       = ppc
213   cpu           = PPC604
214   ar            = ar$(CPUTYPE)
215   nm            = nm$(CPUTYPE)
216   compilerflags = -mlongcall
217   checkopt      = -Wall -Wextra -pedantic -fsyntax-only
218   platforms     = vxworks
221 wrspentium {
222   cc            = gcc$(CPUTYPE)
223   cxx           = g++$(CPUTYPE)
224   cputype       = pentium
225   cpu           = PENTIUM
226   ar            = ar$(CPUTYPE)
227   nm            = nm$(CPUTYPE)
228   checkopt      = -Wall -Wextra -pedantic -fsyntax-only
229   platforms     = vxworks
232 NCC {
233   cxx       = NCC
234   pic       = -KPIC
235   platforms = tandem
238 ghsppc {
239   cc            = cc$(CXXINT)$(CPUTYPE)
240   cxx           = cx$(CXXINT)$(CPUTYPE)
241   ar            = cx$(CXXINT)$(CPUTYPE)
242   cputype       = ppc
243   arflags       = --one_instantiation_per_object -archive -o
244   compilerflags = --new_style_casts --one_instantiation_per_object --exceptions --std --long_long
245   platforms     = integrity
248 // ***********************************************************************
249 // Platform Section
250 // ***********************************************************************
252 jvm {
253   versupport =
254   lib_prefix =
255   dll_ext    =
256   lib_ext    = .jar
259 tru64 {
260   shflags       = -shared /usr/lib/libcxxstd.a
261   ldlibs        = -ltli -lrt
262   extracppflags = -D__USE_STD_IOSTREAM -D_REENTRANT
265 openvms {
266   // If you want to create shareable images, you can
267   // set dll_ext to .exe using the -value_template option of MPC.
268   versupport    =
269   lib_prefix    =
270   dll_ext       =
271   exe_ext       = .exe
272   ldlibs        = -lpthread
273   extracppflags = -D__USE_STD_IOSTREAM -D_REENTRANT
276 linux {
277   gnumake       = 1
278   ldlibs        = -ldl $(subst lib,-l,$(sort $(basename $(notdir $(wildcard /usr/lib/librt.so /lib/librt.so))))) -lpthread
279   extracppflags = -D_REENTRANT
282 nucleus {
283   gnumake       = 1
284   extracppflags = -mcpu=arm7tdmi -msoft-float -mthumb-interwork
287 cmsis_cortex_m4 {
288   gnumake       = 1
289   extracppflags = --cpu=Cortex-M4
292 solaris {
293   shflags       = -G
294   ldlibs        = -lsocket -ldl -lnsl -lgen -lposix4 -lthread
295   extracppflags = -D_REENTRANT
298 hpux {
299   dll_ext       = .sl
300   ldlibs        = -lxti -lrt -lpthread -ldld
301   extracppflags = -D_REENTRANT
304 aix {
305   dll_ext          =
306   ldlibs           = -ldl -lpthread
307   extracppflags    = -D_REENTRANT
308   supports_include =
311 irix {
312   ldlibs  = -lsocket -lgen -lpthread
315 lynxos {
316   dll_ext       =
317   extracppflags = -D__NO_INCLUDE_WARN__ -mthreads -mminimal-toc
320 macosx {
321   ranlib  = 1
322   dll_ext = .dylib
323   shflags = -shared -dynamic
326 // I'm not sure if this is even useful anymore.
327 macos {
328   dld     = libtool
329   ranlib  = 1
330   dll_ext = .dylib
331   shflags = -dynamic
332   ldlibs  = -lcc_dynamic -lstdc++ -lSystem -ldl
335 unixware {
336   ldlibs        = -lsocket -ldl -lnsl -lgen -lposix4 -lthread
337   extracppflags = -D_REENTRANT
340 qnx {
341   ldlibs        = -lsocket
342   extracppflags = -D__GCC_BUILTIN
345 vxworks {
346   versupport       =
347   dll_ext          =
348   exe_ext          = .out
349   specialscript    = "for i in $$3; do for j in $$4; do i=`echo $$i | sed sa\^-laa`;[ -r \"$$j/lib$$i.a\" ] && libs=\"$$libs $$j/lib$$i.a\" && break;done;done;$$1 $$2 $$libs | munch | grep -v \\.cpp > $$6"
350   prelinktarget    = __ctordtor.c
351   prelinktargetobj = __ctordtor$(OBJEXT)
352   clean            = __ctordtor$(OBJEXT)
353   ldlibs           = -L$(WIND_BASE)/target/lib/$(CPUTYPE)/$(CPU)/common$(CPU_SPECIFIC) -larch
354   extracppflags    = -nostdlib -I$(WIND_BASE)/target/h
355   ld               = ld$(CPUTYPE)
356   linkflags        = -X -r
359 vxworks_rtp {
360   versupport    =
361   dll_ext       =
362   exe_ext       = .vxe
363   extracppflags = -I$(WIND_BASE)/target/usr/h -I$(WIND_BASE)/target/usr/h/wrn/coreip -mrtp
364   ldlibs        = -ldl
365   linkflags     = -L$(WIND_BASE)/target/usr/lib/$(CPUTYPE)/$(CPU)/common
368 cygwin {
369   gnumake    = 1
370   versupport =
371   dll_ext    = .dll
372   exe_ext    = .exe
373   rc         = windres
374   res_ext    = .o
375   pic        =
376   depgen_flags = -t make
379 // MinGW compiler with the MSYS shell, make, etc.
380 mingw_msys {
381   versupport   =
382   lib_prefix   =
383   dll_ext      = .dll
384   lib_ext      = .lib
385   exe_ext      = .exe
386   ldlibs       = -lwsock32 -lnetapi32
387   rc           = rc
388   pic          =
389   depgen_flags = -t make
390   gnumake = 1
393 // MinGW compiler with the built-in Windows shell and native make
394 // (not cygwin or MSYS; GNUWin32 is recommended)
395 // This also needs core utils (cat, cp, rm) from GNUWin32
396 //       http://gnuwin32.sourceforge.net/packages/coreutils.htm
397 // because the makefiles use forward slashes in their arguments.
398 mingw {
399   versupport   =
400   lib_prefix   =
401   dll_ext      = .dll
402   lib_ext      = .lib
403   exe_ext      = .exe
404   ldlibs       = -lwsock32 -lnetapi32
405   rc           = windres
406   res_ext      = .o
407   devnull      = nul
408   makedir      = mkdir
409   move         = move /y
410   testdirstart = if not exist
411   testdirend   =
412   pic          =
413   slash        = \\
414   depgen_flags = -t make
415   echo_outer_quote =
416   expanded_variable_assignment = 1
417   gnumake = 1
420 dmc_win {
421   versupport       =
422   lib_prefix       =
423   dll_ext          = .dll
424   lib_ext          = .lib
425   exe_ext          = .exe
426   ldlibs           = wsock32+kernel32
427   rc               = rc
428   devnull          = nul
429   delete           = del /f/s/q
430   type             = type
431   copy             = copy /y
432   makedir          = mkdir
433   move             = move /y
434   supports_include =
435   testdirstart     = if not exist
436   testdirend       =
437   depgen_flags     = -t make
440 tandem {
441   shflags       = -shared -all
442   ldlibs        = -lsocket -ldl -lnsl -lgen -lthread
443   extracppflags = -D_REENTRANT
446 // For Integrity, the following should be set as environment variables, on
447 // the make command line or within a verbatim section in your mpc file.
449 // OS_DIR The full path to your BSP installation.
450 // BSP    The BSP name (ex. sim800).
452 integrity {
453   cxxint         = int
454   versupport     =
455   dll_ext        =
456   ldlibs         = -lshm_client -lnet -lsocket -lposix
457   extraarflags   = -bsp $(BSP) -os_dir $(OS_DIR) --one_instantiation_per_object
458   extracppflags  = -integrate -dynamic -bsp $(BSP) -os_dir $(OS_DIR) --one_instantiation_per_object -non_shared -Uvector
459   specialscript  = "echo Kernel > $$6; echo Filename DynamicDownload >> $$6;echo EndKernel >> $$6; echo AddressSpace >> $$6;echo Filename $$5 >> $$6;echo Language C++ >> $$6;echo Library libINTEGRITY.so >> $$6;echo Library libc.so >> $$6;echo Library libscxx_e.so >> $$6;echo Task Initial >> $$6;echo StackLength 0x8000 >> $$6;echo EndTask >> $$6;echo EndAddressSpace >> $$6"
460   prelinktarget  = $(notdir $(BIN).int)
461   postlinkbinary = $(MV) $(BIN) $(BIN).tmp && intex -bsp $(BSP) -os_dir $(OS_DIR) -intfile $(notdir $(BIN).int) -o $(BIN) $(BIN).tmp
464 conditional_include "user_makedll"