Reworking of DLL build rules.

Allows static libraries and DLLs to be built without having
to do a 'make clean' in between on Cygwin and MinGW targets.
The Cygwin build still crashes when SHARED_LIBRARIES = YES
though, loading Com.dll seems to cause the problem.
This commit is contained in:
Andrew Johnson
2012-07-27 16:24:39 -05:00
parent c23b907eee
commit 97490f6977
18 changed files with 305 additions and 264 deletions

View File

@ -50,10 +50,12 @@ STATIC_LDFLAGS_YES = -static
STATIC_LDFLAGS_NO =
SHRLIB_CFLAGS = -fPIC
SHRLIB_LDFLAGS = -shared -fPIC
SHRLIB_LDFLAGS = -shared -fPIC
LOADABLE_SHRLIB_LDFLAGS = -shared -fPIC
GNU_LDLIBS_YES = -lgcc
# Use GNU compiler flags to generate header dependancies files
HDEPENDS_METHOD = CFLAGS
# Use compiler flags to generate header dependancies files
HDEPENDS_METHOD = COMP
HDEPENDS_COMPFLAGS = -MM -MF $@

View File

@ -126,6 +126,13 @@ CMPLR_PREFIX=
LIB_PREFIX=
SHRLIB_PREFIX= $(LIB_PREFIX)
BUILDLIB_PREFIX_YES = $(DLLSTUB_PREFIX)
BUILDLIB_PREFIX_NO = $(LIB_PREFIX)
BUILDLIB_SUFFIX_YES = $(DLLSTUB_SUFFIX)
BUILDLIB_SUFFIX_NO = $(LIB_SUFFIX)
BUILDLIB_PREFIX = $(BUILDLIB_PREFIX_$(SHARED_LIBRARIES))
BUILDLIB_SUFFIX = $(BUILDLIB_SUFFIX_$(SHARED_LIBRARIES))
#--------------------------------------------------
# vpath directories
POSIX_YES = os/posix
@ -311,8 +318,8 @@ LEXOPT += -I
# Build compile line here
PATH_FILTER = $(1)
COMPILE.c = $(CC) -c $(CPPFLAGS) $(CFLAGS) $(INCLUDES)
COMPILE.cpp = $(CCC) -c $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES)
COMPILE.c = $(CC) $(CPPFLAGS) $(CFLAGS) $(INCLUDES)
COMPILE.cpp = $(CCC) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES)
#--------------------------------------------------
# C preprocessor command
@ -323,16 +330,15 @@ PREPROCESS.cpp = $(CPP) $(CPPFLAGS) $(INCLUDES) $< > $@
HDEPENDS_METHOD = MKMF
HDEPENDS_INCLUDES = $(subst -I,,$(INCLUDES))
HDEPENDSFLAGS = -m $*$(DEP) $(HDEPENDS_INCLUDES) $@ $<
HDEPENDS_MKMFFLAGS = -m $*$(DEP) $(subst -I,,$(INCLUDES)) $@
HDEPENDS_MKMF.c = $(MKMF) $(HDEPENDS_FLAGS) $(HDEPENDS_MKMFFLAGS)
HDEPENDS_MKMF.cpp = $(MKMF) $(HDEPENDS_FLAGS) $(HDEPENDS_MKMFFLAGS)
HDEPENDS_MKMF = $(MKMF) $(HDEPENDS_FLAGS) $(HDEPENDSFLAGS)
HDEPENDS_COMP.c = $(COMPILE.c) $(HDEPENDS_COMPFLAGS) $(HDEPENDS_ARCHFLAGS)
HDEPENDS_COMP.cpp = $(COMPILE.cpp) $(HDEPENDS_COMPFLAGS) $(HDEPENDS_ARCHFLAGS)
HDEPENDSCFLAGS = -MM > $*$(DEP)
HDEPSUFFIX = $(if $(filter .c,$(suffix $<)),.c,.cpp)
HDEPENDS_CFLAGS = $(COMPILE$(HDEPSUFFIX)) $(HDEPENDSCFLAGS) $<
HDEPENDS_CMD = $(HDEPENDS_$(HDEPENDS_METHOD))
HDEPENDS.c = $(HDEPENDS_$(HDEPENDS_METHOD).c)
HDEPENDS.cpp = $(HDEPENDS_$(HDEPENDS_METHOD).cpp)
#--------------------------------------------------
# depends definition
@ -352,7 +358,7 @@ INSTALL_LIBS= $(LIBNAME:%=$(INSTALL_LIB)/%)
INSTALL_MUNCHS= $(MUNCHNAME:%=$(INSTALL_BIN)/%)
INSTALL_SHRLIBS= $(SHRLIBNAME:%=$(INSTALL_SHRLIB)/%)
INSTALL_LOADABLE_SHRLIBS= $(LOADABLE_SHRLIBNAME:%=$(INSTALL_SHRLIB)/%)
INSTALL_DLL_LINK_LIBS=$(DLL_LINK_LIBNAME:%=$(INSTALL_LIB)/%)
INSTALL_DLLSTUB_LIBS=$(DLLSTUB_LIBNAME:%=$(INSTALL_LIB)/%)
INSTALL_TCLLIBS=$(TCLLIBNAME:%=$(INSTALL_TCLLIB)/%)
INSTALL_TCLINDEX=$(TCLINDEX:%=$(INSTALL_TCLLIB)/%)
INSTALL_SCRIPTS = $(SCRIPTS:%= $(INSTALL_BIN)/%)

View File

