Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Revise build system and CI #139

Merged
merged 19 commits into from Nov 13, 2018
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
034bb2f
Revise CMakeLists.txt in all folders
computerquip-streamlabs Nov 4, 2018
2e1b7cf
Merge branch 'staging' of github.com:stream-labs/obs-studio-node into…
computerquip-streamlabs Nov 6, 2018
345ea4f
Shutoff broken lib-datalane tests by default
computerquip-streamlabs Nov 6, 2018
5f9aef8
Add config manager files manually due to merge conflicts
computerquip-streamlabs Nov 6, 2018
64a2c46
Use underscores instead of hyphens for node-module
computerquip-streamlabs Nov 6, 2018
54d15bf
Remove rdp abilities by default
computerquip-streamlabs Nov 8, 2018
d8a9600
Remove whitespace from appveyor script
computerquip-streamlabs Nov 8, 2018
df1d67f
Place longer CI commands into separate script
computerquip-streamlabs Nov 8, 2018
a978009
Organize runtime versions to be more readable and accurate
computerquip-streamlabs Nov 8, 2018
a51c570
Allow a config variable for libobs archive URL
computerquip-streamlabs Nov 8, 2018
abcf731
Use S3 for deployment
computerquip-streamlabs Nov 8, 2018
da9f020
Roll electron 3.x artifact
computerquip-streamlabs Nov 9, 2018
a0dbd86
Use proper versioning and naming in appveyor artifact
computerquip-streamlabs Nov 9, 2018
ce86a7a
Copy signed binaries only on release
computerquip-streamlabs Nov 9, 2018
8479459
Add forgotten script to copy signed binaries
computerquip-streamlabs Nov 13, 2018
b826c75
Use cloudflare links for libobs default URL
computerquip-streamlabs Nov 13, 2018
c8de813
Qualify version number to place in artifact
computerquip-streamlabs Nov 13, 2018
1fb7b6d
Use new cloudflare bucket for S3
computerquip-streamlabs Nov 13, 2018
fa36b01
Fix incorrect environment variable when releasing
computerquip-streamlabs Nov 13, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
100 changes: 28 additions & 72 deletions CMakeLists.txt
@@ -1,94 +1,50 @@
CMAKE_MINIMUM_REQUIRED(VERSION 3.1)
cmake_minimum_required(VERSION 3.0.0 FATAL_ERROR)

# Automatic Versioning
SET(VERSION_FULL 0.3.21)
SET(VERSION_BUILD 0)
IF(EXISTS "${CMAKE_SOURCE_DIR}/.git")
SET(GIT_RESULT "")
SET(GIT_OUTPUT "")
EXECUTE_PROCESS(
COMMAND git rev-list --count --topo-order v${VERSION_FULL}..HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
RESULT_VARIABLE GIT_RESULT
OUTPUT_VARIABLE GIT_OUTPUT
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_STRIP_TRAILING_WHITESPACE ERROR_QUIET
)
IF(GIT_RESULT EQUAL 0)
SET(VERSION_BUILD "${GIT_OUTPUT}")
ENDIF()
ENDIF()
set(VERSION_FULL 0.3.21)
set(VERSION_BUILD 0)

PROJECT(
obs-studio-node
VERSION ${VERSION_FULL}.${VERSION_BUILD}
)
find_package(Git)

################################################################################
# CMake
################################################################################
MESSAGE(STATUS "OBS Studio for Node.JS Version ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}.${PROJECT_VERSION_TWEAK}")
if(EXISTS "${CMAKE_SOURCE_DIR}/.git" AND Git_FOUND)
execute_process(
COMMAND "${GIT_EXECUTABLE}" rev-list --count --topo-order v${VERSION_FULL}..HEAD
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_STRIP_TRAILING_WHITESPACE
ERROR_QUIET
)
endif()

# Set Module Path
SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake")
project(obs-studio-node VERSION ${VERSION_FULL}.${VERSION_BUILD})
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake")

# CppCheck
include(cppcheck)

################################################################################
# Compiler
################################################################################
cppcheck(EXCLUDE "${PROJECT_SOURCE_DIR}/node_modules")

