Skip to content
This repository has been archived by the owner on Dec 1, 2022. It is now read-only.

Merge Tenacity's build system #45

Closed
wants to merge 19 commits into from
Closed

Conversation

generic-pers0n
Copy link
Member

@generic-pers0n generic-pers0n commented Aug 8, 2022

References #43.

Drafted for now because more commits need to be cherry picked. Right now, this isn't really Tenacity's build system, but we do take some commits from Tenacity regarding build system modifications.

  • I made sure the code compiles on my machine
  • I made sure there are no unnecessary changes in the code
  • I made sure the title of the PR reflects the core meaning of the issue you are solving
  • I made sure the commit message(s) contain a description and answer the question "Why do those changes fix that particular issue?" or "Why are those changes really necessary as improvements?"

@generic-pers0n
Copy link
Member Author

generic-pers0n commented Aug 20, 2022

🎉

127755648-03cad155-0828-4041-8b1c-ace183f98351

After merging this pull request, we can continue with porting Saucedacity to Qt. This has been a long time in the making.

But let's not get too excited yet. I still need to do testing on Windows.

Edit: Just to clarify, #50 should be merged first before this gets merged.

@generic-pers0n
Copy link
Member Author

generic-pers0n commented Aug 22, 2022

Latest Status

  • Saucedacity builds on Pop!_OS 22.04 against system libraries (including CodeLite's wxWidgets, which is wxWidgets 3.2.0). However, Saucedacity reports a version of "0.0.0".
    • Using vcpkg does not work.
    • Using ccache does not work. This is apparently because some wxWidgets classes are not properly defined.

Overall Status: Broken but it can build somewhere...somewhat.

@n0toose
Copy link
Member

n0toose commented Aug 22, 2022

However, Saucedacity reports a version of "0.0.0".

Keep in mind, we define our version in CMake instead of a hardcoded header.

@TheEvilSkeleton
Copy link
Collaborator

Awesome work! After this is merged, I'll focus on creating the flatpak.

@generic-pers0n
Copy link
Member Author

generic-pers0n commented Aug 27, 2022

Ah yes. I broke things after a rebase...

The point of the rebase: to test out cherry-picking a Tenacity commit refactoring the AboutDialog (and also creating BuildInfo.h). If that didn't work, then...benefit of the doubt I guess.

What's up: FFmpegFunctions.h is not found. I'll have to investigate this issue.

@generic-pers0n
Copy link
Member Author

Differences Between Tenacity's Original Build System and This Build System

  • We will carry on our own libraries (e.g. lib-basic-ui) and they will be updated for this new build system.

  • wxWidgets 3.0 will not be supported. This is more than a build system change, but this should be documented here because nothing will change in this regard after this PR is merged.

I might update this list as I come up with more differences

@generic-pers0n
Copy link
Member Author

Ah yes. I broke things after a rebase...

The point of the rebase: to test out cherry-picking a Tenacity commit refactoring the AboutDialog (and also creating BuildInfo.h). If that didn't work, then...benefit of the doubt I guess.

What's up: FFmpegFunctions.h is not found. I'll have to investigate this issue.

Everything is working again. I'll be trying new commits soon.

@generic-pers0n
Copy link
Member Author

Did an interactive rebase that removed a few commits. Hopefully this PR looks nicer now.

Unfortunately, things are currently broken again. I'll need to investigate this a little later.

@generic-pers0n generic-pers0n force-pushed the tenacity-build-system branch 2 times, most recently from ce04593 to b34fb25 Compare September 5, 2022 03:03
Be-ing and others added 7 commits September 11, 2022 12:43
It is unconventional and unnecessary to prefix CMake options. Also
this is not Audacity anymore. :)

===============================================================================

Cherry-picked from Tenacity commit
49015e77d0cf39430d180b88f29a68e036235e81. The changes of this commit
mean that options are no longer prefixed with "saucedacity_".
Additionally, this commit goes a step further and removes the entire
${_OPT} variable in our build system.

Commands used:

find . -name "*.txt" -exec sed -i "s/\${_OPT}//g" {} +
find . -name "*.cmake" -exec sed -i "s/\${_OPT}//g" {} +

Signed-off-by: Avery King <[email protected]>
Co-authored-by: Be <[email protected]>
Removes PortMixer code since PortMixer isn't supported by PortAudio

===============================================================================

Cherry picked from Tenacity commit
12c0cba3c45505f2470bbc5cf1f4cc02e3f3a02c. Modified in order to apply to
Saucedacity.

Signed-off-by: Avery King <[email protected]>
Co-authored-by: akleja <[email protected]>
The mixer toolbar is redundant when PortMixer isn't supported

Cherry picked from Tenacity commit
056de91cf79179f53f56be2f809709137d65e2a5.

Signed-off-by: Avery King <[email protected]>
Signed-off-by: akleja <[email protected]>
Removes Experimental automated input level adjustment.
It uses PortMixer (hardware level adjustments) to try to adjust the input
level, which is a flawed concept. It also relies on PortMixer which is no
longer supported.

===============================================================================

Cherry-picked from Tenacity commit
35d059c965b9a65091c43195f1d36d16587bbb80.

Signed-off-by: Avery King <[email protected]>
Signed-off-by: akleja <[email protected]>
This is a pointless source of non-reproducibility and also causes
compiler caches to miss 100% of the time after midnight.

Signed-off-by: Be <[email protected]>
This does not build without the vendored fork of PortAudio.

Signed-off-by: Be <[email protected]>
Also, necessarily coupled with this:
* add CMakeLists.txt for vendored libnyquist
* fix SoundTouch header include paths
* move nyq_reformat_aud_do_response function
* handle portSMF headers installed to portsmf or portSMF

===========================================================

Cherry picked from Tenacity commit b1549dd. This commit has been
modified to apply to Saucedacity in the following ways:

* Soxr::soxr and EXPAT::EXPAT not needed for target "Saucedacity" but
  they are needed for lib-math and lib-xml, respectively.

* Our libraries have been updated appropriately.

* libnyquist's new CMakeLists.txt was slightly modified to remove a
  dependency for wxWidgets. libnyquist appears to be written in C and
  therefore does not depend on wxWidgets (it can't, really).

Signed-off-by: Avery King <[email protected]>
Co-authored-by: Be <[email protected]>
Be-ing and others added 12 commits September 11, 2022 12:44
Cherry picked from Tenacity commit ea48aa3.

Signed-off-by: Avery King <[email protected]>
Co-authored-by: Be <[email protected]>
Cherry picked from Tenacity commit 74ccbb8. All submodules have been
removed in Saucedacity.

Signed-off-by: Avery King <[email protected]>
Co-authored-by: Be <[email protected]>
This fixes a link error with MSVC and sccache:

wxbase31u.lib(wxbase315u_vc_custom.dll) : error LNK2005: "public: __cdecl wxEventFilter::wxEventFilter(void)" (??0wxEventFilter@@qeaa@XZ) already defined in ToolManager.cpp.obj
wxbase31u.lib(wxbase315u_vc_custom.dll) : error LNK2005: "public: virtual __cdecl wxEventFilter::~wxEventFilter(void)" (??1wxEventFilter@@UEAA@XZ) already defined in ToolManager.cpp.obj

Signed-off-by: Be <[email protected]>
This should fix an issue with libwinpthread not being found on Windows.

Reference-to: https://github.com/tenacityteam/tenacity/issues/727

Signed-off-by: Avery King <[email protected]>
Cherry-picked from Tenacity commit af90fee. Changes have been made to
refer to Saucedacity and its repos.

Signed-off-by: Avery King <[email protected]>
Co-authored-by: Be <[email protected]>
Remove linking option containing erroneous reference to `z.lib`.
Add `set` commands to provide documented `id3tag::id3tag` vars.

Signed-off-by: Emily Mabrey <[email protected]>
Signed-off-by: Be <[email protected]>
Co-authored-by: Emily Mabrey <[email protected]>
Co-authored-by: Be <[email protected]>
Signed-off-by: Avery King <[email protected]>
* Don't use wx-config to set the version.

* Use getStretchedTime instead of getInverseStretchedTime in
  EffectSBSMS.

Signed-off-by: Avery King <[email protected]>
Signed-off-by: Avery King <[email protected]>
@generic-pers0n
Copy link
Member Author

I'm going to redo this PR with a somewhat different scope.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants