diff --git a/lang/Makefile b/lang/Makefile index ff26605973bd..61bf1f1c69e4 100644 --- a/lang/Makefile +++ b/lang/Makefile @@ -1,388 +1,389 @@ COMMENT = Programming languages SUBDIR += abcl SUBDIR += alchemist.el SUBDIR += algol68g SUBDIR += angelscript SUBDIR += antimony SUBDIR += apache-commons-jelly SUBDIR += asn1c SUBDIR += atlast SUBDIR += awka SUBDIR += bas2tap SUBDIR += basic256 SUBDIR += bsh SUBDIR += bwbasic SUBDIR += c SUBDIR += cairo SUBDIR += cbmbasic SUBDIR += ccl SUBDIR += ceylon SUBDIR += cfortran SUBDIR += chaiscript SUBDIR += chez-scheme SUBDIR += chibi-scheme SUBDIR += chicken SUBDIR += cim SUBDIR += cjs SUBDIR += cling SUBDIR += clips SUBDIR += clisp SUBDIR += clojure SUBDIR += clojure-mode.el SUBDIR += clover SUBDIR += cocor SUBDIR += coffeescript SUBDIR += colm SUBDIR += cparser SUBDIR += crystal SUBDIR += csharp-mode.el SUBDIR += cython SUBDIR += cython-devel SUBDIR += cython3 SUBDIR += dhall SUBDIR += dlang-tools SUBDIR += duktape SUBDIR += duktape-lib SUBDIR += ecl SUBDIR += eisl SUBDIR += elixir SUBDIR += elixir-devel SUBDIR += elixir-mode.el SUBDIR += elk SUBDIR += elm SUBDIR += emacs-lisp-intro SUBDIR += emilua SUBDIR += erlang SUBDIR += erlang-doc SUBDIR += erlang-java SUBDIR += erlang-man SUBDIR += erlang-runtime21 SUBDIR += erlang-runtime22 SUBDIR += erlang-runtime23 SUBDIR += erlang-runtime24 SUBDIR += erlang-runtime25 SUBDIR += erlang-runtime26 SUBDIR += erlang-wx SUBDIR += execline SUBDIR += expect SUBDIR += f2c SUBDIR += fasm SUBDIR += fennel SUBDIR += ferite SUBDIR += ficl SUBDIR += fpc SUBDIR += fpc-base + SUBDIR += fpc-devel SUBDIR += fpc-docs SUBDIR += fpc-lua SUBDIR += fpc-pastojs SUBDIR += fpc-rexx SUBDIR += fpc-rtl-console SUBDIR += fpc-rtl-extra SUBDIR += fpc-rtl-generics SUBDIR += fpc-rtl-objpas SUBDIR += fpc-rtl-unicode SUBDIR += fpc-source SUBDIR += fpc-units SUBDIR += fpc-utils SUBDIR += frawk SUBDIR += fsharp SUBDIR += fth SUBDIR += gambit-c SUBDIR += gauche SUBDIR += gawk SUBDIR += gcc SUBDIR += gcc10 SUBDIR += gcc11 SUBDIR += gcc11-devel SUBDIR += gcc12 SUBDIR += gcc12-devel SUBDIR += gcc13 SUBDIR += gcc13-devel SUBDIR += gcc14-devel SUBDIR += gcc48 SUBDIR += gcc6-aux SUBDIR += gcc8 SUBDIR += gcc9 SUBDIR += gforth SUBDIR += ghc SUBDIR += ghc810 SUBDIR += ghc92 SUBDIR += gir-to-d SUBDIR += gjs SUBDIR += gleam SUBDIR += gnat12 SUBDIR += gnatcross-binutils-aarch64 SUBDIR += gnatcross-sysroot-aarch64 SUBDIR += gnatdroid-binutils SUBDIR += gnatdroid-binutils-x86 SUBDIR += gnatdroid-sysroot SUBDIR += gnatdroid-sysroot-x86 SUBDIR += gnu-apl SUBDIR += gnu-cobol SUBDIR += gnustep-base SUBDIR += go SUBDIR += go-devel SUBDIR += go119 SUBDIR += go120 SUBDIR += go121 SUBDIR += gomacro SUBDIR += gprolog SUBDIR += gravity SUBDIR += groovy SUBDIR += gscheme SUBDIR += guile SUBDIR += guile-aclocal SUBDIR += guile1 SUBDIR += guile2 SUBDIR += guile3 SUBDIR += halide SUBDIR += harec SUBDIR += haskell-mode.el SUBDIR += hermes SUBDIR += hla SUBDIR += hs-brainfuck SUBDIR += hs-futhark SUBDIR += hs-unlambda SUBDIR += huc SUBDIR += icc SUBDIR += intel-compute-runtime SUBDIR += intercal SUBDIR += io SUBDIR += io-devel SUBDIR += itcl SUBDIR += itcl4 SUBDIR += janet SUBDIR += jimtcl SUBDIR += jpm SUBDIR += jruby SUBDIR += julia SUBDIR += jython SUBDIR += kawa SUBDIR += kf5-kross SUBDIR += kotlin SUBDIR += kross-interpreters SUBDIR += kturtle SUBDIR += lafontaine SUBDIR += lci SUBDIR += ldc SUBDIR += lfe SUBDIR += lfortran SUBDIR += libhx SUBDIR += libobjc2 SUBDIR += librep SUBDIR += libstdc++_stldoc_4.2.2 SUBDIR += linux-c7-tcl85 SUBDIR += linux-dotnet-cli SUBDIR += linux-dotnet-runtime SUBDIR += linux-dotnet-sdk SUBDIR += linux-dotnet10-runtime SUBDIR += linux-dotnet11-runtime SUBDIR += linux-dotnet11-sdk SUBDIR += linux-j SUBDIR += lua51 SUBDIR += lua52 SUBDIR += lua53 SUBDIR += lua54 SUBDIR += luajit SUBDIR += luajit-devel SUBDIR += luajit-openresty SUBDIR += malbolge SUBDIR += maude SUBDIR += mawk SUBDIR += mdk SUBDIR += mecrisp-stellaris SUBDIR += micropython SUBDIR += mit-scheme SUBDIR += mixal SUBDIR += mlkit SUBDIR += mlton SUBDIR += mmix SUBDIR += mono SUBDIR += mono-basic SUBDIR += mono5.10 SUBDIR += mono5.20 SUBDIR += mono6.8 SUBDIR += mosh SUBDIR += mosml SUBDIR += mtasc SUBDIR += mujs SUBDIR += munger SUBDIR += myrddin SUBDIR += nawk SUBDIR += nbfc SUBDIR += neko SUBDIR += nesasm SUBDIR += newlisp SUBDIR += nhc98 SUBDIR += nickle SUBDIR += nim SUBDIR += njs SUBDIR += nll SUBDIR += nqc SUBDIR += nwcc SUBDIR += nx SUBDIR += nyan SUBDIR += ocaml SUBDIR += ocaml-autoconf SUBDIR += ocaml-camlidl SUBDIR += ocaml-nox11 SUBDIR += oo2c SUBDIR += opencoarrays SUBDIR += opensycl SUBDIR += ott SUBDIR += owl-lisp SUBDIR += p5-Data-JavaScript SUBDIR += p5-Error SUBDIR += p5-Expect SUBDIR += p5-ExtUtils-F77 SUBDIR += p5-Interpolation SUBDIR += p5-JSAN SUBDIR += p5-JavaScript-Squish SUBDIR += p5-JavaScript-Value-Escape SUBDIR += p5-List-MoreUtils SUBDIR += p5-List-MoreUtils-XS SUBDIR += p5-Marpa SUBDIR += p5-Marpa-PP SUBDIR += p5-Marpa-XS SUBDIR += p5-Modern-Perl SUBDIR += p5-Perl6-Subs SUBDIR += p5-Promises SUBDIR += p5-Pugs-Compiler-Rule SUBDIR += p5-Quantum-Superpositions SUBDIR += p5-Scalar-List-Utils SUBDIR += p5-Switch SUBDIR += p5-Tcl SUBDIR += p5-Test-XPath SUBDIR += p5-Try-Catch SUBDIR += p5-Try-Tiny SUBDIR += p5-Try-Tiny-Retry SUBDIR += p5-TryCatch SUBDIR += p5-ePerl SUBDIR += p5-signatures SUBDIR += p5-v6 SUBDIR += parrot SUBDIR += pbasic SUBDIR += pcc SUBDIR += perl5-devel SUBDIR += perl5.34 SUBDIR += perl5.36 SUBDIR += perl5.38 SUBDIR += petite-chez SUBDIR += pfe SUBDIR += pharo SUBDIR += php-mode.el SUBDIR += php80 SUBDIR += php80-extensions SUBDIR += php81 SUBDIR += php81-extensions SUBDIR += php82 SUBDIR += php82-extensions SUBDIR += php83 SUBDIR += php83-extensions SUBDIR += picoc SUBDIR += plexil SUBDIR += pocl SUBDIR += polyml SUBDIR += pomsky SUBDIR += prql SUBDIR += ptoc SUBDIR += purescript SUBDIR += py-hy SUBDIR += py-lupa SUBDIR += py-textX SUBDIR += python SUBDIR += python-doc-html SUBDIR += python-doc-pdf-a4 SUBDIR += python-doc-pdf-letter SUBDIR += python-doc-text SUBDIR += python-mode.el SUBDIR += python-tools SUBDIR += python2 SUBDIR += python27 SUBDIR += python3 SUBDIR += python310 SUBDIR += python311 SUBDIR += python38 SUBDIR += python39 SUBDIR += qmasm SUBDIR += qscheme SUBDIR += quickjs SUBDIR += quilc SUBDIR += racket SUBDIR += racket-minimal SUBDIR += ratfor SUBDIR += referenceassemblies-pcl SUBDIR += retro12 SUBDIR += rexx-imc SUBDIR += rexx-regina SUBDIR += rexx-regutil SUBDIR += rexx-wrapper SUBDIR += rhino SUBDIR += ruby30 SUBDIR += ruby31 SUBDIR += ruby32 SUBDIR += ruby33 SUBDIR += rubygem-rb_sys SUBDIR += rubygem-ruby_language_server SUBDIR += runawk SUBDIR += rust SUBDIR += rust-bootstrap SUBDIR += rust-nightly SUBDIR += sagittarius-scheme SUBDIR += sather-specification SUBDIR += sather-tutorial SUBDIR += sbcl SUBDIR += scala SUBDIR += scheme48 SUBDIR += scm SUBDIR += scratch SUBDIR += sdcc SUBDIR += see SUBDIR += seed7 SUBDIR += silq SUBDIR += siod SUBDIR += sisc SUBDIR += sketchy SUBDIR += slib SUBDIR += slib-guile SUBDIR += slisp SUBDIR += smalltalk SUBDIR += smlnj SUBDIR += snobol4 SUBDIR += solidity SUBDIR += spidermonkey102 SUBDIR += spidermonkey78 SUBDIR += spidermonkey91 SUBDIR += spl SUBDIR += squeak SUBDIR += squirrel SUBDIR += swi-pl SUBDIR += tauthon SUBDIR += tcbasic SUBDIR += tcc SUBDIR += tcl-manual SUBDIR += tcl-wrapper SUBDIR += tcl85 SUBDIR += tcl86 SUBDIR += tcl87 SUBDIR += tclX SUBDIR += tolua SUBDIR += tolua++ SUBDIR += tuareg-mode.el SUBDIR += twelf SUBDIR += ucc SUBDIR += urweb SUBDIR += v SUBDIR += v8 SUBDIR += v8-beta SUBDIR += vala SUBDIR += voc SUBDIR += yabasic SUBDIR += yap SUBDIR += yorick SUBDIR += ypsilon SUBDIR += zephir SUBDIR += zig .include diff --git a/lang/fpc-devel/Makefile b/lang/fpc-devel/Makefile new file mode 100644 index 000000000000..6c2dd658e87f --- /dev/null +++ b/lang/fpc-devel/Makefile @@ -0,0 +1,183 @@ +PORTNAME= fpc +PORTVERSION= 3.3.1.20231027 +PORTREVISION= 0 +CATEGORIES= lang +MASTER_SITES= LOCAL/acm/freepascal/:bootstrap \ + LOCAL/acm/freepascal/:man +PKGNAMESUFFIX= -devel +DIST_SUBDIR= freepascal + +MAINTAINER= acm@FreeBSD.org +COMMENT= Free Pascal compiler with Turbo and Delphi (devel) +WWW= https://www.freepascal.org/ + +CONFLICTS= fpc + +RUN_DEPENDS= ${LOCALBASE}/bin/as:devel/binutils + +ONLY_FOR_ARCHS= amd64 i386 + +USES+= gmake iconv +USE_BINUTILS= yes +BOOTVER= 3.2.2 +FPCBASEVER= 3.3.1 +MANVER= 3.0.4 + +FPC_LDPATH?= "${LOCALBASE}/bin/ld.bfd" + +USE_GITLAB= yes +GL_SITE= https://gitlab.com/freepascal.org +GL_ACCOUNT= fpc +GL_PROJECT= source +GL_COMMIT= 55e72fc0f1505c75f60af706736d32ceca9815a4 + +FPCSRCDIR= source-${GL_COMMIT} + +.include + +.if ${ARCH} == "i386" +PPNAME= ppc386 +FPC_ARCH= i386 +PLIST_SUB+= FPC_I386="" \ + FPC_AMD64="@comment " +.elif ${ARCH} == "amd64" +PPNAME= ppcx64 +FPC_ARCH= x86_64 +PLIST_SUB+= FPC_I386="@comment " \ + FPC_AMD64="" +.endif + +.if ${OPSYS} == FreeBSD +PLIST_SUB+= FREEBSD="" +.else +PLIST_SUB+= FREEBSD="@comment " +.endif + +SUB_FILES= pkg-message + +BUILDNAME= ${FPC_ARCH}-${OPSYS:tl} +PLIST_SUB+= PORTVERSION=${FPCBASEVER} \ + BUILDNAME=${BUILDNAME} +DISTFILES+= ${BOOTDIR}.tar.gz:${OPSYS:MDragonFly}bootstrap \ + fpc-${MANVER}.man.tar.gz:man +NEWFPCMAKE= ${WRKDIR}/${FPCSRCDIR}/utils/fpcm/bin/${BUILDNAME}/fpcmake +MAKE_ARGS+= FPCMAKE=${NEWFPCMAKE} \ + FPCTARGET=${BUILDNAME} \ + ARCH=${FPC_ARCH} \ + OPT="${OPT}" \ + BSDHIER=1 \ + INSTALL="${INSTALL_DATA}" \ + INSTALLEXE="${INSTALL_PROGRAM}" \ + INSTALLSCR="${INSTALL_SCRIPT}" \ + INSTALL_PREFIX=${STAGEDIR}${PREFIX} \ + FPC_LDPATH=${FPC_LDPATH} +NEWPPC= PP=${WRKSRC}/compiler/${PPNAME} +NEWFPC= FPC=${WRKSRC}/compiler/${PPNAME} +BOOTDIR= ${PPNAME}-${BOOTVER}-${OPSYS:tl} +BOOTPPC= PP=${WRKDIR}/${BOOTDIR} + +do-extract: +# unpack binary distribution + @${MKDIR} ${WRKDIR} + @${TAR} -xzf ${_DISTDIR}/${BOOTDIR}.tar.gz \ + --directory ${WRKDIR} && ${CHMOD} +x ${WRKDIR}/${BOOTDIR} +# unpack man files + @${TAR} -xzf ${_DISTDIR}/fpc-${MANVER}.man.tar.gz --directory ${WRKDIR} +# unpack source distribution + @(cd ${WRKDIR} && ${GZIP_CMD} -dc \ + ${_DISTDIR}/${PORTNAME}-source-${GL_COMMIT}_GL0${EXTRACT_SUFX} | \ + ${TAR} -xf -) + +post-patch: +.if ${OPSYS} == FreeBSD + @${REINPLACE_CMD} -i "" -e 's|900044|${OSVERSION}|g' \ + -e 's|1201000|${OSVERSION}|g' \ + -e 's|1200000|${OSVERSION}|g' \ + ${WRKSRC}/rtl/freebsd/${FPC_ARCH}/*.as \ + ${WRKSRC}/rtl/freebsd/${FPC_ARCH}/*.inc +.else + @${REINPLACE_CMD} -i "" -e 's|400000|${DFLYVERSION}|g' \ + ${WRKSRC}/rtl/dragonfly/${FPC_ARCH}/*.as +.endif +.if empty(ICONV_LIB) + @${REINPLACE_CMD} -i "" -e "s|s<>'c'|(s<>'c') and (s<>'iconv')|" \ + -e "s|%%FPC_LDPATH%%|${FPC_LDPATH}|g" \ + ${WRKDIR}/${FPCSRCDIR}/compiler/systems/t_bsd.pas + @${REINPLACE_CMD} -i "" -e 's|defined(bsd) and not ||' \ + ${WRKDIR}/${FPCSRCDIR}/rtl/unix/cwstring.pp +.endif + @${REINPLACE_CMD} -i "" -e '/samplecfg/ {s/INSTALLEXE/INSTALLSCR/;}' \ + ${WRKDIR}/${FPCSRCDIR}/compiler/Makefile + @${REINPLACE_CMD} -i "" -e 's|/usr/local|${PREFIX}|g' \ + ${WRKDIR}/${FPCSRCDIR}/packages/fpmkunit/src/fpmkunit.pp + +# enable units + @${REINPLACE_CMD} -i "" -e 's|linux|freebsd,linux|g' \ + ${WRKSRC}/packages/a52/fpmake.pp + @${REINPLACE_CMD} -i "" -e 's|linux|freebsd,linux|g' \ + ${WRKSRC}/packages/dts/fpmake.pp + @${REINPLACE_CMD} -i "" -e 's|freebsd,||g' \ + ${WRKSRC}/packages/fpgtk/fpmake.pp + @${REINPLACE_CMD} -i "" -e 's|iphonesim|freebsd,iphonesim|g' \ + ${WRKSRC}/packages/gnome1/fpmake.pp + @${REINPLACE_CMD} -i "" -e 's|iphonesim|freebsd,iphonesim|g' \ + ${WRKSRC}/packages/gtk1/fpmake.pp + @${REINPLACE_CMD} -i "" -e 's|iphonesim|freebsd,iphonesim|g' \ + ${WRKSRC}/packages/imlib/fpmake.pp + @${REINPLACE_CMD} -i "" -e 's|linux|freebsd,linux|g' \ + ${WRKSRC}/packages/ldap/fpmake.pp + @${REINPLACE_CMD} -i "" -e 's|linux|freebsd,linux|g' \ + ${WRKSRC}/packages/libnettle/fpmake.pp + @${REINPLACE_CMD} -i "" -e 's|linux|freebsd,linux|g' \ + ${WRKSRC}/packages/libsee/fpmake.pp + @${REINPLACE_CMD} -i "" -e 's|linux|freebsd,linux|g' \ + ${WRKSRC}/packages/lua/fpmake.pp + @${REINPLACE_CMD} -i "" -e 's|linux|freebsd,linux|g' \ + ${WRKSRC}/packages/mad/fpmake.pp + @${REINPLACE_CMD} -i "" -e 's|linux|freebsd,linux|g' \ + ${WRKSRC}/packages/modplug/fpmake.pp + @${REINPLACE_CMD} -i "" -e 's|linux|freebsd,linux|g' \ + ${WRKSRC}/packages/newt/fpmake.pp + @${REINPLACE_CMD} -i "" -e 's|linux|freebsd,linux|g' \ + ${WRKSRC}/packages/oggvorbis/fpmake.pp + @${REINPLACE_CMD} -i "" -e 's|linux|freebsd,linux|g' \ + ${WRKSRC}/packages/openal/fpmake.pp + @${REINPLACE_CMD} -i "" -e 's|linux|freebsd,linux|g' \ + ${WRKSRC}/packages/opencl/fpmake.pp + @${REINPLACE_CMD} -i "" -e 's|linux|freebsd,linux|g' \ + ${WRKSRC}/packages/proj4/fpmake.pp + @${REINPLACE_CMD} -i "" -e 's|os2|freebsd,os2|g' \ + ${WRKSRC}/packages/rexx/fpmake.pp + @${REINPLACE_CMD} -i "" -e 's|linux|freebsd,linux|g' \ + ${WRKSRC}/packages/wasmedge/fpmake.pp + @${REINPLACE_CMD} -i "" -e 's|linux|freebsd,linux|g' \ + ${WRKSRC}/packages/wasmtime/fpmake.pp + @${REINPLACE_CMD} -i "" -e 's|linux|freebsd,linux|g' \ + ${WRKSRC}/packages/zorba/fpmake.pp + +do-build: +# build fpc compiler + @${ECHO_MSG} "##### STARTING COMPILER AND UNITS #####" + (cd ${WRKDIR}/${FPCSRCDIR} && ${SETENV} ${MAKE_ENV} \ + ${MAKE_CMD} all ${MAKE_ARGS} ${BOOTPPC}) + @${ECHO_MSG} "##### COMPLETE COMPILER AND UNITS #####" + +do-install: + # Installing fpc compiler + (cd ${WRKDIR}/${FPCSRCDIR} && ${SETENV} ${MAKE_ENV} \ + ${MAKE_CMD} install ${MAKE_ARGS} ${BOOTPPC}) + + # Installing manpages + ${INSTALL_MAN} ${WRKDIR}/man/man1/* ${STAGEDIR}${MAN1PREFIX}/man/man1 + ${INSTALL_MAN} ${WRKDIR}/man/man5/* ${STAGEDIR}${MAN1PREFIX}/man/man5 + # symlinking compiler + (cd ${STAGEDIR}${PREFIX}/bin && ${LN} -sf ../lib/fpc/${FPCBASEVER}/${PPNAME}) + # creating sample configuration file + ${SH} "${STAGEDIR}${PREFIX}/lib/fpc/${FPCBASEVER}/samplecfg" \ + "${STAGEDIR}${PREFIX}/lib/fpc/${FPCBASEVER}" \ + "${STAGEDIR}${PREFIX}/etc" + @${REINPLACE_CMD} -i "" -e 's|${STAGEDIR}||' \ + -e 's|^#-Fl/lib;/usr/lib|-Fl${LOCALBASE}/lib;${LOCALBASE}/lib/qt5;${LOCALBASE}/lib/qt6|g' \ + ${STAGEDIR}${PREFIX}/etc/fpc.cfg.sample + +.include diff --git a/lang/fpc-devel/distinfo b/lang/fpc-devel/distinfo new file mode 100644 index 000000000000..57b9a7abdf7c --- /dev/null +++ b/lang/fpc-devel/distinfo @@ -0,0 +1,9 @@ +TIMESTAMP = 1698457114 +SHA256 (freepascal/ppc386-3.2.2-freebsd.tar.gz) = 2e175954442e28799edfe08c01635d209298b992f1062d03872571d58aa9f43a +SIZE (freepascal/ppc386-3.2.2-freebsd.tar.gz) = 1364288 +SHA256 (freepascal/ppcx64-3.2.2-freebsd.tar.gz) = 8cf6258688c3457f27bcec18e6993443ed2fcfe7d7c8697d54a13f32965e8fb0 +SIZE (freepascal/ppcx64-3.2.2-freebsd.tar.gz) = 2052903 +SHA256 (freepascal/fpc-3.0.4.man.tar.gz) = bc5357fc6e56d77eeeb5d820023f7f721f5febcc684837f296a598c6c772b26c +SIZE (freepascal/fpc-3.0.4.man.tar.gz) = 47294 +SHA256 (freepascal/fpc-source-55e72fc0f1505c75f60af706736d32ceca9815a4_GL0.tar.gz) = 6e8cf9b2c0b76462645239c2cd555f854536c857a01b5afb46bb2f3b6ac33061 +SIZE (freepascal/fpc-source-55e72fc0f1505c75f60af706736d32ceca9815a4_GL0.tar.gz) = 55866150 diff --git a/lang/fpc-devel/files/patch-compiler-systems_t__bsd.pas b/lang/fpc-devel/files/patch-compiler-systems_t__bsd.pas new file mode 100644 index 000000000000..3d4b57df7478 --- /dev/null +++ b/lang/fpc-devel/files/patch-compiler-systems_t__bsd.pas @@ -0,0 +1,22 @@ +--- compiler/systems/t_bsd.pas 2023-10-27 23:25:22.849393000 -0500 ++++ compiler/systems/t_bsd.pas 2023-10-27 23:26:39.226882000 -0500 +@@ -115,6 +115,8 @@ + if not Dontlinkstdlibpath Then + if target_info.system in systems_openbsd then + LibrarySearchPath.AddLibraryPath(sysrootpath,'=/usr/lib;=$OPENBSD_X11BASE/lib;=$OPENBSD_LOCALBASE/lib',true) ++ else if target_info.system in systems_freebsd then ++ LibrarySearchPath.AddLibraryPath(sysrootpath,'=/usr/lib;=$FREEBSD_LOCALBASE/lib',true) + else + LibrarySearchPath.AddLibraryPath(sysrootpath,'=/lib;=/usr/lib;=/usr/X11R6/lib',true); + end; +@@ -130,7 +132,9 @@ + if cs_link_lld in current_settings.globalswitches then + LdProgram:='ld.lld' + else if target_info.system in (systems_openbsd+systems_freebsd+[system_x86_64_dragonfly]) then +- LdProgram:='ld.bfd'; ++ LdProgram:=GetEnvPChar('FPC_LDPATH'); ++ if not FileExists(LdProgram,True) then ++ LdProgram:='ld.bfd'; + LibrarySuffix:=' '; + LdSupportsNoResponseFile := (target_info.system in ([system_m68k_netbsd]+systems_darwin)); + with Info do diff --git a/lang/fpc-devel/files/patch-compiler-utils_samplecfg b/lang/fpc-devel/files/patch-compiler-utils_samplecfg new file mode 100644 index 000000000000..901f71d8cf35 --- /dev/null +++ b/lang/fpc-devel/files/patch-compiler-utils_samplecfg @@ -0,0 +1,13 @@ +--- compiler/utils/samplecfg.orig 2015-08-06 19:47:53 UTC ++++ compiler/utils/samplecfg +@@ -38,8 +38,8 @@ sysfpdir=$sysfpdirbase2/text + # Detect if we have write permission in sysdir. + if [ -w "$sysdir" ] ; then + echo Write permission in $sysdir. +- fpccfgfile="$sysdir"/fpc.cfg +- fppkgfile="$sysdir"/fppkg.cfg ++ fpccfgfile="$sysdir"/fpc.cfg.sample ++ fppkgfile="$sysdir"/fppkg.cfg.sample + defaultfile="$sysdir"/fppkg/default + compilerconfigdir="-d CompilerConfigDir=$sysdir/fppkg" + else diff --git a/lang/fpc-devel/files/patch-compiler_globals.pas b/lang/fpc-devel/files/patch-compiler_globals.pas new file mode 100644 index 000000000000..c55dfddc8f62 --- /dev/null +++ b/lang/fpc-devel/files/patch-compiler_globals.pas @@ -0,0 +1,32 @@ +--- compiler/globals.pas 2023-10-27 23:30:38.797736000 -0500 ++++ compiler/globals.pas 2023-10-27 23:31:45.729414000 -0500 +@@ -1023,6 +1023,19 @@ + FreeEnvPChar(envvalue); + end; + {$endif openbsd} ++{$ifdef freebsd} ++ function GetFreeBSDLocalBase: ansistring; ++ var ++ envvalue: pchar; ++ begin ++ envvalue := GetEnvPChar('LOCALBASE'); ++ if assigned(envvalue) then ++ Result:=envvalue ++ else ++ Result:='/usr/local'; ++ FreeEnvPChar(envvalue); ++ end; ++{$endif freebsd} + var + envstr: string; + envvalue: pchar; +@@ -1062,6 +1075,9 @@ + Replace(s,'$OPENBSD_LOCALBASE',GetOpenBSDLocalBase); + Replace(s,'$OPENBSD_X11BASE',GetOpenBSDX11Base); + {$endif openbsd} ++{$ifdef freebsd} ++ Replace(s,'$FREEBSD_LOCALBASE',GetFreeBSDLocalBase); ++{$endif freebsd} + if not substitute_env_variables then + exit; + { Replace environment variables between dollar signs } diff --git a/lang/fpc-devel/files/patch-packages-dts-src-dts.pas b/lang/fpc-devel/files/patch-packages-dts-src-dts.pas new file mode 100644 index 000000000000..623471ea21a0 --- /dev/null +++ b/lang/fpc-devel/files/patch-packages-dts-src-dts.pas @@ -0,0 +1,97 @@ +--- packages/dts/src/dts.pas 2010-04-21 20:42:31.000000000 +0100 ++++ packages/dts/src/dts.pas 2010-04-21 20:52:51.000000000 +0100 +@@ -272,7 +272,7 @@ + {$IF Defined(WINDOWS)} + dtslib = 'dts.dll'; + {$ELSEIF Defined(UNIX)} +- dtslib = 'libdts.so'; ++ dtslib = 'libdca.so'; + {$ELSE} + {$MESSAGE ERROR 'DYNLINK not supported'} + {$IFEND} +@@ -331,14 +331,14 @@ + DTS_ADJUST_LEVEL = $100; + + +-function dts_init(mm_accel: cuint32): pdts_state_t; cdecl; external {$IFDEF DYNLINK}dtslib{$ENDIF}; +-function dts_syncinfo(state: pdts_state_t; buf: pcuint8; var flags: cint; var sample_rate: cint; var bit_rate: cint; var frame_length: cint): cint; cdecl; external {$IFDEF DYNLINK}dtslib{$ENDIF}; +-function dts_frame(state: pdts_state_t; buf: pcuint8; var flags: cint; var level: dts_level_t; bias: dts_sample_t): cint; cdecl; external {$IFDEF DYNLINK}dtslib{$ENDIF}; +-procedure dts_dynrng(state: pdts_state_t; call: dts_dynrng_call; data: pointer); cdecl; external {$IFDEF DYNLINK}dtslib{$ENDIF}; +-function dts_blocks_num(state: pdts_state_t): cint; cdecl; external {$IFDEF DYNLINK}dtslib{$ENDIF}; +-function dts_block(state: pdts_state_t): cint; cdecl; external {$IFDEF DYNLINK}dtslib{$ENDIF}; +-function dts_samples(state: pdts_state_t): pdts_sample_t; cdecl; external {$IFDEF DYNLINK}dtslib{$ENDIF}; +-procedure dts_free(state: pdts_state_t); cdecl; external {$IFDEF DYNLINK}dtslib{$ENDIF}; ++function dca_init(mm_accel: cuint32): pdts_state_t; cdecl; external {$IFDEF DYNLINK}dtslib{$ENDIF}; ++function dca_syncinfo(state: pdts_state_t; buf: pcuint8; var flags: cint; var sample_rate: cint; var bit_rate: cint; var frame_length: cint): cint; cdecl; external {$IFDEF DYNLINK}dtslib{$ENDIF}; ++function dca_frame(state: pdts_state_t; buf: pcuint8; var flags: cint; var level: dts_level_t; bias: dts_sample_t): cint; cdecl; external {$IFDEF DYNLINK}dtslib{$ENDIF}; ++procedure dca_dynrng(state: pdts_state_t; call: dts_dynrng_call; data: pointer); cdecl; external {$IFDEF DYNLINK}dtslib{$ENDIF}; ++function dca_blocks_num(state: pdts_state_t): cint; cdecl; external {$IFDEF DYNLINK}dtslib{$ENDIF}; ++function dca_block(state: pdts_state_t): cint; cdecl; external {$IFDEF DYNLINK}dtslib{$ENDIF}; ++function dca_samples(state: pdts_state_t): pdts_sample_t; cdecl; external {$IFDEF DYNLINK}dtslib{$ENDIF}; ++procedure dca_free(state: pdts_state_t); cdecl; external {$IFDEF DYNLINK}dtslib{$ENDIF}; + + + +@@ -378,12 +378,61 @@ + end; + + ++function dts_init(mm_accel: cuint32): pdts_state_t; ++function dts_syncinfo(state: pdts_state_t; buf: pcuint8; var flags: cint; var sample_rate: cint; var bit_rate: cint; var frame_length: cint): cint; ++function dts_frame(state: pdts_state_t; buf: pcuint8; var flags: cint; var level: dts_level_t; bias: dts_sample_t): cint; ++procedure dts_dynrng(state: pdts_state_t; call: dts_dynrng_call; data: pointer); ++function dts_blocks_num(state: pdts_state_t): cint; ++function dts_block(state: pdts_state_t): cint; ++function dts_samples(state: pdts_state_t): pdts_sample_t; ++procedure dts_free(state: pdts_state_t); ++ + function dts_decoder_init(mm_accel: cuint32; user: pointer; read: dts_read_func; seek: dts_seek_func; close: dts_close_func; tell: dts_tell_func): pdts_decoder; + function dts_decoder_read(decoder: pdts_decoder; buffer: pointer; length: cint): cint; + procedure dts_decoder_free(decoder: pdts_decoder); + + implementation + ++function dts_init(mm_accel: cuint32): pdts_state_t; ++begin ++ Result := dca_init(mm_accel); ++end; ++ ++function dts_syncinfo(state: pdts_state_t; buf: pcuint8; var flags: cint; var sample_rate: cint; var bit_rate: cint; var frame_length: cint): cint; ++begin ++ Result := dca_syncinfo(state, buf, flags, sample_rate, bit_rate, frame_length); ++end; ++ ++function dts_frame(state: pdts_state_t; buf: pcuint8; var flags: cint; var level: dts_level_t; bias: dts_sample_t): cint; ++begin ++ Result := dca_frame(state, buf, flags, level, bias); ++end; ++ ++procedure dts_dynrng(state: pdts_state_t; call: dts_dynrng_call; data: pointer); ++begin ++ dca_dynrng(state, call, data); ++end; ++ ++function dts_blocks_num(state: pdts_state_t): cint; ++begin ++ Result := dca_blocks_num(state); ++end; ++ ++function dts_block(state: pdts_state_t): cint; ++begin ++ Result := dca_block(state); ++end; ++ ++function dts_samples(state: pdts_state_t): pdts_sample_t; ++begin ++ Result := dca_samples(state) ++end; ++ ++procedure dts_free(state: pdts_state_t); ++begin ++ dca_free(state); ++end; ++ + function dts_decoder_init(mm_accel: cuint32; user: pointer; read: dts_read_func; seek: dts_seek_func; close: dts_close_func; tell: dts_tell_func): pdts_decoder; + begin + GetMem(Result, Sizeof(dts_decoder)); +Only in work.new/fpc-2.4.0/packages/dts/src: dts.pas~ diff --git a/lang/fpc-devel/files/patch-packages-libnettle-src_libnettle.pp b/lang/fpc-devel/files/patch-packages-libnettle-src_libnettle.pp new file mode 100644 index 000000000000..9432276f4e91 --- /dev/null +++ b/lang/fpc-devel/files/patch-packages-libnettle-src_libnettle.pp @@ -0,0 +1,11 @@ +--- packages/libnettle/src/libnettle.pp 2023-10-28 12:47:25.745893000 -0500 ++++ packages/libnettle/src/libnettle.pp 2023-10-28 12:52:31.472802000 -0500 +@@ -51,7 +51,7 @@ + NettleExternal_library='nettle'; + HogweedExternal_library='hogweed'; + +-{$ifdef linux} ++{$if defined(linux) or defined(freebsd)} + NettleLibraryFileName = 'lib'+NettleExternal_library+'.so'; + HogweedLibraryFileName = 'lib'+HogweedExternal_library+'.so'; + {$else} diff --git a/lang/fpc-devel/files/patch-packages-opencl-src_cl.pp b/lang/fpc-devel/files/patch-packages-opencl-src_cl.pp new file mode 100644 index 000000000000..a45464f029ce --- /dev/null +++ b/lang/fpc-devel/files/patch-packages-opencl-src_cl.pp @@ -0,0 +1,11 @@ +--- packages/opencl/src/cl.pp 2023-10-28 12:54:09.078367000 -0500 ++++ packages/opencl/src/cl.pp 2023-10-28 12:54:33.911516000 -0500 +@@ -55,7 +55,7 @@ + OpenCLlib = 'OpenCL.dll'; + {$DEFINE extdecl := stdcall} + {$ELSE} +- {$IFDEF LINUX} ++ {$IF DEFINED(LINUX) OR DEFINED(FREEBSD)} + {$DEFINE DYNLINK} + const + OpenCLlib = 'libOpenCL.so'; diff --git a/lang/fpc-devel/files/patch-packages_libvlc_fpmake.pp b/lang/fpc-devel/files/patch-packages_libvlc_fpmake.pp new file mode 100644 index 000000000000..0e1cddb83736 --- /dev/null +++ b/lang/fpc-devel/files/patch-packages_libvlc_fpmake.pp @@ -0,0 +1,13 @@ +--- packages/libvlc/fpmake.pp 2023-10-28 00:57:22.224953000 -0500 ++++ packages/libvlc/fpmake.pp 2023-10-28 00:57:38.346447000 -0500 +@@ -23,8 +23,8 @@ + P.HomepageURL := 'www.freepascal.org'; + P.Email := 'michael@freepascal.org'; + P.Description := 'VLC library (version 2 or higher) interface and component.'; +- T:=P.Targets.AddUnit('src/libvlc.pp',[linux,win32,win64]); +- T:=P.Targets.AddUnit('src/vlc.pp',[linux,win32,win64]); ++ T:=P.Targets.AddUnit('src/libvlc.pp',[freebsd,linux,win32,win64]); ++ T:=P.Targets.AddUnit('src/vlc.pp',[freebsd,linux,win32,win64]); + with T.Dependencies do + begin + AddUnit('libvlc'); diff --git a/lang/fpc-devel/files/pkg-message.in b/lang/fpc-devel/files/pkg-message.in new file mode 100644 index 000000000000..e8b3db50a8cd --- /dev/null +++ b/lang/fpc-devel/files/pkg-message.in @@ -0,0 +1,21 @@ +[ +{ type: install + message: <