@ -106,7 +106,7 @@ endif
LIBTARGETS += $(LIBNAME) $(INSTALL_LIBS) $(TESTLIBNAME) \
$(SHRLIBNAME) $(INSTALL_SHRLIBS) $(TESTSHRLIBNAME) \
$(DLL_LINK_LIBNAME) $(INSTALL_DLL_LINK_LIBS) $(TESTDLL_LINK_LIBNAME) \
$(DLLSTUB_LIBNAME) $(INSTALL_DLLSTUB_LIBS) $(TESTDLLSTUB_LIBNAME) \
$(LOADABLE_SHRLIBNAME) $(INSTALL_LOADABLE_SHRLIBS)
@ -145,7 +145,7 @@ build_clean:
$(ECHO) "Cleaning"
@$(RM) *.i *$(OBJ) *.a $(TESTPRODNAME) \
$(LIBNAME) $(TESTLIBNAME) $(SHRLIBNAME) $(TESTSHRLIBNAME) \
$(DLL_LINK_LIBNAME) $(TESTDLL_LINK_LIBNAME) \
$(DLLSTUB_LIBNAME) $(TESTDLLSTUB_LIBNAME) \
$(LOADABLE_SHRLIBNAME) \
$(INC) $(TARGETS) $(TDS) $(CLEANS) \
*.out MakefileInclude *.manifest *.exp \
@ -204,27 +204,27 @@ $(OBJLIBNAME):%$(OBJ):
%$(DEP):%.c
@$(RM) $@
@$(HDEPENDS_CMD)
$(HDEPENDS.c) $<
%$(DEP):%.cc
@$(RM) $@
@$(HDEPENDS_CMD)
$(HDEPENDS.cpp) $<
%$(DEP):%.cpp
@$(RM) $@
@$(HDEPENDS_CMD)
$(HDEPENDS.cpp) $<
%$(OBJ): %.c
@$(RM) $@
$(COMPILE.c) $<
$(COMPILE.c) -c $<
%$(OBJ): %.cc
@$(RM) $@
$(COMPILE.cpp) $<
$(COMPILE.cpp) -c $<
%$(OBJ): %.cpp
@$(RM) $@
$(COMPILE.cpp) $<
$(COMPILE.cpp) -c $<
# WIN95/NT resource compiler
%$(RES): %.rc
@ -269,54 +269,59 @@ $(LIB_BAF): $(addsuffix $(BOF),$(basename $(LIBRARY_LD_OBJS)))
endif
#---------------------------------------------------------------
# Libraries, shared/DLL and stubs
$(LIBNAME) $(TESTLIBNAME): $(LIBRARY_OBJS)
$(DLL_LINK_LIBNAME) $(TESTDLL_LINK_LIBNAME): $(LIBRARY_OBJS) $(LIBRARY_RESS) $(SHRLIB_DEPLIBS)
$(LIBNAME) $(TESTLIBNAME) $(DLL_LINK_LIBNAME) $(TESTDLL_LINK_LIBNAME): $(LIB_PREFIX)%$(LIB_SUFFIX):
$(LIBNAME) $(TESTLIBNAME): $(LIB_PREFIX)%$(LIB_SUFFIX):
@$(RM) $@
$(ARCMD)
ifneq ($(strip $(RANLIB)),)
$(RANLIB) $@
endif # RANLIB
$(SHRLIBNAME) $(TESTSHRLIBNAME): $(LIBRARY_OBJS) $(LIBRARY_RESS) $(SHRLIB_DEPLIBS)
$(SHRLIBNAME) $(DLLSTUB_LIBNAME) $(TESTSHRLIBNAME) $(TESTDLLSTUB_LIBNAME): \
$(LIBRARY_OBJS) $(LIBRARY_RESS) $(SHRLIB_DEPLIBS)
$(SHRLIBNAME) $(TESTSHRLIBNAME):$(SHRLIB_PREFIX)%$(SHRLIB_SUFFIX):
@$(RM) $@
$(SHRLIBNAME) $(TESTSHRLIBNAME): $(SHRLIB_PREFIX)%$(SHRLIB_SUFFIX):
$(RM) $@
$(LINK.shrlib)
ifeq ($(SHRLIB_SUFFIX),.dll)
$(MT_DLL_COMMAND)
endif
$(LOADABLE_SHRLIBNAME): $(LIBRARY_OBJS) $(LIBRARY_RESS) $(SHRLIB_DEPLIBS)
$(LOADABLE_SHRLIBNAME):$(LOADABLE_SHRLIB_PREFIX)%$(LOADABLE_SHRLIB_SUFFIX):
$(LOADABLE_SHRLIBNAME): $(LOADABLE_SHRLIB_PREFIX)%$(LOADABLE_SHRLIB_SUFFIX):
@$(RM) $@
$(LINK.shrlib)
$(MT_DLL_COMMAND)
#---------------------------------------------------------------
# C++ munching for VxWorks
%.nm : %$(EXE)
%.nm: %$(EXE)
@$(RM) $@
$(NM) $< > $@
%.nm : %$(OBJ)
%.nm: %$(OBJ)
@$(RM) $@
$(NM) $< > $@
%_ctdt.c : %.nm
%_ctdt.c: %.nm
@$(RM) $@
$(PERL) $(TOOLS)/munch.pl -o $@ $<
$(MUNCHNAME):%$(MUNCH_SUFFIX) : $(MUNCH_DEPENDS) %$(EXE)
$(MUNCHNAME): %$(MUNCH_SUFFIX): $(MUNCH_DEPENDS) %$(EXE)
@$(RM) $@
$(MUNCH_CMD)
$(OBJLIB_MUNCHNAME):%.munch : %_ctdt$(OBJ) %$(OBJ)
$(OBJLIB_MUNCHNAME): %.munch: %_ctdt$(OBJ) %$(OBJ)
@$(RM) $@
$(MUNCH_CMD)
#---------------------------------------------------------------
# Automated testing
runtests: $(TESTSCRIPTS_$(BUILD_CLASS))
-$(PERL) -MTest::Harness -e 'runtests @ARGV if @ARGV;' $^
@ -340,7 +345,8 @@ testspec: $(TESTSCRIPTS_$(BUILD_CLASS))
@$(PERL) $(TOOLS)/makeTestfile.pl $@ $<
#---------------------------------------------------------------
## Install rules for BIN_INSTALLS and LIB_INSTALLS
# Install rules for BIN_INSTALLS and LIB_INSTALLS
define BIN_INSTALLS_template
$$(INSTALL_BIN)/$$(notdir $(1)) : $(1)
$(ECHO) "Installing $$(<F)"
@ -362,19 +368,19 @@ $(INSTALL_BIN)/%: ../os/$(OS_CLASS)/%
@$(INSTALL_PRODUCT) -d -m $(BIN_PERMISSIONS) $< $(INSTALL_BIN)
$(INSTALL_BIN)/%: %
$(ECHO) "Installing created file $@"
$(ECHO) "Installing created executable $@"
@$(INSTALL_PRODUCT) -d -m $(BIN_PERMISSIONS) $< $(INSTALL_BIN)
$(INSTALL_BIN)/%: ../%
$(ECHO) "Installing script $@"
@$(INSTALL_PRODUCT) -d -m $(BIN_PERMISSIONS) $< $(INSTALL_BIN)
$(INSTALL_LIB)/%.a: %.a
$(INSTALL_LIB)/%$(LIB_SUFFIX): %$(LIB_SUFFIX)
$(ECHO) "Installing library $@"
@$(INSTALL_LIBRARY) -d -m $(LIB_PERMISSIONS) $< $(INSTALL_LIB)
$(INSTALL_LIB)/%.lib: %.lib
$(ECHO) "Installing library $@"
$(INSTALL_LIB)/%$(DLLSTUB_SUFFIX): %$(DLLSTUB_SUFFIX)
$(ECHO) "Installing DLL stub library $@"
@$(INSTALL_LIBRARY) -d -m $(LIB_PERMISSIONS) $< $(INSTALL_LIB)
$(INSTALL_SHRLIBS): $(INSTALL_SHRLIB)/%: %

View File

