diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..449ba71 --- /dev/null +++ b/.gitignore @@ -0,0 +1,194 @@ + +# Created by https://www.toptal.com/developers/gitignore/api/autotools,cmake,phpstorm +# Edit at https://www.toptal.com/developers/gitignore?templates=autotools,cmake,phpstorm + +### Autotools ### +# http://www.gnu.org/software/automake + +Makefile.in +/ar-lib +/mdate-sh +/py-compile +/test-driver +/ylwrap +.deps/ + +# http://www.gnu.org/software/autoconf + +autom4te.cache +/autoscan.log +/autoscan-*.log +/aclocal.m4 +/compile +/config.guess +/config.h.in +/config.log +/config.status +/config.sub +/configure +/configure.scan +/depcomp +/install-sh +/missing +/stamp-h1 + +# https://www.gnu.org/software/libtool/ + +/ltmain.sh + +# http://www.gnu.org/software/texinfo + +/texinfo.tex + +# http://www.gnu.org/software/m4/ + +m4/libtool.m4 +m4/ltoptions.m4 +m4/ltsugar.m4 +m4/ltversion.m4 +m4/lt~obsolete.m4 + +# Generated Makefile +# (meta build system like autotools, +# can automatically generate from config.status script +# (which is called by configure script)) +Makefile + +### Autotools Patch ### + +### CMake ### +CMakeLists.txt.user +CMakeCache.txt +CMakeFiles +CMakeScripts +Testing +cmake_install.cmake +install_manifest.txt +compile_commands.json +CTestTestfile.cmake +_deps + +### CMake Patch ### +# External projects +*-prefix/ + +### PhpStorm ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +### PhpStorm Patch ### +# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 + +# *.iml +# modules.xml +# .idea/misc.xml +# *.ipr + +# Sonarlint plugin +# https://plugins.jetbrains.com/plugin/7973-sonarlint +.idea/**/sonarlint/ + +# SonarQube Plugin +# https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin +.idea/**/sonarIssues.xml + +# Markdown Navigator plugin +# https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced +.idea/**/markdown-navigator.xml +.idea/**/markdown-navigator-enh.xml +.idea/**/markdown-navigator/ + +# Cache file creation bug +# See https://youtrack.jetbrains.com/issue/JBR-2257 +.idea/$CACHE_FILE$ + +# CodeStream plugin +# https://plugins.jetbrains.com/plugin/12206-codestream +.idea/codestream.xml + +# End of https://www.toptal.com/developers/gitignore/api/autotools,cmake,phpstorm + +.deps +.libs/ +build/ +configure.in +mkinstalldirs +run-tests.php +Makefile.global +acinclude.m4 +libtool +modules/ +*.lo +config.h +config.nice +*.la +Makefile* diff --git a/config.m4 b/config.m4 new file mode 100644 index 0000000..b0ff2a4 --- /dev/null +++ b/config.m4 @@ -0,0 +1,30 @@ +dnl +dnl * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +dnl * SPDX-License-Identifier: Apache-2.0. +dnl + +PHP_ARG_WITH(awscrt) + +if test "$PHP_AWSCRT" != "no"; then + AC_MSG_CHECKING([for libcrypto]) + for search_path in "$AWS_LIBCRYTO_INSTALL" "$PHP_AWSCRT/build/deps/openssl" /opt/openssl /usr/local /usr; do + if test -f "$search_path/include/openssl/crypto.h"; then + LIBCRYPTO_PATH=$search_path + break + fi + done + if test -z "$LIBCRYPTO_PATH"; then + AC_MSG_ERROR([not found]) + fi + + AC_MSG_RESULT([found at $LIBCRYPTO_PATH]) + + PHP_ADD_INCLUDE($LIBCRYPTO_PATH/include) + dnl PHP_ADD_LIBPATH($LIBCRYPTO_PATH/lib) + PHP_ADD_LIBRARY_WITH_PATH(:libcrypto.a, $LIBCRYPTO_PATH/lib, AWSCRT_SHARED_LIBADD) + + AWSCRT_SOURCES=src/*.c + + PHP_NEW_EXTENSION(awscrt, $AWSCRT_SOURCES, $ext_shared) + PHP_SUBST(AWSCRT_SHARED_LIBADD) +fi diff --git a/src/crt.c b/src/crt.c new file mode 100644 index 0000000..d5c88e4 --- /dev/null +++ b/src/crt.c @@ -0,0 +1,54 @@ + +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include "php_aws_crt.h" + +ZEND_DECLARE_MODULE_GLOBALS(awscrt); + +PHP_INI_BEGIN() +STD_PHP_INI_ENTRY("awscrt.log_level", "", PHP_INI_ALL, OnUpdateLongGEZero, log_level, zend_awscrt_globals, awscrt_globals) +PHP_INI_END() + +static PHP_MINIT_FUNCTION(awscrt) +{ + REGISTER_INI_ENTRIES(); + return SUCCESS; +} + +static PHP_MSHUTDOWN_FUNCTION(awscrt) +{ + UNREGISTER_INI_ENTRIES(); + + return SUCCESS; +} + +static PHP_GINIT_FUNCTION(awscrt) +{ +#if defined(COMPILE_DL_ASTKIT) && defined(ZTS) + ZEND_TSRMLS_CACHE_UPDATE(); +#endif + awscrt_globals->log_level = 0; +} + +zend_module_entry awscrt_module_entry = { + STANDARD_MODULE_HEADER, + "awscrt", + NULL, /* functions */ + PHP_MINIT(awscrt), + PHP_MSHUTDOWN(awscrt), + NULL, /* RINIT */ + NULL, /* RSHUTDOWN */ + NULL, /* MINFO */ + NO_VERSION_YET, + PHP_MODULE_GLOBALS(awscrt), + PHP_GINIT(awscrt), + NULL, /* GSHUTDOWN */ + NULL, /* RPOSTSHUTDOWN */ + STANDARD_MODULE_PROPERTIES_EX}; + +#ifdef COMPILE_DL_AWSCRT +ZEND_GET_MODULE(awscrt) +#endif diff --git a/src/php_aws_crt.h b/src/php_aws_crt.h new file mode 100644 index 0000000..d5b3bbf --- /dev/null +++ b/src/php_aws_crt.h @@ -0,0 +1,24 @@ + +#ifndef PHP_AWS_CRT_H +#define PHP_AWS_CRT_H + +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "php.h" + +ZEND_BEGIN_MODULE_GLOBALS(awscrt) +long log_level; +ZEND_END_MODULE_GLOBALS(awscrt) + +ZEND_EXTERN_MODULE_GLOBALS(awscrt) + +#define AWSCRT_GLOBAL(v) ZEND_MODULE_GLOBALS_ACCESSOR(awscrt, v) + +#endif /* PHP_AWS_CRT_H */