diff --git a/config/CONFIG.Host.Borland b/config/CONFIG.Host.Borland index cc5aa357d..266c850b4 100644 --- a/config/CONFIG.Host.Borland +++ b/config/CONFIG.Host.Borland @@ -1,5 +1,4 @@ # CONFIG.Host.Borland -# # This file is maintained by the EPICS community. # Sites may override these definitions in CONFIG_SITE.Borland @@ -12,38 +11,61 @@ ANSI = ACC CPLUSPLUS = CCC # -# -WINLINK = ilink32 +# -q supress command line banner +WINLINK = ilink32 -q -RCCMD = brcc32 -i . -i .. -i $(INSTALL_INCLUDE) -i $(EPICS_BASE_INCLUDE) -fo $@ $< +# -l specifies default language +# -fo Renames the output .RES file +RCCMD = brcc32 -i. -i.. -i$(INSTALL_INCLUDE) -i$(EPICS_BASE_INCLUDE) -l0x409 -fo$@ $< ARCMD = tlib $@ # -# Configure OS vendor C compiler -CCLINKOPT = -WM -D_WIN32 +# Configure Borland C compiler +# -q suppress compiler identification banner +# -tWM generate a 32-bit multi-threaded target +# -tWD generate a .DLL executable +# -a8 quad word alignment +# -D_WIN32 macro defined to be consistant with Microsoft Visual C++ +# -D_RTLDLL macro defined to use Borland C++ RTL library +CCLINKOPT = -q -tWM -tWD -a8 -D_WIN32 -D_RTLDLL ACC = bcc32 $(CCLINKOPT) # -# __STDC__=0 is a real great idea of Jeff that gives us both: -# 1) define STDC for EPICS code (pretend ANSI conformance) -# 2) set it to 0 to use MS C "extensions" (open for _open etc.) -# because MS uses: if __STDC__ ... disable many nice things +# __STDC__=0 works but not as cleanly as with +# Microsoft Visual C++. +# The Borland header files use ifdef __STDC__ +# to disable many nice things. This is overridden +# by defining NO_BORLAND_STDC in the Makefile.Host. # +ifdef NO_BORLAND_STDC +ACC_ANSI = $(ACC) +ACC_STRICT = $(ACC) +else ACC_ANSI = $(ACC) -D__STDC__=0 ACC_STRICT = $(ACC) -D__STDC__=0 -ACC_TRAD = $(ACC) /nologo +endif +ACC_TRAD = $(ACC) -# -ACC_WARN_YES = -w -g0 +# -w display warnings on +# -g0 no limit to warning messages +# some warning message here are always disabled because they are +# trivial and numerous +# -w-8012 Comparing signed and unsigned values +# -w-8060 Possibly incorrect assignment +# -w-8071 Conversion may lose significant digits +ACC_WARN_YES = -w -g0 -w-8012 -w-8060 -w-8071 +# -w- display warnings off ACC_WARN_NO = -w- # -# -O1 optimization for size # -k- turn off standard stack frame -# -H- Turn off precompiled headers -# -R- Don't include browser info in .obj files -ACC_OPT_YES = -k- -H- -R- -O1 +# -H- turn off precompiled headers +# -R- don't include browser info in .obj files +# -O1 optimization for size +# -v- turn off source debugging +# -vi control expansion of inline functions +ACC_OPT_YES = -k- -H- -R- -O1 -v- -vi # ACC_OPT_NO = @@ -57,26 +79,39 @@ ACC_SLIBS_NO= # Configure OS vendor C++ compiler # -# __STDC__=0 is a real great idea of Jeff that gives us both: -# 1) define STDC for EPICS code (pretend ANSI conformance) -# 2) set it to 0 to use MS C "extensions" (open for _open etc.) -# because MS uses: if __STDC__ ... disable many nice things +# __STDC__=0 works but not as cleanly as with +# Microsoft Visual C++. +# The Borland header files use ifdef __STDC__ +# to disable many nice things. This is overridden +# by defining NO_BORLAND_STDC in the Makefile.Host. # CCC = bcc32 $(CCLINKOPT) +ifdef NO_BORLAND_STDC +CCC_NORMAL = $(CCC) +CCC_STRICT = $(CCC) +else CCC_NORMAL = $(CCC) -D__STDC__=0 CCC_STRICT = $(CCC) -D__STDC__=0 +endif CCC_TEMPL_INST_FLAG = -# -CCC_WARN_YES = -w -g0 +# -w display warnings on +# -g0 no limit to warning messages +# -w-8012 Comparing signed and unsigned values +# -w-8060 Possibly incorrect assignment +# -w-8071 Conversion may lose significant digits +CCC_WARN_YES = -w -g0 -w-8012 -w-8060 -w-8071 +# -w- display warnings off CCC_WARN_NO = -w- # -# -O1 optimization for size # -k- turn off standard stack frame # -H- Turn off precompiled headers # -R- Don't include browser info in .obj files -CCC_OPT_YES = -k- -H- -R- -O1 +# -O1 optimization for size +# -v- turn off source debugging +# -vi control expansion of inline functions +CCC_OPT_YES = -k- -H- -R- -O1 -v- -vi # CCC_OPT_NO = @@ -88,16 +123,15 @@ CCC_SLIBS_YES= CCC_SLIBS_NO= PROD_VERSION=3.13 -# -w display warnings on -# -C clear state before linking -# -Gn no state files -# -x no map -# -Gi generate import library -# -Tpd this flag specifies the output file type -# -aa this flag specifies the application type # -c case sensitive linking -LINK_OPT_FLAGS_YES = -w -C -Gn -x -Gi -Tpd -aa -c -LINK_OPT_FLAGS_NO = -w- -C -Gn -x -Gi -Tpd -aa -c +# -C clear state before linking +# -Gi generate import library +# -Gn no state files +# -Tpd targets a Windows .DLL file +# -x no map +# -w display warnings on +LINK_OPT_FLAGS_YES = -c -C -Gi -Gn -Tpd -x -w +LINK_OPT_FLAGS_NO = -c -C -Gi -Gn -Tpd -x -w- WIN32_DLLFLAGS = $(LINK_OPT_FLAGS_$(HOST_OPT)) OPT_LDFLAGS = @@ -111,6 +145,7 @@ ARCH_CLASS=WIN32 # ifdef WIN32 looks better that ifeq ($(ARCH_CLASS),WIN32) ?? WIN32=1 +BORLANDC=1 EXE=.exe OBJ=.obj @@ -118,7 +153,7 @@ RES=.res # Problem: BorlandC does not recognize *.cc as C++ source, # we have to compile xx.cc using the flag -P xx.cc, -SOURCE_CXXFLAG = -P +SOURCE_CXXFLAG = -P -D__cplusplus # Operating system flags OP_SYS_CFLAGS = @@ -133,6 +168,7 @@ OP_SYS_LDLIBS = # # specify dll .def file only if it exists # +#DLL_DEF_FLAG = $(addprefix /def:,$(wildcard ../$(LIBRARY).def)) DLL_DEF_FLAG = $(subst /,\\,$(wildcard ../$(LIBRARY).def)) # HOST_OPT_FLAGS is part of CFLAGS/CXXFLAGS, @@ -152,7 +188,7 @@ HOST_OPT_FLAGS += $(subst $@, /_WINDLL, $(findstring $@,$(LIBOBJS))) # x.lib: what you link to progs that use the dll (LIBNAME) # x.exp: what you need to build the dll (in no variable) # -LINK.shrlib = $(WINLINK) $(WIN32_DLLFLAGS) -L$(LIB) -L$(LIB)\\Psdk c0d32.obj +LINK.shrlib = $(WINLINK) $(WIN32_DLLFLAGS) -L$(LIB) -L$(LIB)\\Psdk c0d32.obj # adjust names of libraries to build # @@ -171,7 +207,12 @@ SHRLIBNAME = $(LIBRARY).dll # DLL_LINK_LIBNAME_YES = $(LIBRARY).lib DLL_LINK_LIBNAME = $(DLL_LINK_LIBNAME_$(SHARED_LIBRARIES)) + +#ifeq ($(strip $(SHARED_LIBRARIES)),NO) +#LIBNAME = $(LIBRARY).lib +#else LIBNAME = $(LIBRARY)Obj.lib +#endif # dll install location INSTALL_SHRLIB = $(INSTALL_BIN) @@ -181,6 +222,7 @@ INSTALL_SHRLIB = $(INSTALL_BIN) OBJECT_LIB_EXT_YES = Obj.lib # object library extension for static build OBJECT_LIB_EXT_NO = .lib # object library extension for dynamic build OBJECT_LIB_EXT = $(OBJECT_LIB_EXT_$(STATIC_BUILD)) + COND_PROD_DEPLIBS = $(foreach prod,$(PROD), $(foreach lib, $($(basename $(prod))_LIBS),\ $(firstword $($(lib)_DIR) $(EPICS_BASE_LIB))/$(lib)$(OBJECT_LIB_EXT))) PRODNAME_DEPLIBS = $(foreach lib,$(PRODNAME_LIBS),$(firstword $(wildcard $($(lib)_DIR)/$(lib).lib $($(lib)_DIR)/$(lib)Obj.lib $(EPICS_BASE_LIB)/$(lib).lib $(EPICS_BASE_LIB)/$(lib)Obj.lib ) $(filter $(LIBRARY)$(OBJECT_LIB_EXT), $(lib)$(OBJECT_LIB_EXT)) )) @@ -201,18 +243,18 @@ USR_LDLIBS = $(PRODNAME_DEPLIBS) $(PROD_DEPLIBS) $(USR_DEPLIBS) $(SYS_PROD_LIBS: DLL_LDLIBS = $(DLL_DEPLIBS) $(SYS_PROD_LIBS:%=%.lib) $(OP_SYS_LDLIBS) -#multithreaded -LIBSUF=mt -# -w display warnings on +#multithreaded import library +LIBSUF=mti +# -c case sensitive linking # -C clear state before linking # -Gn no state files +# -Tpe targets a Windows .EXE file # -x no map -# -c case sensitive linking -LDFLAGS += -w -C -Gn -x -c -L$(LIB) -L$(LIB)\\Psdk +# -w display warnings on +LDFLAGS += -c -C -Gn -Tpe -x -w -L$(LIB) -L$(LIB)\\Psdk LINKSTARTUP = c0x32.obj LINKLIBS=import32.lib cw32$(LIBSUF).lib LINK.c = $(WINLINK) $(LDFLAGS) $(LINKSTARTUP) LINK.cc = $(WINLINK) $(LDFLAGS) $(LINKSTARTUP) -