commit
cebe5c5bf4
|
@ -2,7 +2,7 @@ name: "Build check gemstone in SDK"
|
||||||
run-name: SDK build check to ${{ inputs.deploy_target }} by @${{ github.actor }}
|
run-name: SDK build check to ${{ inputs.deploy_target }} by @${{ github.actor }}
|
||||||
on: [push, pull_request]
|
on: [push, pull_request]
|
||||||
env:
|
env:
|
||||||
SDK: 0.1.0-alma-9.3
|
SDK: 0.2.1-alpine-3.19.1
|
||||||
jobs:
|
jobs:
|
||||||
build-check-sdk:
|
build-check-sdk:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
|
@ -36,6 +36,11 @@ add_custom_command(OUTPUT ${LEX_GENERATED_SOURCE_FILE}
|
||||||
COMMENT "generate C source file for lexer"
|
COMMENT "generate C source file for lexer"
|
||||||
VERBATIM)
|
VERBATIM)
|
||||||
|
|
||||||
|
# remove dependency when compiling with MSVC on windows
|
||||||
|
if (MSVC)
|
||||||
|
add_compile_definitions(YY_NO_UNISTD_H)
|
||||||
|
endif()
|
||||||
|
|
||||||
# ------------------------------------------------ #
|
# ------------------------------------------------ #
|
||||||
# Yacc #
|
# Yacc #
|
||||||
# ------------------------------------------------ #
|
# ------------------------------------------------ #
|
||||||
|
@ -56,7 +61,11 @@ add_custom_command(OUTPUT ${YACC_GENERATED_SOURCE_FILE}
|
||||||
file(GLOB_RECURSE SOURCE_FILES src/*.c)
|
file(GLOB_RECURSE SOURCE_FILES src/*.c)
|
||||||
|
|
||||||
# define default compile flags
|
# define default compile flags
|
||||||
set(FLAGS -Wall -Wextra -Wconversion -Wpedantic)
|
if (MSVC)
|
||||||
|
set(FLAGS /Wall /W3 /permissive)
|
||||||
|
else()
|
||||||
|
set(FLAGS -Wall -Wextra -Wconversion -Wpedantic)
|
||||||
|
endif()
|
||||||
|
|
||||||
# ------------------------------------------------ #
|
# ------------------------------------------------ #
|
||||||
# Target RELEASE #
|
# Target RELEASE #
|
||||||
|
@ -72,13 +81,20 @@ set_target_properties(release
|
||||||
OUTPUT_NAME "gsc"
|
OUTPUT_NAME "gsc"
|
||||||
RUNTIME_OUTPUT_DIRECTORY "bin/release")
|
RUNTIME_OUTPUT_DIRECTORY "bin/release")
|
||||||
|
|
||||||
|
# FIXME: cannot compile with /O2 because of /RTC1 flag
|
||||||
|
if (MSVC)
|
||||||
|
set(RELEASE_FLAGS)
|
||||||
|
else()
|
||||||
|
set(RELEASE_FLAGS -m64 -O3 -fprefetch-loop-arrays -mrecip)
|
||||||
|
endif()
|
||||||
|
|
||||||
# compiler flags targeting a 64-bit GCC release environment
|
# compiler flags targeting a 64-bit GCC release environment
|
||||||
# flags:
|
# flags:
|
||||||
# - m64: build for 64-bit
|
# - m64: build for 64-bit
|
||||||
# - O3: optimization level 3
|
# - O3: optimization level 3
|
||||||
# - fprefetch-loop-arrays: pre load arrays used in loops by using prefetch instruction
|
# - fprefetch-loop-arrays: pre load arrays used in loops by using prefetch instruction
|
||||||
# - mrecip: make use RCPSS and RSQRTSS instructions
|
# - mrecip: make use RCPSS and RSQRTSS instructions
|
||||||
target_compile_options(release PUBLIC ${FLAGS} -m64 -O3 -fprefetch-loop-arrays -mrecip)
|
target_compile_options(release PUBLIC ${FLAGS} ${RELEASE_FLAGS})
|
||||||
|
|
||||||
# add src directory as include path
|
# add src directory as include path
|
||||||
target_include_directories(release PUBLIC src)
|
target_include_directories(release PUBLIC src)
|
||||||
|
@ -97,8 +113,14 @@ set_target_properties(debug
|
||||||
OUTPUT_NAME "gsc"
|
OUTPUT_NAME "gsc"
|
||||||
RUNTIME_OUTPUT_DIRECTORY "bin/debug")
|
RUNTIME_OUTPUT_DIRECTORY "bin/debug")
|
||||||
|
|
||||||
|
if (MSVC)
|
||||||
|
set(DEBUG_FLAGS /DEBUG)
|
||||||
|
else()
|
||||||
|
set(DEBUG_FLAGS -g)
|
||||||
|
endif()
|
||||||
|
|
||||||
# compiler flags targeting a GCC debug environment
|
# compiler flags targeting a GCC debug environment
|
||||||
target_compile_options(debug PUBLIC ${FLAGS} -g)
|
target_compile_options(debug PUBLIC ${FLAGS} ${DEBUG_FLAGS})
|
||||||
|
|
||||||
# add src directory as include path
|
# add src directory as include path
|
||||||
target_include_directories(debug PUBLIC src)
|
target_include_directories(debug PUBLIC src)
|
||||||
|
@ -120,9 +142,15 @@ set_target_properties(check
|
||||||
OUTPUT_NAME "gsc"
|
OUTPUT_NAME "gsc"
|
||||||
RUNTIME_OUTPUT_DIRECTORY "bin/check")
|
RUNTIME_OUTPUT_DIRECTORY "bin/check")
|
||||||
|
|
||||||
|
if (MSVC)
|
||||||
|
set(CHECK_FLAGS /DEBUG /WX)
|
||||||
|
else()
|
||||||
|
set(DEBUG_FLAGS -g -Werror)
|
||||||
|
endif()
|
||||||
|
|
||||||
# compiler flags targeting a GCC debug environment
|
# compiler flags targeting a GCC debug environment
|
||||||
# extra -Werror flag to treat warnings as error to make github action fail on warning
|
# extra -Werror flag to treat warnings as error to make github action fail on warning
|
||||||
target_compile_options(check PUBLIC ${FLAGS} -g -Werror)
|
target_compile_options(check PUBLIC ${FLAGS} ${DEBUG_FLAGS})
|
||||||
|
|
||||||
# add src directory as include path
|
# add src directory as include path
|
||||||
target_include_directories(check PUBLIC src)
|
target_include_directories(check PUBLIC src)
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
FROM servostar/gemstone:sdk-0.2.0-alpine-3.19.1
|
FROM servostar/gemstone:sdk-0.2.1-alpine-3.19.1
|
||||||
LABEL authors="servostar"
|
LABEL authors="servostar"
|
||||||
LABEL version="0.2.0"
|
LABEL version="0.2.1"
|
||||||
LABEL description="docker image for setting up the build pipeline on SDK"
|
LABEL description="docker image for setting up the build pipeline on SDK"
|
||||||
LABEL website="https://github.com/Servostar/gemstone"
|
LABEL website="https://github.com/Servostar/gemstone"
|
||||||
|
|
||||||
COPY --chown=lorang src /home/lorang/src
|
RUN git clone https://github.com/Servostar/gemstone.git /home/lorang
|
||||||
COPY --chown=lorang CMakeLists.txt /home/lorang/
|
|
||||||
|
|
||||||
RUN cmake .
|
RUN cmake .
|
||||||
|
|
21
README.md
21
README.md
|
@ -2,6 +2,25 @@
|
||||||
|
|
||||||
Gemstone is a programming language compiler written in C with lex and yacc.
|
Gemstone is a programming language compiler written in C with lex and yacc.
|
||||||
|
|
||||||
|
## Dependencies (build)
|
||||||
|
|
||||||
|
### Windows 11
|
||||||
|
|
||||||
|
For setup instruction see issue #30
|
||||||
|
|
||||||
|
Requires:
|
||||||
|
- Microsoft Build Tools 2022 (includes: CMake, MSVC)
|
||||||
|
- WinFlexBison [find it here](https://github.com/lexxmark/winflexbison) (needs to be in PATH)
|
||||||
|
|
||||||
|
### GNU/Linux
|
||||||
|
|
||||||
|
Requires:
|
||||||
|
- GCC
|
||||||
|
- CMake
|
||||||
|
- Make
|
||||||
|
- bison
|
||||||
|
- flex
|
||||||
|
|
||||||
## Development with VSCode/Codium
|
## Development with VSCode/Codium
|
||||||
|
|
||||||
Recommended extensions for getting a decent experience are the following:
|
Recommended extensions for getting a decent experience are the following:
|
||||||
|
@ -55,4 +74,4 @@ Currently, the SDK is based on Almalinux 9.3, an open source distro binary compa
|
||||||
|
|
||||||
The following images can be found in the offical repository at [Docker Hub](https://hub.docker.com/r/servostar/gemstone):
|
The following images can be found in the offical repository at [Docker Hub](https://hub.docker.com/r/servostar/gemstone):
|
||||||
- SDK
|
- SDK
|
||||||
- Devkit
|
- Devkit
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
FROM alpine:3.19.1
|
FROM alpine:3.19.1
|
||||||
LABEL authors="servostar"
|
LABEL authors="servostar"
|
||||||
LABEL version="0.2.0"
|
LABEL version="0.2.1"
|
||||||
LABEL description="base image for building the gemstone programming language compiler"
|
LABEL description="base image for building the gemstone programming language compiler"
|
||||||
LABEL website="https://github.com/Servostar/gemstone"
|
LABEL website="https://github.com/Servostar/gemstone"
|
||||||
|
|
||||||
# install dependencies
|
# install dependencies
|
||||||
RUN apk add build-base gcc make cmake bison flex
|
RUN apk add build-base gcc make cmake bison flex git
|
||||||
|
|
||||||
# create user for build
|
# create user for build
|
||||||
RUN adduser --disabled-password lorang
|
RUN adduser --disabled-password lorang
|
||||||
WORKDIR /home/lorang
|
WORKDIR /home/lorang
|
||||||
USER lorang
|
USER lorang
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
// generally not defined by GCC < 11.3 and MSVC
|
// generally not defined by GCC < 11.3 and MSVC
|
||||||
#ifndef __FILE_NAME__
|
#ifndef __FILE_NAME__
|
||||||
#if defined(_WIN32) || defined(_WIN64) || defined(_MSC_VER)
|
#if defined(_WIN32) || defined(_WIN64) || defined(_MSC_VER)
|
||||||
#define __FILE_NAME__ (strrstr(__FILE__, "\\") ? strrstr(__FILE__, "\\") + 1 : __FILE__)
|
#define __FILE_NAME__ (strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\') + 1 : __FILE__)
|
||||||
#else
|
#else
|
||||||
#define __FILE_NAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)
|
#define __FILE_NAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue