icfp12/ovm/CMakeLists.txt

90 lines
2.5 KiB
CMake

CMAKE_MINIMUM_REQUIRED(VERSION 2.6.0 FATAL_ERROR)
PROJECT(ovm C)
MACRO(ADD_TARGET_PROPERTIES _target _name)
SET(_properties)
FOREACH(_prop ${ARGN})
SET(_properties "${_properties} ${_prop}")
ENDFOREACH(_prop)
GET_TARGET_PROPERTY(_old_properties ${_target} ${_name})
MESSAGE("adding property to ${_target} ${_name}:" ${_properties})
IF(NOT _old_properties)
# in case it's NOTFOUND
SET(_old_properties)
ENDIF(NOT _old_properties)
SET_TARGET_PROPERTIES(${_target} PROPERTIES ${_name} "${_old_properties} ${_properties}")
ENDMACRO(ADD_TARGET_PROPERTIES)
INCLUDE(CheckCSourceCompiles)
INCLUDE(CheckIncludeFiles)
INCLUDE(CheckFunctionExists)
INCLUDE(CheckVariableExists)
INCLUDE(CheckTypeSize)
INCLUDE(CheckLibraryExists)
INCLUDE(CMakeDetermineCCompiler)
INCLUDE(FindThreads)
INCLUDE(FindPkgConfig)
# glib/gthread
pkg_check_modules(GTHREAD REQUIRED gthread-2.0)
# pkg_check_modules(GMODULE REQUIRED gmodule-2.0)
ADD_EXECUTABLE(ovmjit
ovmjit.c
ovm.c
)
ADD_EXECUTABLE(task1
bin1.c
task1.c
task.c trace.c
)
ADD_EXECUTABLE(task2
bin2.c
task2.c
task.c trace.c
)
ADD_EXECUTABLE(task3
bin3.c
task3.c
task.c trace.c
)
ADD_EXECUTABLE(task4
bin4.c
task4.c
task.c trace.c
)
SET(WARN_FLAGS "-g -O2 -g2 -Wall -Wmissing-declarations -Wdeclaration-after-statement -Wcast-align -Wsign-compare -Wnested-externs -Wpointer-arith -Wl,--as-needed")
# -Werror -Wbad-function-cast -Wmissing-prototypes
SET(COMMON_LDFLAGS "${GTHREAD_LDFLAGS} ${WARN_FLAGS}")
SET(COMMON_CFLAGS "${GTHREAD_CFLAGS} ${WARN_FLAGS}")
ADD_TARGET_PROPERTIES(ovmjit LINK_FLAGS ${COMMON_LDFLAGS})
ADD_TARGET_PROPERTIES(ovmjit COMPILE_FLAGS ${COMMON_CFLAGS})
ADD_TARGET_PROPERTIES(task1 LINK_FLAGS -lm ${COMMON_LDFLAGS})
ADD_TARGET_PROPERTIES(task1 COMPILE_FLAGS ${COMMON_CFLAGS})
ADD_TARGET_PROPERTIES(task2 LINK_FLAGS -lm ${COMMON_LDFLAGS})
ADD_TARGET_PROPERTIES(task2 COMPILE_FLAGS ${COMMON_CFLAGS})
ADD_TARGET_PROPERTIES(task3 LINK_FLAGS -lm ${COMMON_LDFLAGS})
ADD_TARGET_PROPERTIES(task3 COMPILE_FLAGS ${COMMON_CFLAGS})
ADD_TARGET_PROPERTIES(task4 LINK_FLAGS -lm ${COMMON_LDFLAGS})
ADD_TARGET_PROPERTIES(task4 COMPILE_FLAGS ${COMMON_CFLAGS})
IF(CMAKE_COMPILER_IS_GNUCC)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99 -Wall -g -Wshadow -W -pedantic")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O2")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0")
SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_WITHDEBINFO} -O2")
ADD_DEFINITIONS(-D_GNU_SOURCE)
ENDIF(CMAKE_COMPILER_IS_GNUCC)