@ -42,18 +42,22 @@ $(foreach target, $(PROD) $(TESTPROD), \
define TARGET2_template
$(1)_LDLIBS += $$($(1)_LIBS)
$(1)_LDLIBS += $$(if $$(strip $$($(1)_LIBS_$$(OS_CLASS))), \
$$(subst -nil-,,$$($(1)_LIBS_$$(OS_CLASS))), \
$(1)_LDLIBS += $$(if $$(strip $$($(1)_LIBS_$(OS_CLASS))), \
$$(subst -nil-,,$$($(1)_LIBS_$(OS_CLASS))), \
$$($(1)_LIBS_DEFAULT))
$(1)_RESS = $$(if $$(RES),$$(addsuffix $$(RES),$$(basename $$($(1)_RCS))),)
$(1)_OBJSNAME = $$(addsuffix $$(OBJ),$$(basename $$($(1)_OBJS) $$($(1)_SRCS) ))
$(1)_DEPLIBS = $$(foreach lib, $$($(1)_LDLIBS),\
$$(firstword $$(wildcard $$(addsuffix /$$(LIB_PREFIX)$$(lib).*,\
$$($$(lib)_DIR) $$(SHRLIB_SEARCH_DIRS)))\
$$(addsuffix /$$(LIB_PREFIX)$$(lib)$$(LIB_SUFFIX),\
$$(firstword $$($$(lib)_DIR) $$(SHRLIB_SEARCH_DIRS)))))
$(1)_RESS = $$(if $(RES),$$(addsuffix $(RES),$$(basename $$($(1)_RCS))),)
$(1)_OBJSNAME = $$(addsuffix $(OBJ),$$(basename $$($(1)_OBJS) $$($(1)_SRCS) ))
$(1)_DEPLIBS = $$(foreach lib, $$($(1)_LDLIBS), \
$$(firstword $$(wildcard \
$$(addsuffix /$(SHRLIB_PREFIX)$$(lib)*$(SHRLIB_SUFFIX_BASE)*, \
$$($$(lib)_DIR) $$(SHRLIB_SEARCH_DIRS)) \
$$(addsuffix /$(DLLSTUB_PREFIX)$$(lib)$(DLLSTUB_SUFFIX), \
$$($$(lib)_DIR) $$(SHRLIB_SEARCH_DIRS)) \
$$(addsuffix /$(LIB_PREFIX)$$(lib)$(LIB_SUFFIX), \
$$($$(lib)_DIR) $$(SHRLIB_SEARCH_DIRS))) \
$$(addsuffix /$(BUILDLIB_PREFIX)$$(lib)$(BUILDLIB_SUFFIX), \
$$(firstword $$($$(lib)_DIR) $(SHRLIB_SEARCH_DIRS)))))
endef
$(foreach target, $(PROD) $(TESTPROD) $(LIBRARY) $(TESTLIBRARY) $(LOADABLE_LIBRARY) , \
@ -73,11 +77,16 @@ $(foreach target, $(PROD) $(TESTPROD), \
define LIBRARY_template
$(1)_DLL_DEPLIBS=$$(foreach lib, $$($(1)_DLL_LIBS),\
$$(firstword $$(wildcard $$(addsuffix /$$(LIB_PREFIX)$$(lib).*,\
$$($$(lib)_DIR) $$(SHRLIB_SEARCH_DIRS)))\
$$(addsuffix /$$(LIB_PREFIX)$$(lib)$$(LIB_SUFFIX),\
$$(firstword $$($$(lib)_DIR) $$(SHRLIB_SEARCH_DIRS)))))
$(1)_DLL_DEPLIBS=$$(foreach lib, $$($(1)_DLL_LIBS), \
$$(firstword $$(wildcard \
$$(addsuffix /$(SHRLIB_PREFIX)$$(lib)*$(SHRLIB_SUFFIX_BASE)*, \
$$($$(lib)_DIR) $$(SHRLIB_SEARCH_DIRS)) \
$$(addsuffix /$(DLLSTUB_PREFIX)$$(lib)$(DLLSTUB_SUFFIX), \
$$($$(lib)_DIR) $$(SHRLIB_SEARCH_DIRS)) \
$$(addsuffix /$(LIB_PREFIX)$$(lib)$(LIB_SUFFIX), \
$$($$(lib)_DIR) $$(SHRLIB_SEARCH_DIRS))) \
$$(addsuffix /$(BUILDLIB_PREFIX)$$(lib)$(BUILDLIB_SUFFIX), \
$$(firstword $$($$(lib)_DIR) $$(SHRLIB_SEARCH_DIRS)))))
$$(LIB_PREFIX)$(1)$$(LIB_SUFFIX):$$($(1)_OBJSNAME) $$($(1)_RESS)
$$(LIB_PREFIX)$(1)$$(LIB_SUFFIX):$$($(1)_DEPLIBS)

View File

@ -40,42 +40,52 @@ LOADABLE_SHRLIBNAME = $(LOADABLE_BUILD_LIBRARY:%=$(LOADABLE_SHRLIB_PREFIX)%$(LOA
# SHRLIB_LIBS deprecated
LIB_LIBS += $(SHRLIB_LIBS)
SHRLIB_DEPLIBS=$(foreach lib, $(LIB_LIBS) $(USR_LIBS), \
$(firstword $(wildcard $(addsuffix /$(LIB_PREFIX)$(lib).*, \
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))) \
$(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX), \
$(firstword $($(lib)_DIR) $(INSTALL_LIB)))))
SHRLIB_DEPLIBS = $(foreach lib, $(LIB_LIBS) $(USR_LIBS), \
$(firstword $(wildcard \
$(addsuffix /$(SHRLIB_PREFIX)$(lib)*$(SHRLIB_SUFFIX_BASE)*, \
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)) \
$(addsuffix /$(DLLSTUB_PREFIX)$(lib)$(DLLSTUB_SUFFIX), \
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)) \
$(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX), \
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))) \
$(addsuffix /$(BUILDLIB_PREFIX)$(lib)$(BUILDLIB_SUFFIX), $(INSTALL_LIB))))
SHRLIB_LDLIBS = $(addprefix -l, $($*_LDLIBS) $(LIB_LIBS) $(USR_LIBS))\
$(STATIC_LDLIBS) \
$(addprefix -l, $($*_SYS_LIBS) $(LIB_SYS_LIBS) $(USR_SYS_LIBS)) \
$(LDLIBS)
SHRLIB_LDLIBS = $(addprefix -l, $($*_LDLIBS) $(LIB_LIBS) $(USR_LIBS)) \
$(STATIC_LDLIBS) \
$(addprefix -l, $($*_SYS_LIBS) $(LIB_SYS_LIBS) $(USR_SYS_LIBS)) \
$(LDLIBS)
SHRLIB_DEPLIB_DIRS = $(foreach word,$(sort $(dir $($*_DEPLIBS) $(SHRLIB_DEPLIBS))), \
$(shell $(PERL) $(TOOLS)/fullPathName.pl $(word)))
SHRLIB_DEPLIB_DIRS = $(foreach word, \
$(sort $(dir $($*_DEPLIBS) $(SHRLIB_DEPLIBS))), \
$(shell $(PERL) $(TOOLS)/fullPathName.pl $(word)))
SHRLIBDIR_LDFLAGS += $(SHRLIB_DEPLIB_DIRS:%=-L%)
#-------------------------------------------------------
# Prod: PROD_DEPLIBS, PROD_LDLIBS and PRODDIR_LDFLAGS definitions
PROD_DEPLIBS=$(foreach lib,$(PROD_LIBS) $(USR_LIBS), \
$(firstword $(wildcard $(addsuffix /$(LIB_PREFIX)$(lib).*, \
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))) \
$(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX), \
$(firstword $($(lib)_DIR) $(INSTALL_LIB)))))
PROD_DEPLIBS = $(foreach lib, $(PROD_LIBS) $(USR_LIBS), \
$(firstword $(wildcard \
$(addsuffix /$(SHRLIB_PREFIX)$(lib)*$(SHRLIB_SUFFIX_BASE)*, \
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)) \
$(addsuffix /$(DLLSTUB_PREFIX)$(lib)$(DLLSTUB_SUFFIX), \
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)) \
$(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX), \
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))) \
$(addsuffix /$(BUILDLIB_PREFIX)$(lib)$(BUILDLIB_SUFFIX), $(INSTALL_LIB))))
PROD_LDLIBS = $(addprefix -l, $($*_LDLIBS) $(PROD_LIBS) $(USR_LIBS)) \
$(STATIC_LDLIBS) \
$(addprefix -l, $($*_SYS_LIBS) $(PROD_SYS_LIBS) $(USR_SYS_LIBS))
$(STATIC_LDLIBS) \
$(addprefix -l, $($*_SYS_LIBS) $(PROD_SYS_LIBS) $(USR_SYS_LIBS))
LDLIBS_STATIC_YES = LDLIBS
LDLIBS_SHARED_NO = LDLIBS
PROD_LDLIBS += $($(firstword $(LDLIBS_STATIC_$(STATIC_BUILD)) \
$(LDLIBS_SHARED_$(SHARED_LIBRARIES))))
PROD_DEPLIB_DIRS = $(foreach word,$(sort $(dir $($*_DEPLIBS) $(PROD_DEPLIBS))), \
$(shell $(PERL) $(TOOLS)/fullPathName.pl $(word)))
PROD_DEPLIB_DIRS = $(foreach word, \
$(sort $(dir $($*_DEPLIBS) $(PROD_DEPLIBS))), \
$(shell $(PERL) $(TOOLS)/fullPathName.pl $(word)))
PRODDIR_LDFLAGS += $(PROD_DEPLIB_DIRS:%=-L%)

View File

@ -21,7 +21,6 @@ LDLIBS_READLINE_CURSES = -lreadline -lcurses
LDLIBS_READLINE = -lreadline
POSIX_CPPFLAGS = -D_POSIX_THREADS -D_POSIX_TIMERS
#POSIX_CPPFLAGS += -D_POSIX_SOURCE
POSIX_LDLIBS += -lpthread
ARCH_DEP_CFLAGS += -m32
@ -37,21 +36,27 @@ ARCH_DEP_LDFLAGS += -m32
OP_SYS_CPPFLAGS += -DCYGWIN32
EXE=.exe
EXE = .exe
VISC_DLL_NO = -DEPICS_DLL_NO
VISC_DLL_YES =
VISC_DLL = $(VISC_DLL_$(SHARED_LIBRARIES))
STATIC_CFLAGS_YES= $(VISC_DLL)
STATIC_CFLAGS_NO= $(VISC_DLL) -D_DLL
STATIC_CXXFLAGS_YES= $(VISC_DLL)
STATIC_CXXFLAGS_NO= $(VISC_DLL) -D_DLL
# Use .o for static object files, .obj for shared library object files
OBJ_NO = .o
OBJ_YES = .obj
OBJ = $(OBJ_$(SHARED_LIBRARIES))
# adjust names of libraries to build
COMPILE.c += $(if $(filter %$(OBJ),$@),-o $@)
COMPILE.cpp += $(if $(filter %$(OBJ),$@),-o $@)
HDEPENDS_ARCHFLAGS = -MT $*$(OBJ)
BUILD_DLL_CFLAGS_YES = -DEPICS_BUILD_DLL
BUILD_DLL_CFLAGS_NO =
BUILD_DLL_CFLAGS = $(BUILD_DLL_CFLAGS_$(SHARED_LIBRARIES))
STATIC_CFLAGS_YES = $(BUILD_DLL_CFLAGS)
STATIC_CFLAGS_NO = $(BUILD_DLL_CFLAGS) -DEPICS_CALL_DLL
STATIC_CXXFLAGS_YES = $(BUILD_DLL_CFLAGS)
STATIC_CXXFLAGS_NO = $(BUILD_DLL_CFLAGS) -DEPICS_CALL_DLL
# Adjust names of libraries to build
#
# But: if there are no objects LIBRARY_LD_OBJS to include
# in this library (may be for e.g. base/src/libCompat
# on some archs), don't define (and build) any library!
SHRLIB_PREFIX =
SHRLIB_SUFFIX_BASE = .dll
SHRLIB_SUFFIX = $(SHRLIB_SUFFIX_BASE)
@ -61,17 +66,20 @@ LOADABLE_SHRLIBNAME = $(LOADABLE_BUILD_LIBRARY:%=%$(LOADABLE_SHRLIB_SUFFIX))
#
# When SHARED_LIBRARIES is YES we are building a DLL link library
# and when SHARED_LIBRARIES is NO we are building an object library
# When SHARED_LIBRARIES is NO we are building an object library
#
LIB_PREFIX=
LIB_SUFFIX=.lib
DLL_LINK_LIBNAME_YES = $(BUILD_LIBRARY:%=%$(LIB_SUFFIX))
DLL_LINK_LIBNAME = $(DLL_LINK_LIBNAME_$(SHARED_LIBRARIES))
TESTDLL_LINK_LIBNAME_YES = $(TESTBUILD_LIBRARY:%=%$(LIB_SUFFIX))
TESTDLL_LINK_LIBNAME = $(TESTDLL_LINK_LIBNAME_$(SHARED_LIBRARIES))
LIBNAME_NO = $(BUILD_LIBRARY:%=%$(LIB_SUFFIX))
LIBNAME = $(LIBNAME_$(SHARED_LIBRARIES))
TESTLIBNAME_NO = $(TESTBUILD_LIBRARY:%=%$(LIB_SUFFIX))
LIB_PREFIX_NO =
LIB_SUFFIX_NO = .lib
LIB_PREFIX_YES = lib
LIB_SUFFIX_YES = .dll.a
LIB_PREFIX = $(LIB_PREFIX_$(SHARED_LIBRARIES))
LIB_SUFFIX = $(LIB_SUFFIX_$(SHARED_LIBRARIES))
DLLSTUB_LIBNAME_YES = $(BUILD_LIBRARY:%=$(LIB_PREFIX)%$(LIB_SUFFIX))
DLLSTUB_LIBNAME = $(DLLSTUB_LIBNAME_$(SHARED_LIBRARIES))
TESTDLLSTUB_LIBNAME_YES = $(TESTBUILD_LIBRARY:%=$(LIB_PREFIX)%$(LIB_SUFFIX))
TESTDLLSTUB_LIBNAME = $(TESTDLLSTUB_LIBNAME_$(SHARED_LIBRARIES))
TESTLIBNAME_NO = $(TESTBUILD_LIBRARY:%=$(LIB_PREFIX)%$(LIB_SUFFIX))
TESTLIBNAME = $(TESTLIBNAME_$(SHARED_LIBRARIES))
# dll install location

View File

@ -100,7 +100,7 @@ vpath %.m $(USR_VPATH) $(ALL_SRC_DIRS)
# Use compiler when ARCH_CLASS is a single arch value
# otherwise use perl script command
SINGLE_ARCH=$(filter 1,$(words $(ARCH_CLASS)))
HDEPENDS_METHOD = $(if $(SINGLE_ARCH),CFLAGS,MKMF)
HDEPENDS_METHOD = $(if $(SINGLE_ARCH),COMP,MKMF)
#--------------------------------------------------
# Allow site overrides

View File

@ -37,15 +37,14 @@ TESTLIBNAME = $(TESTBUILD_LIBRARY:%=$(LIB_PREFIX)%$(LIB_SUFFIX))
#--------------------------------------------------
# Prod: DEPLIBS, LDFLAGS, and LDLIBS definitions
PROD_DEPLIBS=$(foreach lib,$(PROD_LIBS) $(USR_LIBS), \
$(firstword $(wildcard $(addsuffix /$(LIB_PREFIX)$(lib).*, \
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))) \
$(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX), \
$(firstword $($(lib)_DIR) $(INSTALL_LIB)))))
PROD_DEPLIBS = $(foreach lib,$(PROD_LIBS) $(USR_LIBS), \
$(firstword $(wildcard \
$(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX), \
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))) \
$(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX), $(INSTALL_LIB))))
PROD_LDLIBS = $(addprefix -l,$($*_LDLIBS) $(PROD_LIBS) $(USR_LIBS)\
$($*_SYS_LIBS) $(PROD_SYS_LIBS) $(USR_SYS_LIBS))
PROD_LDLIBS = $(addprefix -l,$($*_LDLIBS) $(PROD_LIBS) $(USR_LIBS) \
$($*_SYS_LIBS) $(PROD_SYS_LIBS) $(USR_SYS_LIBS))
PROD_DEPLIB_DIRS = $(dir $($*_DEPLIBS)) $(dir $(PROD_DEPLIBS))
PRODDIR_LDFLAGS += $(sort $(PROD_DEPLIB_DIRS:%=-L%))

View File

@ -17,7 +17,6 @@ ARCH_CLASS = x86
LDLIBS_READLINE = -lreadline -lcurses
POSIX_CPPFLAGS = -D_POSIX_THREADS -D_POSIX_TIMERS
#POSIX_CPPFLAGS += -D_POSIX_SOURCE
POSIX_LDLIBS += -lpthread
ARCH_DEP_CFLAGS += -m32
@ -32,7 +31,6 @@ ARCH_DEP_LDFLAGS += -m32
# compiler defines _WIN32 1
# compiler defines WIN32 1
# compiler defines WINNT 1
# compiler defines __GNUC__ 3
# compiler does not define __unix __unix__ unix
# compiler does not define __CYGWIN__ __CYGWIN32__
@ -40,21 +38,27 @@ OP_SYS_CPPFLAGS = -mno-cygwin
OP_SYS_LDFLAGS += -mno-cygwin
OP_SYS_LDLIBS = -lws2_32 -ladvapi32 -luser32 -lkernel32 -lwinmm
EXE=.exe
EXE = .exe
VISC_DLL_NO = -DEPICS_DLL_NO
VISC_DLL_YES =
VISC_DLL = $(VISC_DLL_$(SHARED_LIBRARIES))
STATIC_CFLAGS_YES= $(VISC_DLL)
STATIC_CFLAGS_NO= $(VISC_DLL) -D_DLL
STATIC_CXXFLAGS_YES= $(VISC_DLL)
STATIC_CXXFLAGS_NO= $(VISC_DLL) -D_DLL
# Use .o for static object files, .obj for shared library object files
OBJ_NO = .o
OBJ_YES = .obj
OBJ = $(OBJ_$(SHARED_LIBRARIES))
# adjust names of libraries to build
COMPILE.c += $(if $(filter %$(OBJ),$@),-o $@)
COMPILE.cpp += $(if $(filter %$(OBJ),$@),-o $@)
HDEPENDS_ARCHFLAGS = -MT $*$(OBJ)
DLL_CFLAGS_YES = -DEPICS_BUILD_DLL
DLL_CFLAGS_NO =
DLL_CFLAGS = $(DLL_CFLAGS_$(SHARED_LIBRARIES))
STATIC_CFLAGS_YES= $(DLL_CFLAGS)
STATIC_CFLAGS_NO= $(DLL_CFLAGS) -DEPICS_CALL_DLL
STATIC_CXXFLAGS_YES= $(DLL_CFLAGS)
STATIC_CXXFLAGS_NO= $(DLL_CFLAGS) -DEPICS_CALL_DLL
# Adjust names of libraries to build
#
# But: if there are no objects LIBRARY_LD_OBJS to include
# in this library (may be for e.g. base/src/libCompat
# on some archs), don't define (and build) any library!
SHRLIB_PREFIX =
SHRLIB_SUFFIX_BASE = .dll
SHRLIB_SUFFIX = $(SHRLIB_SUFFIX_BASE)
@ -66,17 +70,20 @@ LOADABLE_SHRLIBNAME = $(LOADABLE_BUILD_LIBRARY:%=%$(LOADABLE_SHRLIB_SUFFIX))
#
# When SHARED_LIBRARIES is YES we are building a DLL link library
# and when SHARED_LIBRARIES is NO we are building an object library
# When SHARED_LIBRARIES is NO we are building an object library
#
LIB_PREFIX=
LIB_SUFFIX=.lib
DLL_LINK_LIBNAME_YES = $(BUILD_LIBRARY:%=%$(LIB_SUFFIX))
DLL_LINK_LIBNAME = $(DLL_LINK_LIBNAME_$(SHARED_LIBRARIES))
TESTDLL_LINK_LIBNAME_YES = $(TESTBUILD_LIBRARY:%=%$(LIB_SUFFIX))
TESTDLL_LINK_LIBNAME = $(TESTDLL_LINK_LIBNAME_$(SHARED_LIBRARIES))
LIBNAME_NO = $(BUILD_LIBRARY:%=%$(LIB_SUFFIX))
LIBNAME = $(LIBNAME_$(SHARED_LIBRARIES))
TESTLIBNAME_NO = $(TESTBUILD_LIBRARY:%=%$(LIB_SUFFIX))
LIB_PREFIX_NO =
LIB_SUFFIX_NO = .lib
LIB_PREFIX_YES = lib
LIB_SUFFIX_YES = .dll.a
LIB_PREFIX = $(LIB_PREFIX_$(SHARED_LIBRARIES))
LIB_SUFFIX = $(LIB_SUFFIX_$(SHARED_LIBRARIES))
DLLSTUB_LIBNAME_YES = $(BUILD_LIBRARY:%=$(LIB_PREFIX)%$(LIB_SUFFIX))
DLLSTUB_LIBNAME = $(DLLSTUB_LIBNAME_$(SHARED_LIBRARIES))
TESTDLLSTUB_LIBNAME_YES = $(TESTBUILD_LIBRARY:%=$(LIB_PREFIX)%$(LIB_SUFFIX))
TESTDLLSTUB_LIBNAME = $(TESTDLLSTUB_LIBNAME_$(SHARED_LIBRARIES))
TESTLIBNAME_NO = $(TESTBUILD_LIBRARY:%=$(LIB_PREFIX)%$(LIB_SUFFIX))
TESTLIBNAME = $(TESTLIBNAME_$(SHARED_LIBRARIES))
# dll install location

View File

@ -34,21 +34,29 @@ ARCH_DEP_LDFLAGS += -m32
# Override for -DUNIX from CONFIG.Common.UnixCommon
OP_SYS_CPPFLAGS = -D_MINGW
EXE=.exe
EXE = .exe
VISC_DLL_NO = -DEPICS_DLL_NO
VISC_DLL_YES =
VISC_DLL = $(VISC_DLL_$(SHARED_LIBRARIES))
STATIC_CFLAGS_YES= $(VISC_DLL)
STATIC_CFLAGS_NO= $(VISC_DLL) -D_DLL
STATIC_CXXFLAGS_YES= $(VISC_DLL)
STATIC_CXXFLAGS_NO= $(VISC_DLL) -D_DLL
# Use .o for static object files, .obj for shared library object files
OBJ_NO = .o
OBJ_YES = .obj
OBJ = $(OBJ_$(SHARED_LIBRARIES))
# adjust names of libraries to build
COMPILE.c += $(if $(filter %$(OBJ),$@),-o $@)
COMPILE.cpp += $(if $(filter %$(OBJ),$@),-o $@)
HDEPENDS_ARCHFLAGS = -MT $*$(OBJ)
BUILD_DLL_CFLAGS_YES = -DEPICS_BUILD_DLL
BUILD_DLL_CFLAGS_NO =
BUILD_DLL_CFLAGS = $(BUILD_DLL_CFLAGS_$(SHARED_LIBRARIES))
STATIC_CFLAGS_YES = $(BUILD_DLL_CFLAGS)
STATIC_CFLAGS_NO = $(BUILD_DLL_CFLAGS) -DEPICS_CALL_DLL
STATIC_CXXFLAGS_YES = $(BUILD_DLL_CFLAGS)
STATIC_CXXFLAGS_NO = $(BUILD_DLL_CFLAGS) -DEPICS_CALL_DLL
# Adjust the names of the libraries to build
#
# When SHARED_LIBRARIES is YES we build a DLL and its stub library
#
# But: if there are no objects LIBRARY_LD_OBJS to include
# in this library (may be for e.g. base/src/libCompat
# on some archs), don't define (and build) any library!
SHRLIB_PREFIX =
SHRLIB_SUFFIX_BASE = .dll
SHRLIB_SUFFIX = $(SHRLIB_SUFFIX_BASE)
@ -58,20 +66,22 @@ LOADABLE_SHRLIB_PREFIX =
LOADABLE_SHRLIB_SUFFIX = $(SHRLIB_SUFFIX_BASE)
LOADABLE_SHRLIBNAME = $(LOADABLE_BUILD_LIBRARY:%=%$(LOADABLE_SHRLIB_SUFFIX))
DLLSTUB_PREFIX = lib
DLLSTUB_SUFFIX = .dll.a
DLLSTUB_LIBNAME_YES = $(BUILD_LIBRARY:%=$(DLLSTUB_PREFIX)%$(DLLSTUB_SUFFIX))
DLLSTUB_LIBNAME = $(DLLSTUB_LIBNAME_$(SHARED_LIBRARIES))
TESTDLLSTUB_LIBNAME_YES = $(TESTBUILD_LIBRARY:%=$(DLLSTUB_PREFIX)%$(DLLSTUB_SUFFIX))
TESTDLLSTUB_LIBNAME = $(TESTDLLSTUB_LIBNAME_$(SHARED_LIBRARIES))
# When SHARED_LIBRARIES is NO we build a static archive library
#
# When SHARED_LIBRARIES is YES we are building a DLL link library
# and when SHARED_LIBRARIES is NO we are building an object library
#
LIB_PREFIX=
LIB_SUFFIX=.lib
DLL_LINK_LIBNAME_YES = $(BUILD_LIBRARY:%=%$(LIB_SUFFIX))
DLL_LINK_LIBNAME = $(DLL_LINK_LIBNAME_$(SHARED_LIBRARIES))
TESTDLL_LINK_LIBNAME_YES = $(TESTBUILD_LIBRARY:%=%$(LIB_SUFFIX))
TESTDLL_LINK_LIBNAME = $(TESTDLL_LINK_LIBNAME_$(SHARED_LIBRARIES))
LIB_PREFIX =
LIB_SUFFIX = .lib
LIBNAME_NO = $(BUILD_LIBRARY:%=%$(LIB_SUFFIX))
LIBNAME = $(LIBNAME_$(SHARED_LIBRARIES))
TESTLIBNAME_NO = $(TESTBUILD_LIBRARY:%=%$(LIB_SUFFIX))
TESTLIBNAME = $(TESTLIBNAME_$(SHARED_LIBRARIES))
# dll install location
INSTALL_SHRLIB = $(INSTALL_BIN)

View File

@ -94,7 +94,7 @@ vpath %.m $(USR_VPATH) $(ALL_SRC_DIRS)
# Use compiler when ARCH_CLASS is a single arch value
# otherwise use perl script command
SINGLE_ARCH=$(filter 1,$(words $(ARCH_CLASS)))
HDEPENDS_METHOD = $(if $(SINGLE_ARCH),CFLAGS,MKMF)
HDEPENDS_METHOD = $(if $(SINGLE_ARCH),COMP,MKMF)
#--------------------------------------------------
# Allow site overrides

View File

@ -56,8 +56,8 @@ LOADABLE_SHRLIB_LDFLAGS = -G -h $@ -z text
OP_SYS_LDFLAGS += -z ignore -z combreloc -z lazyload
# Header dependency file generation command
HDEPENDS_METHOD = CFLAGS
HDEPENDSCFLAGS = -xM1 > $*$(DEP)
HDEPENDS_METHOD = COMP
HDEPENDS_COMPFLAGS = -xM1 -xMF $@
#--------------------------------------------------
# Allow site overrides

View File

@ -20,8 +20,10 @@ RCCMD = windres $(INCLUDES) $< $@
# No -fPIC avoids "-fPIC ignored for target (all code is position independent)"
SHRLIB_CFLAGS =
SHRLIB_LDFLAGS = -shared -Wl,--out-implib,$(LIB_PREFIX)$*$(LIB_SUFFIX)
LOADABLE_SHRLIB_LDFLAGS = -shared -Wl,--out-implib,$(LIB_PREFIX)$*$(LIB_SUFFIX)
SHRLIB_LDFLAGS = -shared \
-Wl,--out-implib,$(DLLSTUB_PREFIX)$*$(DLLSTUB_SUFFIX)
LOADABLE_SHRLIB_LDFLAGS = -shared \
-Wl,--out-implib,$(DLLSTUB_PREFIX)$*$(DLLSTUB_SUFFIX)
# Override linking with gcc library from CONFIG.gnuCommon
GNU_LDLIBS_YES =

View File

