GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — stepcode/src/express/CMakeLists.txt at develop · stepcode/stepcode Expand file tree/ Copy pathCMakeLists.txtMore file actions 158 lines (141 loc) · 5.22 KB / Copy pathCMakeLists.txtFile metadata and controls158 lines (141 loc) · 5.22 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 include_directories( ${CMAKE_BINARY_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR} ) # Depending on whether we're using pre-generated sources or building them on # the fly, set up targets and source lists. if(SC_GENERATE_LP_SOURCES) LEMON_TARGET(ExpParser expparse.y expparse.c COMPILE_FLAGS "-p -c" DEFINES_FILE "expparse.h" ) PERPLEX_TARGET(ExpScanner expscan.l) ADD_PERPLEX_LEMON_DEPENDENCY(ExpScanner ExpParser) add_library(objlib_expscan_c OBJECT ${PERPLEX_ExpScanner_SRC}) set_property(TARGET objlib_expscan_c PROPERTY POSITION_INDEPENDENT_CODE ON) add_library(objlib_expparse_c OBJECT ${LEMON_ExpParser_OUTPUTS}) set_property(TARGET objlib_expparse_c PROPERTY POSITION_INDEPENDENT_CODE ON) set_source_files_properties(${LEMON_ExpParser_OUTPUTS} PROPERTIES OBJECT_DEPENDS "${PERPLEX_ExpScanner_HDR}") else(SC_GENERATE_LP_SOURCES) add_subdirectory(generated) include_directories(generated) endif(SC_GENERATE_LP_SOURCES) if(MSVC) set_property(TARGET objlib_expscan_c APPEND PROPERTY COMPILE_DEFINITIONS "SC_EXPRESS_DLL_EXPORTS") set_property(TARGET objlib_expscan_c APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS "SC_EXPRESS_DLL_IMPORTS") set_property(TARGET objlib_expparse_c APPEND PROPERTY COMPILE_DEFINITIONS "SC_EXPRESS_DLL_EXPORTS") set_property(TARGET objlib_expparse_c APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS "SC_EXPRESS_DLL_IMPORTS") endif(MSVC) set(EXPRESS_SOURCES symbol.c type.c variable.c expr.c entity.c caseitem.c stmt.c alg.c scope.c schema.c resolve.c resolve2.c lexact.c linklist.c error.c dict.c hash.c alloc.c memory.c object.c express.c ordered_attrs.cc info.c factory.c ) set(EXPRESS_OBJS) foreach(_src ${EXPRESS_SOURCES}) string(REPLACE "." "_" _suffix ${_src}) set(_objlib "objlib_${_suffix}") add_library(${_objlib} OBJECT ${_src}) add_dependencies(${_objlib} objlib_expscan_c) add_dependencies(${_objlib} objlib_expparse_c) if(TARGET ExpScanner) add_dependencies(${_objlib} ExpScanner) endif(TARGET ExpScanner) if(MSVC) set_property(TARGET ${_objlib} APPEND PROPERTY COMPILE_DEFINITIONS "SC_EXPRESS_DLL_EXPORTS") set_property(TARGET ${_objlib} APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS "SC_EXPRESS_DLL_IMPORTS") endif(MSVC) # TODO: probably PIC should be used everywhere... set_property(TARGET ${_objlib} PROPERTY POSITION_INDEPENDENT_CODE ON) list(APPEND EXPRESS_OBJS $<TARGET_OBJECTS:${_objlib}>) endforeach() list(APPEND EXPRESS_OBJS $<TARGET_OBJECTS:objlib_expscan_c>) list(APPEND EXPRESS_OBJS $<TARGET_OBJECTS:objlib_expparse_c>) if(SC_GENERATE_LP_SOURCES) set_property(TARGET objlib_expparse_c objlib_express_c objlib_lexact_c APPEND PROPERTY INCLUDE_DIRECTORIES "${PERPLEX_ExpScanner_INCLUDE_DIR}") set_property(TARGET objlib_expscan_c objlib_express_c objlib_lexact_c APPEND PROPERTY INCLUDE_DIRECTORIES "${LEMON_ExpParser_INCLUDE_DIR}") # OBJECT libraries are not targets, and so an explicit dependency is required set_source_files_properties(express.c lexact.c PROPERTIES OBJECT_DEPENDS "${PERPLEX_ExpScanner_HDR};${LEMON_ExpParser_HDR}") endif() if(BUILD_SHARED_LIBS OR NOT BUILD_STATIC_LIBS) add_library(express SHARED ${EXPRESS_OBJS}) if(OPENBSD) set_target_properties(express PROPERTIES VERSION ${SC_VERSION_MAJOR}.${SC_VERSION_MINOR}) else(OPENBSD) set_target_properties(express PROPERTIES VERSION ${SC_VERSION} SOVERSION ${SC_VERSION_MAJOR}) endif(OPENBSD) if(APPLE) set_property(TARGET express APPEND PROPERTY LINK_FLAGS "-flat_namespace -undefined suppress") endif(APPLE) install(TARGETS express RUNTIME DESTINATION ${BIN_DIR} LIBRARY DESTINATION ${LIB_DIR} ARCHIVE DESTINATION ${LIB_DIR}) if(MSVC) set_property(TARGET express APPEND PROPERTY COMPILE_DEFINITIONS "SC_EXPRESS_DLL_EXPORTS") set_property(TARGET express APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS "SC_EXPRESS_DLL_IMPORTS") endif(MSVC) endif() if(BUILD_STATIC_LIBS) add_library(express-static STATIC ${EXPRESS_OBJS}) install(TARGETS express-static RUNTIME DESTINATION ${BIN_DIR} LIBRARY DESTINATION ${LIB_DIR} ARCHIVE DESTINATION ${LIB_DIR}) endif() # TODO # Currently, fedex.c provides the main() for multiple programs. These programs # provide custom behavior by defining EXPRESSinit_init (called by fedex.c's # main) which sets other callbacks. # # What would be better is to remove the call to EXPRESSinit_init and turn # fedex.c's main() into an express library function. That way, programs only # need to link against express (not fedex.o too) and they can do initialization # in their own main (instead of in a local EXPRESSinit_init definition). set(CHECK_EXPRESS_SOURCES fedex.c inithook.c ) add_executable(check-express ${CHECK_EXPRESS_SOURCES}) if(BUILD_SHARED_LIBS OR NOT BUILD_STATIC_LIBS) target_link_libraries(check-express express) else() target_link_libraries(check-express express-static) target_compile_definitions(check-express PRIVATE SC_STATIC) endif() install(TARGETS check-express RUNTIME DESTINATION ${BIN_DIR} LIBRARY DESTINATION ${LIB_DIR} ARCHIVE DESTINATION ${LIB_DIR}) if(SC_ENABLE_TESTING) add_subdirectory(test) endif(SC_ENABLE_TESTING) # Local Variables: # tab-width: 8 # mode: cmake # indent-tabs-mode: t # End: # ex: shiftwidth=2 tabstop=8 |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |