diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 48f69fc..14d779a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -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 @@ -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) @@ -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) @@ -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 @@ -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 diff --git a/.gitignore b/.gitignore index 1982bf8..edec49d 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,3 @@ .vscode .idea - -# ignore generated files -*.generated.* diff --git a/CMakeLists.txt b/CMakeLists.txt index 740eeb3..dd63f47 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,8 +16,10 @@ set(LINUX_MAINTAINER_EMAIL "norihiro@nagater.net") 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) @@ -47,46 +49,39 @@ 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} ) @@ -94,7 +89,7 @@ if(USE_ERIKD_LIBSAMPLERATE_SYSTEM) NAMES ${PC_LIBSAMPLERATE_LIBRARIES} HINTS ${PC_LIBSAMPLERATE_LIBRARY_DIRS} ) - target_link_libraries(${CMAKE_PROJECT_NAME} + target_link_libraries(${PROJECT_NAME} ${SAMPLERATE} ) endif() @@ -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() @@ -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( + installer/installer-macOS.pkgproj.in + installer-macOS.generated.pkgproj + ) + + configure_file( + installer/installer-Windows.iss.in + installer-Windows.generated.iss + ) + + configure_file( + ci/ci_includes.sh.in + ci/ci_includes.generated.sh + ) +endif() diff --git a/ci/ci_includes.sh.in b/ci/ci_includes.sh.in index 306b941..71ce26c 100644 --- a/ci/ci_includes.sh.in +++ b/ci/ci_includes.sh.in @@ -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@" \ No newline at end of file +LINUX_MAINTAINER_EMAIL="@LINUX_MAINTAINER_EMAIL@" +PKG_SUFFIX='@PKG_SUFFIX@' diff --git a/ci/windows/package-windows.sh b/ci/windows/package-windows.sh index cd20ebf..d0175b2 100644 --- a/ci/windows/package-windows.sh +++ b/ci/windows/package-windows.sh @@ -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 <GID 80 PATH - ../@RELATIVE_INSTALL_PATH@/@CMAKE_PROJECT_NAME@@FIRST_DIR_SUFFIX@ + ../@RELATIVE_INSTALL_PATH@/@PROJECT_NAME@@FIRST_DIR_SUFFIX@ PATH_TYPE 1 PERMISSIONS @@ -521,7 +521,7 @@ LOCATION 0 NAME - @CMAKE_PROJECT_NAME@ + @PROJECT_NAME@ OVERWRITE_PERMISSIONS PAYLOAD_SIZE @@ -533,7 +533,7 @@ USE_HFS+_COMPRESSION VERSION - @CMAKE_PROJECT_VERSION@ + @PROJECT_VERSION@ TYPE 0 @@ -905,7 +905,7 @@ NAME - @CMAKE_PROJECT_NAME@@PKG_SUFFIX@ + @PROJECT_NAME@@PKG_SUFFIX@ PAYLOAD_ONLY TREAT_MISSING_PRESENTATION_DOCUMENTS_AS_WARNING diff --git a/src/plugin-macros.h.in b/src/plugin-macros.h.in index 766904a..596adff 100644 --- a/src/plugin-macros.h.in +++ b/src/plugin-macros.h.in @@ -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