diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000..567609b123 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +build/ diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000000..f044e0bd4c --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,41 @@ +cmake_minimum_required(VERSION 2.8) + +set(CMAKE_BUILD_TYPE "Debug" CACHE STRING + "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel." FORCE) + +project(zig C) +set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH}) + +set(ZIG_VERSION_MAJOR 1) +set(ZIG_VERSION_MINOR 0) +set(ZIG_VERSION_PATCH 0) +set(ZIG_VERSION "${ZIG_VERSION_MAJOR}.${ZIG_VERSION_MINOR}.${ZIG_VERSION_PATCH}") +message("Configuring zig version ${ZIG_VERSION}") + +find_package(llvm) +include_directories(${LLVM_INCLUDE_DIR}) + +set(ZIG_SOURCES + "${CMAKE_SOURCE_DIR}/src/main.c" +) + +set(CONFIGURE_OUT_FILE "${CMAKE_BINARY_DIR}/config.h") +configure_file ( + "${CMAKE_SOURCE_DIR}/src/config.h.in" + ${CONFIGURE_OUT_FILE} +) + +set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Wno-unused-variable -Wno-unused-but-set-variable") + +set(EXE_CFLAGS "-std=c11 -Werror -Wall -Werror=strict-prototypes -Werror=old-style-definition -Werror=missing-prototypes") +set(TEST_CFLAGS "-std=c99 -Werror -Wall") + + +add_executable(zig ${ZIG_SOURCES}) +set_target_properties(zig PROPERTIES + LINKER_LANGUAGE C + COMPILE_FLAGS ${EXE_CFLAGS}) +target_link_libraries(zig LINK_PUBLIC + ${LLVM_LIBRARIES} +) +install(TARGETS zig DESTINATION bin) diff --git a/README.md b/README.md index e69de29bb2..514042d881 100644 --- a/README.md +++ b/README.md @@ -0,0 +1 @@ +# zig lang diff --git a/cmake/Findllvm.cmake b/cmake/Findllvm.cmake new file mode 100644 index 0000000000..abe5c3b21f --- /dev/null +++ b/cmake/Findllvm.cmake @@ -0,0 +1,21 @@ +# Copyright (c) 2014 Andrew Kelley +# This file is MIT licensed. +# See http://opensource.org/licenses/MIT + +# LLVM_FOUND +# LLVM_INCLUDE_DIR +# LLVM_LIBRARIES + +find_path(LLVM_INCLUDE_DIR NAMES llvm-c/Core.h) + +find_program(LLVM_CONFIG_EXE llvm-config) + +execute_process( + COMMAND ${LLVM_CONFIG_EXE} --libs + OUTPUT_VARIABLE LLVM_LIBRARIES + OUTPUT_STRIP_TRAILING_WHITESPACE) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(LLVM DEFAULT_MSG LLVM_LIBRARIES LLVM_INCLUDE_DIR) + +mark_as_advanced(LLVM_INCLUDE_DIR LLVM_LIBRARIES) diff --git a/src/config.h.in b/src/config.h.in new file mode 100644 index 0000000000..75757bdc43 --- /dev/null +++ b/src/config.h.in @@ -0,0 +1,9 @@ +#ifndef ZIG_CONFIG_H +#define ZIG_CONFIG_H + +#define ZIG_VERSION_MAJOR @ZIG_VERSION_MAJOR@ +#define ZIG_VERSION_MINOR @ZIG_VERSION_MINOR@ +#define ZIG_VERSION_PATCH @ZIG_VERSION_PATCH@ +#define ZIG_VERSION_STRING "@ZIG_VERSION@" + +#endif diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000000..e6173ef043 --- /dev/null +++ b/src/main.c @@ -0,0 +1,5 @@ +#include + +int main(int argc, char **argv) { + return 0; +}