# MSVC Specific
IF(WIN32)
if(WIN32)
# Resource VersionInfo
SET(
PROJECT_PRODUCT_NAME
"OBS Studio for Node.JS"
)
SET(
PROJECT_COMPANY_NAME
"Streamlabs"
)
SET(
PROJECT_COPYRIGHT
"Streamlabs © 2017 - 2018"
)
SET(
PROJECT_LEGAL_TRADEMARKS_1
""
)
SET(
PROJECT_LEGAL_TRADEMARKS_2
""
)

set(PROJECT_PRODUCT_NAME "OBS Studio for Node.JS")
set(PROJECT_COMPANY_NAME "Streamlabs")
set(PROJECT_COPYRIGHT "Streamlabs © 2017 - 2018")
set(PROJECT_LEGAL_TRADEMARKS_1 "")
set(PROJECT_LEGAL_TRADEMARKS_2 "")

configure_file(
${PROJECT_SOURCE_DIR}/cmake/version.rc.in
${PROJECT_BINARY_DIR}/version.rc
@ONLY
)

# ToDo: Figure out a better way to tell the test setup where to find our binaries.
configure_file(
${PROJECT_SOURCE_DIR}/cmake/obs.js.in
${PROJECT_SOURCE_DIR}/tests/helpers/obs.js
@ONLY
)
ENDIF()

#############################
# Configuration
#############################

# Installation
SET(CMAKE_INSTALL_PREFIX "${CMAKE_SOURCE_DIR}/distribute" CACHE PATH "Path to install files to")

#############################
# Projects
#############################

cppcheck(EXCLUDE "${PROJECT_SOURCE_DIR}/node_modules")
endif()

ADD_SUBDIRECTORY(lib-streamlabs-ipc)
ADD_SUBDIRECTORY(obs-studio-client)
ADD_SUBDIRECTORY(obs-studio-server)
add_subdirectory(lib-streamlabs-ipc)
add_subdirectory(obs-studio-client)
add_subdirectory(obs-studio-server)
28 changes: 17 additions & 11 deletions cmake/NodeJS.cmake
Expand Up @@ -134,9 +134,9 @@ function(nodejs_init)
endif()

# Regex patterns used by the init function for component extraction
set(HEADERS_MATCH "^([A-Fa-f0-9]+)[ \t]+(([^-]+)-(.+)-headers\.tar\.gz)$")
set(LIB32_MATCH "(^[0-9A-Fa-f]+)[ \t]+(win-x86/([^/]*\.lib))$")
set(LIB64_MATCH "(^[0-9A-Fa-f]+)[ \t]+(win-x64/(.*\.lib))$")
set(HEADERS_MATCH "^([A-Fa-f0-9]+)[ \t]+([^-]+)-(headers|v?[0-9.]+)-(headers|v?[0-9.]+)([.]tar[.]gz)$")
set(LIB32_MATCH "(^[0-9A-Fa-f]+)[\t ]+(win-x86)?(/)?([^/]*)(.lib)$")
set(LIB64_MATCH "(^[0-9A-Fa-f]+)[\t ]+(win-)?(x64/)(.*)(.lib)$")

# Parse function arguments
cmake_parse_arguments(nodejs_init
Expand Down Expand Up @@ -295,9 +295,15 @@ function(nodejs_init)
endif()
string(REGEX MATCH ${HEADERS_MATCH} HEADERS_CHECKSUM ${HEADERS_CHECKSUM})
set(HEADERS_CHECKSUM ${CMAKE_MATCH_1})
set(NAME ${CMAKE_MATCH_3})
set(VERSION ${CMAKE_MATCH_4})
set(HEADERS_ARCHIVE ${CMAKE_MATCH_2})
set(NAME ${CMAKE_MATCH_2})
if(CMAKE_MATCH_3 STREQUAL "headers")
set(VERSION ${CMAKE_MATCH_4})
else()
set(VERSION ${CMAKE_MATCH_3})
endif()
set(HEADERS_ARCHIVE
${CMAKE_MATCH_2}-${CMAKE_MATCH_3}-${CMAKE_MATCH_4}${CMAKE_MATCH_5}
)
# Make sure that the root directory exists, and that the checksum
# file has been moved over from temp
if(DEFINED ROOT)
Expand All @@ -307,7 +313,7 @@ function(nodejs_init)
if(DEFINED OLD_ROOT AND NOT ROOT STREQUAL "${OLD_ROOT}")
file(REMOVE ${TEMP}/CHECKSUM)
file(REMOVE ${ROOT}/CHECKSUM)
message(FATAL_ERROR "Version/Name mismatch - ${OLD_ROOT} vs ${ROOT}")
message(FATAL_ERROR "Version/Name mismatch")
endif()
file(MAKE_DIRECTORY ${ROOT})
if(EXISTS ${TEMP}/CHECKSUM)
Expand Down Expand Up @@ -418,8 +424,8 @@ function(nodejs_init)
string(REGEX MATCH ${LIB32_MATCH} LIB32_CHECKSUM ${LIB32_CHECKSUM})
set(LIB32_CHECKSUM ${CMAKE_MATCH_1})
set(LIB32_PATH win-x86)
set(LIB32_NAME ${CMAKE_MATCH_3})
set(LIB32_TARGET ${CMAKE_MATCH_2})
set(LIB32_NAME ${CMAKE_MATCH_4}${CMAKE_MATCH_5})
set(LIB32_TARGET ${CMAKE_MATCH_2}${CMAKE_MATCH_3}${LIB32_NAME})
if(NOT EXISTS ${ROOT}/${LIB32_PATH})
file(REMOVE_RECURSE ${TEMP}/${LIB32_PATH})
download_file(
Expand Down Expand Up @@ -456,8 +462,8 @@ function(nodejs_init)
string(REGEX MATCH ${LIB64_MATCH} LIB64_CHECKSUM ${LIB64_CHECKSUM})
set(LIB64_CHECKSUM ${CMAKE_MATCH_1})
set(LIB64_PATH win-x64)
set(LIB64_NAME ${CMAKE_MATCH_3})
set(LIB64_TARGET ${CMAKE_MATCH_2})
set(LIB64_NAME ${CMAKE_MATCH_4}${CMAKE_MATCH_5})
set(LIB64_TARGET ${CMAKE_MATCH_2}${CMAKE_MATCH_3}${LIB64_NAME})
if(NOT EXISTS ${ROOT}/${LIB64_PATH})
file(REMOVE_RECURSE ${TEMP}/${LIB64_PATH})
download_file(
Expand Down
3 changes: 0 additions & 3 deletions cmake/obs.js.in
@@ -1,5 +1,2 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

const obs = require("@CMAKE_INSTALL_PREFIX@")
exports.obs = obs;
8 changes: 8 additions & 0 deletions js/module.d.ts
Expand Up @@ -24,6 +24,14 @@ export declare const enum EDeinterlaceFieldOrder {
Top = 0,
Bottom = 1
}
export declare const enum EVideoCodes {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is from a previous PR that didn't compile typescript to definitions.

Success = 0,
Fail = -1,
NotSupported = -2,
InvalidParam = -3,
CurrentlyActive = -4,
ModuleNotFound = -5
}
export declare const enum EDeinterlaceMode {
Disable = 0,
Discard = 1,
Expand Down
2 changes: 1 addition & 1 deletion js/module.js
@@ -1,6 +1,6 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const obs = require('./obs-studio-client.node');
const obs = require('./obs_studio_client.node');
const path = require("path");
const fs = require("fs");
exports.DefaultD3D11Path = path.resolve(__dirname, `libobs-d3d11.dll`);
Expand Down
2 changes: 1 addition & 1 deletion js/module.ts
@@ -1,4 +1,4 @@
const obs = require('./obs-studio-client.node');
const obs = require('./obs_studio_client.node');
import * as path from 'path';
import * as fs from 'fs';

Expand Down
2 changes: 1 addition & 1 deletion lib-streamlabs-ipc