2 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
\r
6 SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake_scripts;${CMAKE_MODULE_PATH})
\r
8 SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/compiled)
\r
9 SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/compiled)
\r
10 SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/compiled)
\r
12 OPTION(BUILD_TESTING "Build the testing tree." OFF)
\r
15 ENDIF(BUILD_TESTING)
\r
17 INCLUDE(CheckIncludeFile)
\r
18 INCLUDE(CheckTypeSize)
\r
19 INCLUDE(CheckLibraryExists)
\r
20 INCLUDE (TestBigEndian)
\r
22 INCLUDE(BOOMERANG_Macros)
\r
24 # The BOOMERANG_FRONTENDS will be filled ba appropriate ADD_FRONTEND macros
\r
25 SET(BOOMERANG_FRONTENDS "" CACHE INTERNAL "")
\r
26 SET(BOOMERANG_LOADERS "" CACHE INTERNAL "")
\r
27 SET(BOOMERANG_CODE_GENERATORS "" CACHE INTERNAL "")
\r
29 ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE)
\r
31 # this is the list of libraries that will be extended
\r
32 # by various configured libraries
\r
33 SET(boomerang_depends_on "")
\r
36 CHECK_INCLUDE_FILE(byteswap.h HAVE_BYTESWAP_H)
\r
37 CHECK_INCLUDE_FILE(dlfcn.h HAVE_DLFCN_H)
\r
38 CHECK_INCLUDE_FILE(fcntl.h HAVE_FCNTL_H)
\r
39 CHECK_INCLUDE_FILE(gc.h HAVE_GC_H)
\r
40 CHECK_INCLUDE_FILE(inttypes.h HAVE_INTTYPES_H)
\r
41 CHECK_INCLUDE_FILE(unistd.h HAVE_UNISTD_H)
\r
42 CHECK_INCLUDE_FILE(malloc.h HAVE_MALLOC_H)
\r
43 CHECK_INCLUDE_FILE(memory.h HAVE_MEMORY_H)
\r
44 CHECK_INCLUDE_FILE(stddef.h HAVE_STDDEF_H)
\r
45 CHECK_INCLUDE_FILE(stdint.h HAVE_STDINT_H)
\r
46 CHECK_INCLUDE_FILE(stdlib.h HAVE_STDLIB_H)
\r
47 CHECK_INCLUDE_FILE(strings.h HAVE_STRINGS_H)
\r
48 CHECK_INCLUDE_FILE(string.h HAVE_STRING_H)
\r
49 CHECK_INCLUDE_FILE(sys/stat.h HAVE_SYS_STAT_H)
\r
50 CHECK_INCLUDE_FILE(sys/time.h HAVE_SYS_TIME_H)
\r
51 CHECK_INCLUDE_FILE(sys/types.h HAVE_SYS_TYPES_H)
\r
52 CHECK_INCLUDE_FILE(unistd.h HAVE_UNISTD_H)
\r
53 CHECK_INCLUDE_FILE(/opt/local/include/gc/gc.h HAVE__OPT_LOCAL_INCLUDE_GC_GC_H)
\r
54 CHECK_INCLUDE_FILE(/opt/local/include/gc.h HAVE__OPT_LOCAL_INCLUDE_GC_H)
\r
55 CHECK_INCLUDE_FILE(/sw/include/gc.h HAVE__SW_INCLUDE_GC_H)
\r
56 CHECK_INCLUDE_FILE(/usr/include/gc/gc.h HAVE__USR_INCLUDE_GC_GC_H)
\r
57 CHECK_INCLUDE_FILE(/usr/include/gc.h HAVE__USR_INCLUDE_GC_H)
\r
58 CHECK_INCLUDE_FILE(/usr/local/include/gc.h HAVE__USR_LOCAL_INCLUDE_GC_H)
\r
61 CHECK_TYPE_SIZE(char SIZEOF_CHAR)
\r
62 CHECK_TYPE_SIZE(double SIZEOF_DOUBLE)
\r
63 CHECK_TYPE_SIZE(float SIZEOF_FLOAT)
\r
64 CHECK_TYPE_SIZE(int SIZEOF_INT)
\r
65 CHECK_TYPE_SIZE("int *" SIZEOF_INT_P)
\r
66 CHECK_TYPE_SIZE(long SIZEOF_LONG)
\r
67 CHECK_TYPE_SIZE("long double" SIZEOF_LONG_DOUBLE)
\r
68 CHECK_TYPE_SIZE("long long" SIZEOF_LONG_LONG)
\r
69 CHECK_TYPE_SIZE(short SIZEOF_SHORT)
\r
71 SET(VERSION "alpha 0.3.1 09/Sep/2006")
\r
72 # this creates config.h boomerang config.h in-place
\r
73 CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/include/config.h.cmake
\r
74 ${CMAKE_CURRENT_SOURCE_DIR}/include/config.h)
\r
75 # if this is a problem comment out the above, and uncomment below
\r
76 #CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake
\r
77 # ${CMAKE_CURRENT_BINARY_DIR}/include/config.h)
\r
78 #INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/include)
\r
80 ADD_DEFINITIONS( -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS )
\r
82 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include)
\r
84 FIND_PACKAGE(BoehmGC REQUIRED)
\r
85 SET(boomerang_libs ${boomerang_libs} ${BOEHMGC_LIBRARIES})
\r
86 INCLUDE_DIRECTORIES(${BOEHMGC_INCLUDE_DIRS})
\r
87 ADD_DEFINITIONS(${BOEHMGC_DEFINITIONS})
\r
89 ADD_DEFINITIONS(-DNO_GARBAGE_COLLECTOR)
\r
92 IF(USE_FLEXPP_BISONPP)
\r
93 FIND_PACKAGE(Bisonpp REQUIRED)
\r
94 FIND_PACKAGE(Flexpp REQUIRED)
\r
95 ENDIF(USE_FLEXPP_BISONPP)
\r
97 #==========================#
\r
98 # check if m4 is available #
\r
99 #==========================#
\r
101 MESSAGE("Searching for m4 scripting language")
\r
102 FIND_PROGRAM(M4_PROGRAM m4)
\r
103 IF(${M4_PROGRAM} MATCHES "NOTFOUND")
\r
104 MESSAGE(" -> WARNING : could not find m4, cannot generate ssl files from m4 sources")
\r
105 ELSE(${M4_PROGRAM} MATCHES "NOTFOUND")
\r
106 MESSAGE(" -> ${M4_PROGRAM}")
\r
107 ENDIF(${M4_PROGRAM} MATCHES "NOTFOUND")
\r
109 ADD_SUBDIRECTORY(loader)
\r
110 ADD_SUBDIRECTORY(c)
\r
111 ADD_SUBDIRECTORY(codegen)
\r
112 ADD_SUBDIRECTORY(db)
\r
113 ADD_SUBDIRECTORY(type)
\r
114 ADD_SUBDIRECTORY(transform)
\r
115 ADD_SUBDIRECTORY(util)
\r
116 ADD_SUBDIRECTORY(frontend)
\r
119 SET(CMAKE_INCLUDE_PATH ${PROJECT_SOURCE_DIR}/include)
\r
121 ADD_LIBRARY(driver STATIC driver.cpp)
\r
126 loader/BinaryFileFactory.cpp
\r
129 ADD_EXECUTABLE(boomerang ${boomerang_SRCS})
\r
130 TARGET_LINK_LIBRARIES(boomerang
\r
132 ${BOOMERANG_LOADERS}
\r
133 ${BOOMERANG_FRONTENDS}
\r
135 boomerang_type_solvers
\r
136 boomerang_transform
\r
139 ${BOOMERANG_CODE_GENERATORS}
\r
144 install(TARGETS boomerang DESTINATION bin)
\r
145 install(FILES include/*.h DESTINATION include)
\r
147 # this is put at the end so that first cmake configure will assume USE_GC NO,
\r
148 # and will not check for existence of Boehm GC
\r
149 OPTION(USE_GC "Use Boehm garbage collector, only developers should turn this off" true)
\r
151 #Markus: Re-add usage of bison++ and flex++.
\r
152 OPTION(USE_FLEXPP_BISONPP "Use Coetmeur's bison++ and flex++, only developers should turn this on" false)
\r
155 FIND_PACKAGE(CppUnit REQUIRED)
\r
156 INCLUDE_DIRECTORIES(${CPPUNIT_INCLUDE_DIR})
\r
160 FILE(GLOB_RECURSE UnitTests_SRCS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*Test.cpp" )
\r
161 FILE(GLOB_RECURSE UnitTests_INCLUDES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*Test.h" )
\r
164 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/frontend)
\r
165 ADD_EXECUTABLE(UnitTester
\r
169 loader/microX86dis.c
\r
170 loader/BinaryFileFactory.cpp
\r
171 loader/BinaryFileStub.cpp
\r
173 ${UnitTests_INCLUDES}
\r
176 FOREACH(test ${UnitTests_SRCS})
\r
177 GET_FILENAME_COMPONENT(TestName ${test} NAME_WE)
\r
178 ADD_TEST(${TestName} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/UnitTester "${PROJECT_SOURCE_DIR}" ${TestName})
\r
180 TARGET_LINK_LIBRARIES(UnitTester ${CPPUNIT_LIBRARIES}
\r
181 ${BOOMERANG_LOADERS}
\r
182 ${BOOMERANG_FRONTENDS}
\r
184 boomerang_type_solvers
\r
185 boomerang_transform
\r
188 ${BOOMERANG_CODE_GENERATORS}
\r
193 ENDIF(BUILD_TESTING)
\r