Skip to content
Snippets Groups Projects
Commit 66cd4fb5 authored by Peter Matta's avatar Peter Matta
Browse files

Separated executables and libs

parent 4959f63c
No related branches found
No related tags found
No related merge requests found
bin
 
# Created by https://www.gitignore.io/api/c++,xcode,macos,cmake
 
......
cmake_minimum_required(VERSION 3.4 FATAL_ERROR)
set(TARGET dusk-lang)
project(${TARGET})
set(LIB_TARGET dusklib)
set(PROJECT_VERSION 1.0.0)
project(
${LIB_TARGET}
VERSION ${PROJECT_VERSION}
DESCRIPTION "Dusk programming language"
)
 
enable_language(C CXX)
set(CMAKE_CXX_STANDARD 17)
 
set(BUILD_SHARED_LIBS ON)
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/bin)
find_package(LLVM REQUIRED CONFIG)
 
message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")
 
# link LLVM
add_definitions(${LLVM_DEFINITIONS})
include_directories(${LLVM_INCLUDE_DIRS})
llvm_map_components_to_libnames(llvm_libs support core irreader tablegen)
 
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/include)
# add dusklib target
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/include)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/lib)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/src)
 
add_executable(${TARGET} ${SOURCE} ${HEADERS})
# setup dusklib
add_library(${LIB_TARGET} SHARED ${SOURCE})
set_target_properties(${LIB_TARGET} PROPERTIES
VERSION ${PROJECT_VERSION}
SOVERSION 1
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin
)
target_include_directories(${LIB_TARGET} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
target_link_libraries(${LIB_TARGET} ${llvm_libs})
 
llvm_map_components_to_libnames(llvm_libs support core irreader tablegen)
target_link_libraries(${TARGET} ${llvm_libs})
# add tools executables
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/tools)
set(HEADERS
${CMAKE_CURRENT_SOURCE_DIR}/LLVM.h
${CMAKE_CURRENT_SOURCE_DIR}/SourceManager.h
${CMAKE_CURRENT_SOURCE_DIR}/TokenDefinition.h
${HEADERS}
PARENT_SCOPE
)
......@@ -3,7 +3,6 @@ set(HEADERS
${CMAKE_CURRENT_SOURCE_DIR}/Parser.h
${CMAKE_CURRENT_SOURCE_DIR}/ParserResult.h
${CMAKE_CURRENT_SOURCE_DIR}/Token.h
${CMAKE_CURRENT_SOURCE_DIR}/TokenDefinition.h
${HEADERS}
PARENT_SCOPE
)
......@@ -11,7 +11,7 @@
#define DUSK_TOKEN_H
 
#include "dusk/Basic/LLVM.h"
#include "dusk/Parse/TokenDefinition.h"
#include "dusk/Basic/TokenDefinition.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Support/SMLoc.h"
 
......
......@@ -13,7 +13,7 @@
#include "dusk/AST/Stmt.h"
#include "dusk/AST/Pattern.h"
#include "dusk/AST/ASTVisitor.h"
#include "dusk/Parse/TokenDefinition.h"
#include "dusk/Basic/TokenDefinition.h"
#include "dusk/Frontend/Formatter.h"
 
using namespace dusk;
......
#include "dusk/Frontend/Compiler.h"
#include "dusk/Frontend/Formatter.h"
#include "dusk/Parse/Lexer.h"
#include "dusk/Parse/TokenDefinition.h"
#include "dusk/Basic/TokenDefinition.h"
#include "dusk/Parse/Parser.h"
#include "dusk/IRGen/IRGenerator.h"
#include "llvm/Support/raw_os_ostream.h"
......
set(SOURCE
${CMAKE_CURRENT_SOURCE_DIR}/main.cpp
${SOURCE}
PARENT_SCOPE
)
set(HEADERS
${HEADERS}
PARENT_SCOPE
)
#include "dusk/Frontend/Compiler.h"
#include "dusk/AST/ASTPrinter.h"
#include "dusk/AST/ASTNode.h"
#include "dusk/AST/Decl.h"
#include "llvm/ADT/StringRef.h"
#include <iostream>
#include <vector>
using namespace dusk;
int main(int argc, const char *argv[]) {
std::vector<llvm::StringRef> Filenames;
for (size_t i = 1; i < argc; i++) {
Filenames.push_back(argv[i]);
}
Compiler C(Filenames);
C.Compile();
return 0;
}
add_subdirectory(dusk-format)
add_subdirectory(duskc)
set(FORMAT_TARGET duskc)
set(FORMAT_SOURCE
${CMAKE_CURRENT_SOURCE_DIR}/main.cpp
)
add_executable(${FORMAT_TARGET} ${FORMAT_SOURCE})
target_link_libraries(${FORMAT_TARGET} ${llvm_libs} ${LIB_TARGET})
#include "dusk/Frontend/Compiler.h"
#include <iostream>
using namespace dusk;
int main(int argc, const char *argv[]) {
std::vector<llvm::StringRef> Filenames;
for (size_t i = 1; i < argc; i++) {
Filenames.push_back(argv[i]);
}
Compiler C(Filenames);
C.Compile();
return 0;
}
set(C_TARGET dusk-format)
set(C_SOURCE
${CMAKE_CURRENT_SOURCE_DIR}/main.cpp
)
add_executable(${C_TARGET} ${C_SOURCE})
target_link_libraries(${C_TARGET} ${llvm_libs} ${LIB_TARGET})
#include <iostream>
#include "dusk/Frontend/Compiler.h"
int main() {
std::cout << "Hello from duskc\n";
return 0;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment