gruggers 0.7.0

rust implementation of the grug language
Documentation
cmake_minimum_required(VERSION 3.15)

set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
project(SmokeTestProject C)

# Set target flags per compiler
if (MSVC)
    add_compile_options(/W4 /WX)
	set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} )
	set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} )
	set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} )
	set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR} )
	set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR} )
	set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR} )
	set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR} )
	set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR} )
	set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR} )
else()
	add_compile_options(-Wall -Wextra -Werror -Wno-pedantic -ggdb)
endif()

# =========================
# bench.dll (Shared Library)
# =========================
add_library(bench SHARED bench.c)
if (DEFINED WIN32) 
    set_target_properties(bench PROPERTIES PREFIX "")
endif()

# =========================
# smoketest.exe
# =========================
add_executable(smoketest smoketest.c)
add_executable(nbody nbody.c)

if (NOT MSVC)
    target_link_libraries(nbody PRIVATE m)
	target_link_libraries(bench PRIVATE m)
endif()

# Link smoketest with bench library
target_link_libraries(smoketest PRIVATE bench)

# Equivalent of `make run`
add_custom_target(run
    COMMAND smoketest
    DEPENDS smoketest
    USES_TERMINAL
)

add_custom_target(nbody-run
    COMMAND nbody
    DEPENDS nbody
    USES_TERMINAL
)