diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index af708f1f6..2eb789c27 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -67,16 +67,16 @@ jobs: fi echo "CC=$CC" >> $GITHUB_ENV - name: Build Debug Target - run: make CC="$CC" debug + run: make debug - name: Build Release Target if: ${{ !cancelled() }} - run: make CC="$CC" + run: make - name: Build TLS Debug Target if: matrix.arch == 'x64' - run: make CC="$CC" WEBUI_USE_TLS=1 debug + run: make WEBUI_USE_TLS=1 debug - name: Build TLS Release Target if: matrix.arch == 'x64' - run: make CC="$CC" WEBUI_USE_TLS=1 + run: make WEBUI_USE_TLS=1 - name: Build Examples if: matrix.arch == 'x64' run: | @@ -84,7 +84,7 @@ jobs: for example in $(find $examples_base_dir/* -maxdepth 0 -type d); do echo "> $example" cd $example || (exit_code=1 && continue) - if ! make CC="$CC"; then + if ! make; then echo "Failed to build '$example'" exit_code=1 continue diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 6a381a8a0..51ec8ac2a 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -46,17 +46,17 @@ jobs: fail-on-cache-miss: true - name: Setup OpenSSL run: | - echo "OPENSSL_CFLAGS=$(brew --cellar)/openssl@1.1/1.1.1w/include/" >> $GITHUB_ENV - echo "OPENSSL_LDFLAGS=$(brew --cellar)/openssl@1.1/1.1.1w/lib/" >> $GITHUB_ENV + echo "WEBUI_TLS_INCLUDE=$(brew --cellar)/openssl@1.1/1.1.1w/include/" >> $GITHUB_ENV + echo "WEBUI_TLS_LIB=$(brew --cellar)/openssl@1.1/1.1.1w/lib/" >> $GITHUB_ENV - name: Build Debug Target run: make ARCH_TARGET=${{ matrix.arch }} debug - name: Build Release Target if: ${{ !cancelled() }} run: make ARCH_TARGET=${{ matrix.arch }} - name: Build TLS Debug Target - run: make WEBUI_USE_TLS=1 WEBUI_TLS_INCLUDE="$OPENSSL_CFLAGS" WEBUI_TLS_LIB="$OPENSSL_LDFLAGS" debug + run: make WEBUI_USE_TLS=1 debug - name: Build TLS Release Target - run: make WEBUI_USE_TLS=1 WEBUI_TLS_INCLUDE="$OPENSSL_CFLAGS" WEBUI_TLS_LIB="$OPENSSL_LDFLAGS" + run: make WEBUI_USE_TLS=1 - name: Build examples run: | examples_base_dir=$(pwd)/examples/C diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 6db34f8f5..9c20f6b09 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -38,6 +38,8 @@ jobs: fail-fast: false env: ARTIFACT: webui-windows-${{ matrix.cc }}-x64 + WEBUI_TLS_INCLUDE: "C:\\Program Files\\OpenSSL\\include" + WEBUI_TLS_LIB: "C:\\Program Files\\OpenSSL\\lib" steps: - uses: actions/checkout@v4 - uses: actions/cache/restore@v4 @@ -54,9 +56,9 @@ jobs: if: ${{ !cancelled() }} run: ${{ matrix.make }} - name: Build TLS Debug Target - run: ${{ matrix.make }} WEBUI_USE_TLS=1 WEBUI_TLS_INCLUDE="C:\Program Files\OpenSSL\include" WEBUI_TLS_LIB="C:\Program Files\OpenSSL\lib" debug + run: ${{ matrix.make }} WEBUI_USE_TLS=1 debug - name: Build TLS Release Target - run: ${{ matrix.make }} WEBUI_USE_TLS=1 WEBUI_TLS_INCLUDE="C:\Program Files\OpenSSL\include" WEBUI_TLS_LIB="C:\Program Files\OpenSSL\lib" + run: ${{ matrix.make }} WEBUI_USE_TLS=1 - name: Build examples run: | $examples_base_dir = "$(Get-Location)/examples/C/" diff --git a/GNUmakefile b/GNUmakefile index 85ea6b058..29aa58bc8 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -6,8 +6,8 @@ WEBUI_OUT_LIB_NAME = webui-2 # TLS WEBUI_USE_TLS = -WEBUI_TLS_INCLUDE = . -WEBUI_TLS_LIB = . +WEBUI_TLS_INCLUDE ?= . +WEBUI_TLS_LIB ?= . TLS_CFLAG = -DNO_SSL TLS_LDFLAG_DYNAMIC = ifeq ($(WEBUI_USE_TLS), 1) @@ -25,10 +25,13 @@ MAKEFILE_DIR := $(dir $(MAKEFILE_PATH)) BUILD_DIR := $(MAKEFILE_DIR)/dist # ARGS -# Set a compiler when running on Linux via `make CC=gcc` / `make CC=clang` -CC = gcc -ifneq ($(filter $(CC),gcc clang aarch64-linux-gnu-gcc arm-linux-gnueabihf-gcc musl-gcc),$(CC)) -$(error Invalid compiler specified: `$(CC)`) +CC ?= gcc +ifeq ($(CC), cc) + ifeq ($(shell uname),Darwin) + CC = clang + else + CC = gcc + endif endif # Allow to add arch-target for macOS CI cross compilation diff --git a/Makefile b/Makefile index 8a665ce08..f6212172b 100644 --- a/Makefile +++ b/Makefile @@ -4,27 +4,37 @@ # == 1. VARIABLES ============================================================= WEBUI_OUT_LIB_NAME = webui-2 - -# TLS -WEBUI_USE_TLS = -WEBUI_TLS_INCLUDE = . -WEBUI_TLS_LIB = . TLS_CFLAG = /D NO_SSL -TLS_LDFLAG_DYNAMIC = + +# TLS Enabled !IF "$(WEBUI_USE_TLS)" == "1" + WEBUI_OUT_LIB_NAME = webui-2-secure TLS_CFLAG = /D WEBUI_TLS /D NO_SSL_DL /D OPENSSL_API_1_1 TLS_LDFLAG_DYNAMIC = libssl.lib libcrypto.lib + +!IF "$(WEBUI_TLS_INCLUDE)" != "" +TLS_CFLAG = $(TLS_CFLAG) /I"$(WEBUI_TLS_INCLUDE)" +!ELSE +TLS_CFLAG = $(TLS_CFLAG) /I"." +!ENDIF + +!IF "$(WEBUI_TLS_LIB)" != "" +TLS_LDFLAG_DYNAMIC = $(TLS_LDFLAG_DYNAMIC) /LIBPATH:"$(WEBUI_TLS_LIB)" +!ELSE +TLS_LDFLAG_DYNAMIC += $(TLS_LDFLAG_DYNAMIC) /LIBPATH:"." +!ENDIF + !ENDIF # Build Flags -CIVETWEB_BUILD_FLAGS = /Fo"civetweb.obj" /c /EHsc "$(MAKEDIR)/src/civetweb/civetweb.c" /I"$(MAKEDIR)/src/civetweb/" /I"$(WEBUI_TLS_INCLUDE)" -CIVETWEB_DEFINE_FLAGS = /D NDEBUG /D NO_CACHING /D NO_CGI /D USE_WEBSOCKET $(TLS_CFLAG) +CIVETWEB_BUILD_FLAGS = /Fo"civetweb.obj" /c /EHsc "$(MAKEDIR)/src/civetweb/civetweb.c" /I"$(MAKEDIR)/src/civetweb/" $(TLS_CFLAG) +CIVETWEB_DEFINE_FLAGS = /D NDEBUG /D NO_CACHING /D NO_CGI /D USE_WEBSOCKET WEBUI_BUILD_FLAGS = /Fo"webui.obj" /c /EHsc "$(MAKEDIR)/src/webui.c" /I"$(MAKEDIR)/include" /I"$(WEBUI_TLS_INCLUDE)" $(TLS_CFLAG) # Output Commands LIB_STATIC_OUT = /OUT:"$(WEBUI_OUT_LIB_NAME)-static.lib" "webui.obj" "civetweb.obj" -LIB_DYN_OUT = /DLL /OUT:"$(WEBUI_OUT_LIB_NAME).dll" "webui.obj" "civetweb.obj" user32.lib Advapi32.lib Shell32.lib Ole32.lib /LIBPATH:"$(WEBUI_TLS_LIB)" $(TLS_LDFLAG_DYNAMIC) +LIB_DYN_OUT = /DLL /OUT:"$(WEBUI_OUT_LIB_NAME).dll" "webui.obj" "civetweb.obj" user32.lib Advapi32.lib Shell32.lib Ole32.lib $(TLS_LDFLAG_DYNAMIC) # == 2.TARGETS ================================================================