@ -70,14 +70,14 @@ OBJ_CFLAG = -Fo
# -MTd static multithreaded C RTL (debug version)
# -MD multithreaded C RTL in DLL
# -MDd multithreaded C RTL in DLL (debug version)
VISC_DLL_NO = -DEPICS_DLL_NO
VISC_DLL_YES =
VISC_DLL = $(VISC_DLL_$(SHARED_LIBRARIES))
VISC_STATIC_CFLAGS_DEBUG_NO = d
VISC_STATIC_CFLAGS_DEBUG_YES =
VISC_STATIC_CFLAGS_DEBUG = $(VISC_STATIC_CFLAGS_DEBUG_$(HOST_OPT))
STATIC_CFLAGS_YES= -MT$(VISC_STATIC_CFLAGS_DEBUG) $(VISC_DLL)
STATIC_CFLAGS_NO= -MD$(VISC_STATIC_CFLAGS_DEBUG) $(VISC_DLL)
BUILD_DLL_CFLAGS_NO =
BUILD_DLL_CFLAGS_YES = -DEPICS_BUILD_DLL
BUILD_DLL_CFLAGS = $(BUILD_DLL_CFLAGS_$(SHARED_LIBRARIES))
VISC_CFLAGS_DEBUG_NO = d
VISC_CFLAGS_DEBUG_YES =
VISC_CFLAGS_DEBUG = $(VISC_CFLAGS_DEBUG_$(HOST_OPT))
STATIC_CFLAGS_YES= -MT$(VISC_CFLAGS_DEBUG) $(BUILD_DLL_CFLAGS)
STATIC_CFLAGS_NO= -MD$(VISC_CFLAGS_DEBUG) $(BUILD_DLL_CFLAGS) -DEPICS_CALL_DLL
# OS vendor c preprocessor
CPP = cl -C -E
@ -135,8 +135,8 @@ OBJ_CXXFLAG = -Fo
# -MTd static multithreaded C RTL (debug version)
# -MD multithreaded C RTL in DLL
# -MDd multithreaded C RTL in DLL (debug version)
STATIC_CXXFLAGS_YES= -MT$(VISC_STATIC_CFLAGS_DEBUG) $(VISC_DLL)
STATIC_CXXFLAGS_NO= -MD$(VISC_STATIC_CFLAGS_DEBUG) $(VISC_DLL)
STATIC_CXXFLAGS_YES= -MT$(VISC_CFLAGS_DEBUG) $(BUILD_DLL_CFLAGS)
STATIC_CXXFLAGS_NO= -MD$(VISC_CFLAGS_DEBUG) $(BUILD_DLL_CFLAGS) -DEPICS_CALL_DLL
STATIC_LDLIBS_YES=ws2_32.lib advapi32.lib user32.lib kernel32.lib winmm.lib
STATIC_LDLIBS_NO=
@ -177,11 +177,6 @@ COMPILER_CXXFLAGS = -TP
OP_SYS_CFLAGS =
OP_SYS_CXXFLAGS = $(COMPILER_CXXFLAGS)
#
# WIN32 specific include files
#
#OP_SYS_INCLUDES = -I$(INSTALL_INCLUDE)\\os\\WIN32
# Files and flags needed to link DLLs (used in RULES_BUILD)
#
# Strange but seems to work without: WIN32_DLLFLAGS should contain
@ -199,19 +194,16 @@ DLL_DEF_FLAG = $(addprefix -def:,$(wildcard ../$(addsuffix .def,$*)))
#
# A WIN32 dll has three parts:
# x.dll: the real dll (SHRLIBNAME)
# x.lib: what you link to progs that use the dll (DLL_LINK_LIBNAME)
# x.lib: what you link to progs that use the dll (DLLSTUB_LIBNAME)
# x.exp: what you need to build the dll (in no variable)
#
LINK.shrlib = $(WINLINK) -nologo $(WIN32_DLLFLAGS) -implib:$*.lib -out:$*.dll \
$(DLL_DEF_FLAG) $(LIBRARY_LD_OBJS) $(LIBRARY_LD_RESS) $(SHRLIB_LDLIBS)
MUNCH_CMD = $(CCC) -Fo $@ $^
#MUNCH_CMD = $(CCC) -Fo $@ $^
# adjust names of libraries to build
#
# But: if there are no objects LIBRARY_LD_OBJS to include
# in this library (may be for e.g. base/src/libCompat
# on some archs), don't define (and build) any library!
SHRLIB_SUFFIX_BASE = .dll
SHRLIB_SUFFIX = $(SHRLIB_SUFFIX_BASE)
SHRLIBNAME_YES = $(BUILD_LIBRARY:%=%$(SHRLIB_SUFFIX))
@ -222,10 +214,11 @@ TESTSHRLIBNAME_YES = $(TESTBUILD_LIBRARY:%=%$(SHRLIB_SUFFIX))
# When SHARED_LIBRARIES is YES we are building a DLL link library
# and when SHARED_LIBRARIES is NO we are building an object library
#
DLL_LINK_LIBNAME_YES = $(BUILD_LIBRARY:%=%.lib)
DLL_LINK_LIBNAME = $(DLL_LINK_LIBNAME_$(SHARED_LIBRARIES))
TESTDLL_LINK_LIBNAME_YES = $(TESTBUILD_LIBRARY:%=%.lib)
TESTDLL_LINK_LIBNAME = $(TESTDLL_LINK_LIBNAME_$(SHARED_LIBRARIES))
DLLSTUB_LIBNAME_YES = $(BUILD_LIBRARY:%=%.lib)
DLLSTUB_LIBNAME = $(DLLSTUB_LIBNAME_$(SHARED_LIBRARIES))
TESTDLLSTUB_LIBNAME_YES = $(TESTBUILD_LIBRARY:%=%.lib)
TESTDLLSTUB_LIBNAME = $(TESTDLLSTUB_LIBNAME_$(SHARED_LIBRARIES))
LIB_PREFIX=
LIB_SUFFIX=.lib
LIBNAME_NO = $(BUILD_LIBRARY:%=%.lib)
@ -240,42 +233,42 @@ INSTALL_SHRLIB = $(INSTALL_BIN)
#--------------------------------------------------
# Products dependancy definitions
# SYS_PROD_LIBS deprecated
# Use PROD_SYS_LIBS
PROD_DEPLIBS=$(foreach lib, $(PROD_LIBS) $(USR_LIBS), \
$(firstword $(wildcard $(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX), \
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))) \
$(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX), \
$(firstword $($(lib)_DIR) $(INSTALL_LIB)))))
PROD_DEPLIBS = $(foreach lib, $(PROD_LIBS) $(USR_LIBS), \
$(firstword $(wildcard \
$(addsuffix /$(SHRLIB_PREFIX)$(lib)*$(SHRLIB_SUFFIX_BASE)*, \
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)) \
$(addsuffix /$(DLLSTUB_PREFIX)$(lib)$(DLLSTUB_SUFFIX), \
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)) \
$(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX), \
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))) \
$(addsuffix /$(BUILDLIB_PREFIX)$(lib)$(BUILDLIB_SUFFIX), $(INSTALL_LIB))))
PROD_LDLIBS += $($*_DEPLIBS) $(PROD_DEPLIBS)
PROD_LDLIBS += $(addsuffix .lib, \
$($*_SYS_LIBS) $(PROD_SYS_LIBS) $(USR_SYS_LIBS) )
$($*_SYS_LIBS) $(PROD_SYS_LIBS) $(USR_SYS_LIBS))
LDLIBS_STATIC_YES = LDLIBS
LDLIBS_SHARED_NO = LDLIBS
PROD_LDLIBS += $(STATIC_LDLIBS) $($(firstword $(LDLIBS_STATIC_$(STATIC_BUILD)) \
$(LDLIBS_SHARED_$(SHARED_LIBRARIES))))
PROD_LDLIBS += $(STATIC_LDLIBS) \
$($(firstword $(LDLIBS_STATIC_$(STATIC_BUILD)) \
$(LDLIBS_SHARED_$(SHARED_LIBRARIES))))
#--------------------------------------------------
#Libraries dependancy definitions
# <name>_DLL_LIBS <name>_SYS_DLL_LIBS deprecated.
# Use <name>_LIBS and <name>_SYS_LIBS.
# DLL_LIBS, and SYS_DLL_LIBS deprecated
# Use LIB_LIBS and LIB_SYS_LIBS
LIB_LIBS += $(DLL_LIBS)
LIB_SYS_LIBS += $(SYS_DLL_LIBS)
# Libraries dependancy definitions
# libs that we need to link the DLL with
# (it isnt necessary to rebuild the dll if these change)
SHRLIB_DEPLIBS += $(foreach lib, $(LIB_LIBS) $(USR_LIBS), \
$(firstword $(wildcard $(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX), \
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))) \
$(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX), \
$(firstword $($(lib)_DIR) $(INSTALL_LIB)))))
SHRLIB_DEPLIBS = $(foreach lib, $(LIB_LIBS) $(USR_LIBS), \
$(firstword $(wildcard \
$(addsuffix /$(SHRLIB_PREFIX)$(lib)*$(SHRLIB_SUFFIX_BASE)*, \
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)) \
$(addsuffix /$(DLLSTUB_PREFIX)$(lib)$(DLLSTUB_SUFFIX), \
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)) \
$(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX), \
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))) \
$(addsuffix /$(BUILDLIB_PREFIX)$(lib)$(BUILDLIB_SUFFIX), $(INSTALL_LIB))))
SHRLIB_LDLIBS += $($*_DLL_DEPLIBS) $($*_DEPLIBS) $(SHRLIB_DEPLIBS)
SHRLIB_LDLIBS += $(addsuffix .lib, \

View File

@ -1,9 +1,8 @@
# CONFIG_SITE.win32-x86-mingw.Common
# CONFIG_SITE.Common.win32-x86-mingw
#
# $Revision-Id$
#
# Site Specific definitions for cygwin-x86 target
# Only the local epics system manager should modify this file
# Site Specific definitions for win32-x86-mingw target
# If readline is not installed comment the following line
# to omit command-line editing and history support

View File

@ -37,28 +37,28 @@ HTMLS += gdd.html
HTMLS += gddref.html
HTMLS += gddref2.html
AITGENSRCS := gdd.cc gddTest.cc gddAppTable.cc gddNewDel.cc \
gddAppDefs.cc aitTypes.c aitConvert.cc aitHelpers.cc \
gddArray.cc gddContainer.cc gddErrorCodes.cc gddUtils.cc \
GDDSRCS = gdd.cc gddTest.cc gddAppTable.cc gddNewDel.cc \
gddAppDefs.cc aitTypes.c aitConvert.cc aitHelpers.cc \
gddArray.cc gddContainer.cc gddErrorCodes.cc gddUtils.cc \
gddEnumStringTable.cc
gdd_SRCS := gdd.cc gddTest.cc gddAppTable.cc gddNewDel.cc \
gddAppDefs.cc aitTypes.c aitConvert.cc aitHelpers.cc dbMapper.cc \
gddArray.cc gddContainer.cc gddErrorCodes.cc gddUtils.cc \
gddEnumStringTable.cc
LIBRARY = gdd
gdd_SRCS = dbMapper $(GDDSRCS)
gdd_LIBS = Com
gdd_RCS = gdd.rc
PROD_HOST = aitGen genApps
genApps_SRCS = genApps.cc $(AITGENSRCS)
aitGen_SRCS = aitTypes.c aitGen.c
PROD_LIBS = Com
PROD_HOST += genApps
genApps_SRCS = genApps.cc $(GDDSRCS)
genApps_SYS_LIBS_WIN32 = ws2_32
PROD_LIBS = Com
PROD_HOST += aitGen
aitGen_SRCS = aitTypes.c aitGen.c
# aitGen.c doesn't compile for linux-arm at -O3 when using gcc-3.4.5
aitGen_CFLAGS_linux-arm = -O2
@ -66,22 +66,17 @@ CLEANS += $(COMMON_DIR)/aitConvertGenerated.cc
include $(TOP)/configure/RULES
# cannot generate these dependencies automatically
# Manual dependencies
#
# Problem: Some dependencies are include files that may
# not have been installed if we are building for
# the first time
# -> use explicit reference to the uninstalled files in '..'
aitConvert$(OBJ): $(COMMON_DIR)/aitConvertGenerated.cc
dbMapper$(OBJ): $(COMMON_DIR)/gddApps.h
# Rules for generated files
#
$(COMMON_DIR)/aitConvertGenerated.cc: $(TOOLS)/aitGen$(HOSTEXE)
$(TOOLS)/aitGen$(HOSTEXE) $@
$(call PATH_FILTER, $(TOOLS)/aitGen$(HOSTEXE)) $@
$(COMMON_DIR)/gddApps.h : $(TOOLS)/genApps$(HOSTEXE)
$(TOOLS)/genApps$(HOSTEXE) $@
$(call PATH_FILTER, $(TOOLS)/genApps$(HOSTEXE)) $@

View File

@ -1,18 +1,14 @@
/*************************************************************************\
* Copyright (c) 2002 The University of Chicago, as Operator of Argonne
* Copyright (c) 2012 UChicago Argonne LLC, as Operator of Argonne
* National Laboratory.
* Copyright (c) 2002 The Regents of the University of California, as
* Operator of Los Alamos National Laboratory.
* EPICS BASE Versions 3.13.7
* and higher are distributed subject to a Software License Agreement found
* EPICS BASE is distributed subject to a Software License Agreement found
* in file LICENSE that is included with this distribution.
\*************************************************************************/
/*
* Compiler specific key words to set up external symbols and entry points
*
* Currently this is only necessary for WIN32 DLLs and for VAXC on VMS but
* other systems with similar requirements could be supported.
*
* USAGE:
* There are two distinct classes of keywords in this file:
*
@ -26,12 +22,12 @@
* keyword because __stdcall (pascal) calling convention cannot support variable
* length ed argument lists.
*
* int epicsShareAPI myExtFunc ( int arg );
* int epicsShareAPI myExtFunc ( int arg );
* int epicsShareAPI myExtFunc ( int arg ) {}
*
* ** NOTE ** epicsShareAPI is deprecated for new routines and has been removed
* from all IOC-specific APIs, although most libCom APIs are still
* declared to use it.
* ** NOTE ** The epicsShareAPI attribute is deprecated and has been removed
* from all IOC-specific APIs. Most libCom APIs still use it, but
* it may get removed from these at some point in the future.
*
* 2) epicsShare{Func,Class,Extern,Def} - specifies shareable library (DLL)
* export/import related information in the source code. On windows these keywords
@ -51,8 +47,8 @@
* functions like this:
*
* #include "shareLib.h"
* epicsShareFunc int myExtFunc ( int arg );
* epicsShareExtern int myExtVar;
* epicsShareFunc int myExtFunc ( int arg );
* epicsShareExtern int myExtVar;
* class epicsShareClass myClass { int func ( void ); };
*
* In the implementation file, however, you write:
@ -61,8 +57,8 @@
* #define epicsExportSharedSymbols
* #include <interfaces_implemented_in_this_shareable_library.h>
*
* epicsShareDef int myExtVar = 4;
* int myExtFunc ( int arg ) {}
* epicsShareDef int myExtVar = 4;
* int myExtFunc ( int arg ) {}
* int myClass::func ( void ) {}
*
* By default shareLib.h sets the DLL import / export keywords to import from
@ -94,8 +90,8 @@
* # include "shareLib.h"
* #endif
*
* epicsShareFunc int myExtFunc ( int arg );
* epicsShareExtern int myExtVar;
* epicsShareFunc int myExtFunc ( int arg );
* epicsShareExtern int myExtVar;
* class epicsShareClass myClass {};
*
* Fortunately, the above is only the concern of library authors and will have no
@ -109,28 +105,27 @@
#undef epicsShareAPI
#undef READONLY
/*
*
* Also check for "EPICS_DLL_NO" not defined so that we will not use these
* keywords if it is an object library build of base under WIN32.
*/
#if defined(_WIN32) || defined(__CYGWIN32__)
/*
* Check if EPICS_BUILD_DLL or EPICS_CALL_DLL defined and use the dllimport/
* dllexport keywords if this is a shared library build of base under WIN32.
*/
# if defined(epicsExportSharedSymbols)
# if defined(EPICS_DLL_NO) /* this indicates that we are not building a DLL */
# define epicsShareExtern extern
# define epicsShareClass
# define epicsShareFunc
# if defined(EPICS_BUILD_DLL)
# define epicsShareExtern __declspec(dllexport) extern
# define epicsShareClass __declspec(dllexport)
# define epicsShareFunc __declspec(dllexport)
# else
# define epicsShareExtern __declspec(dllexport) extern
# define epicsShareClass __declspec(dllexport)
# define epicsShareFunc __declspec(dllexport)
# define epicsShareExtern extern
# define epicsShareClass
# define epicsShareFunc
# endif
# else
# if defined(_DLL) /* this indicates that we are being compiled to call DLLs */
# define epicsShareExtern __declspec(dllimport) extern
# define epicsShareClass __declspec(dllimport)
# define epicsShareFunc __declspec(dllimport)
# if defined(EPICS_CALL_DLL)
# define epicsShareExtern __declspec(dllimport) extern
# define epicsShareClass __declspec(dllimport)
# define epicsShareFunc __declspec(dllimport)
# else
# define epicsShareExtern extern
# define epicsShareClass

View File

@ -97,7 +97,7 @@ static const int osdRealtimePriorityList [osdRealtimePriorityStateCount] =
6 /* allowed on >= W2k, but no #define supplied */
};
#if !defined(EPICS_DLL_NO)
#if defined(EPICS_BUILD_DLL)
BOOL WINAPI DllMain (
HANDLE hModule, DWORD dwReason, LPVOID lpReserved )
{