Skip to content

Commit

Permalink
Implement in-tree build and move generated files under build directory
Browse files Browse the repository at this point in the history
- Moves generated file paths.
- Replaces CMAKE_PROJECT_NAME with PROJECT_NAME.
- Replaces CMAKE_PROJECT_VERSION with PROJECT_VERSION.
- Adds a condition that checks CMAKE_SOURCE_DIR.
  - Avoids finding packages such as libobs
  - Does not create installer files.
  • Loading branch information
norihiro committed Aug 24, 2024
1 parent 35d87b6 commit f4ce96b
Show file tree
Hide file tree
Showing 9 changed files with 58 additions and 51 deletions.
13 changes: 6 additions & 7 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ jobs:
path: '${{ env.FILE_NAME }}'
- name: Check package
run: |
. ci/ci_includes.generated.sh
. build/ci/ci_includes.generated.sh
set -ex
sudo apt install '${{ env.FILE_NAME }}'
case ${{ matrix.obs }} in
Expand Down Expand Up @@ -196,12 +196,11 @@ jobs:
-D PKG_SUFFIX=$PKG_SUFFIX \
"${cmake_opt[@]}"
cmake --build build --config RelWithDebInfo
echo "PKG_SUFFIX='$PKG_SUFFIX'" >> ci/ci_includes.generated.sh
- name: Prepare package
run: |
set -ex
. ci/ci_includes.generated.sh
. build/ci/ci_includes.generated.sh
cmake --install build --config RelWithDebInfo --prefix=release
case ${{ matrix.obs }} in
27)
Expand All @@ -219,7 +218,7 @@ jobs:
- name: Codesign
if: ${{ github.event_name != 'pull_request' && steps.setup.outputs.haveCodesignIdent == 'true' }}
run: |
. ci/ci_includes.generated.sh
. build/ci/ci_includes.generated.sh
set -ex
case ${{ matrix.obs }} in
27)
Expand All @@ -244,7 +243,7 @@ jobs:
- name: Package
run: |
. ci/ci_includes.generated.sh
. build/ci/ci_includes.generated.sh
set -ex
zipfile=$PWD/package/${PLUGIN_NAME}${PKG_SUFFIX}.zip
mkdir package
Expand All @@ -260,10 +259,10 @@ jobs:
- name: Productsign
if: ${{ github.event_name != 'pull_request' && steps.setup.outputs.haveCodesignIdent == 'true' }}
run: |
. ci/ci_includes.generated.sh
. build/ci/ci_includes.generated.sh
pkgfile=package/${PLUGIN_NAME}${PKG_SUFFIX}.pkg
set -e
. ci/ci_includes.generated.sh
. build/ci/ci_includes.generated.sh
productsign --sign "${{ secrets.MACOS_SIGNING_INSTALLER_IDENTITY }}" $pkgfile package/${PLUGIN_NAME}-signed.pkg
mv package/${PLUGIN_NAME}-signed.pkg $pkgfile
Expand Down
3 changes: 0 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,3 @@

.vscode
.idea

# ignore generated files
*.generated.*
64 changes: 37 additions & 27 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,10 @@ set(LINUX_MAINTAINER_EMAIL "[email protected]")
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(libobs REQUIRED)
include(cmake/ObsPluginHelpers.cmake)
if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
find_package(libobs REQUIRED)
include(cmake/ObsPluginHelpers.cmake)
endif()

find_package(PkgConfig)
if(PKG_CONFIG_FOUND)
Expand Down Expand Up @@ -47,54 +49,47 @@ endif()

configure_file(
src/plugin-macros.h.in
../src/plugin-macros.generated.h
)
configure_file(
installer/installer-Windows.iss.in
../installer/installer-Windows.generated.iss
plugin-macros.generated.h
)

configure_file(
ci/ci_includes.sh.in
../ci/ci_includes.generated.sh
)

add_library(${CMAKE_PROJECT_NAME} MODULE
add_library(${PROJECT_NAME} MODULE
src/plugin-main.c
src/async-audio-filter.c
src/resampler.c
)

target_link_libraries(${CMAKE_PROJECT_NAME}
target_link_libraries(${PROJECT_NAME}
OBS::libobs
)

target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR})

