Preliminary support for installing and resolving pkg-config files

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/tools/make/trunk@39968 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Niels Grewe 2016-07-08 13:09:17 +00:00
parent 0d321a188b
commit b3c4eb94ca
10 changed files with 596 additions and 419 deletions

View file

@ -1,4 +1,21 @@
2015-06-29 Niels Grewe <niels.grewe@halbordnung.de>
2016-07-08 Niels Grewe <niels.grewe@halbordnung.de>
* GNUstep.conf.in
* GNUstep.csh.in
* GNUstep.sh.in
* Instance/Shared/pkgconfig.make
* Instance/framework.make
* Instance/library.make
* config-noarch.make.in
* configure
* configure.ac
* messages.make
Preliminary support for pkg-config files. The GNUstep.sh scripts
set the PKG_CONFIG_PATH and $(INSTANCE)_PKGCONFIG_FILES can be used
to specify the files to install.
2016-06-29 Niels Grewe <niels.grewe@halbordnung.de>
* Instance/framework.make: Fix installation of Resources symlinks.

View file

@ -1,3 +1,4 @@
# This file must be sourced inside csh using: source
#
# @configure_input@
@ -126,6 +127,8 @@ if ( ! ${?LIBRARY_COMBO} ) then
setenv LIBRARY_COMBO "@ac_cv_library_combo@"
endif
setenv GNUSTEP_HAS_PKGCONFIG "@GNUSTEP_HAS_PKGCONFIG@"
if ( ! ${?GNUSTEP_MAKEFILES} ) then
setenv GNUSTEP_MAKEFILES "@GNUSTEP_MAKEFILES@"
endif
@ -342,6 +345,31 @@ end
unset dir
if ( "${GNUSTEP_HAS_PKGCONFIG}" == "yes" ) then
set GNUSTEP_PKGCONFIG_FRAGMENT=pkgconfig
set GNUSTEP_PKGCONFIG_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_LIBRARIES" "$GNUSTEP_LOCAL_LIBRARIES" "$GNUSTEP_NETWORK_LIBRARIES" "$GNUSTEP_SYSTEM_LIBRARIES" $fixup_paths`
foreach dir ( `/bin/sh -c 'IFS=:; for i in '"${GNUSTEP_PKGCONFIG_PATHLIST}"'; do echo $i; done'` )
if ( "$GNUSTEP_IS_FLATTENED" == "yes" ) then
set path_fragment="$dir/$GNUSTEP_PKGCONFIG_FRAGMENT"
else
set path_fragment="$dir/$GNUSTEP_HOST_CPU-$GNUSTEP_HOST_OS/$LIBRARY_COMBO/$GNUSTEP_PKGCONFIG_FRAGMENT:$dir/$GNUSTEP_HOST_CPU-$GNUSTEP_HOST_OS/$GNUSTEP_PKGCONFIG_FRAGMENT"
endif
if ( $?PKG_CONFIG_PATH == 0 ) then
setenv PKG_CONFIG_PATH "${path_fragment}"
else if ( { (echo ":${PKG_CONFIG_PATH}:"\
|grep -v ":${path_fragment}:" >/dev/null) } ) then
setenv PKG_CONFIG_PATH "${path_fragment}:${PKG_CONFIG_PATH}"
endif
end
unset path_fragment dir
unset GNUSTEP_PKGCONFIG_PATHLIST GNUSTEP_PKGCONFIG_FRAGMENT
endif
if ( "${GNUSTEP_MAKE_STRICT_V2_MODE}" == "yes" ) then
unsetenv GNUSTEP_IS_FLATTENED
unsetenv LIBRARY_COMBO
@ -416,4 +444,3 @@ unsetenv GNUSTEP_USER_DOC_INFO
unsetenv GNUSTEP_SYSTEM_USERS_DIR
unsetenv GNUSTEP_LOCAL_USERS_DIR
unsetenv GNUSTEP_NETWORK_USERS_DIR

View file

@ -1,3 +1,4 @@
# This file must be sourced inside (ba)sh using: .
#
# @configure_input@
@ -168,6 +169,9 @@ if [ ! "$GNUSTEP_MAKE_STRICT_V2_MODE" = "yes" ]; then
# is defined - at the end of the script.
fi
GNUSTEP_HAS_PKGCONFIG=@GNUSTEP_HAS_PKGCONFIG@
if [ -z "$GNUSTEP_MAKEFILES" ]; then
GNUSTEP_MAKEFILES=@GNUSTEP_MAKEFILES@
fi
@ -548,6 +552,44 @@ unset dir
unset GNUSTEP_INFO_PATHLIST
export INFOPATH
if [ "$GNUSTEP_HAS_PKGCONFIG" = "yes" ]; then
# Determine the library paths
GNUSTEP_PKGCONFIG_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_LIBRARIES" "$GNUSTEP_LOCAL_LIBRARIES" "$GNUSTEP_NETWORK_LIBRARIES" "$GNUSTEP_SYSTEM_LIBRARIES" $fixup_paths`
old_IFS="$IFS"
IFS=:
GNUSTEP_PKGCONFIG_FRAGMENT=pkgconfig
for dir in $GNUSTEP_PKGCONFIG_PATHLIST; do
# prepare the path_fragment for libraries and this dir
if [ "$GNUSTEP_IS_FLATTENED" = "yes" ]; then
path_fragment="$dir/$GNUSTEP_PKGCONFIG_FRAGMENT"
else
path_fragment="$dir/$GNUSTEP_HOST_CPU-$GNUSTEP_HOST_OS/$LIBRARY_COMBO/$GNUSTEP_PKGCONFIG_FRAGMENT:$dir/$GNUSTEP_HOST_CPU-$GNUSTEP_HOST_OS/$GNUSTEP_PKGCONFIG_FRAGMENT"
fi
if [ -z "$PKG_CONFIG_PATH" ]; then
PKG_CONFIG_PATH="$path_fragment"
else
if ( echo ":${PKG_CONFIG_PATH}:"\
|grep -v ":${path_fragment}:" >/dev/null ); then
PKG_CONFIG_PATH="$path_fragment:$PKG_CONFIG_PATH"
fi
fi
export PKG_CONFIG_PATH
done
IFS="$old_IFS"
unset old_IFS
unset dir
unset path_fragment
unset GNUSTEP_PKGCONFIG_FRAGMENT
unset GNUSTEP_PKGCONFIG_PATHLIST
unset GNUSTEP_HAS_PKGCONFIG
fi # [ "$GNUSTEP_HAS_PKGCONFIG" = "yes" ]
#
# Clean up the environment by removing the filesystem variables. Do
# it unless we were explicitly requested not to clean it up! Mostly

View file

@ -0,0 +1,87 @@
# -*-makefile-*-
# Instance/Shared/pkgconifg.make
#
# Makefile fragment with rules for installing pkg-config files
#
# Copyright (C) 2016 Free Software Foundation, Inc.
#
# Author: Niels Grewe <niels.grewe@halbordnugn.de>
#
# This file is part of the GNUstep Makefile Package.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 3
# of the License, or (at your option) any later version.
#
# You should have received a copy of the GNU General Public
# License along with this library; see the file COPYING.
# If not, write to the Free Software Foundation,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# input variables:
#
# $(GNUSTEP_INSTANCE)_PKGCONFIG_FILES : the list of .pc files to install
#
#
#
# public targets:
#
# shared-instance-pkgconfig-install
# shared-instance-pkgconfig-uninstall
#
# Only add the pc files if pkg-config is enabled in gnustep-make
ifeq ($(GNUSTEP_HAS_PKGCONFIG),yes)
PC_FILES = $($(GNUSTEP_INSTANCE)_PKGCONFIG_FILES)
endif
.PHONY: \
shared-instance-pkgconfig-install \
shared-instance-pkgconfig-uninstall
# This is either the case if no pkg-config files are set or pkg-config has been
# disabled
ifeq ($(PC_FILES),)
shared-instance-pkgconfig-install:
shared-instance-pkgconfig-uninstall:
else # PC_FILES non-emtpy
ifeq ($(GNUSTEP_PKGCONFIG_FRAGMENT),)
GNUSTEP_PKGCONFIG_FRAGMENT=pkgconfig
endif
ifneq ($($(GNUSTEP_INSTANCE)_INSTALL_DIR),)
PC_INSTALL_DIR = $($(GNUSTEP_INSTANCE)_INSTALL_DIR)/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_PKGCONFIG_FRAGMENT)
else
PC_INSTALL_DIR = $(GNUSTEP_LIBRARIES)/$(GNUSTEP_TARGET_LDIR)/$(GNUSTEP_PKGCONFIG_FRAGMENT)
endif
shared-instance-pkgconfig-install: $(PC_INSTALL_DIR)
$(ECHO_INSTALLING_PKGCONFIG)for file in $(PC_FILES) __done; do \
if [ $$file != __done ]; then \
$(INSTALL_DATA) $$file \
$(PC_INSTALL_DIR)/$$file; \
fi; \
done$(END_ECHO)
# Create the installation directory
$(PC_INSTALL_DIR):
$(ECHO_CREATING)$(MKINSTALLDIRS) $@$(END_ECHO)
shared-instance-pkgconfig-uninstall:
$(ECHO_NOTHING)for file in $(PC_FILES) __done; do \
if [ $$file != __done ]; then \
rm -rf $(PC_INSTALL_DIR)/$$file ; \
fi; \
done$(END_ECHO)
-$(ECHO_NOTHING)rmdir $(PC_INSTALL_DIR)$(END_ECHO)
endif # PC_FILES = ''

