Răsfoiți Sursa

Merged revisions 2255-2256,2278 via svnmerge from
http://[email protected]/svn/fpc/trunk

........
r2255 | florian | 2006-01-11 22:20:55 +0100 (Wed, 11 Jan 2006) | 2 lines

+ make shared implemented

........
r2256 | florian | 2006-01-11 22:38:52 +0100 (Wed, 11 Jan 2006) | 2 lines

* proper handling of build units and implicit units for shared libs

........
r2278 | florian | 2006-01-13 20:36:53 +0100 (Fri, 13 Jan 2006) | 2 lines

* install shared library only if it exists

........

git-svn-id: branches/fixes_2_0@2306 -

peter 19 ani în urmă
părinte
comite
8f0631ecc5
4 a modificat fișierele cu 340 adăugiri și 188 ștergeri
  1. 126 5
      utils/fpcm/Makefile
  2. 173 165
      utils/fpcm/fpcmake.inc
  3. 30 8
      utils/fpcm/fpcmake.ini
  4. 11 10
      utils/fpcm/fpcmwr.pp

+ 126 - 5
utils/fpcm/Makefile

@@ -1,5 +1,5 @@
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2005/11/08]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2006/01/16]
 #
 default: all
 MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-emx i386-watcom i386-netwlibc i386-wince m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos powerpc-linux powerpc-netbsd powerpc-macos powerpc-darwin powerpc-morphos sparc-linux sparc-netbsd sparc-solaris x86_64-linux x86_64-freebsd x86_64-win64 arm-linux arm-wince powerpc64-linux
@@ -747,6 +747,9 @@ endif
 ifndef INSTALL_DATADIR
 INSTALL_DATADIR=$(INSTALL_BASEDIR)
 endif
+ifndef INSTALL_SHAREDDIR
+INSTALL_SHAREDDIR=$(INSTALL_PREFIX)/lib
+endif
 ifdef CROSSCOMPILE
 ifndef CROSSBINDIR
 CROSSBINDIR:=$(wildcard $(CROSSTARGETDIR)/bin/$(SOURCESUFFIX))
@@ -793,6 +796,7 @@ ASMEXT=.s
 SMARTEXT=.sl
 STATICLIBEXT=.a
 SHAREDLIBEXT=.so
+SHAREDLIBPREFIX=libfp
 STATICLIBPREFIX=libp
 RSTEXT=.rst
 ifeq ($(findstring 1.0.,$(FPC_VERSION)),)
@@ -1321,6 +1325,7 @@ endif
 override REQUIRE_PACKAGES=rtl fcl
 ifeq ($(FULL_TARGET),i386-linux)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
 REQUIRE_PACKAGES_NETDB=1
 REQUIRE_PACKAGES_LIBASYNC=1
@@ -1335,6 +1340,7 @@ REQUIRE_PACKAGES_SQLITE=1
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
 REQUIRE_PACKAGES_FCL=1
 REQUIRE_PACKAGES_PASJPEG=1
@@ -1343,6 +1349,7 @@ REQUIRE_PACKAGES_LIBASYNC=1
 endif
 ifeq ($(FULL_TARGET),i386-win32)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
 REQUIRE_PACKAGES_NETDB=1
 REQUIRE_PACKAGES_FCL=1
@@ -1356,6 +1363,7 @@ REQUIRE_PACKAGES_LIBASYNC=1
 endif
 ifeq ($(FULL_TARGET),i386-os2)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
 REQUIRE_PACKAGES_NETDB=1
 REQUIRE_PACKAGES_FCL=1
@@ -1364,6 +1372,7 @@ REQUIRE_PACKAGES_LIBASYNC=1
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
 REQUIRE_PACKAGES_NETDB=1
 REQUIRE_PACKAGES_LIBASYNC=1
@@ -1378,6 +1387,7 @@ REQUIRE_PACKAGES_SQLITE=1
 endif
 ifeq ($(FULL_TARGET),i386-beos)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
 REQUIRE_PACKAGES_FCL=1
 REQUIRE_PACKAGES_PASJPEG=1
@@ -1386,6 +1396,7 @@ REQUIRE_PACKAGES_LIBASYNC=1
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
 REQUIRE_PACKAGES_NETDB=1
 REQUIRE_PACKAGES_LIBASYNC=1
@@ -1399,6 +1410,7 @@ REQUIRE_PACKAGES_SQLITE=1
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
 REQUIRE_PACKAGES_FCL=1
 REQUIRE_PACKAGES_PASJPEG=1
@@ -1407,6 +1419,7 @@ REQUIRE_PACKAGES_LIBASYNC=1
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
 REQUIRE_PACKAGES_FCL=1
 REQUIRE_PACKAGES_PASJPEG=1
@@ -1415,6 +1428,7 @@ REQUIRE_PACKAGES_LIBASYNC=1
 endif
 ifeq ($(FULL_TARGET),i386-netware)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
 REQUIRE_PACKAGES_FCL=1
 REQUIRE_PACKAGES_PASJPEG=1
@@ -1423,6 +1437,7 @@ REQUIRE_PACKAGES_LIBASYNC=1
 endif
 ifeq ($(FULL_TARGET),i386-openbsd)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
 REQUIRE_PACKAGES_NETDB=1
 REQUIRE_PACKAGES_LIBASYNC=1
@@ -1436,6 +1451,7 @@ REQUIRE_PACKAGES_SQLITE=1
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
 REQUIRE_PACKAGES_FCL=1
 REQUIRE_PACKAGES_PASJPEG=1
@@ -1444,6 +1460,7 @@ REQUIRE_PACKAGES_LIBASYNC=1
 endif
 ifeq ($(FULL_TARGET),i386-emx)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
 REQUIRE_PACKAGES_NETDB=1
 REQUIRE_PACKAGES_FCL=1
@@ -1452,6 +1469,7 @@ REQUIRE_PACKAGES_LIBASYNC=1
 endif
 ifeq ($(FULL_TARGET),i386-watcom)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
 REQUIRE_PACKAGES_FCL=1
 REQUIRE_PACKAGES_PASJPEG=1
@@ -1460,6 +1478,7 @@ REQUIRE_PACKAGES_LIBASYNC=1
 endif
 ifeq ($(FULL_TARGET),i386-netwlibc)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
 REQUIRE_PACKAGES_FCL=1
 REQUIRE_PACKAGES_PASJPEG=1
@@ -1468,14 +1487,19 @@ REQUIRE_PACKAGES_LIBASYNC=1
 endif
 ifeq ($(FULL_TARGET),i386-wince)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_NETDB=1
 REQUIRE_PACKAGES_FCL=1
 REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_NETDB=1
+REQUIRE_PACKAGES_IBASE=1
+REQUIRE_PACKAGES_POSTGRES=1
+REQUIRE_PACKAGES_SQLITE=1
 REQUIRE_PACKAGES_LIBASYNC=1
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
 REQUIRE_PACKAGES_NETDB=1
 REQUIRE_PACKAGES_LIBASYNC=1
@@ -1490,6 +1514,7 @@ REQUIRE_PACKAGES_SQLITE=1
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
 REQUIRE_PACKAGES_NETDB=1
 REQUIRE_PACKAGES_LIBASYNC=1
@@ -1504,6 +1529,7 @@ REQUIRE_PACKAGES_SQLITE=1
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
 REQUIRE_PACKAGES_NETDB=1
 REQUIRE_PACKAGES_LIBASYNC=1
@@ -1517,6 +1543,7 @@ REQUIRE_PACKAGES_SQLITE=1
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
 REQUIRE_PACKAGES_FCL=1
 REQUIRE_PACKAGES_PASJPEG=1
@@ -1525,6 +1552,7 @@ REQUIRE_PACKAGES_LIBASYNC=1
 endif
 ifeq ($(FULL_TARGET),m68k-atari)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
 REQUIRE_PACKAGES_FCL=1
 REQUIRE_PACKAGES_PASJPEG=1
