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:
@ -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 $@
|
||||
|
||||
|
@ -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)/%)
|
||||
|
@ -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)/%: %
|
||||
|
@ -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)
|
||||
|
@ -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%)
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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%))
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 =
|
||||
|
@ -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, \
|
||||
|
@ -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
|
||||
|
@ -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)) $@
|
||||
|
||||
|
@ -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
|
||||
|
@ -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 )
|
||||
{
|
||||
|
Reference in New Issue
Block a user