Skip to content

Commit

Permalink
Added autogen.sh and freebsd notes.
Browse files Browse the repository at this point in the history
  • Loading branch information
ahlstromcj committed Jan 13, 2024
1 parent 5d6b964 commit 786ab8a
Show file tree
Hide file tree
Showing 9 changed files with 243 additions and 75 deletions.
55 changes: 7 additions & 48 deletions INSTALL
Original file line number Diff line number Diff line change
Expand Up @@ -107,54 +107,13 @@ Clang Compiler:

FreeBSD:

Make sure that the following packages are installed (check with
"pkg info"):

- For GNU automake:
- autoconf
- autoconf-archive
- autoconf-switch
- automake
- gmake
- libtool
- pkgconf
- Qt 5:
- qt5
- ALSA
- alsa-lib
- alsa-seq-server
- alsa-plugins
- alsa-utils (perhaps)
- a2jmidid
- JACK
- jackit
- jack-example-tools (for jack_lsp, etc.)
- liblo for OSC and NSM support
- Other utilities:
- usbutils

Currently having issues with Qt in the GNU automake instructions below.
So do the following instead:

- Make a shadow directory in the parent of the seq66 directory.
- Change to it.
- Run the new qbuild.sh script. It uses "sh" as the shell for
portability.
- Read the make.log file for success or failure..

Although one user reported that "./configure" worked fine, on a FreeBSD
virtual machine, we first had to install autoconf, automake, pkgconf, and
gmake. Also had to edit the generated libtool script to change
the version from 2.4.7 to 2.4.6 to fool the build. The command needed to
configure was the following, including the command to make the code.
Also need to figure out why a "stopped" message appears in the
generated Makefiles, which breaks the build.

$ ./configure --with-alsa-prefix=/usr/local/lib
--with-alsa-inc-prefix=/usr/local/include
$ sh -c 'gmake >make.log 2>&1'

A raft of other issues have occurred with this method.
While FreeBSD can build Seq66, there are some issues that need to be
addressed. See contrib/notes/freebsd.text for complete information.
The recommended method of building Seq66 is discussed there. Basically,
after making sure all dependencies are installed, run the qbuild.sh script
and set up for usage of JACK. This advice is volatile.

See the discussion in contrib/notes/freebsd.text.

Qt and Command-Line Merged Build:

Expand Down
37 changes: 31 additions & 6 deletions NEWS
Original file line number Diff line number Diff line change
@@ -1,18 +1,38 @@
NEWS for Seq66 0.99.12 (unreleased)
NEWS for Seq66 0.99.12
Chris Ahlstrom
2015-07-10 to 2023-12-06
2015-07-10 to 2024-01-13

# Changelog

## [Unreleased]

To do
## [0.99.12] - 2024-01-13

### Added

- Clang compiler support.
- Provisional build process for FreeBSD.
- Added an autogen.sh script to reconfigure without using bash.
- Added 'rc' option to skip, recover, or abort from bad running
status in MIDI files (trilogy.mid).

### Fixed

- Errors and warnings revealed by Clang.
- The reading, processing, writing, and display of SysEx and Meta
events. Now handle unterminated SysEx messages (Dixie04.mid).
- Issue with building the command-line "portmidi" version.
- A one-character buffer overflow in portmidi.c.
- Bugs in --option log=file.
- Q button not working to set keep-queue status.
- Queued-solo functionality improved.

### Changed

- Upgraded the Event editor Dump output.

### Removed

- Disabled the grid-solo option as redundant. Will repurpose later.

## [0.99.11] - 2023-12-04

### Added
Expand All @@ -35,7 +55,8 @@ Chris Ahlstrom

### Fixed

- Issue #123 "Would it be possible to have NEWS structured like a changelog"
- Issue #123 "Would it be possible to have NEWS structured like a
changelog"
- Fixed errors setting style-sheet, palette, and mutes in
Preferences / Session. Enhanced this tab to indicate when
exit (as opposed to internal restart) is needed.
Expand Down Expand Up @@ -1049,6 +1070,10 @@ Chris Ahlstrom
public consumption, after residing on a server (a Toshiba laptop) at
home for months.

## [Unreleased]

To do

### Added
### Fixed
### Changed
Expand Down
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# README for Seq66 0.99.12 2023-12-12
# README for Seq66 0.99.12 2024-01-13

__Seq66__ MIDI sequencer/live-looper with a hardware-sampler grid interface;
pattern banks, triggers, and playlists for song management; scale and chord
Expand All @@ -19,6 +19,8 @@ Support sites (still in progress):
* https://github.com/ahlstromcj/ahlstromcj.github.io/wiki

The release now includes an installer for the 64-bit Windows version of Seq66.
Also included is initial work on getting Seq66 to build and run in FreeBSD using
the Clang compiler.

![Alt text](doc/latex/images/main-window/main-windows-perstfic.png?raw=true "Seq66")

Expand Down
14 changes: 9 additions & 5 deletions RELNOTES
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Release Notes for Seq66 v. 0.99.12 2024-01-09
Release Notes for Seq66 v. 0.99.12 2024-01-13

- Fixed clang support and FreeBSD builds.
- Using clang-12 and clang-16 to find errors and warnings
Expand All @@ -8,19 +8,23 @@ Release Notes for Seq66 v. 0.99.12 2024-01-09
QT_LIBS in FreeBSD. Therefore...
- ... Added a qbuild.sh script to replace the old qbuild (bash)
script and to be used instead of autotools in FreeBSD.
- Seq66 builds and runs, but currently detects only software
MIDI ports running under JACK.
- Added an autogen.sh script to use with basic UNIX shells like
dash.
- Fixed the processing of SysEx and Meta events.
- Reading and writing in the MIDI file upgraded.
- Display SysEx and text in the event editor.
- Added new 'rc' option to skip, recover, or abort from bad
running status in MIDI files. See the trilogy.mid contributed
file.
- Handle unterminated SysEx messages (Dixie04.mid).
- Fixed issue with building the command-line version with "portmidi"
(seq66clip).
- Fixed bugs in --option log=file.
- Fixed Q button not working to set keep-queue status.
- Fixed issue with building the command-line version with "portmidi".
- Fixed a one-character buffer overflow in portmidi.c. Thanks,
valgrind!
- Fixed bugs in --option log=file.
- Fixed Q button not working to set keep-queue status.
- Fixed queued-solo functionality.
- Upgraded the Event editor Dump output.
- Disabled the grid-solo option as redundant.

Expand Down
14 changes: 10 additions & 4 deletions TODO
Original file line number Diff line number Diff line change
@@ -1,6 +1,15 @@
TO DO for Seq66 0.99.12
Chris Ahlstrom
2019-04-13 to 2024-01-10
2019-04-13 to 2024-01-13

Build:

- Add "make install" support to qbuild.sh.
- Figure out these compiler warnings on the Arch Linux box:

/usr/include/qt/QtCore/qnamespace.h:360:10: warning: type
‘Qt::WidgetAttribute’ violates the C++ One Definition Rule [-Wodr]
360 | enum WidgetAttribute {

Misc:

Expand All @@ -10,9 +19,6 @@ Misc:
not saved.
- The Carpet song has PPQN = 120 and displays weirdly in pattern editor.
Too difficult to fix at this time; converted it to 192.
- Clang-16:
- The qbuild.sh build succeeds, but execution yields an
error likely due to some dependency of libxcb missing.
- Show time-sig events in grid slot?

Mutes:
Expand Down
61 changes: 61 additions & 0 deletions autogen.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
#!/bin/sh
#
#******************************************************************************
# autogen.sh (Seq66)
#------------------------------------------------------------------------------
##
# \file autogen.sh
# \library Seq66
# \author Chris Ahlstrom
# \date 2024-01-12
# \update 2024-01-13
# \version $Revision$
# \license Whatever
#
# Use this script in any manner whatsoever. You don't even need to give
# me any credit. However, keep in mind the value of the GPL in keeping
# software and its descendant modifications available to the community for
# all time. Uses basic shell commands instead of bashisms.
#
#------------------------------------------------------------------------------


aclocal -I m4 --install
if test $? = 0 ; then
echo "aclocal finished"
autoconf
if test $? = 0 ; then
echo "autoconf finished"
autoheader
if test $? = 0 ; then
echo "autoheader finished"
libtoolize --automake --force --copy
if test $? = 0 ; then
echo "libtoolize finished"
automake --foreign --add-missing --copy
if test $? = 0 ; then
echo "automake finished"
else
echo "automake failed; is it installed?"
fi
else
echo "libtoolize failed; is it installed?"
fi
else
echo "autoheader failed"
fi
else
echo "autoconf failed; is autoconf installed?"
fi
else
echo "aclocal failed; are autoconf and autoconf-archive installed?"
fi

echo "If all steps succeeded, run ./configure with desired parameters."


#******************************************************************************
# autogen.sh (Seq66)
#------------------------------------------------------------------------------
# vim: ts=3 sw=3 wm=4 et ft=sh
#------------------------------------------------------------------------------
10 changes: 5 additions & 5 deletions bootstrap
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
# \library Seq66
# \author Chris Ahlstrom
# \date 2018-11-09
# \update 2023-12-06
# \update 2024-01-12
# \version $Revision$
# \license $XPC_SUITE_GPL_LICENSE$
#
Expand Down Expand Up @@ -36,16 +36,16 @@ LANG=C
export LANG
CYGWIN=binmode
export CYGWIN
export SEQ66_SCRIPT_EDIT_DATE="2022-12-06"
export SEQ66_BOOTSTRAP_EDIT_DATE="2024-01-12"
export SEQ66_LIBRARY_API_VERSION="0.99"
export SEQ66_LIBRARY_VERSION="$SEQ66_LIBRARY_API_VERSION.9"
export SEQ66_LIBRARY_VERSION="$SEQ66_LIBRARY_API_VERSION.12"

#******************************************************************************
# Version info
#------------------------------------------------------------------------------

if [ "$1" == "--version" ] || [ "$1" == "-v" ] ; then
echo "Seq66 version $SEQ66_LIBRARY_VERSION $SEQ66_SCRIPT_EDIT_DATE"
echo "Seq66 version $SEQ66_LIBRARY_VERSION $SEQ66_BOOTSTRAP_EDIT_DATE"
exit 0
fi

Expand Down Expand Up @@ -100,7 +100,7 @@ EXTRAFLAGS=""
if [ "$1" == "--help" ] ; then

cat << E_O_F
Usage: ./bootstrap [options] ($SEQ66_LIBRARY_VERSION-$SEQ66_SCRIPT_EDIT_DATE)
Usage: ./bootstrap [options] ($SEQ66_LIBRARY_VERSION-$SEQ66_BOOTSTRAP_EDIT_DATE)
'bootstrap' sets up GNU automake and libtool support for the Seq66 project
and creates the 'configure' script. It can super-clean the project, removing
Expand Down
24 changes: 18 additions & 6 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ dnl \file configure.ac
dnl \library Seq66
dnl \author Chris Ahlstrom
dnl \date 2018-11-09
dnl \update 2023-12-29
dnl \update 2024-01-13
dnl \version $Revision$
dnl \license $XPC_SUITE_GPL_LICENSE$
dnl
Expand Down Expand Up @@ -125,12 +125,24 @@ dnl the installation sub-directories.
dnl
dnl Is there a way to do this for FreeBSD??? For now see seq66_features.cpp.

AC_DEFINE_UNQUOTED(APP_BUILD_OS, ["$ac_build_os"], "OS/kernel where build was done")
AC_DEFINE_UNQUOTED(
APP_BUILD_OS,
["$ac_build_os"],
"OS/kernel where build was done")

dnl AC_DEFINE_UNQUOTED(
dnl APP_BUILD_ISSUE,
dnl "[m4_normalize(esyscmd([cat /etc/issue.net]))]",
dnl "Distro of build")
dnl
dnl Let's try a more universal method.

AC_DEFINE_UNQUOTED(
APP_BUILD_ISSUE,
"[m4_normalize(esyscmd([cat /etc/issue.net]))]",
"Distro of build")
AC_DEFINE(CLIENT_NAME, ["seq66"], "Name to display as client/port")
"[m4_normalize(esyscmd([uname -o]))]",
"Operating system of build")

AC_DEFINE(CLIENT_NAME, ["seq66"], "Name to display as client/port")

SEQ66_SUITE_NAME="SEQ66"
AC_SUBST([SEQ66_SUITE_NAME])
Expand Down Expand Up @@ -534,7 +546,7 @@ dnl automatically for us.

AH_TOP(

#define VERSION_DATE_SHORT "2023-12-29"
#define VERSION_DATE_SHORT "2024-01-13"
#define API_VERSION "0.99"
#define VERSION "0.99.12"

Expand Down
Loading

0 comments on commit 786ab8a

Please sign in to comment.