if(USE_FFMPEG_SWRESAMPLE)
target_sources(${CMAKE_PROJECT_NAME} PRIVATE
target_sources(${PROJECT_NAME} PRIVATE
src/resampler-ffmpeg.c
)
target_link_libraries(${CMAKE_PROJECT_NAME}
target_link_libraries(${PROJECT_NAME}
FFmpeg::swresample
FFmpeg::avutil
)
endif()

if (USE_ERIKD_LIBSAMPLERATE)
target_sources(${CMAKE_PROJECT_NAME} PRIVATE
target_sources(${PROJECT_NAME} PRIVATE
src/resampler-erikd.c
)
endif()

if(USE_ERIKD_LIBSAMPLERATE_SYSTEM)
target_include_directories(${CMAKE_PROJECT_NAME}
target_include_directories(${PROJECT_NAME}
PRIVATE
${PC_LIBSAMPLERATE_INCLUDE_DIRS}
)
find_library(SAMPLERATE
NAMES ${PC_LIBSAMPLERATE_LIBRARIES}
HINTS ${PC_LIBSAMPLERATE_LIBRARY_DIRS}
)
target_link_libraries(${CMAKE_PROJECT_NAME}
target_link_libraries(${PROJECT_NAME}
${SAMPLERATE}
)
endif()
Expand All @@ -107,7 +102,7 @@ if(USE_ERIKD_LIBSAMPLERATE_DEPS)
set(LIBSAMPLERATE_INSTALL_PKGCONFIG_MODULE OFF)
option(BUILD_TESTING "" OFF) # ON by default in CTest
add_subdirectory(deps/libsamplerate)
target_link_libraries(${CMAKE_PROJECT_NAME}
target_link_libraries(${PROJECT_NAME}
samplerate
)
endif()
Expand All @@ -119,23 +114,38 @@ if(OS_WINDOWS)
add_definitions("-D_USE_MATH_DEFINES")
endif()

target_link_libraries(${CMAKE_PROJECT_NAME} OBS::w32-pthreads)
target_link_libraries(${PROJECT_NAME} OBS::w32-pthreads)
endif()

if(OS_LINUX)
target_compile_options(${CMAKE_PROJECT_NAME} PRIVATE -Wall -Wextra)
target_link_options(${CMAKE_PROJECT_NAME} PRIVATE "-Wl,-z,defs")
target_compile_options(${PROJECT_NAME} PRIVATE -Wall -Wextra)
target_link_options(${PROJECT_NAME} PRIVATE -Wl,-z,defs)
endif()

if(APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++ -fvisibility=default")

set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES PREFIX "")
set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "")
set(MACOSX_PLUGIN_GUI_IDENTIFIER "${MACOS_BUNDLEID}")
set(MACOSX_PLUGIN_BUNDLE_VERSION "${CMAKE_PROJECT_VERSION}")
set(MACOSX_PLUGIN_BUNDLE_VERSION "${PROJECT_VERSION}")
set(MACOSX_PLUGIN_SHORT_VERSION_STRING "1")
endif()

setup_plugin_target(${CMAKE_PROJECT_NAME})
setup_plugin_target(${PROJECT_NAME})

configure_file(installer/installer-macOS.pkgproj.in installer-macOS.generated.pkgproj)
if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
configure_file(
ci/ci_includes.sh.in
ci/ci_includes.generated.sh
)

configure_file(
installer/installer-macOS.pkgproj.in
installer-macOS.generated.pkgproj
)

configure_file(
installer/installer-Windows.iss.in
installer-Windows.generated.iss
)
endif()
7 changes: 4 additions & 3 deletions ci/ci_includes.sh.in
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
PLUGIN_NAME="@CMAKE_PROJECT_NAME@"
PLUGIN_VERSION="@CMAKE_PROJECT_VERSION@"
PLUGIN_NAME="@PROJECT_NAME@"
PLUGIN_VERSION="@PROJECT_VERSION@"
MACOS_BUNDLEID="@MACOS_BUNDLEID@"
LINUX_MAINTAINER_EMAIL="@LINUX_MAINTAINER_EMAIL@"
LINUX_MAINTAINER_EMAIL="@LINUX_MAINTAINER_EMAIL@"
PKG_SUFFIX='@PKG_SUFFIX@'
2 changes: 1 addition & 1 deletion ci/windows/package-windows.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ cp ../deps/libsamplerate/COPYING ../release/data/obs-plugins/${PLUGIN_NAME}/LICE

7z a "${PLUGIN_NAME}-${PackageVersion}-obs$1-Windows.zip" ../release/*
cmd.exe <<EOF
iscc ..\\installer\\installer-Windows.generated.iss /O. /F"${PLUGIN_NAME}-${PackageVersion}-obs$1-Windows-Installer"
iscc ..\\build\\installer-Windows.generated.iss /O. /F"${PLUGIN_NAME}-${PackageVersion}-obs$1-Windows-Installer"
EOF
sleep 2 && echo

Expand Down
4 changes: 2 additions & 2 deletions cmake/ObsPluginHelpers.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -221,9 +221,9 @@ else()
endif()

if(OS_LINUX)
set(CPACK_PACKAGE_NAME "${CMAKE_PROJECT_NAME}")
set(CPACK_PACKAGE_NAME "${PROJECT_NAME}")
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "${LINUX_MAINTAINER_EMAIL}")
set(CPACK_PACKAGE_VERSION "${CMAKE_PROJECT_VERSION}")
set(CPACK_PACKAGE_VERSION "${PROJECT_VERSION}")
option(PKG_SUFFIX "Suffix of package name" "-linux-x86_64")
set(CPACK_PACKAGE_FILE_NAME
"${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}${PKG_SUFFIX}")
Expand Down
4 changes: 2 additions & 2 deletions installer/installer-Windows.iss.in
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#define MyAppName "@CMAKE_PROJECT_NAME@"
#define MyAppVersion "@CMAKE_PROJECT_VERSION@"
#define MyAppName "@PROJECT_NAME@"
#define MyAppVersion "@PROJECT_VERSION@"
#define MyAppPublisher "@PLUGIN_AUTHOR@"
#define MyAppURL "@PLUGIN_URL@"

Expand Down
8 changes: 4 additions & 4 deletions installer/installer-macOS.pkgproj.in
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@
<key>GID</key>
<integer>80</integer>
<key>PATH</key>
<string>../@RELATIVE_INSTALL_PATH@/@CMAKE_PROJECT_NAME@@FIRST_DIR_SUFFIX@</string>
<string>../@RELATIVE_INSTALL_PATH@/@PROJECT_NAME@@FIRST_DIR_SUFFIX@</string>
<key>PATH_TYPE</key>
<integer>1</integer>
<key>PERMISSIONS</key>
Expand Down Expand Up @@ -521,7 +521,7 @@
<key>LOCATION</key>
<integer>0</integer>
<key>NAME</key>
<string>@CMAKE_PROJECT_NAME@</string>
<string>@PROJECT_NAME@</string>
<key>OVERWRITE_PERMISSIONS</key>
<false/>
<key>PAYLOAD_SIZE</key>
Expand All @@ -533,7 +533,7 @@
<key>USE_HFS+_COMPRESSION</key>
<false/>
<key>VERSION</key>
<string>@CMAKE_PROJECT_VERSION@</string>
<string>@PROJECT_VERSION@</string>
</dict>
<key>TYPE</key>
<integer>0</integer>
Expand Down Expand Up @@ -905,7 +905,7 @@
</dict>
</array>
<key>NAME</key>
<string>@CMAKE_PROJECT_NAME@@PKG_SUFFIX@</string>
<string>@PROJECT_NAME@@PKG_SUFFIX@</string>
<key>PAYLOAD_ONLY</key>
<false/>
<key>TREAT_MISSING_PRESENTATION_DOCUMENTS_AS_WARNING</key>
Expand Down
4 changes: 2 additions & 2 deletions src/plugin-macros.h.in
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#ifndef PLUGINNAME_H
#define PLUGINNAME_H

#define PLUGIN_NAME "@CMAKE_PROJECT_NAME@"
#define PLUGIN_VERSION "@CMAKE_PROJECT_VERSION@"
#define PLUGIN_NAME "@PROJECT_NAME@"
#define PLUGIN_VERSION "@PROJECT_VERSION@"
#define ID_PREFIX "@ID_PREFIX@"

#cmakedefine USE_FFMPEG_SWRESAMPLE
Expand Down

0 comments on commit f4ce96b

Please sign in to comment.