@@ -1533,6 +1561,7 @@ REQUIRE_PACKAGES_LIBASYNC=1
 endif
 ifeq ($(FULL_TARGET),m68k-openbsd)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
 REQUIRE_PACKAGES_NETDB=1
 REQUIRE_PACKAGES_LIBASYNC=1
@@ -1546,6 +1575,7 @@ REQUIRE_PACKAGES_SQLITE=1
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
 REQUIRE_PACKAGES_FCL=1
 REQUIRE_PACKAGES_PASJPEG=1
@@ -1554,6 +1584,7 @@ REQUIRE_PACKAGES_LIBASYNC=1
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
 REQUIRE_PACKAGES_NETDB=1
 REQUIRE_PACKAGES_LIBASYNC=1
@@ -1568,6 +1599,7 @@ REQUIRE_PACKAGES_SQLITE=1
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
 REQUIRE_PACKAGES_NETDB=1
 REQUIRE_PACKAGES_LIBASYNC=1
@@ -1581,6 +1613,7 @@ REQUIRE_PACKAGES_SQLITE=1
 endif
 ifeq ($(FULL_TARGET),powerpc-macos)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
 REQUIRE_PACKAGES_FCL=1
 REQUIRE_PACKAGES_PASJPEG=1
@@ -1589,6 +1622,7 @@ REQUIRE_PACKAGES_LIBASYNC=1
 endif
 ifeq ($(FULL_TARGET),powerpc-darwin)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
 REQUIRE_PACKAGES_NETDB=1
 REQUIRE_PACKAGES_LIBASYNC=1
@@ -1603,6 +1637,7 @@ REQUIRE_PACKAGES_SQLITE=1
 endif
 ifeq ($(FULL_TARGET),powerpc-morphos)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
 REQUIRE_PACKAGES_FCL=1
 REQUIRE_PACKAGES_PASJPEG=1
@@ -1611,6 +1646,7 @@ REQUIRE_PACKAGES_LIBASYNC=1
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
 REQUIRE_PACKAGES_NETDB=1
 REQUIRE_PACKAGES_LIBASYNC=1
@@ -1625,6 +1661,7 @@ REQUIRE_PACKAGES_SQLITE=1
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
 REQUIRE_PACKAGES_NETDB=1
 REQUIRE_PACKAGES_LIBASYNC=1
@@ -1638,6 +1675,7 @@ REQUIRE_PACKAGES_SQLITE=1
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
 REQUIRE_PACKAGES_FCL=1
 REQUIRE_PACKAGES_PASJPEG=1
@@ -1646,6 +1684,7 @@ REQUIRE_PACKAGES_LIBASYNC=1
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
 REQUIRE_PACKAGES_NETDB=1
 REQUIRE_PACKAGES_LIBASYNC=1
@@ -1660,6 +1699,7 @@ REQUIRE_PACKAGES_SQLITE=1
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
 REQUIRE_PACKAGES_NETDB=1
 REQUIRE_PACKAGES_LIBASYNC=1
@@ -1674,6 +1714,7 @@ REQUIRE_PACKAGES_SQLITE=1
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
 REQUIRE_PACKAGES_FCL=1
 REQUIRE_PACKAGES_PASJPEG=1
@@ -1682,6 +1723,7 @@ REQUIRE_PACKAGES_LIBASYNC=1
 endif
 ifeq ($(FULL_TARGET),arm-linux)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
 REQUIRE_PACKAGES_NETDB=1
 REQUIRE_PACKAGES_LIBASYNC=1
@@ -1696,14 +1738,19 @@ REQUIRE_PACKAGES_SQLITE=1
 endif
 ifeq ($(FULL_TARGET),arm-wince)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_NETDB=1
 REQUIRE_PACKAGES_FCL=1
 REQUIRE_PACKAGES_PASJPEG=1
-REQUIRE_PACKAGES_NETDB=1
+REQUIRE_PACKAGES_IBASE=1
+REQUIRE_PACKAGES_POSTGRES=1
+REQUIRE_PACKAGES_SQLITE=1
 REQUIRE_PACKAGES_LIBASYNC=1
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
 REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_HASH=1
 REQUIRE_PACKAGES_PASZLIB=1
 REQUIRE_PACKAGES_NETDB=1
 REQUIRE_PACKAGES_LIBASYNC=1
@@ -1742,6 +1789,32 @@ ifdef UNITDIR_RTL
 override COMPILER_UNITDIR+=$(UNITDIR_RTL)
 endif
 endif
+ifdef REQUIRE_PACKAGES_HASH
+PACKAGEDIR_HASH:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /hash/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_HASH),)
+ifneq ($(wildcard $(PACKAGEDIR_HASH)/units/$(TARGETSUFFIX)),)
+UNITDIR_HASH=$(PACKAGEDIR_HASH)/units/$(TARGETSUFFIX)
+else
+UNITDIR_HASH=$(PACKAGEDIR_HASH)
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_HASH)/$(FPCMADE):
+	$(MAKE) -C $(PACKAGEDIR_HASH) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_HASH)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_HASH=
+UNITDIR_HASH:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /hash/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_HASH),)
+UNITDIR_HASH:=$(firstword $(UNITDIR_HASH))
+else
+UNITDIR_HASH=
+endif
+endif
+ifdef UNITDIR_HASH
+override COMPILER_UNITDIR+=$(UNITDIR_HASH)
+endif
+endif
 ifdef REQUIRE_PACKAGES_PASZLIB
 PACKAGEDIR_PASZLIB:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Makefile.fpc,$(PACKAGESDIR))))))
 ifneq ($(PACKAGEDIR_PASZLIB),)
@@ -2135,6 +2208,14 @@ ifeq ($(FPC_VERSION),1.0.6)
 override FPCOPTDEF+=HASUNIX
 endif
 endif
+ifdef CREATESHARED
+override FPCOPT+=-Cg
+ifeq ($(CPU_TARGET),i386)
+override FPCOPT+=-Aas
+endif
+endif
+ifdef LINKSHARED
+endif
 ifdef GCCLIBDIR
 override FPCOPT+=-Fl$(GCCLIBDIR)
 endif
@@ -2155,6 +2236,14 @@ override FPCEXTCMD:=$(FPCOPT)
 override FPCOPT:=!FPCEXTCMD
 export FPCEXTCMD
 endif
+override AFULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
+override AFULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
+ifneq ($(AFULL_TARGET),$(AFULL_SOURCE))
+override ACROSSCOMPILE=1
+endif
+ifdef ACROSSCOMPILE
+override FPCOPT+=$(CROSSOPT)
+endif
 override COMPILER:=$(FPC) $(FPCOPT)
 ifeq (,$(findstring -s ,$(COMPILER)))
 EXECPPAS=
@@ -2184,7 +2273,7 @@ ifdef TARGET_RSTS
 override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
 override CLEANRSTFILES+=$(RSTFILES)
 endif
-.PHONY: fpc_all fpc_smart fpc_debug fpc_release
+.PHONY: fpc_all fpc_smart fpc_debug fpc_release fpc_shared
 $(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET)
 	@$(ECHOREDIR) Compiled > $(FPCMADE)
 fpc_all: $(FPCMADE)
@@ -2225,6 +2314,38 @@ vpath %.lpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
 vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
 vpath %$(OEXT) $(COMPILER_UNITTARGETDIR)
 vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)
