diff --git a/configure/CONFIG_FILE_TYPE b/configure/CONFIG_FILE_TYPE index 0501e1949..c15f4b783 100644 --- a/configure/CONFIG_FILE_TYPE +++ b/configure/CONFIG_FILE_TYPE @@ -60,6 +60,9 @@ INSTALL_EDL = $(INSTALL_LOCATION)/edl FILE_TYPE += PERL_MODULES INSTALL_PERL_MODULES = $(INSTALL_LOCATION_LIB)/perl +FILE_TYPE += PKGCONFIG +INSTALL_PKGCONFIG = $(INSTALL_LOCATION_LIB)/pkgconfig + INSTALLS_CFG = $(CFG:%= $(INSTALL_CFG)/%) DIRECTORY_TARGETS += $(foreach type, $(FILE_TYPE),$(INSTALL_$(type))) diff --git a/configure/RULES_EXPAND b/configure/RULES_EXPAND index c103fe95c..ca087aadc 100644 --- a/configure/RULES_EXPAND +++ b/configure/RULES_EXPAND @@ -1,6 +1,6 @@ # /configure/RULES_EXPAND -ifeq ($(findstring Host,$(VALID_BUILDS)),Host) +vpath %@ $(USR_VPATH) $(ALL_SRC_DIRS) # Default settings EXPAND_TOOL ?= $(PERL) $(TOOLS)/expandVars.pl @@ -8,11 +8,12 @@ EXPAND_TOOL ?= $(PERL) $(TOOLS)/expandVars.pl EXPANDFLAGS += -t $(INSTALL_LOCATION) -a $(T_A) EXPANDFLAGS += $(addprefix -D ,$(EXPAND_VARS)) +# The names of files to be expanded must end with '@' EXPANDED = $(EXPAND:%@=%) buildInstall: $(EXPANDED) -$(EXPANDED): %: ../%@ +$(EXPANDED): %: %@ $(ECHO) "Expanding $< to $@" @$(RM) $@ @$(EXPAND_TOOL) $(EXPANDFLAGS) $($@_EXPANDFLAGS) $< $@ @@ -23,5 +24,3 @@ expand_clean: @$(RM) $(EXPANDED) .PHONY : expand_clean - -endif diff --git a/src/tools/Makefile b/src/tools/Makefile index 496b0e4d1..cd364519d 100644 --- a/src/tools/Makefile +++ b/src/tools/Makefile @@ -51,5 +51,28 @@ PERL_SCRIPTS += dbdExpand.pl PERL_SCRIPTS += dbdToHtml.pl PERL_SCRIPTS += registerRecordDeviceDriver.pl +# Build Package Config Files + +FINAL_LOCATION ?= $(shell $(PERL) $(TOOLS)/fullPathName.pl $(INSTALL_LOCATION)) +C_CFLAGS += $(filter-out -g,$(filter-out -O%,$(filter-out -W%,$(CPPFLAGS)))) +C_CFLAGS += $(filter-out -g,$(filter-out -O%,$(filter-out -W%,$(CFLAGS)))) +PKGVARS += FINAL_LOCATION OS_CLASS CMPLR_CLASS C_CFLAGS LDFLAGS LDLIBS +PKGVARS += EPICS_VERSION EPICS_REVISION EPICS_MODIFICATION EPICS_PATCH_LEVEL +PKGVARS += CC CCC CPP AR LD +PKGVARS += EPICS_BASE_IOC_LIBS + +EXPANDFLAGS += $(foreach var,$(PKGVARS),-D$(var)="$(strip $($(var)))") +PKGCONFIG += epics-base-$(T_A).pc +ifeq ($(T_A),$(EPICS_HOST_ARCH)) +PKGCONFIG += epics-base.pc +endif + +EXPAND += $(PKGCONFIG:%=%@) +CLEANS += epics-base-$(T_A).pc@ + include $(TOP)/configure/RULES +epics-base-$(T_A).pc@: ../epics-base-arch.pc@ + @$(RM) $@ + @$(CP) $< $@ + diff --git a/src/tools/epics-base-arch.pc@ b/src/tools/epics-base-arch.pc@ new file mode 100644 index 000000000..8e30cd30e --- /dev/null +++ b/src/tools/epics-base-arch.pc@ @@ -0,0 +1,41 @@ +# standard variables +prefix=@FINAL_LOCATION@ +exec_prefix=${prefix} +bindir=${prefix}/bin/@ARCH@ +libdir=${prefix}/lib/@ARCH@ + +# non-standard variables + +# EPICS Base install location +FINAL_LOCATION=${prefix} +ARCH=@ARCH@ +OS_CLASS=@OS_CLASS@ +CMPLR_CLASS=@CMPLR_CLASS@ + +EPICS_BASE_IOC_LIBS=@EPICS_BASE_IOC_LIBS@ + +# Directories + +includedir_osi=${prefix}/include +includedir_osd=${prefix}/include/os/@OS_CLASS@ +includedir_comp=${prefix}/include/compiler/@CMPLR_CLASS@ + +includedirs=${includedir_osi} ${includedir_osd} ${includedir_comp} + +dbddir=${prefix}/dbd +dbdir=${prefix}/db + +# Tool chain + +CC=@CC@ +CXX=@CCC@ +CPP=@CPP@ +AR=@AR@ +LD=@LD@ + +Name: epics-base-@ARCH@ +Version: @EPICS_VERSION@.@EPICS_REVISION@.@EPICS_MODIFICATION@.@EPICS_PATCH_LEVEL@ +Description: EPICS Base for @ARCH@ +Cflags: -I${includedir_osi} -I${includedir_osd} -I${includedir_comp} @C_CFLAGS@ +Libs: -L${libdir} @LDFLAGS@ +Libs.private: @LDLIBS@ diff --git a/src/tools/epics-base.pc@ b/src/tools/epics-base.pc@ new file mode 100644 index 000000000..c1540666a --- /dev/null +++ b/src/tools/epics-base.pc@ @@ -0,0 +1,29 @@ +# standard variables +prefix=@FINAL_LOCATION@ +exec_prefix=${prefix} +bindir=${prefix}/bin/@ARCH@ +libdir=${prefix}/lib/@ARCH@ + +# non-standard variables + +# EPICS Base install location +FINAL_LOCATION=${prefix} +ARCH=@ARCH@ +OS_CLASS=@OS_CLASS@ +CMPLR_CLASS=@CMPLR_CLASS@ + +# Directories + +includedir_osi=${prefix}/include +includedir_osd=${prefix}/include/os/@OS_CLASS@ +includedir_comp=${prefix}/include/compiler/@CMPLR_CLASS@ + +includedirs=${includedir_osi} ${includedir_osd} ${includedir_comp} + +dbddir=${prefix}/dbd +dbdir=${prefix}/db + +Name: epics-base +Version: @EPICS_VERSION@.@EPICS_REVISION@.@EPICS_MODIFICATION@.@EPICS_PATCH_LEVEL@ +Description: EPICS Base for the host arch +Requires: epics-base-@ARCH@ = @EPICS_VERSION@.@EPICS_REVISION@.@EPICS_MODIFICATION@.@EPICS_PATCH_LEVEL@ diff --git a/src/tools/expandVars.pl b/src/tools/expandVars.pl index 5015fe07a..76e35e259 100644 --- a/src/tools/expandVars.pl +++ b/src/tools/expandVars.pl @@ -49,9 +49,9 @@ expandRelease(\%vars); $vars{'ARCH'} = $opt_a if $opt_a; while ($_ = shift @opt_D) { - my ($var, $val) = split /=/; - $vars{$var} = $val; - print "$var = $val\n" if $opt_d; + m/^ (\w+) \s* = \s* (.*) $/x; + $vars{$1} = $2; + print "$1 = $2\n" if $opt_d; } # Do it!