mirror of
https://github.com/yann64/haikuports.git
synced 2026-05-07 07:28:57 +02:00
new recipe: sidreloc (#5027)
This commit is contained in:
committed by
GitHub
parent
a9dd74ed36
commit
cf0b0a6dd1
15
dev-util/sidreloc/additional-files/Makefile.am
Normal file
15
dev-util/sidreloc/additional-files/Makefile.am
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
bin_PROGRAMS = sidreloc
|
||||||
|
dist_sidreloc_SOURCES = sidreloc.c solver.c cpu.c reloc.h
|
||||||
|
notrans_dist_man1_MANS = sidreloc.1
|
||||||
|
|
||||||
|
sidreloc_CFLAGS=-Wall -std=c99 -O3 -DNDEBUG $(ENABLE_BSD)
|
||||||
|
|
||||||
|
check_SCRIPTS = greptest.sh
|
||||||
|
|
||||||
|
TESTS = $(check_SCRIPTS)
|
||||||
|
|
||||||
|
greptest.sh:
|
||||||
|
@echo './sidreloc --version | grep "sidreloc @PACKAGE_VERSION@"' > greptest.sh
|
||||||
|
@chmod +x greptest.sh
|
||||||
|
|
||||||
|
CLEANFILES = greptest.sh
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
# ===========================================================================
|
||||||
|
# https://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
|
||||||
|
# ===========================================================================
|
||||||
|
#
|
||||||
|
# SYNOPSIS
|
||||||
|
#
|
||||||
|
# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
|
||||||
|
#
|
||||||
|
# DESCRIPTION
|
||||||
|
#
|
||||||
|
# Check whether the given FLAG works with the current language's compiler
|
||||||
|
# or gives an error. (Warnings, however, are ignored)
|
||||||
|
#
|
||||||
|
# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
|
||||||
|
# success/failure.
|
||||||
|
#
|
||||||
|
# If EXTRA-FLAGS is defined, it is added to the current language's default
|
||||||
|
# flags (e.g. CFLAGS) when the check is done. The check is thus made with
|
||||||
|
# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
|
||||||
|
# force the compiler to issue an error when a bad flag is given.
|
||||||
|
#
|
||||||
|
# INPUT gives an alternative input source to AC_COMPILE_IFELSE.
|
||||||
|
#
|
||||||
|
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
|
||||||
|
# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
|
||||||
|
#
|
||||||
|
# LICENSE
|
||||||
|
#
|
||||||
|
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
|
||||||
|
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
|
||||||
|
#
|
||||||
|
# Copying and distribution of this file, with or without modification, are
|
||||||
|
# permitted in any medium without royalty provided the copyright notice
|
||||||
|
# and this notice are preserved. This file is offered as-is, without any
|
||||||
|
# warranty.
|
||||||
|
|
||||||
|
#serial 6
|
||||||
|
|
||||||
|
AC_DEFUN([AX_CHECK_COMPILE_FLAG],
|
||||||
|
[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
|
||||||
|
AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
|
||||||
|
AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
|
||||||
|
ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
|
||||||
|
_AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
|
||||||
|
AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
|
||||||
|
[AS_VAR_SET(CACHEVAR,[yes])],
|
||||||
|
[AS_VAR_SET(CACHEVAR,[no])])
|
||||||
|
_AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
|
||||||
|
AS_VAR_IF(CACHEVAR,yes,
|
||||||
|
[m4_default([$2], :)],
|
||||||
|
[m4_default([$3], :)])
|
||||||
|
AS_VAR_POPDEF([CACHEVAR])dnl
|
||||||
|
])dnl AX_CHECK_COMPILE_FLAGS
|
||||||
52
dev-util/sidreloc/additional-files/configure.ac
Normal file
52
dev-util/sidreloc/additional-files/configure.ac
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
AC_PREREQ([2.69])
|
||||||
|
AC_INIT([sidreloc], [1.0], [linus@linusakesson.net], , [http://www.linusakesson.net/software/sidreloc])
|
||||||
|
|
||||||
|
AC_CONFIG_MACRO_DIRS([m4])
|
||||||
|
|
||||||
|
AM_INIT_AUTOMAKE([foreign])
|
||||||
|
|
||||||
|
AC_CONFIG_SRCDIR([./cpu.c])
|
||||||
|
AC_CONFIG_HEADERS([config.h])
|
||||||
|
|
||||||
|
# Checks for programs.
|
||||||
|
AC_PROG_CC
|
||||||
|
AC_PROG_INSTALL
|
||||||
|
|
||||||
|
# Checks for header files.
|
||||||
|
AC_CHECK_HEADERS([stdint.h stdlib.h string.h stdarg.h err.h errno.h])
|
||||||
|
|
||||||
|
AC_SEARCH_LIBS([err], [bsd])
|
||||||
|
AC_SEARCH_LIBS([errx], [bsd])
|
||||||
|
|
||||||
|
# Enable BSD extensions
|
||||||
|
AX_CHECK_COMPILE_FLAG([-D_DEFAULT_SOURCE], AC_SUBST([ENABLE_BSD], [-D_DEFAULT_SOURCE]))
|
||||||
|
|
||||||
|
AC_DEFINE_UNQUOTED([RELEASE], ["$PACKAGE_VERSION"], [convenience define used for release number])
|
||||||
|
|
||||||
|
# Checks for typedefs, structures, and compiler characteristics.
|
||||||
|
AC_C_INLINE
|
||||||
|
AC_TYPE_INT8_T
|
||||||
|
AC_TYPE_UINT16_T
|
||||||
|
AC_TYPE_UINT8_T
|
||||||
|
|
||||||
|
# Checks for library functions.
|
||||||
|
AC_FUNC_MALLOC
|
||||||
|
AC_CHECK_FUNCS([memset err errx])
|
||||||
|
|
||||||
|
AC_CONFIG_FILES([Makefile])
|
||||||
|
AC_OUTPUT
|
||||||
|
|
||||||
|
echo \
|
||||||
|
"-------------------------------------------------
|
||||||
|
|
||||||
|
${PACKAGE_NAME} Version ${PACKAGE_VERSION}
|
||||||
|
|
||||||
|
Prefix: '${prefix}'.
|
||||||
|
Compiler: '${CC} ${CFLAGS} ${CPPFLAGS}'
|
||||||
|
|
||||||
|
Now type 'make @<:@<target>@:>@'
|
||||||
|
where the optional <target> is:
|
||||||
|
all - build sidreloc binary
|
||||||
|
install - install everything
|
||||||
|
|
||||||
|
--------------------------------------------------"
|
||||||
126
dev-util/sidreloc/patches/sidreloc-1.0.patchset
Normal file
126
dev-util/sidreloc/patches/sidreloc-1.0.patchset
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
From eebb03a681273e699f09162aa8d2b670f093a74a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Gabriele Baldassarre <gabriele@gabrielebaldassarre.com>
|
||||||
|
Date: Tue, 26 May 2020 08:17:32 +0000
|
||||||
|
Subject: More general error handling
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/reloc.h b/reloc.h
|
||||||
|
index bc18e52..ff9930c 100644
|
||||||
|
--- a/reloc.h
|
||||||
|
+++ b/reloc.h
|
||||||
|
@@ -1,10 +1,16 @@
|
||||||
|
#ifndef __RELOC_H
|
||||||
|
#define __RELOC_H
|
||||||
|
|
||||||
|
+#ifdef HAVE_CONFIG_H
|
||||||
|
+# include <config.h>
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
|
+#ifndef HAVE_CONFIG_H
|
||||||
|
#define RELEASE "1.0"
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
/* Represent bytes as 8-bit values tagged with meta-information. */
|
||||||
|
/* List nodes (struct source) are arena-allocated; no need to track the references. */
|
||||||
|
diff --git a/sidreloc.c b/sidreloc.c
|
||||||
|
index 7714af5..f6d69f2 100644
|
||||||
|
--- a/sidreloc.c
|
||||||
|
+++ b/sidreloc.c
|
||||||
|
@@ -20,15 +20,23 @@
|
||||||
|
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
+#include "reloc.h"
|
||||||
|
+
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <string.h>
|
||||||
|
-#include <err.h>
|
||||||
|
#include <getopt.h>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
-#include "reloc.h"
|
||||||
|
+#ifdef HAVE_ERR_H
|
||||||
|
+#include <err.h>
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#ifndef HAVE_ERRX
|
||||||
|
+#include <stdarg.h>
|
||||||
|
+#include <errno.h>
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
struct sidheader {
|
||||||
|
uint8_t rsid;
|
||||||
|
@@ -73,6 +81,34 @@ static int nmi_reported;
|
||||||
|
|
||||||
|
static struct core oldcore, newcore;
|
||||||
|
|
||||||
|
+#ifndef HAVE_ERRX
|
||||||
|
+/* Some posix haven't this error function
|
||||||
|
+ so, we define a rough equivalent */
|
||||||
|
+static void errx(int eval, const char *fmt, ...){
|
||||||
|
+ va_list arglist;
|
||||||
|
+ va_start(arglist, fmt);
|
||||||
|
+ fprintf(stderr,"%s: ", "sidreloc");
|
||||||
|
+ vfprintf(stderr,fmt, arglist);
|
||||||
|
+ fprintf(stderr,"\n");
|
||||||
|
+ va_end(arglist);
|
||||||
|
+ exit(eval);
|
||||||
|
+}
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#ifndef HAVE_ERR
|
||||||
|
+/* Some posix haven't this error function
|
||||||
|
+ so, we define a rough equivalent */
|
||||||
|
+static void err(int eval, const char *fmt, ...){
|
||||||
|
+ va_list arglist;
|
||||||
|
+ va_start(arglist, fmt);
|
||||||
|
+ fprintf(stderr, " %s: ", "sidreloc");
|
||||||
|
+ vfprintf(stderr, fmt, arglist);
|
||||||
|
+ fprintf(stderr, ": %s\n", strerror(errno));
|
||||||
|
+ va_end(arglist);
|
||||||
|
+ exit(eval);
|
||||||
|
+}
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
static int readheader(struct sidheader *head, uint8_t *data, int filesize) {
|
||||||
|
if(filesize <= 0x80) return 1;
|
||||||
|
if(data[0] == 'P') {
|
||||||
|
@@ -817,3 +853,4 @@ int main(int argc, char **argv) {
|
||||||
|
|
||||||
|
return RET_SUCCESS | exitbits;
|
||||||
|
}
|
||||||
|
+
|
||||||
|
diff --git a/solver.c b/solver.c
|
||||||
|
index 7b9fcb6..5323add 100644
|
||||||
|
--- a/solver.c
|
||||||
|
+++ b/solver.c
|
||||||
|
@@ -20,15 +20,19 @@
|
||||||
|
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
+#include "reloc.h"
|
||||||
|
+
|
||||||
|
#include <assert.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <string.h>
|
||||||
|
+
|
||||||
|
+#ifdef HAVE_ERR_H
|
||||||
|
#include <err.h>
|
||||||
|
-#include <getopt.h>
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
-#include "reloc.h"
|
||||||
|
+#include <getopt.h>
|
||||||
|
|
||||||
|
#define HASHSIZE 8192
|
||||||
|
|
||||||
|
--
|
||||||
|
2.26.0
|
||||||
|
|
||||||
68
dev-util/sidreloc/sidreloc-1.0.recipe
Normal file
68
dev-util/sidreloc/sidreloc-1.0.recipe
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
SUMMARY="Tool for relocating SID tunes"
|
||||||
|
DESCRIPTION="Sidreloc is a tool for relocating SID tunes any number of whole pages, \
|
||||||
|
using a novel but remarkably simple algorithm. It can also relocate \
|
||||||
|
all zero-page variables used by the tune."
|
||||||
|
HOMEPAGE="https://www.linusakesson.net/software/sidreloc/index.php"
|
||||||
|
COPYRIGHT="2012-2020 Linus Akesson
|
||||||
|
2005-2020 Ian Piumarta"
|
||||||
|
LICENSE="MIT"
|
||||||
|
REVISION="1"
|
||||||
|
SOURCE_URI="https://hd0.linusakesson.net/files/sidreloc-$portVersion.tgz"
|
||||||
|
CHECKSUM_SHA256="8ca55fb4886bda2a499f837e2f9ffd0a4b7217ee7bb1907ceed9e87ef6157bf6"
|
||||||
|
|
||||||
|
PATCHES="sidreloc-$portVersion.patchset"
|
||||||
|
ADDITIONAL_FILES="
|
||||||
|
configure.ac
|
||||||
|
Makefile.am
|
||||||
|
ax_check_compile_flag.m4-dist
|
||||||
|
"
|
||||||
|
|
||||||
|
ARCHITECTURES="!x86_gcc2 x86_64 ?arm ?ppc ?sparc"
|
||||||
|
SECONDARY_ARCHITECTURES="x86"
|
||||||
|
|
||||||
|
commandSuffix=$secondaryArchSuffix
|
||||||
|
commandBinDir=$binDir
|
||||||
|
if [ "$targetArchitecture" = x86_gcc2 ]; then
|
||||||
|
commandSuffix=
|
||||||
|
commandBinDir=$prefix/bin
|
||||||
|
fi
|
||||||
|
|
||||||
|
PROVIDES="
|
||||||
|
sidreloc$secondaryArchSuffix = $portVersion
|
||||||
|
cmd:sidreloc$commandSuffix = $portVersion
|
||||||
|
"
|
||||||
|
REQUIRES="
|
||||||
|
haiku$secondaryArchSuffix
|
||||||
|
"
|
||||||
|
|
||||||
|
BUILD_REQUIRES="
|
||||||
|
haiku${secondaryArchSuffix}_devel
|
||||||
|
"
|
||||||
|
BUILD_PREREQUIRES="
|
||||||
|
cmd:aclocal
|
||||||
|
cmd:autoreconf
|
||||||
|
cmd:gcc$secondaryArchSuffix
|
||||||
|
cmd:make
|
||||||
|
"
|
||||||
|
|
||||||
|
BUILD()
|
||||||
|
{
|
||||||
|
cp -r "$portDir"/additional-files/configure.ac .
|
||||||
|
cp -r "$portDir"/additional-files/Makefile.am .
|
||||||
|
|
||||||
|
mkdir -p ./m4
|
||||||
|
cp -r "$portDir"/additional-files/ax_check_compile_flag.m4-dist ./m4/ax_check_compile_flag.m4
|
||||||
|
|
||||||
|
autoreconf --force --install --verbose
|
||||||
|
runConfigure --omit-dirs binDir ./configure --bindir="$commandBinDir"
|
||||||
|
make $jobArgs
|
||||||
|
}
|
||||||
|
|
||||||
|
INSTALL()
|
||||||
|
{
|
||||||
|
make install
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(){
|
||||||
|
make check
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user