+.PHONY: fpc_shared
+override INSTALLTARGET+=fpc_shared_install
+ifndef SHARED_LIBVERSION
+SHARED_LIBVERSION=$(FPC_VERSION)
+endif
+ifndef SHARED_LIBNAME
+SHARED_LIBNAME=$(PACKAGE_NAME)
+endif
+ifndef SHARED_FULLNAME
+SHARED_FULLNAME=$(SHAREDLIBPREFIX)$(SHARED_LIBNAME)-$(SHARED_LIBVERSION)$(SHAREDLIBEXT)
+endif
+ifndef SHARED_LIBUNITS
+SHARED_LIBUNITS:=$(TARGET_UNITS) $(TARGET_IMPLICITUNITS)
+override SHARED_LIBUNITS:=$(filter-out $(INSTALL_BUILDUNIT),$(SHARED_LIBUNITS))
+endif
+fpc_shared:
+ifdef HASSHAREDLIB
+	$(MAKE) all CREATESHARED=1 LINKSHARED=1 CREATESMART=1
+ifneq ($(SHARED_BUILD),n)
+	$(PPUMOVE) -q $(SHARED_LIBUNITS) -i$(COMPILER_UNITTARGETDIR) -o$(SHARED_FULLNAME) -d$(COMPILER_UNITTARGETDIR)
+endif
+else
+	@$(ECHO) Shared Libraries not supported
+endif
+fpc_shared_install:
+ifneq ($(SHARED_BUILD),n)
+ifneq ($(SHARED_LIBUNITS),)
+ifneq ($(wildcard $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME)),)
+	$(INSTALL) $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME) $(INSTALL_SHAREDDIR)
+endif
+endif
+endif
 .PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall
 ifdef INSTALL_UNITS
 override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))
@@ -2483,7 +2604,7 @@ smart: fpc_smart
 release: fpc_release
 units: fpc_units
 examples:
-shared:
+shared: fpc_shared
 install: fpc_install
 sourceinstall: fpc_sourceinstall
 exampleinstall: fpc_exampleinstall

Fișier diff suprimat deoarece este prea mare
+ 173 - 165
utils/fpcm/fpcmake.inc


+ 30 - 8
utils/fpcm/fpcmake.ini

@@ -660,6 +660,10 @@ ifndef INSTALL_DATADIR
 INSTALL_DATADIR=$(INSTALL_BASEDIR)
 endif
 
+ifndef INSTALL_SHAREDDIR
+INSTALL_SHAREDDIR=$(INSTALL_PREFIX)/lib
+endif
+
 #####################################################################
 # Cross compile dirs
 #####################################################################
@@ -1367,6 +1371,11 @@ endif
 
 endif
 
+ifdef LINKSHARED
+#!!! deactived for testing override FPCOPT+=-XD
+endif
+
+
 [command_libc]
 # Add GCC lib path if asked
 ifdef GCCLIBDIR
@@ -1557,7 +1566,7 @@ fpc_examples: all $(EXAMPLEFILES) $(addsuffix _all,$(TARGET_EXAMPLEDIRS))
 # General compile rules
 #####################################################################
 
-.PHONY: fpc_all fpc_smart fpc_debug fpc_release
+.PHONY: fpc_all fpc_smart fpc_debug fpc_release fpc_shared
 
 $(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET)
         @$(ECHOREDIR) Compiled > $(FPCMADE)
@@ -1618,38 +1627,51 @@ vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
 vpath %$(OEXT) $(COMPILER_UNITTARGETDIR)
 vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)
 
-[libraryrules]
+[sharedrules]
 #####################################################################
 # Library
 #####################################################################
 
 .PHONY: fpc_shared
 
+override INSTALLTARGET+=fpc_shared_install
+
 ifndef SHARED_LIBVERSION
 SHARED_LIBVERSION=$(FPC_VERSION)
 endif
 
-ifndef $(SHARED_LIBNAME)
+ifndef SHARED_LIBNAME
 SHARED_LIBNAME=$(PACKAGE_NAME)
 endif
 
-ifndef LIB_FULLNAME
-SHARED_FULLNAME=$(SHAREDLIBPREFIX)$(SHARED_LIBNAME)-$(SHARED_LIBVERSION)
+ifndef SHARED_FULLNAME
+SHARED_FULLNAME=$(SHAREDLIBPREFIX)$(SHARED_LIBNAME)-$(SHARED_LIBVERSION)$(SHAREDLIBEXT)
 endif
 
 # Default sharedlib units are all unit objects
 ifndef SHARED_LIBUNITS
-SHARED_LIBUNITS:=$(TARGET_UNITS)
+SHARED_LIBUNITS:=$(TARGET_UNITS) $(TARGET_IMPLICITUNITS)
+override SHARED_LIBUNITS:=$(filter-out $(INSTALL_BUILDUNIT),$(SHARED_LIBUNITS))
 endif
 
 fpc_shared:
 ifdef HASSHAREDLIB
-        $(MAKE) all CREATESHARED=1 LINKSMART=1 CREATESMART=1
-        $(PPUMOVE) -q $(SHARED_LIBUNITS) -i$(COMPILER_UNITTARGETDIR) -o$(SHARED_FULLNAME)
+        $(MAKE) all CREATESHARED=1 LINKSHARED=1 CREATESMART=1
+ifneq ($(SHARED_BUILD),n)
+        $(PPUMOVE) -q $(SHARED_LIBUNITS) -i$(COMPILER_UNITTARGETDIR) -o$(SHARED_FULLNAME) -d$(COMPILER_UNITTARGETDIR)
+endif
 else
         @$(ECHO) Shared Libraries not supported
 endif
 
+fpc_shared_install:
+ifneq ($(SHARED_BUILD),n)
+ifneq ($(SHARED_LIBUNITS),)
+ifneq ($(wildcard $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME)),)
+        $(INSTALL) $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME) $(INSTALL_SHAREDDIR)
+endif
+endif
+endif
 
 [installrules]
 #####################################################################

+ 11 - 10
utils/fpcm/fpcmwr.pp

@@ -24,7 +24,7 @@ interface
       tsections=(sec_none,
         sec_units,sec_exes,sec_loaders,sec_examples,sec_rsts,
         sec_compile,sec_install,
-        sec_distinstall,sec_zipinstall,sec_clean,sec_libs,
+        sec_distinstall,sec_zipinstall,sec_clean,sec_shared,
         sec_command,sec_exts,sec_dirs,sec_tools,sec_info,sec_makefile
       );
 
@@ -53,7 +53,7 @@ interface
       rule2sec : array[trules] of tsections=(
         sec_compile,sec_compile,sec_compile,sec_compile,sec_compile,
         sec_examples,
-        sec_libs,
+        sec_shared,
         sec_install,sec_install,sec_install,sec_distinstall,
         sec_zipinstall,sec_zipinstall,sec_zipinstall,sec_zipinstall,
         sec_clean,sec_clean,sec_clean,
@@ -641,9 +641,7 @@ implementation
            FHasSection[sec_zipinstall]:=false;
            FHasSection[sec_distinstall]:=false;
          end;
-        { can't get shared lib generation working without it (FK)
-          FHasSection[sec_libs]:=FInput.HasVariable('lib_name');
-        }
+
         { Remove unused sections for targets }
         SkippedSecs:=0;
         if (not FInput.HasTargetVariable('target_units')) then
@@ -673,6 +671,7 @@ implementation
           generic compile rules }
         if SkippedSecs=4 then
          begin
+           FHasSection[sec_shared]:=false;
            FHasSection[sec_compile]:=false;
            if (not FInput.HasTargetVariable('package_name')) and
               (not FInput.HasTargetVariable('install_units')) and
@@ -782,9 +781,11 @@ implementation
            AddTargetVariable('compiler_targetdir');
            AddTargetVariable('compiler_unittargetdir');
            { shared }
-           AddTargetVariable('shared_libname');
-           AddTargetVariable('shared_libversion');
-           AddTargetVariable('shared_libunits');
+           AddVariable('shared_build');
+           AddVariable('shared_libname');
+           AddVariable('shared_libversion');
+           AddVariable('shared_libunits');
+           AddVariable('shared_build');
            { default Dirs and extensions }
            AddIniSection('defaultdirs');
            if FInput.CheckLibcRequire then
@@ -813,8 +814,8 @@ implementation
             AddIniSection('examplerules');
            if FHasSection[sec_compile] then
             AddIniSection('compilerules');
-           if FHasSection[sec_libs] then
-             AddIniSection('libraryrules');
+           if FHasSection[sec_shared] then
+             AddIniSection('sharedrules');
            { install }
            if FHasSection[sec_install] then
             AddIniSection('installrules');

Unele fișiere nu au fost afișate deoarece prea multe fișiere au fost modificate în acest diff