View file

@ -176,6 +176,7 @@ FRAMEWORK_VERSION_DIR = $(GNUSTEP_BUILD_DIR)/$(FRAMEWORK_VERSION_DIR_NAME)
# that we need to manage and install. So we assume by default that we
# have some headers even if HEADER_FILES is empty.
include $(GNUSTEP_MAKEFILES)/Instance/Shared/headers.make
include $(GNUSTEP_MAKEFILES)/Instance/Shared/pkgconfig.make
# On windows, this is unfortunately required.
ifeq ($(BUILD_DLL), yes)
@ -660,7 +661,7 @@ ifeq ($(FOUNDATION_LIB),gnu)
internal-framework-install_:: $(FRAMEWORK_INSTALL_DIR) \
$(GNUSTEP_LIBRARIES)/$(GNUSTEP_TARGET_LDIR) \
$(GNUSTEP_HEADERS)
$(GNUSTEP_HEADERS) shared-instance-pkgconfig-install
$(ECHO_INSTALLING)(cd $(GNUSTEP_BUILD_DIR); \
$(TAR) cfX - $(GNUSTEP_MAKEFILES)/tar-exclude-list \
$(FRAMEWORK_DIR_NAME)) \
@ -776,7 +777,7 @@ $(GNUSTEP_HEADERS):
ifneq ($(BUILD_DLL), yes)
# NB: We use '$(RM_LN_S)' to remove the symlinks to insure
# that we do not remove customized real directories.
internal-framework-uninstall_::
internal-framework-uninstall_:: shared-instance-pkgconfig-uninstall
$(ECHO_UNINSTALLING)if [ "$(HEADER_FILES)" != "" ]; then \
for file in $(HEADER_FILES) __done; do \
if [ $$file != __done ]; then \

View file

@ -32,6 +32,7 @@ include $(GNUSTEP_MAKEFILES)/rules.make
endif
include $(GNUSTEP_MAKEFILES)/Instance/Shared/headers.make
include $(GNUSTEP_MAKEFILES)/Instance/Shared/pkgconfig.make
#
# The name of the library (including the 'lib' prefix) is
@ -296,7 +297,8 @@ endif
#
internal-library-install_:: internal-install-dirs \
internal-install-lib \
shared-instance-headers-install
shared-instance-headers-install \
shared-instance-pkgconfig-install
# Depend on creating all the dirs
internal-install-dirs:: $(FINAL_LIBRARY_INSTALL_DIR) \
@ -326,7 +328,7 @@ internal-install-lib::
fi$(END_ECHO)
endif
internal-library-uninstall_:: shared-instance-headers-uninstall
internal-library-uninstall_:: shared-instance-headers-uninstall shared-instance-pkgconfig-uninstall
$(ECHO_UNINSTALLING)rm -f $(FINAL_LIBRARY_INSTALL_DIR)/$(VERSION_LIBRARY_FILE) \
$(FINAL_LIBRARY_INSTALL_DIR)/$(LIBRARY_FILE) \
$(FINAL_LIBRARY_INSTALL_DIR)/$(SONAME_LIBRARY_FILE)$(END_ECHO)

View file

@ -115,6 +115,8 @@ else
endif
GNUSTEP_IS_FLATTENED = @GNUSTEP_IS_FLATTENED@
GNUSTEP_HAS_PKGCONFIG = @GNUSTEP_HAS_PKGCONFIG@
ifeq ($(GNUSTEP_MAKE_STRICT_V2_MODE),yes)
GNUSTEP_USER_ROOT = $(error GNUSTEP_USER_ROOT is obsolete)
else

669
configure vendored

File diff suppressed because it is too large Load diff

View file

@ -43,6 +43,8 @@ targetArgument=${target}
AC_CANONICAL_TARGET([])
AC_PATH_PROG(GNUSTEP_HAS_PKGCONFIG, pkgconfig, yes, no)
#--------------------------------------------------------------------
# Setup the library combination
#--------------------------------------------------------------------

View file

@ -79,6 +79,10 @@ ifneq ($(messages),yes)
ECHO_INSTALLING_ADD_CLASS_FILES = @(echo " Installing nested class files...";
ECHO_INSTALLING_PROPERTIES_FILES = @(echo " Installing property files...";
ECHO_CREATING_JAR_FILE = @(echo " Creating jar file...";
# Instance/Shared/pkgconfig.make
ECHO_INSTALLING_PKGCONFIG = @(echo " Installing pkg-config files...";
# Instance/Shared/stamp-string.make
ECHO_CREATING_STAMP_FILE = @(echo " Creating stamp file...";